From 94f670ac8bb5ab60b9918946e3b9b7d315a0eba3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sat, 24 Jun 2023 16:25:25 +0200 Subject: [PATCH 001/209] Improve explain on db_logging (#1898) --- Makefile | 13 ++++++++-- app/Providers/AppServiceProvider.php | 25 ++++++++++++++++--- .../2018_08_15_102039_move_albums.php | 4 +-- phpunit.xml | 1 + tests/Feature/WebAuthTest.php | 1 + 5 files changed, 37 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 2e3e9618f44..17ae0a26169 100644 --- a/Makefile +++ b/Makefile @@ -109,7 +109,16 @@ release_major: gen_major TESTS_PHP := $(shell find tests/Feature -name "*Test.php" -printf "%f\n") TEST_DONE := $(addprefix build/,$(TESTS_PHP:.php=.done)) -build/%.done: tests/Feature/%.php - XDEBUG_MODE=coverage vendor/bin/phpunit --filter $* && touch build/$*.done +build: + mkdir build + +build/Base%.done: + touch build/Base$*.done + +build/%UnitTest.done: + touch build/$*UnitTest.done + +build/%.done: tests/Feature/%.php build + vendor/bin/phpunit --no-coverage --filter $* && touch build/$*.done all_tests: $(TEST_DONE) \ No newline at end of file diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 1486eeb3a78..d5019441dcd 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -38,6 +38,22 @@ class AppServiceProvider extends ServiceProvider { + /** + * Defines which queries to ignore when doing explain. + * + * @var array + */ + private array $ignore_log_SQL = + [ + 'information_schema', // Not interesting + + // We do not want infinite loops + 'EXPLAIN', + + // Way too noisy + 'configs', + ]; + public array $singletons = [ SymLinkFunctions::class => SymLinkFunctions::class, @@ -151,8 +167,7 @@ private function logSQL(QueryExecuted $query): void { // Quick exit if ( - Str::contains(request()->getRequestUri(), 'logs', true) || - Str::contains($query->sql, ['information_schema', 'EXPLAIN', 'configs']) + Str::contains(request()->getRequestUri(), 'logs', true) ) { return; } @@ -161,7 +176,11 @@ private function logSQL(QueryExecuted $query): void $msg = '(' . $query->time . 'ms) ' . $query->sql . ' [' . implode(', ', $query->bindings) . ']'; // For pgsql and sqlite we log the query and exit early - if (config('database.default', 'mysql') !== 'mysql' || config('database.explain', false) === false) { + if (config('database.default', 'mysql') !== 'mysql' || + config('database.explain', false) === false || + !Str::contains($query->sql, 'select') || + Str::contains($query->sql, $this->ignore_log_SQL) + ) { Log::debug($msg); return; diff --git a/database/migrations/2018_08_15_102039_move_albums.php b/database/migrations/2018_08_15_102039_move_albums.php index dab8fd4ecbb..b7b3b6f60a9 100644 --- a/database/migrations/2018_08_15_102039_move_albums.php +++ b/database/migrations/2018_08_15_102039_move_albums.php @@ -38,10 +38,10 @@ public function up(): void ]); } } else { - Log::notice(__FUNCTION__ . ':' . __LINE__ . ' ' . env('DB_OLD_LYCHEE_PREFIX', '') . 'lychee_albums does not exist!'); + Log::notice(__METHOD__ . ':' . __LINE__ . ' ' . env('DB_OLD_LYCHEE_PREFIX', '') . 'lychee_albums does not exist!'); } } else { - Log::notice(__FUNCTION__ . ':' . __LINE__ . ' albums is not empty.'); + Log::notice(__METHOD__ . ':' . __LINE__ . ' albums is not empty.'); } } diff --git a/phpunit.xml b/phpunit.xml index de73c381d0b..e0f105d6cfc 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -28,6 +28,7 @@ + diff --git a/tests/Feature/WebAuthTest.php b/tests/Feature/WebAuthTest.php index c8dc3c86a69..2efd76347f5 100644 --- a/tests/Feature/WebAuthTest.php +++ b/tests/Feature/WebAuthTest.php @@ -30,6 +30,7 @@ public function setUp(): void { parent::setUp(); $this->setUpRequiresEmptyWebAuthnCredentials(); + config(['app.url' => 'https://localhost']); } public function tearDown(): void From 20da3a1076c7347ef76ed3e86ecac6bbd7bd043e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sun, 25 Jun 2023 11:49:01 +0200 Subject: [PATCH 002/209] Make exceptions in one log line (#1901) --- app/Exceptions/Handler.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 3c2063168a9..0c9a152febe 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -384,18 +384,22 @@ public function report(\Throwable $e): void // with a higher severity than the eventual exception $severity = self::getLogSeverity($e); + $msg = ''; do { $cause = $this->findCause($e); if (count($cause) === 2) { - Log::log($severity->value, $cause[1]->getMethodBeautified() . ':' . $cause[1]->getLine() . ' ' . $e->getMessage() . '; caused by'); + $msg_ = $cause[1]->getMethodBeautified() . ':' . $cause[1]->getLine() . ' ' . $e->getMessage() . '; caused by'; + $msg = $msg_ . PHP_EOL . $msg; } if ($e->getPrevious() !== null) { - Log::log($severity->value, $cause[0]->getMethodBeautified() . ':' . $cause[0]->getLine() . ' ' . $e->getMessage() . '; caused by'); + $msg_ = $cause[0]->getMethodBeautified() . ':' . $cause[0]->getLine() . ' ' . $e->getMessage() . '; caused by'; } else { - Log::log($severity->value, $cause[0]->getMethodBeautified() . ':' . $cause[0]->getLine() . ' ' . $e->getMessage()); + $msg_ = $cause[0]->getMethodBeautified() . ':' . $cause[0]->getLine() . ' ' . $e->getMessage(); } + $msg = $msg_ . PHP_EOL . $msg; } while ($e = $e->getPrevious()); + Log::log($severity->value, $msg); } /** From 67253ff20495653059280b3fd9b0b241bd51f77b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Tue, 27 Jun 2023 07:27:56 +0200 Subject: [PATCH 003/209] sync Lychee-front (#1906) --- public/Lychee-front | 2 +- public/dist/frontend.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/public/Lychee-front b/public/Lychee-front index 3f6cdb19511..42d044bc478 160000 --- a/public/Lychee-front +++ b/public/Lychee-front @@ -1 +1 @@ -Subproject commit 3f6cdb1951178eef3bd70d17b939f2025b928fa1 +Subproject commit 42d044bc478ad02a8940012d1c7d18a1114e0e74 diff --git a/public/dist/frontend.js b/public/dist/frontend.js index 173d3f442c6..9286c3833f7 100644 --- a/public/dist/frontend.js +++ b/public/dist/frontend.js @@ -2908,7 +2908,7 @@ tabindex.makeUnfocusable(header.dom());tabindex.makeUnfocusable(lychee.content); */leftMenu.bind=function(){// Event Name var eventName="click";leftMenu.dom("#button_settings_close").on(eventName,leftMenu.close);leftMenu.dom("#button_settings_open").on(eventName,function(){leftMenu.closeIfResponsive();settings.open();});leftMenu.dom("#button_signout").on(eventName,lychee.logout);leftMenu.dom("#button_logs").on(eventName,leftMenu.Logs);leftMenu.dom("#button_diagnostics").on(eventName,leftMenu.Diagnostics);leftMenu.dom("#button_about").on(eventName,lychee.aboutDialog);leftMenu.dom("#button_notifications").on(eventName,leftMenu.Notifications);leftMenu.dom("#button_users").on(eventName,leftMenu.Users);leftMenu.dom("#button_u2f").on(eventName,leftMenu.u2f);leftMenu.dom("#button_sharing").on(eventName,leftMenu.Sharing);leftMenu.dom("#button_update").on(eventName,leftMenu.Update);};/** * @returns {void} - */leftMenu.Logs=function(){leftMenu.closeIfResponsive();window.open("/Logs");};/** + */leftMenu.Logs=function(){leftMenu.closeIfResponsive();window.open("Logs");};/** * @returns {void} */leftMenu.Diagnostics=function(){leftMenu.closeIfResponsive();view.diagnostics.init();};/** * @returns {void} From ed703213ab645ceaf9251bb0b7639d17b186a93e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Wed, 28 Jun 2023 16:42:36 +0200 Subject: [PATCH 004/209] Improved speed on global table (#1899) --- app/Constants/AccessPermissionConstants.php | 1 - .../Administration/DiagnosticsController.php | 61 ++++-- .../Administration/SharingController.php | 1 + app/Models/Builders/AlbumBuilder.php | 36 +++- app/Models/User.php | 1 - app/Policies/AlbumQueryPolicy.php | 182 ++++++++++-------- app/Providers/AppServiceProvider.php | 14 +- composer.lock | 147 +++++++------- .../2021_12_04_181200_refactor_models.php | 4 +- ...00_enable_disable_album_photo_counters.php | 1 + ..._211448_remove_is_public_album_sorting.php | 1 + .../2023_06_24_161541_add_indexes.php | 73 +++++++ resources/views/access-permissions.blade.php | 23 +++ 13 files changed, 358 insertions(+), 187 deletions(-) create mode 100644 database/migrations/2023_06_24_161541_add_indexes.php diff --git a/app/Constants/AccessPermissionConstants.php b/app/Constants/AccessPermissionConstants.php index eeb08230587..14444ed5d62 100644 --- a/app/Constants/AccessPermissionConstants.php +++ b/app/Constants/AccessPermissionConstants.php @@ -19,6 +19,5 @@ class AccessPermissionConstants public const GRANTS_UPLOAD = 'grants_upload'; public const GRANTS_EDIT = 'grants_edit'; public const GRANTS_DELETE = 'grants_delete'; - public const IS_PASSWORD_REQUIRED = 'is_password_required'; public const PASSWORD = 'password'; } \ No newline at end of file diff --git a/app/Http/Controllers/Administration/DiagnosticsController.php b/app/Http/Controllers/Administration/DiagnosticsController.php index 97d876e95b1..221d94a54c9 100644 --- a/app/Http/Controllers/Administration/DiagnosticsController.php +++ b/app/Http/Controllers/Administration/DiagnosticsController.php @@ -21,6 +21,7 @@ use Illuminate\Contracts\Container\BindingResolutionException; use Illuminate\Contracts\View\View; use Illuminate\Routing\Controller; +use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Gate; use function Safe\json_encode; @@ -98,7 +99,7 @@ public function getSize(Space $space): array * * @return View */ - public function getFullAccessPermissions(): View + public function getFullAccessPermissions(AlbumQueryPolicy $albumQueryPolicy): View { if (!$this->isAuthorized() && config('app.debug') !== true) { throw new UnauthorizedException(); @@ -115,25 +116,57 @@ public function getFullAccessPermissions(): View APC::GRANTS_UPLOAD, APC::GRANTS_DELETE, APC::PASSWORD, + APC::USER_ID, 'title', ]) - ->whereNull('user_id') + ->when( + Auth::check(), + fn ($q1) => $q1 + ->where(APC::USER_ID, '=', Auth::id()) + ->orWhere( + fn ($q2) => $q2->whereNull(APC::USER_ID) + ->whereNotIn( + 'access_permissions.' . APC::BASE_ALBUM_ID, + fn ($q3) => $q3->select('acc_per.' . APC::BASE_ALBUM_ID) + ->from('access_permissions', 'acc_per') + ->where(APC::USER_ID, '=', Auth::id()) + ) + ) + ) + ->when( + !Auth::check(), + fn ($q1) => $q1->whereNull(APC::USER_ID) + ) ->orderBy(APC::BASE_ALBUM_ID) ->get(); - $data2 = resolve(AlbumQueryPolicy::class)->getComputedAccessPermissionSubQuery() - ->joinSub( - DB::table('base_albums') - ->select(['id', 'title']), - 'base_albums', - 'base_albums.id', - '=', - APC::BASE_ALBUM_ID - ) - ->addSelect('title') - ->groupBy('title') + $query2 = DB::table('base_albums'); + $albumQueryPolicy->joinSubComputedAccessPermissions($query2, 'base_albums.id', 'inner', '', true); + $data2 = $query2 + ->select([ + APC::BASE_ALBUM_ID, + APC::IS_LINK_REQUIRED, + APC::GRANTS_FULL_PHOTO_ACCESS, + APC::GRANTS_DOWNLOAD, + APC::GRANTS_EDIT, + APC::GRANTS_UPLOAD, + APC::GRANTS_DELETE, + APC::PASSWORD, + APC::USER_ID, + 'title', + ]) ->orderBy(APC::BASE_ALBUM_ID) - ->get(); + ->get() + ->map(function ($e) { + $e->is_link_required = $e->is_link_required === 1; + $e->grants_download = $e->grants_download === 1; + $e->grants_upload = $e->grants_upload === 1; + $e->grants_delete = $e->grants_delete === 1; + $e->grants_edit = $e->grants_edit === 1; + $e->grants_full_photo_access = $e->grants_full_photo_access === 1; + + return $e; + }); return view('access-permissions', ['data1' => json_encode($data1, JSON_PRETTY_PRINT), 'data2' => json_encode($data2, JSON_PRETTY_PRINT)]); } diff --git a/app/Http/Controllers/Administration/SharingController.php b/app/Http/Controllers/Administration/SharingController.php index 7b6c06490b2..febb455f201 100644 --- a/app/Http/Controllers/Administration/SharingController.php +++ b/app/Http/Controllers/Administration/SharingController.php @@ -92,6 +92,7 @@ private function updateLinks(array $userIds, array $albumIds): void $user->shared()->syncWithPivotValues( $albumIds, [ + APC::IS_LINK_REQUIRED => false, // In sharing no required link is needed APC::GRANTS_DOWNLOAD => Configs::getValueAsBool('grants_download'), APC::GRANTS_FULL_PHOTO_ACCESS => Configs::getValueAsBool('grants_full_photo_access'), ], diff --git a/app/Models/Builders/AlbumBuilder.php b/app/Models/Builders/AlbumBuilder.php index 46c159aff2e..f9343010fcc 100644 --- a/app/Models/Builders/AlbumBuilder.php +++ b/app/Models/Builders/AlbumBuilder.php @@ -68,7 +68,9 @@ class AlbumBuilder extends NSQueryBuilder */ public function getModels($columns = ['*']): array { + $albumQueryPolicy = resolve(AlbumQueryPolicy::class); $baseQuery = $this->getQuery(); + if ( ($columns === ['*'] || $columns === ['albums.*']) && ($baseQuery->columns === ['*'] || $baseQuery->columns === ['albums.*'] || $baseQuery->columns === null) @@ -84,8 +86,8 @@ public function getModels($columns = ['*']): array $this->addSelect([ 'min_taken_at' => $this->getTakenAtSQL()->selectRaw('MIN(taken_at)'), 'max_taken_at' => $this->getTakenAtSQL()->selectRaw('MAX(taken_at)'), - 'num_children' => $this->applyVisibilityConditioOnSubalbums($countChildren), - 'num_photos' => $this->applyVisibilityConditioOnPhotos($countPhotos), + 'num_children' => $this->applyVisibilityConditioOnSubalbums($countChildren, $albumQueryPolicy), + 'num_photos' => $this->applyVisibilityConditioOnPhotos($countPhotos, $albumQueryPolicy), ]); } @@ -172,7 +174,7 @@ private function getTakenAtSQL(): Builder * * @return Builder Query with the visibility requirements applied */ - private function applyVisibilityConditioOnSubalbums(Builder $countQuery): Builder + private function applyVisibilityConditioOnSubalbums(Builder $countQuery, AlbumQueryPolicy $albumQueryPolicy): Builder { if (Auth::user()?->may_administrate === true) { return $countQuery; @@ -180,9 +182,15 @@ private function applyVisibilityConditioOnSubalbums(Builder $countQuery): Builde $userID = Auth::id(); - $countQuery->join('base_albums', 'base_albums.id', '=', 'a.id'); + // Only join with base_album (used to get owner_id) when user is logged in + $countQuery->when(Auth::check(), + fn ($q) => $albumQueryPolicy->joinBaseAlbumOwnerId( + query: $q, + second: 'a.id', + full: false, + ) + ); - $albumQueryPolicy = resolve(AlbumQueryPolicy::class); // We must left join with `conputed_access_permissions`. // We must restrict the `LEFT JOIN` to the user ID which // is also used in the outer `WHERE`-clause. @@ -190,7 +198,8 @@ private function applyVisibilityConditioOnSubalbums(Builder $countQuery): Builde // in AlbumQueryPolicy. $albumQueryPolicy->joinSubComputedAccessPermissions( query: $countQuery, - second: 'base_albums.id' + second: 'a.id', + type: 'left', ); // We must wrap everything into an outer query to avoid any undesired @@ -219,7 +228,7 @@ private function applyVisibilityConditioOnSubalbums(Builder $countQuery): Builde * * @return Builder Query with the visibility requirements applied */ - private function applyVisibilityConditioOnPhotos(Builder $countQuery): Builder + private function applyVisibilityConditioOnPhotos(Builder $countQuery, AlbumQueryPolicy $albumQueryPolicy): Builder { if (Auth::user()?->may_administrate === true) { return $countQuery; @@ -227,12 +236,19 @@ private function applyVisibilityConditioOnPhotos(Builder $countQuery): Builder $userID = Auth::id(); - $countQuery->join('base_albums', 'base_albums.id', '=', 'p.album_id'); + // Only join with base_album (used to get owner_id) when user is logged in + $countQuery->when($userID !== null, + fn ($q) => $albumQueryPolicy->joinBaseAlbumOwnerId( + query: $q, + second: 'p.album_id', + full: false, + ) + ); - $albumQueryPolicy = resolve(AlbumQueryPolicy::class); $albumQueryPolicy->joinSubComputedAccessPermissions( query: $countQuery, - second: 'base_albums.id' + second: 'p.album_id', + type: 'left', ); // We must wrap everything into an outer query to avoid any undesired diff --git a/app/Models/User.php b/app/Models/User.php index cc161406506..30c62e84425 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -50,7 +50,6 @@ * @property int|null $photos_count * @property Collection $webAuthnCredentials * @property int|null $web_authn_credentials_count - * @property Collection $webAuthnCredentials * * @method static UserBuilder|User addSelect($column) * @method static UserBuilder|User join(string $table, string $first, string $operator = null, string $second = null, string $type = 'inner', string $where = false) diff --git a/app/Policies/AlbumQueryPolicy.php b/app/Policies/AlbumQueryPolicy.php index a8f74a81d5d..35a53508414 100644 --- a/app/Policies/AlbumQueryPolicy.php +++ b/app/Policies/AlbumQueryPolicy.php @@ -63,11 +63,11 @@ public function applyVisibilityFilter(AlbumBuilder|FixedQueryBuilder $query): Al $query2 // We laverage that IS_LINK_REQUIRED is NULL if the album is NOT shared publically (left join). ->where(APC::COMPUTED_ACCESS_PERMISSIONS . '.' . APC::IS_LINK_REQUIRED, '=', false) + // Current user is the owner of the album + // This is the case when is_link_required is NULL ->when( $userID !== null, - // Current user is the owner of the album - fn ($q) => $q - ->orWhere('base_albums.owner_id', '=', $userID) + fn ($q) => $q->orWhere('base_albums.owner_id', '=', $userID) ); }; @@ -105,23 +105,24 @@ public function appendAccessibilityConditions(BaseBuilder $query): BaseBuilder try { $query ->orWhere( - // Album is public/shared (visible or not) and NOT protected by a password + // Album is public/shared (visible or not => IS_LINK_REQUIRED NOT NULL) + // and NOT protected by a password fn (BaseBuilder $q) => $q ->whereNotNull(APC::COMPUTED_ACCESS_PERMISSIONS . '.' . APC::IS_LINK_REQUIRED) - ->where(APC::COMPUTED_ACCESS_PERMISSIONS . '.' . APC::IS_PASSWORD_REQUIRED, '=', false) + ->whereNull(APC::COMPUTED_ACCESS_PERMISSIONS . '.' . APC::PASSWORD) ) ->orWhere( // Album is public/shared (visible or not) and protected by a password and unlocked fn (BaseBuilder $q) => $q ->whereNotNull(APC::COMPUTED_ACCESS_PERMISSIONS . '.' . APC::IS_LINK_REQUIRED) - ->where(APC::COMPUTED_ACCESS_PERMISSIONS . '.' . APC::IS_PASSWORD_REQUIRED, '=', true) + ->whereNotNull(APC::COMPUTED_ACCESS_PERMISSIONS . '.' . APC::PASSWORD) ->whereIn(APC::COMPUTED_ACCESS_PERMISSIONS . '.' . APC::BASE_ALBUM_ID, $unlockedAlbumIDs) ) ->when( $userID !== null, + // TODO: move the owner to ACCESS PERMISSIONS so that we do not need to join base_album anymore // Current user is the owner of the album - fn (BaseBuilder $q) => $q - ->orWhere('base_albums.owner_id', '=', $userID) + fn (BaseBuilder $q) => $q->orWhere('base_albums.owner_id', '=', $userID) ); return $query; @@ -177,20 +178,19 @@ public function applyReachabilityFilter(AlbumBuilder $query): AlbumBuilder // Album is visible and not password protected. fn (Builder $q) => $q ->where(APC::COMPUTED_ACCESS_PERMISSIONS . '.' . APC::IS_LINK_REQUIRED, '=', false) - ->where(APC::COMPUTED_ACCESS_PERMISSIONS . '.' . APC::IS_PASSWORD_REQUIRED, '=', false) + ->whereNull(APC::COMPUTED_ACCESS_PERMISSIONS . '.' . APC::PASSWORD) ) ->orWhere( // Album is visible and password protected and unlocked fn (Builder $q) => $q ->where(APC::COMPUTED_ACCESS_PERMISSIONS . '.' . APC::IS_LINK_REQUIRED, '=', false) - ->where(APC::COMPUTED_ACCESS_PERMISSIONS . '.' . APC::IS_PASSWORD_REQUIRED, '=', true) + ->whereNotNull(APC::COMPUTED_ACCESS_PERMISSIONS . '.' . APC::PASSWORD) ->whereIn(APC::COMPUTED_ACCESS_PERMISSIONS . '.' . APC::BASE_ALBUM_ID, $unlockedAlbumIDs) ) ->when( $userID !== null, // User is owner of the album - fn (Builder $q) => $q - ->orWhere('base_albums.owner_id', '=', $userID) + fn (Builder $q) => $q->orWhere('base_albums.owner_id', '=', $userID) ); }; @@ -315,8 +315,12 @@ public function appendUnreachableAlbumsCondition(BaseBuilder $builder, int|strin // There are inner albums ... $builder ->from('albums', 'inner') - ->join('base_albums as inner_base_albums', 'inner_base_albums.id', '=', 'inner.id'); + ->when( + Auth::check(), + fn ($q) => $this->joinBaseAlbumOwnerId($q, 'inner.id', 'inner_', false) + ); + // WE MUST JOIN LEFT HERE $this->joinSubComputedAccessPermissions($builder, 'inner.id', 'left', 'inner_'); // ... on the path from the origin ... @@ -352,7 +356,7 @@ public function appendUnreachableAlbumsCondition(BaseBuilder $builder, int|strin fn (BaseBuilder $q) => $q ->where('inner_' . APC::COMPUTED_ACCESS_PERMISSIONS . '.' . APC::IS_LINK_REQUIRED, '=', true) ->orWhereNull('inner_' . APC::COMPUTED_ACCESS_PERMISSIONS . '.' . APC::IS_LINK_REQUIRED) - ->orWhere('inner_' . APC::COMPUTED_ACCESS_PERMISSIONS . '.' . APC::IS_PASSWORD_REQUIRED, '=', true) + ->orWhereNotNull('inner_' . APC::COMPUTED_ACCESS_PERMISSIONS . '.' . APC::PASSWORD) ) ->where( fn (BaseBuilder $q) => $q @@ -403,11 +407,13 @@ private function prepareModelQueryOrFail(AlbumBuilder|FixedQueryBuilder $query): $query->select([$table . '.*']); } - // TODO: would joining just owner_id from base_album make more sense ? + // We MUST do a full join because we are also sorting on created_at, title and description. + // Those are stored in the base_albums. if ($model instanceof Album || $model instanceof TagAlbum) { - $query->join('base_albums', 'base_albums.id', '=', $table . '.id'); + $this->joinBaseAlbumOwnerId($query, $table . '.id'); } + // We MUST use left here because otherwise we are preventing any non shared album to be visible $this->joinSubComputedAccessPermissions($query, $table . '.id', 'left'); } @@ -422,84 +428,56 @@ private function prepareModelQueryOrFail(AlbumBuilder|FixedQueryBuilder $query): * - grants_upload => MAX as the shared setting takes priority * - grants_edit => MAX as the shared setting takes priority * - grants_delete => MAX as the shared setting takes priority - * - is_password_required => If password is null, ISNULL returns 1. We use MAX as the shared setting takes priority. We then want the negation on that. * * @return BaseBuilder */ - public function getComputedAccessPermissionSubQuery(): BaseBuilder + private function getComputedAccessPermissionSubQuery(bool $full = false): BaseBuilder { - $driver = DB::getDriverName(); - $passwordLengthIsBetween0and1 = match ($driver) { - 'pgsql' => $this->getPasswordIsRequiredPgSQL(), - 'sqlite' => $this->getPasswordIsRequiredSqlite(), - default => $this->getPasswordIsRequiredMySQL() - }; - - $min = $driver === 'pgsql' ? 'bool_and' : 'MIN'; - $max = $driver === 'pgsql' ? 'bool_or' : 'MAX'; - $select = [ APC::BASE_ALBUM_ID, - DB::raw($min . '(' . APC::IS_LINK_REQUIRED . ') as ' . APC::IS_LINK_REQUIRED), - DB::raw($max . '(' . APC::GRANTS_FULL_PHOTO_ACCESS . ') as ' . APC::GRANTS_FULL_PHOTO_ACCESS), - DB::raw($max . '(' . APC::GRANTS_DOWNLOAD . ') as ' . APC::GRANTS_DOWNLOAD), - DB::raw($max . '(' . APC::GRANTS_UPLOAD . ') as ' . APC::GRANTS_UPLOAD), - DB::raw($max . '(' . APC::GRANTS_EDIT . ') as ' . APC::GRANTS_EDIT), - DB::raw($max . '(' . APC::GRANTS_DELETE . ') as ' . APC::GRANTS_DELETE), - DB::raw($passwordLengthIsBetween0and1 . ' as ' . APC::IS_PASSWORD_REQUIRED), + APC::IS_LINK_REQUIRED, + APC::PASSWORD, ]; - return DB::table('access_permissions', APC::COMPUTED_ACCESS_PERMISSIONS)->select($select) - ->when(Auth::check(), fn ($q) => $q->where('user_id', '=', Auth::id())) - ->orWhereNull('user_id') - ->groupBy('base_album_id'); - } - - private function getPasswordIsRequiredMySQL(): string - { - return '1 - MAX(ISNULL(' . APC::PASSWORD . '))'; - } - - private function getPasswordIsRequiredSqlite(): string - { - // sqlite does not support ISNULL(x) -> bool - // We convert password to empty string if it is null - $passwordIsDefined = 'IFNULL(' . APC::PASSWORD . ',"")'; - // Take the lengh - $passwordLength = 'LENGTH(' . $passwordIsDefined . ')'; - // First min with 1 to upper bound it - // then MIN aggregation - return 'MIN(MIN(' . $passwordLength . ',1))'; - } + if ($full) { + $select[] = APC::GRANTS_DELETE; + $select[] = APC::GRANTS_EDIT; + $select[] = APC::GRANTS_DOWNLOAD; + $select[] = APC::GRANTS_FULL_PHOTO_ACCESS; + $select[] = APC::GRANTS_UPLOAD; + $select[] = APC::USER_ID; + } + $userId = Auth::id(); - private function getPasswordIsRequiredPgSQL(): string - { - // pgsql has a proper boolean support and does not support ISNULL(x) -> bool - // If password is null, length returns null, we replace the value by 0 in such case - $passwordLength = 'COALESCE(LENGTH(' . APC::PASSWORD . '),0)'; - // We take the minimum between length and 1 with LEAST - // and then agggregate on the column with MIN - // before casting it to bool - return 'MIN(LEAST(' . $passwordLength . ',1))::bool'; + return DB::table('access_permissions', APC::COMPUTED_ACCESS_PERMISSIONS)->select($select) + ->when( + Auth::check(), + fn ($q1) => $q1 + ->where(APC::USER_ID, '=', $userId) + ->orWhere( + fn ($q2) => $q2->whereNull(APC::USER_ID) + ->whereNotIn( + APC::COMPUTED_ACCESS_PERMISSIONS . '.' . APC::BASE_ALBUM_ID, + fn ($q3) => $q3->select('acc_per.' . APC::BASE_ALBUM_ID) + ->from('access_permissions', 'acc_per') + ->where(APC::USER_ID, '=', $userId) + ) + ) + ) + ->when( + !Auth::check(), + fn ($q1) => $q1->whereNull(APC::USER_ID) + ); } /** * Helper to join the the computed property for the possibly logged-in user. * - * This produces a sub table with base_album_id where we compute: - * - base_album_id so that we can link those computed property to the album table. - * - is_link_required => MIN as we want to ensure that a logged in user can see the shared album - * - grants_full_photo_access => MAX as the public setting takes priority - * - grants_download => MAX as the public setting takes priority - * - grants_upload => MAX as the shared setting takes priority - * - grants_edit => MAX as the shared setting takes priority - * - grants_delete => MAX as the shared setting takes priority - * - is_password_required => If password is null, ISNULL returns 1. We use MAX as the shared setting takes priority. We then want the negation on that. - * - * @param AlbumBuilder|FixedQueryBuilder|BaseBuilder $query - * @param string $second - * @param string $prefix - * @param string $type + * @param AlbumBuilder|FixedQueryBuilder|BaseBuilder $query query to join to + * @param string $second id to link with + * @param string $prefix prefix in the future queries + * @param string $type left|inner + * @param bool $full Select most columns instead of just restricted * * @return void * @@ -510,9 +488,10 @@ public function joinSubComputedAccessPermissions( string $second = 'base_albums.id', string $type = 'left', string $prefix = '', + bool $full = false, ): void { $query->joinSub( - query: $this->getComputedAccessPermissionSubQuery(), + query: $this->getComputedAccessPermissionSubQuery($full), as: $prefix . APC::COMPUTED_ACCESS_PERMISSIONS, first: $prefix . APC::COMPUTED_ACCESS_PERMISSIONS . '.' . APC::BASE_ALBUM_ID, operator: '=', @@ -520,4 +499,45 @@ public function joinSubComputedAccessPermissions( type: $type ); } + + /** + * Join BaseAlbum. + * This aim to give lighter sub selection to make the queries run faster. + * + * @param AlbumBuilder|FixedQueryBuilder|BaseBuilder $query + * @param string $second + * @param string $prefix + * @param bool $full + * + * @return void + * + * @throws \InvalidArgumentException + */ + public function joinBaseAlbumOwnerId( + AlbumBuilder|FixedQueryBuilder|BaseBuilder $query, + string $second = 'inner.id', + string $prefix = '', + bool $full = true + ): void { + $columns = [ + $prefix . 'base_albums.id', + $prefix . 'base_albums.owner_id', + ]; + + if ($full) { + $columns[] = $prefix . 'base_albums.title'; + $columns[] = $prefix . 'base_albums.created_at'; + $columns[] = $prefix . 'base_albums.description'; + } + + $query->joinSub( + query: DB::table('base_albums', $prefix . 'base_albums') + ->select($columns), + as: $prefix . 'base_albums', + first: $prefix . 'base_albums.id', + operator: '=', + second: $second, + type: 'left' + ); + } } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index d5019441dcd..6b8d462c61b 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -46,6 +46,7 @@ class AppServiceProvider extends ServiceProvider private array $ignore_log_SQL = [ 'information_schema', // Not interesting + 'migrations', // We do not want infinite loops 'EXPLAIN', @@ -167,7 +168,8 @@ private function logSQL(QueryExecuted $query): void { // Quick exit if ( - Str::contains(request()->getRequestUri(), 'logs', true) + Str::contains(request()->getRequestUri(), 'logs', true) || + Str::contains($query->sql, $this->ignore_log_SQL) ) { return; } @@ -178,8 +180,7 @@ private function logSQL(QueryExecuted $query): void // For pgsql and sqlite we log the query and exit early if (config('database.default', 'mysql') !== 'mysql' || config('database.explain', false) === false || - !Str::contains($query->sql, 'select') || - Str::contains($query->sql, $this->ignore_log_SQL) + !Str::contains($query->sql, 'select') ) { Log::debug($msg); @@ -201,6 +202,11 @@ private function logSQL(QueryExecuted $query): void $explain = DB::select('EXPLAIN ' . $sql_with_bindings); $renderer = new ArrayToTextTable(); $renderer->setIgnoredKeys(['possible_keys', 'key_len', 'ref']); - Log::debug($msg . PHP_EOL . $renderer->getTable($explain)); + + $msg .= PHP_EOL; + $msg .= Str::repeat('-', 20) . PHP_EOL; + $msg .= $sql_with_bindings . PHP_EOL; + $msg .= $renderer->getTable($explain); + Log::debug($msg); } } diff --git a/composer.lock b/composer.lock index 59244e932ff..bb1ce1f4989 100644 --- a/composer.lock +++ b/composer.lock @@ -375,16 +375,16 @@ }, { "name": "doctrine/dbal", - "version": "3.6.3", + "version": "3.6.4", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "9a747d29e7e6b39509b8f1847e37a23a0163ea6a" + "reference": "19f0dec95edd6a3c3c5ff1d188ea94c6b7fc903f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/9a747d29e7e6b39509b8f1847e37a23a0163ea6a", - "reference": "9a747d29e7e6b39509b8f1847e37a23a0163ea6a", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/19f0dec95edd6a3c3c5ff1d188ea94c6b7fc903f", + "reference": "19f0dec95edd6a3c3c5ff1d188ea94c6b7fc903f", "shasum": "" }, "require": { @@ -467,7 +467,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.6.3" + "source": "https://github.com/doctrine/dbal/tree/3.6.4" }, "funding": [ { @@ -483,7 +483,7 @@ "type": "tidelift" } ], - "time": "2023-06-01T05:46:46+00:00" + "time": "2023-06-15T07:40:12+00:00" }, { "name": "doctrine/deprecations", @@ -1745,49 +1745,50 @@ }, { "name": "laminas/laminas-servicemanager", - "version": "3.15.0", + "version": "3.21.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-servicemanager.git", - "reference": "65910ef6a8066b0369fab77fbec9e030be59c866" + "reference": "625f2aa3bc6dd02688b2da5155b3a69870812bda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/65910ef6a8066b0369fab77fbec9e030be59c866", - "reference": "65910ef6a8066b0369fab77fbec9e030be59c866", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/625f2aa3bc6dd02688b2da5155b3a69870812bda", + "reference": "625f2aa3bc6dd02688b2da5155b3a69870812bda", "shasum": "" }, "require": { - "composer-plugin-api": "^2.0", - "laminas/laminas-stdlib": "^3.2.1", - "php": "~7.4.0 || ~8.0.0 || ~8.1.0", - "psr/container": "^1.1 || ^2.0.2" + "laminas/laminas-stdlib": "^3.17", + "php": "~8.1.0 || ~8.2.0", + "psr/container": "^1.0" }, "conflict": { "ext-psr": "*", - "laminas/laminas-code": "<3.3.1", + "laminas/laminas-code": "<4.10.0", "zendframework/zend-code": "<3.3.1", "zendframework/zend-servicemanager": "*" }, "provide": { - "psr/container-implementation": "^1.1 || ^2.0" + "psr/container-implementation": "^1.0" }, "replace": { "container-interop/container-interop": "^1.2.0" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.3.0", - "laminas/laminas-container-config-test": "^0.6", - "mikey179/vfsstream": "^1.6.10@alpha", - "ocramius/proxy-manager": "^2.11", - "phpbench/phpbench": "^1.1", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.17.0", - "vimeo/psalm": "^4.8" + "composer/package-versions-deprecated": "^1.11.99.5", + "friendsofphp/proxy-manager-lts": "^1.0.14", + "laminas/laminas-code": "^4.10.0", + "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-container-config-test": "^0.8", + "laminas/laminas-dependency-plugin": "^2.2", + "mikey179/vfsstream": "^1.6.11", + "phpbench/phpbench": "^1.2.9", + "phpunit/phpunit": "^10.0.17", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.8.0" }, "suggest": { - "ocramius/proxy-manager": "ProxyManager ^2.1.1 to handle lazy initialization of services" + "friendsofphp/proxy-manager-lts": "ProxyManager ^2.1.1 to handle lazy initialization of services" }, "bin": [ "bin/generate-deps-for-config-factory", @@ -1831,7 +1832,7 @@ "type": "community_bridge" } ], - "time": "2022-07-18T21:18:56+00:00" + "time": "2023-05-14T12:24:54+00:00" }, { "name": "laminas/laminas-stdlib", @@ -1894,29 +1895,31 @@ }, { "name": "laminas/laminas-text", - "version": "2.9.0", + "version": "2.10.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-text.git", - "reference": "8879e75d03e09b0d6787e6680cfa255afd4645a7" + "reference": "40f7acdb284d41553d32db811e704d6e15e415b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-text/zipball/8879e75d03e09b0d6787e6680cfa255afd4645a7", - "reference": "8879e75d03e09b0d6787e6680cfa255afd4645a7", + "url": "https://api.github.com/repos/laminas/laminas-text/zipball/40f7acdb284d41553d32db811e704d6e15e415b4", + "reference": "40f7acdb284d41553d32db811e704d6e15e415b4", "shasum": "" }, "require": { - "laminas/laminas-servicemanager": "^3.4", - "laminas/laminas-stdlib": "^3.6", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "laminas/laminas-servicemanager": "^3.19.0", + "laminas/laminas-stdlib": "^3.7.1", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-text": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~1.0.0", - "phpunit/phpunit": "^9.3" + "laminas/laminas-coding-standard": "~2.4.0", + "phpunit/phpunit": "^9.5", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.1" }, "type": "library", "autoload": { @@ -1948,7 +1951,7 @@ "type": "community_bridge" } ], - "time": "2021-09-02T16:50:53+00:00" + "time": "2022-12-11T15:36:27+00:00" }, { "name": "laragear/webauthn", @@ -2847,7 +2850,7 @@ }, { "name": "maennchen/zipstream-php", - "version": "v2.4.0", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/maennchen/ZipStream-PHP.git", @@ -2909,7 +2912,7 @@ ], "support": { "issues": "https://github.com/maennchen/ZipStream-PHP/issues", - "source": "https://github.com/maennchen/ZipStream-PHP/tree/v2.4.0" + "source": "https://github.com/maennchen/ZipStream-PHP/tree/2.4.0" }, "funding": [ { @@ -4113,27 +4116,22 @@ }, { "name": "psr/container", - "version": "2.0.2", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", "shasum": "" }, "require": { "php": ">=7.4.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, "autoload": { "psr-4": { "Psr\\Container\\": "src/" @@ -4160,9 +4158,9 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/2.0.2" + "source": "https://github.com/php-fig/container/tree/1.1.2" }, - "time": "2021-11-05T16:47:00+00:00" + "time": "2021-11-05T16:50:12+00:00" }, { "name": "psr/event-dispatcher", @@ -7010,29 +7008,33 @@ }, { "name": "symfony/service-contracts", - "version": "v3.3.0", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4" + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", - "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/container": "^2.0" + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" }, "conflict": { "ext-psr": "<1.1|>=2" }, + "suggest": { + "symfony/service-implementation": "" + }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -7042,10 +7044,7 @@ "autoload": { "psr-4": { "Symfony\\Contracts\\Service\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7072,7 +7071,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" }, "funding": [ { @@ -7088,7 +7087,7 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2022-05-30T19:17:29+00:00" }, { "name": "symfony/string", @@ -8795,16 +8794,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.18.0", + "version": "v3.19.1", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "b123395c9fa3a70801f816f13606c0f3a7ada8df" + "reference": "14772488aa1f31bd7ed767c390b96841ca687435" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/b123395c9fa3a70801f816f13606c0f3a7ada8df", - "reference": "b123395c9fa3a70801f816f13606c0f3a7ada8df", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/14772488aa1f31bd7ed767c390b96841ca687435", + "reference": "14772488aa1f31bd7ed767c390b96841ca687435", "shasum": "" }, "require": { @@ -8879,7 +8878,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.18.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.19.1" }, "funding": [ { @@ -8887,7 +8886,7 @@ "type": "github" } ], - "time": "2023-06-18T22:25:45+00:00" + "time": "2023-06-24T17:16:35+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -9827,16 +9826,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.20", + "version": "1.10.21", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "c4c8adb56313fbd59ff5a5f4a496bbed1a6b8803" + "reference": "b2a30186be2e4d97dce754ae4e65eb0ec2f04eb5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c4c8adb56313fbd59ff5a5f4a496bbed1a6b8803", - "reference": "c4c8adb56313fbd59ff5a5f4a496bbed1a6b8803", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/b2a30186be2e4d97dce754ae4e65eb0ec2f04eb5", + "reference": "b2a30186be2e4d97dce754ae4e65eb0ec2f04eb5", "shasum": "" }, "require": { @@ -9885,7 +9884,7 @@ "type": "tidelift" } ], - "time": "2023-06-20T12:07:40+00:00" + "time": "2023-06-21T20:07:58+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", diff --git a/database/migrations/2021_12_04_181200_refactor_models.php b/database/migrations/2021_12_04_181200_refactor_models.php index a0bef927959..ca20eef224b 100644 --- a/database/migrations/2021_12_04_181200_refactor_models.php +++ b/database/migrations/2021_12_04_181200_refactor_models.php @@ -1766,7 +1766,7 @@ private function dropIndexIfExists(Blueprint $table, string $indexName) } /** - * A helper function that allows to drop an index if exists. + * A helper function that allows to drop an unique constraint if exists. * * @param Blueprint $table * @param string $indexName @@ -1782,7 +1782,7 @@ private function dropUniqueIfExists(Blueprint $table, string $indexName) } /** - * A helper function that allows to drop an index if exists. + * A helper function that allows to drop an foreign key if exists. * * @param Blueprint $table * @param string $indexName diff --git a/database/migrations/2022_12_12_100000_enable_disable_album_photo_counters.php b/database/migrations/2022_12_12_100000_enable_disable_album_photo_counters.php index 495233964ce..2f2381d2479 100644 --- a/database/migrations/2022_12_12_100000_enable_disable_album_photo_counters.php +++ b/database/migrations/2022_12_12_100000_enable_disable_album_photo_counters.php @@ -1,6 +1,7 @@ getConnection(); + $this->schemaManager = $connection->getDoctrineSchemaManager(); + } + + /** + * Run the migrations. + */ + public function up(): void + { + Schema::table(self::ACCESS_PERMISSIONS, function (Blueprint $table) { + $table->index([self::IS_LINK_REQUIRED]); // for albums which don't require a direct link and are public + $table->index([self::IS_LINK_REQUIRED, self::PASSWORD]); // for albums which are public and how no password + }); + + $optimize = new OptimizeTables(); + $optimize->exec(); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table(self::ACCESS_PERMISSIONS, function (Blueprint $table) { + $this->dropIndexIfExists($table, self::ACCESS_PERMISSIONS . '_' . self::IS_LINK_REQUIRED . '_index'); + $this->dropIndexIfExists($table, self::ACCESS_PERMISSIONS . '_' . self::IS_LINK_REQUIRED . '_' . self::PASSWORD . '_index'); + }); + } + + /** + * A helper function that allows to drop an index if exists. + * + * @param Blueprint $table + * @param string $indexName + * + * @throws DBALException + */ + private function dropIndexIfExists(Blueprint $table, string $indexName): void + { + $doctrineTable = $this->schemaManager->introspectTable($table->getTable()); + if ($doctrineTable->hasIndex($indexName)) { + $table->dropIndex($indexName); + } + } +}; diff --git a/resources/views/access-permissions.blade.php b/resources/views/access-permissions.blade.php index c266a566815..0831f95971f 100644 --- a/resources/views/access-permissions.blade.php +++ b/resources/views/access-permissions.blade.php @@ -1,3 +1,26 @@ +
+
+
+ @php + $same = true; + $data1_array = explode("\n",$data1); + $data2_array = explode("\n",$data2); + @endphp + @for ($i = 0; $i < count($data1_array) && $i < count($data2_array); $i++) + @if ($data1_array[$i] !== $data2_array[$i]) +
{{ $i }} - {{ $data1_array[$i] }}
+
{{ $i }} + {{ $data2_array[$i] }}
+ @php + $same = false + @endphp + @endif + @endfor + @if ($same) +
Identical content
+ @endif +
+
+
{{ $data1 }}
From 65ae23c54f761545b06d4a1588c1adae77f4e542 Mon Sep 17 00:00:00 2001 From: qwerty287 <80460567+qwerty287@users.noreply.github.com> Date: Wed, 28 Jun 2023 17:18:47 +0200 Subject: [PATCH 005/209] Update dependencies (#1908) * composer * sync front --- composer.lock | 106 +++++++++++++++++++-------------------- public/Lychee-front | 2 +- public/dist/frontend.css | 2 +- public/dist/frontend.js | 81 +++++++++++++++++++++++------- public/dist/landing.css | 2 - public/dist/landing.js | 4 +- 6 files changed, 121 insertions(+), 76 deletions(-) diff --git a/composer.lock b/composer.lock index bb1ce1f4989..68ad1b42c62 100644 --- a/composer.lock +++ b/composer.lock @@ -2041,16 +2041,16 @@ }, { "name": "laravel/framework", - "version": "v10.13.5", + "version": "v10.14.1", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "03106ae9ba2ec4b36dc973b7bdca6fad81e032b4" + "reference": "6f89a2b74b232d8bf2e1d9ed87e311841263dfcb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/03106ae9ba2ec4b36dc973b7bdca6fad81e032b4", - "reference": "03106ae9ba2ec4b36dc973b7bdca6fad81e032b4", + "url": "https://api.github.com/repos/laravel/framework/zipball/6f89a2b74b232d8bf2e1d9ed87e311841263dfcb", + "reference": "6f89a2b74b232d8bf2e1d9ed87e311841263dfcb", "shasum": "" }, "require": { @@ -2237,7 +2237,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-06-08T20:25:36+00:00" + "time": "2023-06-28T14:25:16+00:00" }, { "name": "laravel/serializable-closure", @@ -5089,16 +5089,16 @@ }, { "name": "symfony/cache", - "version": "v6.3.0", + "version": "v6.3.1", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "357bf04b1380f71e40b2d6592dbf7f2a948ca6b1" + "reference": "52cff7608ef6e38376ac11bd1fbb0a220107f066" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/357bf04b1380f71e40b2d6592dbf7f2a948ca6b1", - "reference": "357bf04b1380f71e40b2d6592dbf7f2a948ca6b1", + "url": "https://api.github.com/repos/symfony/cache/zipball/52cff7608ef6e38376ac11bd1fbb0a220107f066", + "reference": "52cff7608ef6e38376ac11bd1fbb0a220107f066", "shasum": "" }, "require": { @@ -5165,7 +5165,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.3.0" + "source": "https://github.com/symfony/cache/tree/v6.3.1" }, "funding": [ { @@ -5181,7 +5181,7 @@ "type": "tidelift" } ], - "time": "2023-05-10T09:21:01+00:00" + "time": "2023-06-24T11:51:27+00:00" }, { "name": "symfony/cache-contracts", @@ -5777,16 +5777,16 @@ }, { "name": "symfony/http-foundation", - "version": "v6.3.0", + "version": "v6.3.1", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "718a97ed430d34e5c568ea2c44eab708c6efbefb" + "reference": "e0ad0d153e1c20069250986cd9e9dd1ccebb0d66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/718a97ed430d34e5c568ea2c44eab708c6efbefb", - "reference": "718a97ed430d34e5c568ea2c44eab708c6efbefb", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e0ad0d153e1c20069250986cd9e9dd1ccebb0d66", + "reference": "e0ad0d153e1c20069250986cd9e9dd1ccebb0d66", "shasum": "" }, "require": { @@ -5834,7 +5834,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.3.0" + "source": "https://github.com/symfony/http-foundation/tree/v6.3.1" }, "funding": [ { @@ -5850,20 +5850,20 @@ "type": "tidelift" } ], - "time": "2023-05-19T12:46:45+00:00" + "time": "2023-06-24T11:51:27+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.3.0", + "version": "v6.3.1", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "241973f3dd900620b1ca052fe409144f11aea748" + "reference": "161e16fd2e35fb4881a43bc8b383dfd5be4ac374" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/241973f3dd900620b1ca052fe409144f11aea748", - "reference": "241973f3dd900620b1ca052fe409144f11aea748", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/161e16fd2e35fb4881a43bc8b383dfd5be4ac374", + "reference": "161e16fd2e35fb4881a43bc8b383dfd5be4ac374", "shasum": "" }, "require": { @@ -5947,7 +5947,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.3.0" + "source": "https://github.com/symfony/http-kernel/tree/v6.3.1" }, "funding": [ { @@ -5963,7 +5963,7 @@ "type": "tidelift" } ], - "time": "2023-05-30T19:03:32+00:00" + "time": "2023-06-26T06:07:32+00:00" }, { "name": "symfony/mailer", @@ -6926,16 +6926,16 @@ }, { "name": "symfony/routing", - "version": "v6.3.0", + "version": "v6.3.1", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "827f59fdc67eecfc4dfff81f9c93bf4d98f0c89b" + "reference": "d37ad1779c38b8eb71996d17dc13030dcb7f9cf5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/827f59fdc67eecfc4dfff81f9c93bf4d98f0c89b", - "reference": "827f59fdc67eecfc4dfff81f9c93bf4d98f0c89b", + "url": "https://api.github.com/repos/symfony/routing/zipball/d37ad1779c38b8eb71996d17dc13030dcb7f9cf5", + "reference": "d37ad1779c38b8eb71996d17dc13030dcb7f9cf5", "shasum": "" }, "require": { @@ -6988,7 +6988,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.3.0" + "source": "https://github.com/symfony/routing/tree/v6.3.1" }, "funding": [ { @@ -7004,7 +7004,7 @@ "type": "tidelift" } ], - "time": "2023-04-28T15:57:00+00:00" + "time": "2023-06-05T15:30:22+00:00" }, { "name": "symfony/service-contracts", @@ -7423,16 +7423,16 @@ }, { "name": "symfony/var-dumper", - "version": "v6.3.0", + "version": "v6.3.1", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "6acdcd5c122074ee9f7b051e4fb177025c277a0e" + "reference": "c81268d6960ddb47af17391a27d222bd58cf0515" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6acdcd5c122074ee9f7b051e4fb177025c277a0e", - "reference": "6acdcd5c122074ee9f7b051e4fb177025c277a0e", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c81268d6960ddb47af17391a27d222bd58cf0515", + "reference": "c81268d6960ddb47af17391a27d222bd58cf0515", "shasum": "" }, "require": { @@ -7485,7 +7485,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.3.0" + "source": "https://github.com/symfony/var-dumper/tree/v6.3.1" }, "funding": [ { @@ -7501,7 +7501,7 @@ "type": "tidelift" } ], - "time": "2023-05-25T13:09:35+00:00" + "time": "2023-06-21T12:08:28+00:00" }, { "name": "symfony/var-exporter", @@ -8794,16 +8794,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.19.1", + "version": "v3.20.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "14772488aa1f31bd7ed767c390b96841ca687435" + "reference": "0e8249e0b15e2bc022fbbd1090ce29d071481e69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/14772488aa1f31bd7ed767c390b96841ca687435", - "reference": "14772488aa1f31bd7ed767c390b96841ca687435", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/0e8249e0b15e2bc022fbbd1090ce29d071481e69", + "reference": "0e8249e0b15e2bc022fbbd1090ce29d071481e69", "shasum": "" }, "require": { @@ -8878,7 +8878,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.19.1" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.20.0" }, "funding": [ { @@ -8886,7 +8886,7 @@ "type": "github" } ], - "time": "2023-06-24T17:16:35+00:00" + "time": "2023-06-27T20:22:39+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -9261,16 +9261,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.15.5", + "version": "v4.16.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e" + "reference": "19526a33fb561ef417e822e85f08a00db4059c17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/11e2663a5bc9db5d714eedb4277ee300403b4a9e", - "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/19526a33fb561ef417e822e85f08a00db4059c17", + "reference": "19526a33fb561ef417e822e85f08a00db4059c17", "shasum": "" }, "require": { @@ -9311,9 +9311,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.5" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.16.0" }, - "time": "2023-05-19T20:20:00+00:00" + "time": "2023-06-25T14:52:30+00:00" }, { "name": "nunomaduro/larastan", @@ -11443,16 +11443,16 @@ }, { "name": "symfony/filesystem", - "version": "v6.3.0", + "version": "v6.3.1", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "97b698e1d77d356304def77a8d0cd73090b359ea" + "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/97b698e1d77d356304def77a8d0cd73090b359ea", - "reference": "97b698e1d77d356304def77a8d0cd73090b359ea", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", + "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", "shasum": "" }, "require": { @@ -11486,7 +11486,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.3.0" + "source": "https://github.com/symfony/filesystem/tree/v6.3.1" }, "funding": [ { @@ -11502,7 +11502,7 @@ "type": "tidelift" } ], - "time": "2023-05-30T17:12:32+00:00" + "time": "2023-06-01T08:30:39+00:00" }, { "name": "symfony/options-resolver", diff --git a/public/Lychee-front b/public/Lychee-front index 42d044bc478..e727d1b59a5 160000 --- a/public/Lychee-front +++ b/public/Lychee-front @@ -1 +1 @@ -Subproject commit 42d044bc478ad02a8940012d1c7d18a1114e0e74 +Subproject commit e727d1b59a59b57887962147f6749aaf8cbc7ebb diff --git a/public/dist/frontend.css b/public/dist/frontend.css index 1f5978703c7..0682b7086a2 100644 --- a/public/dist/frontend.css +++ b/public/dist/frontend.css @@ -1 +1 @@ -@charset "UTF-8";@-webkit-keyframes basicModal__fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes basicModal__fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes basicModal__fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes basicModal__fadeOut{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes basicModal__moveUpFade{0%{-webkit-transform:translateY(80px);transform:translateY(80px)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes basicModal__moveUpFade{0%{-webkit-transform:translateY(80px);transform:translateY(80px)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes basicModal__shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}20%,60%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes basicModal__shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}20%,60%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}.basicModalContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:fixed;width:100%;height:100%;top:0;left:0;background-color:rgba(0,0,0,.4);z-index:1000;-webkit-box-sizing:border-box;box-sizing:border-box}.basicModalContainer *,.basicModalContainer :after,.basicModalContainer :before{-webkit-box-sizing:border-box;box-sizing:border-box}.basicModalContainer--fadeIn{-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__fadeIn;animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__fadeIn}.basicModalContainer--fadeOut{-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__fadeOut;animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__fadeOut}.basicModalContainer--fadeIn .basicModal--fadeIn{-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__moveUpFade;animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__moveUpFade}.basicModalContainer--fadeIn .basicModal--shake{-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__shake;animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__shake}.basicModal{position:relative;width:500px;background-color:#fff;border-radius:5px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.2);box-shadow:0 1px 2px rgba(0,0,0,.2)}.basicModal__content{padding:7%;max-height:70vh;overflow:auto;-webkit-overflow-scrolling:touch}.basicModal__buttons{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;-webkit-box-shadow:0 -1px 0 rgba(0,0,0,.1);box-shadow:0 -1px 0 rgba(0,0,0,.1)}.basicModal__button{display:inline-block;width:100%;font-weight:700;text-align:center;-webkit-transition:background-color .2s;-o-transition:background-color .2s;transition:background-color .2s;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.basicModal__button:hover{background-color:rgba(0,0,0,.02)}.basicModal__button#basicModal__cancel{-ms-flex-negative:2;flex-shrink:2}.basicModal__button#basicModal__action{-ms-flex-negative:1;flex-shrink:1;-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.1);box-shadow:inset 1px 0 0 rgba(0,0,0,.1)}.basicModal__button#basicModal__action:first-child{-webkit-box-shadow:none;box-shadow:none}.basicModal__button:first-child{border-radius:0 0 0 5px}.basicModal__button:last-child{border-radius:0 0 5px}.basicModal__small{max-width:340px;text-align:center}.basicModal__small .basicModal__content{padding:10% 5%}.basicModal__xclose#basicModal__cancel{position:absolute;top:-8px;right:-8px;margin:0;padding:0;width:40px;height:40px;background-color:#fff;border-radius:100%;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.2);box-shadow:0 1px 2px rgba(0,0,0,.2)}.basicModal__xclose#basicModal__cancel:after{content:"";position:absolute;left:-3px;top:8px;width:35px;height:34px;background:#fff}.basicModal__xclose#basicModal__cancel svg{position:relative;width:20px;height:39px;fill:#888;z-index:1;-webkit-transition:fill .2s;-o-transition:fill .2s;transition:fill .2s}.basicModal__xclose#basicModal__cancel:after:hover svg,.basicModal__xclose#basicModal__cancel:hover svg{fill:#2875ed}.basicModal__xclose#basicModal__cancel:active svg,.basicModal__xclose#basicModal__cancel:after:active svg{fill:#1364e3}.basicContextContainer{position:fixed;width:100%;height:100%;top:0;left:0;z-index:1000;-webkit-tap-highlight-color:transparent}.basicContext{position:absolute;opacity:0;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.2) basicContext__popIn;animation:.3s cubic-bezier(.51,.92,.24,1.2) basicContext__popIn}.basicContext *{-webkit-box-sizing:border-box;box-sizing:border-box}.basicContext__item{cursor:pointer}.basicContext__item--separator{float:left;width:100%;cursor:default}.basicContext__data{min-width:140px;text-align:left}.basicContext__icon{display:inline-block}.basicContext--scrollable{height:100%;-webkit-overflow-scrolling:touch;overflow-x:hidden;overflow-y:auto}.basicContext--scrollable .basicContext__data{min-width:160px}@-webkit-keyframes basicContext__popIn{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes basicContext__popIn{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1;background-color:#1d1d1d;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;-webkit-font-smoothing:antialiased;-moz-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}table{border-collapse:collapse;border-spacing:0}em,i{font-style:italic}b,strong{font-weight:700}*{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:color .3s,opacity .3s ease-out,-webkit-transform .3s ease-out,-webkit-box-shadow .3s;transition:color .3s,opacity .3s ease-out,transform .3s ease-out,box-shadow .3s,-webkit-transform .3s ease-out,-webkit-box-shadow .3s;-o-transition:color .3s,opacity .3s ease-out,transform .3s ease-out,box-shadow .3s}body,html{width:100%;height:100%;position:relative;overflow:clip}body.mode-frame div#container,body.mode-none div#container{display:none}input,textarea{-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;user-select:text!important}.svgsprite{display:none}.iconic{width:100%;height:100%}#upload{display:none}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1);animation-timing-function:cubic-bezier(.51,.92,.24,1)}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1);animation-timing-function:cubic-bezier(.51,.92,.24,1)}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes moveBackground{0%{background-position-x:0}100%{background-position-x:-100px}}@keyframes moveBackground{0%{background-position-x:0}100%{background-position-x:-100px}}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes zoomOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}}@keyframes zoomOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}}@-webkit-keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}body.mode-frame #lychee_application_container,body.mode-none #lychee_application_container{display:none}.hflex-container,.hflex-item-rigid,.hflex-item-stretch,.vflex-container,.vflex-item-rigid,.vflex-item-stretch{position:relative;overflow:clip}.hflex-container,.vflex-container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:stretch;align-content:stretch;gap:0 0}.vflex-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.hflex-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.hflex-item-stretch,.vflex-item-stretch{-webkit-box-flex:1;-ms-flex:auto;flex:auto}.hflex-item-stretch{width:0;height:100%}.vflex-item-stretch{width:100%;height:0}.hflex-item-rigid,.vflex-item-rigid{-webkit-box-flex:0;-ms-flex:none;flex:none}.hflex-item-rigid{width:auto;height:100%}.vflex-item-rigid{width:100%;height:auto}.overlay-container{position:absolute;display:none;top:0;left:0;width:100%;height:100%;background-color:#000;-webkit-transition:background-color .3s;-o-transition:background-color .3s;transition:background-color .3s}.overlay-container.full{cursor:none}.overlay-container.active{display:unset}#lychee_view_content{height:auto;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-line-pack:start;align-content:flex-start;padding-bottom:16px;-webkit-overflow-scrolling:touch}#lychee_view_content.contentZoomIn .album,#lychee_view_content.contentZoomIn .photo{-webkit-animation-name:zoomIn;animation-name:zoomIn}#lychee_view_content.contentZoomIn .divider{-webkit-animation-name:fadeIn;animation-name:fadeIn}#lychee_view_content.contentZoomOut .album,#lychee_view_content.contentZoomOut .photo{-webkit-animation-name:zoomOut;animation-name:zoomOut}#lychee_view_content.contentZoomOut .divider{-webkit-animation-name:fadeOut;animation-name:fadeOut}.album,.photo{position:relative;width:202px;height:202px;margin:30px 0 0 30px;cursor:default;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1);animation-timing-function:cubic-bezier(.51,.92,.24,1)}.album .thumbimg,.photo .thumbimg{position:absolute;width:200px;height:200px;background:#222;color:#222;-webkit-box-shadow:0 2px 5px rgba(0,0,0,.5);box-shadow:0 2px 5px rgba(0,0,0,.5);border:1px solid rgba(255,255,255,.5);-webkit-transition:opacity .3s ease-out,border-color .3s ease-out,-webkit-transform .3s ease-out;transition:opacity .3s ease-out,transform .3s ease-out,border-color .3s ease-out,-webkit-transform .3s ease-out;-o-transition:opacity .3s ease-out,transform .3s ease-out,border-color .3s ease-out}.album .thumbimg>img,.photo .thumbimg>img{width:100%;height:100%}.album.active .thumbimg,.album:focus .thumbimg,.photo.active .thumbimg,.photo:focus .thumbimg{border-color:#2293ec}.album:active .thumbimg,.photo:active .thumbimg{-webkit-transition:none;-o-transition:none;transition:none;border-color:#0f6ab2}.album.selected img,.photo.selected img{outline:#2293ec solid 1px}.album .video::before,.photo .video::before{content:"";position:absolute;display:block;height:100%;width:100%;background:url(../img/play-icon.png) 46% 50% no-repeat;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;will-change:opacity,height}.album .video:focus::before,.photo .video:focus::before{opacity:.75}.album .livephoto::before,.photo .livephoto::before{content:"";position:absolute;display:block;height:100%;width:100%;background:url(../img/live-photo-icon.png) 2% 2% no-repeat;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;will-change:opacity,height}.album .livephoto:focus::before,.photo .livephoto:focus::before{opacity:.75}.album .thumbimg:first-child,.album .thumbimg:nth-child(2){-webkit-transform:rotate(0) translateY(0) translateX(0);-ms-transform:rotate(0) translateY(0) translateX(0);transform:rotate(0) translateY(0) translateX(0);opacity:0}.album:focus .thumbimg:nth-child(1),.album:focus .thumbimg:nth-child(2){opacity:1;will-change:transform}.album:focus .thumbimg:nth-child(1){-webkit-transform:rotate(-2deg) translateY(10px) translateX(-12px);-ms-transform:rotate(-2deg) translateY(10px) translateX(-12px);transform:rotate(-2deg) translateY(10px) translateX(-12px)}.album:focus .thumbimg:nth-child(2){-webkit-transform:rotate(5deg) translateY(-8px) translateX(12px);-ms-transform:rotate(5deg) translateY(-8px) translateX(12px);transform:rotate(5deg) translateY(-8px) translateX(12px)}.blurred span{overflow:hidden}.blurred img{-webkit-filter:blur(5px);filter:blur(5px)}.album .album_counters{position:absolute;right:8px;top:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:4px 4px;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right;font:bold 10px sans-serif;-webkit-filter:drop-shadow(0 0 4px rgba(0, 0, 0, .75));filter:drop-shadow(0 0 4px rgba(0, 0, 0, .75))}.album .album_counters .layers{position:relative;padding:6px 4px}.album .album_counters .layers .iconic{fill:#fff;width:12px;height:12px}.album .album_counters .folders,.album .album_counters .photos{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:distribute;justify-content:space-around;text-align:end}.album .album_counters .folders .iconic,.album .album_counters .photos .iconic{fill:#fff;width:15px;height:15px}.album .album_counters .folders span,.album .album_counters .photos span{position:absolute;bottom:0;color:#222;padding-right:1px;padding-left:1px}.album .album_counters .folders span{right:0;line-height:.9}.album .album_counters .photos span{right:4px;min-width:10px;background-color:#fff;padding-top:1px;line-height:1}.album .overlay,.photo .overlay{position:absolute;margin:0 1px;width:200px;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(rgba(0,0,0,.6)));background:-o-linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,.6));background:linear-gradient(to bottom,rgba(0,0,0,0),rgba(0,0,0,.6));bottom:1px}.album .thumbimg[data-overlay=false]+.overlay{background:0 0}.photo .overlay{opacity:0}.photo.active .overlay,.photo:focus .overlay{opacity:1}.album .overlay h1,.photo .overlay h1{min-height:19px;width:180px;margin:12px 0 5px 15px;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.4);font-size:16px;font-weight:700;overflow:hidden;white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis}.album .overlay a,.photo .overlay a{display:block;margin:0 0 12px 15px;font-size:11px;color:#ccc;text-shadow:0 1px 3px rgba(0,0,0,.4)}.album .overlay a .iconic,.photo .overlay a .iconic{fill:#ccc;margin:0 5px 0 0;width:8px;height:8px}.album .thumbimg[data-overlay=false]+.overlay a,.album .thumbimg[data-overlay=false]+.overlay h1{text-shadow:none}.album .badges,.photo .badges{position:absolute;margin:-1px 0 0 6px}.album .subalbum_badge{position:absolute;right:0;top:0}.album .badge,.photo .badge{display:none;margin:0 0 0 6px;padding:12px 8px 6px;width:18px;background:#d92c34;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);border-radius:0 0 5px 5px;border:1px solid #fff;border-top:none;color:#fff;text-align:center;text-shadow:0 1px 0 rgba(0,0,0,.4);opacity:.9}.album .badge--visible,.photo .badge--visible{display:inline-block}.album .badge--not--hidden,.photo .badge--not--hidden{background:#0a0}.album .badge--hidden,.photo .badge--hidden{background:#f90}.album .badge--cover,.photo .badge--cover{display:inline-block;background:#f90}.album .badge--star,.photo .badge--star{display:inline-block;background:#fc0}.album .badge--nsfw,.photo .badge--nsfw{display:inline-block;background:#ff82ee}.album .badge--list,.photo .badge--list{background:#2293ec}.album .badge--tag,.photo .badge--tag{display:inline-block;background:#0a0}.album .badge .iconic,.photo .badge .iconic{fill:#fff;width:16px;height:16px}.divider{margin:50px 0 0;padding:10px 0 0;width:100%;opacity:0;border-top:1px solid rgba(255,255,255,.02);-webkit-box-shadow:0 -1px 0 rgba(0,0,0,.2);box-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1);animation-timing-function:cubic-bezier(.51,.92,.24,1)}.divider:first-child{margin-top:10px;border-top:0;-webkit-box-shadow:none;box-shadow:none}.divider h1{margin:0 0 0 30px;color:rgba(255,255,255,.6);font-size:14px;font-weight:700}@media only screen and (min-width:320px) and (max-width:567px){.album,.photo{--size:calc((100vw - 3px) / 3);width:calc(var(--size) - 3px);height:calc(var(--size) - 3px);margin:3px 0 0 3px}.album .thumbimg,.photo .thumbimg{width:calc(var(--size) - 5px);height:calc(var(--size) - 5px)}.album .overlay,.photo .overlay{width:calc(var(--size) - 5px)}.album .overlay h1,.photo .overlay h1{min-height:14px;width:calc(var(--size) - 19px);margin:8px 0 2px 6px;font-size:12px}.album .overlay a,.photo .overlay a{display:none}.album .badge,.photo .badge{padding:4px 3px 3px;width:12px}.album .badge .iconic,.photo .badge .iconic{width:12px;height:12px}.album .album_counters{-webkit-filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));font:bold 7px sans-serif;gap:2px 2px;right:3px;top:3px}.album .album_counters .layers{position:relative;padding:3px 2px}.album .album_counters .layers .iconic{fill:#fff;width:8px;height:8px}.album .album_counters .folders .iconic,.album .album_counters .photos .iconic{width:11px;height:11px}.album .album_counters .photos span{right:3px;min-width:5px;line-height:.9;padding-top:2px}.divider{margin:20px 0 0}.divider:first-child{margin-top:0}.divider h1{margin:0 0 6px 8px;font-size:12px}}@media only screen and (min-width:568px) and (max-width:639px){.album,.photo{--size:calc((100vw - 3px) / 4);width:calc(var(--size) - 3px);height:calc(var(--size) - 3px);margin:3px 0 0 3px}.album .thumbimg,.photo .thumbimg{width:calc(var(--size) - 5px);height:calc(var(--size) - 5px)}.album .overlay,.photo .overlay{width:calc(var(--size) - 5px)}.album .overlay h1,.photo .overlay h1{min-height:14px;width:calc(var(--size) - 19px);margin:8px 0 2px 6px;font-size:12px}.album .overlay a,.photo .overlay a{display:none}.album .badge,.photo .badge{padding:4px 3px 3px;width:14px}.album .badge .iconic,.photo .badge .iconic{width:14px;height:14px}.album .album_counters{-webkit-filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));font:bold 8px sans-serif;gap:3px 3px;right:4px;top:4px}.album .album_counters .layers{position:relative;padding:3px 2px}.album .album_counters .layers .iconic{fill:#fff;width:9px;height:9px}.album .album_counters .folders .iconic,.album .album_counters .photos .iconic{width:13px;height:13px}.album .album_counters .photos span{right:3px;min-width:8px;padding-top:2px}.divider{margin:24px 0 0}.divider:first-child{margin-top:0}.divider h1{margin:0 0 6px 10px}}@media only screen and (min-width:640px) and (max-width:768px){.album,.photo{--size:calc((100vw - 5px) / 5);width:calc(var(--size) - 5px);height:calc(var(--size) - 5px);margin:5px 0 0 5px}.album .thumbimg,.photo .thumbimg{width:calc(var(--size) - 7px);height:calc(var(--size) - 7px)}.album .overlay,.photo .overlay{width:calc(var(--size) - 7px)}.album .overlay h1,.photo .overlay h1{min-height:14px;width:calc(var(--size) - 21px);margin:10px 0 3px 8px;font-size:12px}.album .overlay a,.photo .overlay a{display:none}.album .badge,.photo .badge{padding:6px 4px 4px;width:16px}.album .badge .iconic,.photo .badge .iconic{width:16px;height:16px}.album .album_counters{-webkit-filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));font:bold 9px sans-serif;gap:4px 4px;right:6px;top:6px}.album .album_counters .layers{position:relative;padding:3px 2px}.album .album_counters .layers .iconic{fill:#fff;width:11px;height:11px}.album .album_counters .folders .iconic,.album .album_counters .photos .iconic{width:15px;height:15px}.album .album_counters .folders span{line-height:1}.album .album_counters .photos span{right:3px;min-width:10px;padding-top:2px}.divider{margin:28px 0 0}.divider:first-child{margin-top:0}.divider h1{margin:0 0 6px 10px}}.no_content{position:absolute;top:50%;left:50%;padding-top:20px;color:rgba(255,255,255,.35);text-align:center;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.no_content .iconic{fill:rgba(255,255,255,.3);margin:0 0 10px;width:50px;height:50px}.no_content p{font-size:16px;font-weight:700}body.mode-gallery #lychee_frame_container,body.mode-none #lychee_frame_container,body.mode-view #lychee_frame_container{display:none}#lychee_frame_bg_canvas{width:100%;height:100%;position:absolute}#lychee_frame_bg_image{position:absolute;display:none}#lychee_frame_noise_layer{position:absolute;top:0;left:0;width:100%;height:100%;background-image:url(../img/noise.png);background-repeat:repeat;background-position:44px 44px}#lychee_frame_image_container{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-line-pack:center;align-content:center}#lychee_frame_image_container img{height:95%;width:95%;-o-object-fit:contain;object-fit:contain;-webkit-filter:drop-shadow(0 0 1px rgba(0, 0, 0, .3)) drop-shadow(0 0 10px rgba(0, 0, 0, .3));filter:drop-shadow(0 0 1px rgba(0, 0, 0, .3)) drop-shadow(0 0 10px rgba(0, 0, 0, .3))}#lychee_frame_shutter{position:absolute;width:100%;height:100%;top:0;left:0;padding:0;margin:0;background-color:#1d1d1d;opacity:1;-webkit-transition:opacity 1s ease-in-out;-o-transition:opacity 1s ease-in-out;transition:opacity 1s ease-in-out}#lychee_frame_shutter.opened{opacity:0}#lychee_left_menu_container{width:0;background-color:#111;padding-top:16px;-webkit-transition:width .5s;-o-transition:width .5s;transition:width .5s;height:100%;z-index:998}#lychee_left_menu,#lychee_left_menu_container.visible{width:250px}#lychee_left_menu a{padding:8px 8px 8px 32px;text-decoration:none;font-size:18px;color:#818181;display:block;cursor:pointer}#lychee_left_menu a.linkMenu{white-space:nowrap}#lychee_left_menu .iconic{display:inline-block;margin:0 10px 0 1px;width:15px;height:14px;fill:#818181}#lychee_left_menu .iconic.ionicons{margin:0 8px -2px 0;width:18px;height:18px}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){#lychee_left_menu,#lychee_left_menu_container{position:absolute;left:0}#lychee_left_menu_container.visible{width:100%}}@media (hover:hover){.album:hover .thumbimg,.photo:hover .thumbimg{border-color:#2293ec}.album .livephoto:hover::before,.album .video:hover::before,.photo .livephoto:hover::before,.photo .video:hover::before{opacity:.75}.album:hover .thumbimg:nth-child(1),.album:hover .thumbimg:nth-child(2),.album__dragover .thumbimg:nth-child(1),.album__dragover .thumbimg:nth-child(2){opacity:1;will-change:transform}.album:hover .thumbimg:nth-child(1),.album__dragover .thumbimg:nth-child(1){-webkit-transform:rotate(-2deg) translateY(10px) translateX(-12px);-ms-transform:rotate(-2deg) translateY(10px) translateX(-12px);transform:rotate(-2deg) translateY(10px) translateX(-12px)}.album:hover .thumbimg:nth-child(2),.album__dragover .thumbimg:nth-child(2){-webkit-transform:rotate(5deg) translateY(-8px) translateX(12px);-ms-transform:rotate(5deg) translateY(-8px) translateX(12px);transform:rotate(5deg) translateY(-8px) translateX(12px)}.photo:hover .overlay{opacity:1}#lychee_left_menu a:hover{color:#f1f1f1}}.basicContext{padding:5px 0 6px;background:-webkit-gradient(linear,left top,left bottom,from(#333),to(#252525));background:-o-linear-gradient(top,#333,#252525);background:linear-gradient(to bottom,#333,#252525);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 4px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.05);border-radius:5px;border:1px solid rgba(0,0,0,.7);border-bottom:1px solid rgba(0,0,0,.8);-webkit-transition:none;-o-transition:none;transition:none;max-width:240px}.basicContext__item{margin-bottom:2px;font-size:14px;color:#ccc}.basicContext__item--separator{margin:4px 0;height:2px;background:rgba(0,0,0,.2);border-bottom:1px solid rgba(255,255,255,.06)}.basicContext__item--disabled{cursor:default;opacity:.5}.basicContext__item:last-child{margin-bottom:0}.basicContext__data{min-width:auto;padding:6px 25px 7px 12px;white-space:normal;overflow-wrap:normal;-webkit-transition:none;-o-transition:none;transition:none;cursor:default}@media (hover:none) and (pointer:coarse){.basicContext__data{padding:12px 25px 12px 12px}}.basicContext__item:not(.basicContext__item--disabled):active .basicContext__data{background:-webkit-gradient(linear,left top,left bottom,from(#1178ca),to(#0f6ab2));background:-o-linear-gradient(top,#1178ca,#0f6ab2);background:linear-gradient(to bottom,#1178ca,#0f6ab2)}.basicContext__icon{margin-right:10px;width:12px;text-align:center}@media (hover:hover){.basicContext__item:not(.basicContext__item--disabled):hover .basicContext__data{background:-webkit-gradient(linear,left top,left bottom,from(#2293ec),to(#1386e1));background:-o-linear-gradient(top,#2293ec,#1386e1);background:linear-gradient(to bottom,#2293ec,#1386e1)}.basicContext__item:hover{color:#fff;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}.basicContext__item:hover .iconic{fill:#fff}.basicContext__item--noHover:hover .basicContext__data{background:0 0!important}}#addMenu{top:48px!important;left:unset!important;right:4px}.basicContext__data{padding-left:40px}.basicContext__data .cover{position:absolute;background-color:#222;border-radius:2px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.5);box-shadow:0 0 0 1px rgba(0,0,0,.5)}.basicContext__data .title{display:inline-block;margin:0 0 3px 26px}.basicContext__data .iconic{display:inline-block;margin:0 10px 0 -22px;width:11px;height:10px;fill:#fff}.basicContext__data .iconic.active{fill:#f90}.basicContext__data .iconic.ionicons{margin:0 8px -2px 0;width:14px;height:14px}.basicContext__data input#link{margin:-2px 0;padding:5px 7px 6px;width:100%;background:#333;color:#fff;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05);border:1px solid rgba(0,0,0,.4);border-radius:3px;outline:0}.basicContext__item--noHover .basicContext__data{padding-right:12px}div.basicModalContainer{background-color:rgba(0,0,0,.85);z-index:999}div.basicModalContainer--error{-webkit-transform:translateY(40px);-ms-transform:translateY(40px);transform:translateY(40px)}div.basicModal{background:-webkit-gradient(linear,left top,left bottom,from(#444),to(#333));background:-o-linear-gradient(top,#444,#333);background:linear-gradient(to bottom,#444,#333);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 4px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.05);font-size:14px;line-height:17px}div.basicModal--error{-webkit-transform:translateY(-40px);-ms-transform:translateY(-40px);transform:translateY(-40px)}div.basicModal__buttons{-webkit-box-shadow:none;box-shadow:none}.basicModal__button{padding:13px 0 15px;background:0 0;color:#999;border-top:1px solid rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02);box-shadow:inset 0 1px 0 rgba(255,255,255,.02);cursor:default}.basicModal__button--busy,.basicModal__button:active{-webkit-transition:none;-o-transition:none;transition:none;background:rgba(0,0,0,.1);cursor:wait}.basicModal__button#basicModal__action{color:#2293ec;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2)}.basicModal__button#basicModal__action.red,.basicModal__button#basicModal__cancel.red{color:#d92c34}.basicModal__button.hidden{display:none}div.basicModal__content{padding:36px;color:#ececec;text-align:left}div.basicModal__content>*{display:block;width:100%;margin:24px 0;padding:0}div.basicModal__content>.force-first-child,div.basicModal__content>:first-child{margin-top:0}div.basicModal__content>.force-last-child,div.basicModal__content>:last-child{margin-bottom:0}div.basicModal__content .disabled{color:#999}div.basicModal__content b{font-weight:700;color:#fff}div.basicModal__content a{color:inherit;text-decoration:none;border-bottom:1px dashed #ececec}div.basicModal__content a.button{display:inline-block;margin:0 6px;padding:3px 12px;color:#2293ec;text-align:center;border-radius:5px;border:none;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2)}div.basicModal__content a.button .iconic{fill:#2293ec}div.basicModal__content>hr{border:none;border-top:1px solid rgba(0,0,0,.3)}#lychee_toolbar_container{-webkit-transition:height .3s ease-out;-o-transition:height .3s ease-out;transition:height .3s ease-out}#lychee_toolbar_container.hidden{height:0}#lychee_toolbar_container,.toolbar{height:49px}.toolbar{background:-webkit-gradient(linear,left top,left bottom,from(#222),to(#1a1a1a));background:-o-linear-gradient(top,#222,#1a1a1a);background:linear-gradient(to bottom,#222,#1a1a1a);border-bottom:1px solid #0f0f0f;display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.toolbar.visible{display:-webkit-box;display:-ms-flexbox;display:flex}#lychee_toolbar_config .toolbar .button .iconic{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}#lychee_toolbar_config .toolbar .header__title{padding-right:80px}.toolbar .header__title{width:100%;padding:16px 0;color:#fff;font-size:16px;font-weight:700;text-align:center;cursor:default;overflow:hidden;white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis;-webkit-transition:margin-left .5s;-o-transition:margin-left .5s;transition:margin-left .5s}.toolbar .header__title .iconic{display:none;margin:0 0 0 5px;width:10px;height:10px;fill:rgba(255,255,255,.5);-webkit-transition:fill .2s ease-out;-o-transition:fill .2s ease-out;transition:fill .2s ease-out}.toolbar .header__title:active .iconic{-webkit-transition:none;-o-transition:none;transition:none;fill:rgba(255,255,255,.8)}.toolbar .header__title--editable .iconic{display:inline-block}.toolbar .button{-ms-flex-negative:0;flex-shrink:0;padding:16px 8px;height:15px}.toolbar .button .iconic{width:15px;height:15px;fill:rgba(255,255,255,.5);-webkit-transition:fill .2s ease-out;-o-transition:fill .2s ease-out;transition:fill .2s ease-out}.toolbar .button:active .iconic{-webkit-transition:none;-o-transition:none;transition:none;fill:rgba(255,255,255,.8)}.toolbar .button--star.active .iconic{fill:#f0ef77}.toolbar .button--eye.active .iconic{fill:#d92c34}.toolbar .button--eye.active--not-hidden .iconic{fill:#0a0}.toolbar .button--eye.active--hidden .iconic{fill:#f90}.toolbar .button--share .iconic.ionicons{margin:-2px 0;width:18px;height:18px}.toolbar .button--nsfw.active .iconic{fill:#ff82ee}.toolbar .button--info.active .iconic{fill:#2293ec}.toolbar #button_back,.toolbar #button_back_home,.toolbar #button_close_config,.toolbar #button_settings,.toolbar #button_signin{padding:16px 12px 16px 18px}.toolbar .button_add{padding:16px 18px 16px 12px}.toolbar .header__divider{-ms-flex-negative:0;flex-shrink:0;width:14px}.toolbar .header__search__field{position:relative}.toolbar input[type=text].header__search{-ms-flex-negative:0;flex-shrink:0;width:80px;margin:0;padding:5px 12px 6px;background-color:#1d1d1d;color:#fff;border:1px solid rgba(0,0,0,.9);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.04);box-shadow:0 1px 0 rgba(255,255,255,.04);outline:0;border-radius:50px;opacity:.6;-webkit-transition:opacity .3s ease-out,width .2s ease-out,-webkit-box-shadow .3s ease-out;transition:opacity .3s ease-out,box-shadow .3s ease-out,width .2s ease-out,-webkit-box-shadow .3s ease-out;-o-transition:opacity .3s ease-out,box-shadow .3s ease-out,width .2s ease-out}.toolbar input[type=text].header__search:focus{width:140px;border-color:#2293ec;-webkit-box-shadow:0 1px 0 rgba(255,255,255,0);box-shadow:0 1px 0 rgba(255,255,255,0);opacity:1}.toolbar input[type=text].header__search:focus~.header__clear{opacity:1}.toolbar input[type=text].header__search::-ms-clear{display:none}.toolbar .header__clear{position:absolute;top:50%;-ms-transform:translateY(-50%);-webkit-transform:translateY(-50%);transform:translateY(-50%);right:8px;padding:0;color:rgba(255,255,255,.5);font-size:24px;opacity:0;-webkit-transition:color .2s ease-out;-o-transition:color .2s ease-out;transition:color .2s ease-out;cursor:default}.toolbar .header__clear_nomap{right:60px}.toolbar .header__hostedwith{-ms-flex-negative:0;flex-shrink:0;padding:5px 10px;margin:11px 0;color:#888;font-size:13px;border-radius:100px;cursor:default}@media only screen and (max-width:640px){#button_move,#button_move_album,#button_nsfw_album,#button_trash,#button_trash_album,#button_visibility,#button_visibility_album{display:none!important}}@media only screen and (max-width:640px) and (max-width:567px){#button_rotate_ccwise,#button_rotate_cwise{display:none!important}.header__divider{width:0}}#imageview #image,#imageview #livephoto{position:absolute;top:30px;right:30px;bottom:30px;left:30px;margin:auto;max-width:calc(100% - 60px);max-height:calc(100% - 60px);width:auto;height:auto;-webkit-transition:top .3s,right .3s,bottom .3s,left .3s,max-width .3s,max-height .3s;-o-transition:top .3s,right .3s,bottom .3s,left .3s,max-width .3s,max-height .3s;transition:top .3s,right .3s,bottom .3s,left .3s,max-width .3s,max-height .3s;-webkit-animation-name:zoomIn;animation-name:zoomIn;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1.15);animation-timing-function:cubic-bezier(.51,.92,.24,1.15);background-size:contain;background-position:center;background-repeat:no-repeat}#imageview.full #image,#imageview.full #livephoto{top:0;right:0;bottom:0;left:0;max-width:100%;max-height:100%}#imageview #image_overlay{position:absolute;bottom:30px;left:30px;color:#fff;text-shadow:1px 1px 2px #000;z-index:3}#imageview #image_overlay h1{font-size:28px;font-weight:500;-webkit-transition:visibility .3s linear,opacity .3s linear;-o-transition:visibility .3s linear,opacity .3s linear;transition:visibility .3s linear,opacity .3s linear}#imageview #image_overlay p{margin-top:5px;font-size:20px;line-height:24px}#imageview #image_overlay a .iconic{fill:#fff;margin:0 5px 0 0;width:14px;height:14px}#imageview .arrow_wrapper{position:absolute;width:15%;height:calc(100% - 60px);top:60px}#imageview .arrow_wrapper--previous{left:0}#imageview .arrow_wrapper--next{right:0}#imageview .arrow_wrapper a{position:absolute;top:50%;margin:-19px 0 0;padding:8px 12px;width:16px;height:22px;background-size:100% 100%;border:1px solid rgba(255,255,255,.8);opacity:.6;z-index:2;-webkit-transition:opacity .2s ease-out,-webkit-transform .2s ease-out;transition:transform .2s ease-out,opacity .2s ease-out,-webkit-transform .2s ease-out;-o-transition:transform .2s ease-out,opacity .2s ease-out;will-change:transform}#imageview .arrow_wrapper a#previous{left:-1px;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}#imageview .arrow_wrapper a#next{right:-1px;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}#imageview .arrow_wrapper .iconic{fill:rgba(255,255,255,.8)}#imageview video{z-index:1}@media (hover:hover){.basicModal__button:hover{background:rgba(255,255,255,.02)}div.basicModal__content a.button:hover{color:#fff;background:#2293ec}.toolbar .button:hover .iconic,.toolbar .header__title:hover .iconic,div.basicModal__content a.button:hover .iconic{fill:#fff}.toolbar .header__clear:hover{color:#fff}.toolbar .header__hostedwith:hover{background-color:rgba(0,0,0,.3)}#imageview .arrow_wrapper:hover a#next,#imageview .arrow_wrapper:hover a#previous{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}#imageview .arrow_wrapper a:hover{opacity:1}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){#imageview #image,#imageview #livephoto{top:0;right:0;bottom:0;left:0;max-width:100%;max-height:100%}#imageview #image_overlay h1{font-size:14px}#imageview #image_overlay p{margin-top:2px;font-size:11px;line-height:13px}#imageview #image_overlay a .iconic{width:9px;height:9px}}@media only screen and (min-width:568px) and (max-width:768px),only screen and (min-width:568px) and (max-width:640px) and (orientation:landscape){#imageview #image,#imageview #livephoto{top:0;right:0;bottom:0;left:0;max-width:100%;max-height:100%}#imageview #image_overlay h1{font-size:18px}#imageview #image_overlay p{margin-top:4px;font-size:14px;line-height:16px}#imageview #image_overlay a .iconic{width:12px;height:12px}}.leaflet-marker-photo img{width:100%;height:100%}.image-leaflet-popup{width:100%}.leaflet-popup-content div{pointer-events:none;position:absolute;bottom:19px;left:22px;right:22px;padding-bottom:10px;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(rgba(0,0,0,.6)));background:-o-linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,.6));background:linear-gradient(to bottom,rgba(0,0,0,0),rgba(0,0,0,.6))}.leaflet-popup-content h1{top:0;position:relative;margin:12px 0 5px 15px;font-size:16px;font-weight:700;text-shadow:0 1px 3px rgba(255,255,255,.4);color:#fff;white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis}.leaflet-popup-content span{margin-left:12px}.leaflet-popup-content svg{fill:#fff;vertical-align:middle}.leaflet-popup-content p{display:inline;font-size:11px;color:#fff}.leaflet-popup-content .iconic{width:20px;height:15px}#lychee_sidebar_container{width:0;-webkit-transition:width .3s cubic-bezier(.51,.92,.24,1);-o-transition:width .3s cubic-bezier(.51,.92,.24,1);transition:width .3s cubic-bezier(.51,.92,.24,1)}#lychee_sidebar,#lychee_sidebar_container.active{width:350px}#lychee_sidebar{height:100%;background-color:rgba(25,25,25,.98);border-left:1px solid rgba(0,0,0,.2)}#lychee_sidebar_header{height:49px;background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,.02)),to(rgba(0,0,0,0)));background:-o-linear-gradient(top,rgba(255,255,255,.02),rgba(0,0,0,0));background:linear-gradient(to bottom,rgba(255,255,255,.02),rgba(0,0,0,0));border-top:1px solid #2293ec}#lychee_sidebar_header h1{margin:15px 0;color:#fff;font-size:16px;font-weight:700;text-align:center;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content{overflow:clip auto;-webkit-overflow-scrolling:touch}#lychee_sidebar_content .sidebar__divider{padding:12px 0 8px;width:100%;border-top:1px solid rgba(255,255,255,.02);-webkit-box-shadow:0 -1px 0 rgba(0,0,0,.2);box-shadow:0 -1px 0 rgba(0,0,0,.2)}#lychee_sidebar_content .sidebar__divider:first-child{border-top:0;-webkit-box-shadow:none;box-shadow:none}#lychee_sidebar_content .sidebar__divider h1{margin:0 0 0 20px;color:rgba(255,255,255,.6);font-size:14px;font-weight:700;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content .edit{display:inline-block;margin-left:3px;width:10px}#lychee_sidebar_content .edit .iconic{width:10px;height:10px;fill:rgba(255,255,255,.5);-webkit-transition:fill .2s ease-out;-o-transition:fill .2s ease-out;transition:fill .2s ease-out}#lychee_sidebar_content .edit:active .iconic{-webkit-transition:none;-o-transition:none;transition:none;fill:rgba(255,255,255,.8)}#lychee_sidebar_content table{margin:10px 0 15px 20px;width:calc(100% - 20px)}#lychee_sidebar_content table tr td{padding:5px 0;color:#fff;font-size:14px;line-height:19px;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content table tr td:first-child{width:110px}#lychee_sidebar_content table tr td:last-child{padding-right:10px}#lychee_sidebar_content table tr td span{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content #tags{width:calc(100% - 40px);margin:16px 20px 12px;color:#fff;display:inline-block}#lychee_sidebar_content #tags>div{display:inline-block}#lychee_sidebar_content #tags .empty{font-size:14px;margin:0 2px 8px 0;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content #tags .edit{margin-top:6px}#lychee_sidebar_content #tags .empty .edit{margin-top:0}#lychee_sidebar_content #tags .tag{cursor:default;display:inline-block;padding:6px 10px;margin:0 6px 8px 0;background-color:rgba(0,0,0,.5);border-radius:100px;font-size:12px;-webkit-transition:background-color .2s;-o-transition:background-color .2s;transition:background-color .2s;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content #tags .tag span{display:inline-block;padding:0;margin:0 0 -2px;width:0;overflow:hidden;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:width .2s,margin .2s,fill .2s ease-out,-webkit-transform .2s;transition:width .2s,margin .2s,transform .2s,fill .2s ease-out,-webkit-transform .2s;-o-transition:width .2s,margin .2s,transform .2s,fill .2s ease-out}#lychee_sidebar_content #tags .tag span .iconic{fill:#d92c34;width:8px;height:8px}#lychee_sidebar_content #tags .tag span:active .iconic{-webkit-transition:none;-o-transition:none;transition:none;fill:#b22027}#lychee_sidebar_content #leaflet_map_single_photo{margin:10px 0 0 20px;height:180px;width:calc(100% - 40px)}#lychee_sidebar_content .attr_location.search{cursor:pointer}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){#lychee_sidebar_container{position:absolute;right:0}#lychee_sidebar{background-color:rgba(0,0,0,.6)}#lychee_sidebar,#lychee_sidebar_container.active{width:240px}#lychee_sidebar_header{height:22px}#lychee_sidebar_header h1{margin:6px 0;font-size:13px}#lychee_sidebar_content{padding-bottom:10px}#lychee_sidebar_content .sidebar__divider{padding:6px 0 2px}#lychee_sidebar_content .sidebar__divider h1{margin:0 0 0 10px;font-size:12px}#lychee_sidebar_content #tags,#lychee_sidebar_content table{margin:4px 0 6px 10px;width:calc(100% - 16px)}#lychee_sidebar_content table tr td{padding:2px 0;font-size:11px;line-height:12px}#lychee_sidebar_content table tr td:first-child{width:80px}#lychee_sidebar_content #tags .empty{margin:0;font-size:11px}}@media only screen and (min-width:568px) and (max-width:768px),only screen and (min-width:568px) and (max-width:640px) and (orientation:landscape){#lychee_sidebar,#lychee_sidebar_container.active{width:280px}#lychee_sidebar_header{height:28px}#lychee_sidebar_header h1{margin:8px 0;font-size:15px}#lychee_sidebar_content{padding-bottom:10px}#lychee_sidebar_content .sidebar__divider{padding:8px 0 4px}#lychee_sidebar_content .sidebar__divider h1{margin:0 0 0 10px;font-size:13px}#lychee_sidebar_content #tags,#lychee_sidebar_content table{margin:4px 0 6px 10px;width:calc(100% - 16px)}#lychee_sidebar_content table tr td{padding:2px 0;font-size:12px;line-height:13px}#lychee_sidebar_content table tr td:first-child{width:90px}#lychee_sidebar_content #tags .empty{margin:0;font-size:12px}}#lychee_loading{height:0;-webkit-transition:height .3s;-o-transition:height .3s;transition:height .3s;background-size:100px 3px;background-repeat:repeat-x;-webkit-animation-name:moveBackground;animation-name:moveBackground;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}#lychee_loading.loading{height:3px;background-image:-webkit-gradient(linear,left top,right top,from(#153674),color-stop(47%,#153674),color-stop(53%,#2651ae),to(#2651ae));background-image:-o-linear-gradient(left,#153674 0,#153674 47%,#2651ae 53%,#2651ae 100%);background-image:linear-gradient(to right,#153674 0,#153674 47%,#2651ae 53%,#2651ae 100%)}#lychee_loading.error{height:40px;background-color:#2f0d0e;background-image:-webkit-gradient(linear,left top,right top,from(#451317),color-stop(47%,#451317),color-stop(53%,#aa3039),to(#aa3039));background-image:-o-linear-gradient(left,#451317 0,#451317 47%,#aa3039 53%,#aa3039 100%);background-image:linear-gradient(to right,#451317 0,#451317 47%,#aa3039 53%,#aa3039 100%)}#lychee_loading.success{height:40px;background-color:#070;background-image:-webkit-gradient(linear,left top,right top,from(#070),color-stop(47%,#090),color-stop(53%,#0a0),to(#0c0));background-image:-o-linear-gradient(left,#070 0,#090 47%,#0a0 53%,#0c0 100%);background-image:linear-gradient(to right,#070 0,#090 47%,#0a0 53%,#0c0 100%)}#lychee_loading h1{margin:13px 13px 0;color:#ddd;font-size:14px;font-weight:700;text-shadow:0 1px 0 #000;text-transform:capitalize}#lychee_loading h1 span{margin-left:10px;font-weight:400;text-transform:none}div.select,input,output,select,textarea{display:inline-block;position:relative}div.select>select{display:block;width:100%}div.select,input,output,select,select option,textarea{color:#fff;background-color:#2c2c2c;margin:0;font-size:inherit;line-height:inherit;padding:0;border:none;-webkit-box-shadow:none;box-shadow:none;outline:0}input[type=password],input[type=text],select{padding-top:3px;padding-bottom:3px}input[type=password],input[type=text]{padding-left:2px;padding-right:2px;background-color:transparent;border-bottom:1px solid #222;border-radius:0;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05)}input[type=password]:focus,input[type=text]:focus{border-bottom-color:#2293ec}input[type=password].error,input[type=text].error{border-bottom-color:#d92c34}input[type=checkbox]{top:2px;height:16px;width:16px;-webkit-appearance:none;-moz-appearance:none;appearance:none;color:#2293ec;border:none;border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}input[type=checkbox]::before{content:"✔";position:absolute;text-align:center;font-size:16px;line-height:16px;top:0;bottom:0;left:0;right:0;width:auto;height:auto;visibility:hidden}input[type=checkbox]:checked::before{visibility:visible}input[type=checkbox].slider{top:5px;height:22px;width:42px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);border-radius:11px;background:#2c2c2c}input[type=checkbox].slider::before{content:"";background-color:#2293ec;height:14px;width:14px;left:3px;top:3px;border:none;border-radius:7px;visibility:visible}input[type=checkbox].slider:checked{background-color:#2293ec}input[type=checkbox].slider:checked::before{left:auto;right:3px;background-color:#fff}div.select{font-size:12px;background:#2c2c2c;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02)}div.select::after{position:absolute;content:"≡";right:8px;top:3px;color:#2293ec;font-size:16px;font-weight:700;pointer-events:none}select{padding-left:8px;padding-right:8px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:0 0}select option{padding:2px 0;-webkit-transition:none;-o-transition:none;transition:none}form div.input-group{position:relative;margin:18px 0}form div.input-group:first-child{margin-top:0}form div.input-group:last-child{margin-bottom:0}form div.input-group.hidden{display:none}form div.input-group label{font-weight:700}form div.input-group p{display:block;margin:6px 0;font-size:13px;line-height:16px}form div.input-group p:last-child{margin-bottom:0}form div.input-group.stacked>label{display:block;margin-bottom:6px}form div.input-group.stacked>label>input[type=password],form div.input-group.stacked>label>input[type=text]{margin-top:12px}form div.input-group.stacked>div.select,form div.input-group.stacked>input,form div.input-group.stacked>output,form div.input-group.stacked>textarea{width:100%;display:block}form div.input-group.compact{padding-left:120px}form div.input-group.compact>label{display:block;position:absolute;margin:0;left:0;width:108px;height:auto;top:3px;bottom:0;overflow-y:hidden}form div.input-group.compact>div.select,form div.input-group.compact>input,form div.input-group.compact>output,form div.input-group.compact>textarea{display:block;width:100%}form div.input-group.compact-inverse{padding-left:36px}form div.input-group.compact-inverse label{display:block}form div.input-group.compact-inverse>div.select,form div.input-group.compact-inverse>input,form div.input-group.compact-inverse>output,form div.input-group.compact-inverse>textarea{display:block;position:absolute;width:16px;height:16px;top:2px;left:0}form div.input-group.compact-no-indent>label{display:inline}form div.input-group.compact-no-indent>div.select,form div.input-group.compact-no-indent>input,form div.input-group.compact-no-indent>output,form div.input-group.compact-no-indent>textarea{display:inline-block;margin-left:.3em;margin-right:.3em}div.basicModal.about-dialog div.basicModal__content h1{font-size:120%;font-weight:700;text-align:center;color:#fff}div.basicModal.about-dialog div.basicModal__content h2{font-weight:700;color:#fff}div.basicModal.about-dialog div.basicModal__content p.update-status.up-to-date-git,div.basicModal.about-dialog div.basicModal__content p.update-status.up-to-date-release{display:none}div.basicModal.about-dialog div.basicModal__content p.about-desc{line-height:1.4em}div.basicModal.downloads div.basicModal__content a.button{display:block;margin:12px 0;padding:12px;font-weight:700;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02);box-shadow:inset 0 1px 0 rgba(255,255,255,.02);border:1px solid rgba(0,0,0,.2)}div.basicModal.downloads div.basicModal__content a.button .iconic{width:12px;height:12px;margin-right:12px}div.basicModal.qr-code{width:300px}div.basicModal.qr-code div.basicModal__content{padding:12px}.basicModal.import div.basicModal__content{padding:12px 8px}.basicModal.import div.basicModal__content h1{margin-bottom:12px;color:#fff;font-size:16px;line-height:19px;font-weight:700;text-align:center}.basicModal.import div.basicModal__content ol{margin-top:12px;height:300px;background-color:#2c2c2c;overflow:hidden;overflow-y:auto;border-radius:3px;-webkit-box-shadow:inset 0 0 3px rgba(0,0,0,.4);box-shadow:inset 0 0 3px rgba(0,0,0,.4)}.basicModal.import div.basicModal__content ol li{float:left;padding:8px 0;width:100%;background-color:rgba(255,255,255,.02)}.basicModal.import div.basicModal__content ol li:nth-child(2n){background-color:rgba(255,255,255,0)}.basicModal.import div.basicModal__content ol li h2{float:left;padding:5px 10px;width:70%;color:#fff;font-size:14px;white-space:nowrap;overflow:hidden}.basicModal.import div.basicModal__content ol li p.status{float:left;padding:5px 10px;width:30%;color:#999;font-size:14px;text-align:right;-webkit-animation-name:pulse;animation-name:pulse;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.basicModal.import div.basicModal__content ol li p.status.error,.basicModal.import div.basicModal__content ol li p.status.success,.basicModal.import div.basicModal__content ol li p.status.warning{-webkit-animation:none;animation:none}.basicModal.import div.basicModal__content ol li p.status.error{color:#d92c34}.basicModal.import div.basicModal__content ol li p.status.warning{color:#fc0}.basicModal.import div.basicModal__content ol li p.status.success{color:#0a0}.basicModal.import div.basicModal__content ol li p.notice{float:left;padding:2px 10px 5px;width:100%;color:#999;font-size:12px;overflow:hidden;line-height:16px}.basicModal.import div.basicModal__content ol li p.notice:empty{display:none}div.basicModal.login div.basicModal__content a.button#signInKeyLess{position:absolute;display:block;color:#999;top:8px;left:8px;width:30px;height:30px;margin:0;padding:5px;cursor:pointer;-webkit-box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);border:1px solid rgba(0,0,0,.2)}div.basicModal.login div.basicModal__content a.button#signInKeyLess .iconic{width:100%;height:100%;fill:#999}div.basicModal.login div.basicModal__content p.version{font-size:12px;text-align:right}div.basicModal.login div.basicModal__content p.version span.update-status.up-to-date-git,div.basicModal.login div.basicModal__content p.version span.update-status.up-to-date-release{display:none}@media (hover:hover){#lychee_sidebar .edit:hover .iconic{fill:#fff}#lychee_sidebar #tags .tag:hover{background-color:rgba(0,0,0,.3)}#lychee_sidebar #tags .tag:hover.search{cursor:pointer}#lychee_sidebar #tags .tag:hover span{width:9px;margin:0 0 -2px 5px;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}#lychee_sidebar #tags .tag span:hover .iconic{fill:#e1575e}div.basicModal.login div.basicModal__content a.button#signInKeyLess:hover{color:#fff;background:inherit}div.basicModal.login div.basicModal__content a.button#signInKeyLess:hover .iconic{fill:#fff}}form.photo-links div.input-group{padding-right:30px}form.photo-links div.input-group a.button{display:block;position:absolute;margin:0;padding:4px;right:0;bottom:0;width:26px;height:26px;cursor:pointer;-webkit-box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);border:1px solid rgba(0,0,0,.2)}form.photo-links div.input-group a.button .iconic{width:100%;height:100%}form.token div.input-group{padding-right:82px}form.token div.input-group input.disabled,form.token div.input-group input[disabled]{color:#999}form.token div.input-group div.button-group{display:block;position:absolute;margin:0;padding:0;right:0;bottom:0;width:78px}form.token div.input-group div.button-group a.button{display:block;float:right;margin:0;padding:4px;bottom:4px;width:26px;height:26px;cursor:pointer;-webkit-box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);border:1px solid rgba(0,0,0,.2)}form.token div.input-group div.button-group a.button .iconic{width:100%;height:100%}#sensitive_warning{background:rgba(100,0,0,.95);text-align:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#fff}#sensitive_warning.active{display:-webkit-box;display:-ms-flexbox;display:flex}#sensitive_warning h1{font-size:36px;font-weight:700;border-bottom:2px solid #fff;margin-bottom:15px}#sensitive_warning p{font-size:20px;max-width:40%;margin-top:15px}.settings_view{width:90%;max-width:700px;margin-left:auto;margin-right:auto}.settings_view input.text{padding:9px 2px;width:calc(50% - 4px);background-color:transparent;color:#fff;border:none;border-bottom:1px solid #222;border-radius:0;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05);outline:0}.settings_view input.text:focus{border-bottom-color:#2293ec}.settings_view input.text .error{border-bottom-color:#d92c34}.settings_view .basicModal__button{color:#2293ec;display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);border-radius:5px}.settings_view .basicModal__button_MORE,.settings_view .basicModal__button_SAVE{color:#b22027;border-radius:5px}.settings_view>div{font-size:14px;width:100%;padding:12px 0}.settings_view>div p{margin:0 0 5%;width:100%;color:#ccc;line-height:16px}.settings_view>div p a{color:rgba(255,255,255,.9);text-decoration:none;border-bottom:1px dashed #888}.settings_view>div p:last-of-type{margin:0}.settings_view>div input.text{width:100%}.settings_view>div textarea{padding:9px;width:calc(100% - 18px);height:100px;background-color:transparent;color:#fff;border:1px solid #666;border-radius:0;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05);outline:0;resize:vertical}.settings_view>div textarea:focus{border-color:#2293ec}.settings_view>div .choice{padding:0 30px 15px;width:100%;color:#fff}.settings_view>div .choice:last-child{padding-bottom:40px}.settings_view>div .choice label{float:left;color:#fff;font-size:14px;font-weight:700}.settings_view>div .choice label input{position:absolute;margin:0;opacity:0}.settings_view>div .choice label .checkbox{float:left;display:block;width:16px;height:16px;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.settings_view>div .choice label .checkbox .iconic{-webkit-box-sizing:border-box;box-sizing:border-box;fill:#2293ec;padding:2px;opacity:0;-ms-transform:scale(0);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);-o-transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1)}.settings_view>div .select{position:relative;margin:1px 5px;padding:0;width:110px;color:#fff;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);font-size:11px;line-height:16px;overflow:hidden;outline:0;vertical-align:middle;background:rgba(0,0,0,.3);display:inline-block}.settings_view>div .select select{margin:0;padding:4px 8px;width:120%;color:#fff;font-size:11px;line-height:16px;border:0;outline:0;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background-color:transparent;background-image:none;-moz-appearance:none;-webkit-appearance:none;appearance:none}.settings_view>div .select select option{margin:0;padding:0;background:#fff;color:#333;-webkit-transition:none;-o-transition:none;transition:none}.settings_view>div .select select:disabled{color:#000;cursor:not-allowed}.settings_view>div .select::after{position:absolute;content:"≡";right:8px;top:4px;color:#2293ec;font-size:16px;line-height:16px;font-weight:700;pointer-events:none}.settings_view>div .switch{position:relative;display:inline-block;width:42px;height:22px;bottom:-2px;line-height:24px}.settings_view>div .switch input{opacity:0;width:0;height:0}.settings_view>div .slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);background:rgba(0,0,0,.3);-webkit-transition:.4s;-o-transition:.4s;transition:.4s}.settings_view>div .slider:before{position:absolute;content:"";height:14px;width:14px;left:3px;bottom:3px;background-color:#2293ec}.settings_view>div input:checked+.slider{background-color:#2293ec}.settings_view>div input:checked+.slider:before{-ms-transform:translateX(20px);-webkit-transform:translateX(20px);transform:translateX(20px);background-color:#fff}.settings_view>div .slider.round{border-radius:20px}.settings_view>div .slider.round:before{border-radius:50%}.settings_view .setting_category{font-size:20px;width:100%;padding-top:10px;padding-left:4px;border-bottom:1px dotted #222;margin-top:20px;color:#fff;font-weight:700;text-transform:capitalize}.settings_view .setting_line{font-size:14px;width:100%}.settings_view .setting_line:first-child,.settings_view .setting_line:last-child{padding-top:50px}.settings_view .setting_line p{min-width:550px;margin:0;color:#ccc;display:inline-block;width:100%;overflow-wrap:break-word}.settings_view .setting_line p a{color:rgba(255,255,255,.9);text-decoration:none;border-bottom:1px dashed #888}.settings_view .setting_line p:last-of-type{margin:0}.settings_view .setting_line p .warning{margin-bottom:30px;color:#d92c34;font-weight:700;font-size:18px;text-align:justify;line-height:22px}.settings_view .setting_line span.text{display:inline-block;padding:9px 4px;width:calc(50% - 12px);background-color:transparent;color:#fff;border:none}.settings_view .setting_line span.text_icon{width:5%}.settings_view .setting_line span.text_icon .iconic{width:15px;height:14px;margin:0 10px 0 1px;fill:#fff}.settings_view .setting_line input.text{width:calc(50% - 4px)}@media (hover:hover){.settings_view .basicModal__button:hover{background:#2293ec;color:#fff;cursor:pointer}.settings_view .basicModal__button_MORE:hover,.settings_view .basicModal__button_SAVE:hover{background:#b22027;color:#fff}.settings_view input:hover{border-bottom:1px solid #2293ec}}@media (hover:none){#lychee_left_menu a{padding:14px 8px 14px 32px}.settings_view input.text{border-bottom:1px solid #2293ec;margin:6px 0}.settings_view>div{padding:16px 0}.settings_view .basicModal__button{background:#2293ec;color:#fff;max-width:320px;margin-top:20px}.settings_view .basicModal__button_MORE,.settings_view .basicModal__button_SAVE{background:#b22027}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.settings_view{max-width:100%}.settings_view .setting_category{font-size:14px;padding-left:0;margin-bottom:4px}.settings_view .setting_line{font-size:12px}.settings_view .setting_line:first-child{padding-top:20px}.settings_view .setting_line p{min-width:unset;line-height:20px}.settings_view .setting_line p.warning{font-size:14px;line-height:16px;margin-bottom:0}.settings_view .setting_line p input,.settings_view .setting_line p span{padding:0}.settings_view .basicModal__button_SAVE{margin-top:20px}}.users_view{width:90%;max-width:700px;margin-left:auto;margin-right:auto}.users_view_line{font-size:14px;width:100%}.users_view_line:first-child,.users_view_line:last-child{padding-top:50px}.users_view_line p{width:550px;margin:0 0 5%;color:#ccc;display:inline-block}.users_view_line p a{color:rgba(255,255,255,.9);text-decoration:none;border-bottom:1px dashed #888}.users_view_line p.line,.users_view_line p:last-of-type{margin:0}.users_view_line span.text{display:inline-block;padding:9px 6px 9px 0;width:40%;background-color:transparent;color:#fff;border:none}.users_view_line span.text_icon{width:5%;min-width:32px}.users_view_line span.text_icon .iconic{width:15px;height:14px;margin:0 8px;fill:#fff}.users_view_line input.text{padding:9px 6px 9px 0;width:40%;background-color:transparent;color:#fff;border:none;border-bottom:1px solid #222;border-radius:0;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05);outline:0;margin:0 0 10px}.users_view_line input.text:focus{border-bottom-color:#2293ec}.users_view_line input.text.error{border-bottom-color:#d92c34}.users_view_line .choice label input:checked~.checkbox .iconic{opacity:1;-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}.users_view_line .choice{display:inline-block;width:5%;min-width:32px;color:#fff}.users_view_line .choice input{position:absolute;margin:0;opacity:0}.users_view_line .choice .checkbox{display:inline-block;width:16px;height:16px;margin:10px 8px 0;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.users_view_line .choice .checkbox .iconic{-webkit-box-sizing:border-box;box-sizing:border-box;fill:#2293ec;padding:2px;opacity:0;-ms-transform:scale(0);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);-o-transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1)}.users_view_line .basicModal__button{display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);width:10%;min-width:72px;border-radius:0}.users_view_line .basicModal__button_OK{color:#2293ec;border-radius:5px 0 0 5px;margin-right:-4px}.users_view_line .basicModal__button_OK_no_DEL{border-radius:5px;min-width:144px;width:20%}.users_view_line .basicModal__button_DEL{color:#b22027;border-radius:0 5px 5px 0}.users_view_line .basicModal__button_CREATE{width:20%;color:#090;border-radius:5px;min-width:144px}.users_view_line .select{position:relative;margin:1px 5px;padding:0;width:110px;color:#fff;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);font-size:11px;line-height:16px;overflow:hidden;outline:0;vertical-align:middle;background:rgba(0,0,0,.3);display:inline-block}.users_view_line .select select{margin:0;padding:4px 8px;width:120%;color:#fff;font-size:11px;line-height:16px;border:0;outline:0;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background:0 0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.users_view_line .select select option{margin:0;padding:0;background:#fff;color:#333;-webkit-transition:none;-o-transition:none;transition:none}.users_view_line .select::after{position:absolute;content:"≡";right:8px;top:4px;color:#2293ec;font-size:16px;line-height:16px;font-weight:700;pointer-events:none}@media (hover:hover){.users_view_line .basicModal__button:hover{cursor:pointer;color:#fff}.users_view_line .basicModal__button_OK:hover{background:#2293ec}.users_view_line .basicModal__button_DEL:hover{background:#b22027}.users_view_line .basicModal__button_CREATE:hover{background:#090}.users_view_line input:hover{border-bottom:1px solid #2293ec}}@media (hover:none){.users_view_line .basicModal__button{color:#fff}.users_view_line .basicModal__button_OK{background:#2293ec}.users_view_line .basicModal__button_DEL{background:#b22027}.users_view_line .basicModal__button_CREATE{background:#090}.users_view_line input{border-bottom:1px solid #2293ec}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.users_view{width:100%;max-width:100%;padding:20px}.users_view_line p{width:100%}.users_view_line p .text,.users_view_line p input.text{width:36%;font-size:smaller}.users_view_line .choice{margin-left:-8px;margin-right:3px}}.u2f_view{width:90%;max-width:700px;margin-left:auto;margin-right:auto}.u2f_view_line{font-size:14px;width:100%}.u2f_view_line:first-child,.u2f_view_line:last-child{padding-top:50px}.u2f_view_line p{width:550px;margin:0 0 5%;color:#ccc;display:inline-block}.u2f_view_line p a{color:rgba(255,255,255,.9);text-decoration:none;border-bottom:1px dashed #888}.u2f_view_line p.line,.u2f_view_line p:last-of-type{margin:0}.u2f_view_line p.single{text-align:center}.u2f_view_line span.text{display:inline-block;padding:9px 4px;width:80%;background-color:transparent;color:#fff;border:none}.u2f_view_line span.text_icon{width:5%}.u2f_view_line span.text_icon .iconic{width:15px;height:14px;margin:0 15px 0 1px;fill:#fff}.u2f_view_line .choice label input:checked~.checkbox .iconic{opacity:1;-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}.u2f_view_line .choice{display:inline-block;width:5%;color:#fff}.u2f_view_line .choice input{position:absolute;margin:0;opacity:0}.u2f_view_line .choice .checkbox{display:inline-block;width:16px;height:16px;margin-top:10px;margin-left:2px;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.u2f_view_line .choice .checkbox .iconic{-webkit-box-sizing:border-box;box-sizing:border-box;fill:#2293ec;padding:2px;opacity:0;-ms-transform:scale(0);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);-o-transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1)}.u2f_view_line .basicModal__button{display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);width:20%;min-width:50px;border-radius:0}.u2f_view_line .basicModal__button_OK{color:#2293ec;border-radius:5px 0 0 5px}.u2f_view_line .basicModal__button_DEL{color:#b22027;border-radius:0 5px 5px 0}.u2f_view_line .basicModal__button_CREATE{width:100%;color:#090;border-radius:5px}.u2f_view_line .select{position:relative;margin:1px 5px;padding:0;width:110px;color:#fff;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);font-size:11px;line-height:16px;overflow:hidden;outline:0;vertical-align:middle;background:rgba(0,0,0,.3);display:inline-block}.u2f_view_line .select select{margin:0;padding:4px 8px;width:120%;color:#fff;font-size:11px;line-height:16px;border:0;outline:0;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background:0 0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.u2f_view_line .select select option{margin:0;padding:0;background:#fff;color:#333;-webkit-transition:none;-o-transition:none;transition:none}.u2f_view_line .select::after{position:absolute;content:"≡";right:8px;top:4px;color:#2293ec;font-size:16px;line-height:16px;font-weight:700;pointer-events:none}@media (hover:hover){.u2f_view_line .basicModal__button:hover{cursor:pointer}.u2f_view_line .basicModal__button_OK:hover{background:#2293ec;color:#fff}.u2f_view_line .basicModal__button_DEL:hover{background:#b22027;color:#fff}.u2f_view_line .basicModal__button_CREATE:hover{background:#090;color:#fff}.u2f_view_line input:hover{border-bottom:1px solid #2293ec}}@media (hover:none){.u2f_view_line .basicModal__button{color:#fff}.u2f_view_line .basicModal__button_OK{background:#2293ec}.u2f_view_line .basicModal__button_DEL{background:#b22027}.u2f_view_line .basicModal__button_CREATE{background:#090}.u2f_view_line input{border-bottom:1px solid #2293ec}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.u2f_view{width:100%;max-width:100%;padding:20px}.u2f_view_line p{width:100%}.u2f_view_line .basicModal__button_CREATE{width:80%;margin:0 10%}}.logs_diagnostics_view{width:90%;margin-left:auto;margin-right:auto;color:#ccc;font-size:12px;line-height:14px}.logs_diagnostics_view pre{font-family:monospace;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;padding-right:30px}.clear_logs_update{padding-left:30px;margin:20px auto}.clear_logs_update .basicModal__button,.logs_diagnostics_view .basicModal__button{color:#2293ec;display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);border-radius:5px}.clear_logs_update .iconic,.logs_diagnostics_view .iconic{display:inline-block;margin:0 10px 0 1px;width:13px;height:12px;fill:#2293ec}.clear_logs_update .button_left,.logs_diagnostics_view .button_left{margin-left:24px;width:400px}@media (hover:none){.clear_logs_update .basicModal__button,.logs_diagnostics_view .basicModal__button{background:#2293ec;color:#fff;max-width:320px;margin-top:20px}.clear_logs_update .iconic,.logs_diagnostics_view .iconic{fill:#fff}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.clear_logs_update,.logs_diagnostics_view{width:100%;max-width:100%;font-size:11px;line-height:12px}.clear_logs_update .basicModal__button,.clear_logs_update .button_left,.logs_diagnostics_view .basicModal__button,.logs_diagnostics_view .button_left{width:80%;margin:0 10%}.logs_diagnostics_view{padding:10px 10px 0 0}.clear_logs_update{padding:10px 10px 0;margin:0}}.sharing_view{width:90%;max-width:700px;margin-left:auto;margin-right:auto;margin-top:20px}.sharing_view .sharing_view_line{width:100%;display:block;clear:left}.sharing_view .col-xs-1,.sharing_view .col-xs-10,.sharing_view .col-xs-11,.sharing_view .col-xs-12,.sharing_view .col-xs-2,.sharing_view .col-xs-3,.sharing_view .col-xs-4,.sharing_view .col-xs-5,.sharing_view .col-xs-6,.sharing_view .col-xs-7,.sharing_view .col-xs-8,.sharing_view .col-xs-9{float:left;position:relative;min-height:1px}.sharing_view .col-xs-2{width:10%;padding-right:3%;padding-left:3%}.sharing_view .col-xs-5{width:42%}.sharing_view .btn-block+.btn-block{margin-top:5px}.sharing_view .btn-block{display:block;width:100%}.sharing_view .btn-default{color:#2293ec;border-color:#2293ec;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.sharing_view .btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.sharing_view select[multiple],.sharing_view select[size]{height:150px}.sharing_view .form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}.sharing_view .iconic{display:inline-block;width:15px;height:14px;fill:#2293ec}.sharing_view .iconic .iconic.ionicons{margin:0 8px -2px 0;width:18px;height:18px}.sharing_view .blue .iconic{fill:#2293ec}.sharing_view .grey .iconic{fill:#b4b4b4}.sharing_view p{width:100%;color:#ccc;text-align:center;font-size:14px;display:block}.sharing_view p.with{padding:15px 0}.sharing_view span.text{display:inline-block;padding:0 2px;width:40%;background-color:transparent;color:#fff;border:none}.sharing_view span.text:last-of-type{width:5%}.sharing_view span.text .iconic{width:15px;height:14px;margin:0 10px 0 1px;fill:#fff}.sharing_view .basicModal__button{margin-top:10px;color:#2293ec;display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);border-radius:5px}.sharing_view .choice label input:checked~.checkbox .iconic{opacity:1;-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}.sharing_view .choice{display:inline-block;width:5%;margin:0 10px;color:#fff}.sharing_view .choice input{position:absolute;margin:0;opacity:0}.sharing_view .choice .checkbox{display:inline-block;width:16px;height:16px;margin-top:10px;margin-left:2px;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.sharing_view .choice .checkbox .iconic{-webkit-box-sizing:border-box;box-sizing:border-box;fill:#2293ec;padding:2px;opacity:0;-ms-transform:scale(0);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);-o-transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1)}.sharing_view .select{position:relative;padding:0;color:#fff;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);font-size:14px;line-height:16px;outline:0;vertical-align:middle;background:rgba(0,0,0,.3);display:inline-block}.sharing_view .borderBlue{border:1px solid #2293ec}@media (hover:none){.sharing_view .basicModal__button{background:#2293ec;color:#fff}.sharing_view input{border-bottom:1px solid #2293ec}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.sharing_view{width:100%;max-width:100%;padding:10px}.sharing_view .select{font-size:12px}.sharing_view .iconic{margin-left:-4px}.sharing_view_line p{width:100%}.sharing_view_line .basicModal__button{width:80%;margin:0 10%}}#multiselect{position:absolute;background-color:rgba(0,94,204,.3);border:1px solid #005ecc;border-radius:3px;z-index:5}.justified-layout,.unjustified-layout{margin:30px;width:100%;position:relative}.justified-layout.laying-out,.unjustified-layout.laying-out{display:none}.justified-layout>.photo{position:absolute;--lychee-default-height:320px;margin:0}.unjustified-layout>.photo{float:left;max-height:240px;margin:5px}.justified-layout>.photo>.thumbimg,.justified-layout>.photo>.thumbimg>img,.unjustified-layout>.photo>.thumbimg,.unjustified-layout>.photo>.thumbimg>img{width:100%;height:100%;border:none;-o-object-fit:cover;object-fit:cover}.justified-layout>.photo>.overlay,.unjustified-layout>.photo>.overlay{width:100%;bottom:0;margin:0}.justified-layout>.photo>.overlay>h1,.unjustified-layout>.photo>.overlay>h1{width:auto;margin-right:15px}@media only screen and (min-width:320px) and (max-width:567px){.justified-layout{margin:8px}.justified-layout .photo{--lychee-default-height:160px}}@media only screen and (min-width:568px) and (max-width:639px){.justified-layout{margin:9px}.justified-layout .photo{--lychee-default-height:200px}}@media only screen and (min-width:640px) and (max-width:768px){.justified-layout{margin:10px}.justified-layout .photo{--lychee-default-height:240px}}#lychee_footer{text-align:center;padding:5px 0;background:#1d1d1d;-webkit-transition:color .3s,opacity .3s ease-out,margin-left .5s,-webkit-transform .3s ease-out,-webkit-box-shadow .3s;transition:color .3s,opacity .3s ease-out,transform .3s ease-out,box-shadow .3s,margin-left .5s,-webkit-transform .3s ease-out,-webkit-box-shadow .3s;-o-transition:color .3s,opacity .3s ease-out,transform .3s ease-out,box-shadow .3s,margin-left .5s}#lychee_footer p{color:#ccc;font-size:.75em;font-weight:400;line-height:26px}#lychee_footer p a,#lychee_footer p a:visited{color:#ccc}#lychee_footer p.home_copyright,#lychee_footer p.hosted_by{text-transform:uppercase}#lychee_footer #home_socials a[href=""],#lychee_footer p:empty,.hide_footer,body.mode-frame div#footer,body.mode-none div#footer{display:none}@font-face{font-family:socials;src:url(fonts/socials.eot?egvu10);src:url(fonts/socials.eot?egvu10#iefix) format("embedded-opentype"),url(fonts/socials.ttf?egvu10) format("truetype"),url(fonts/socials.woff?egvu10) format("woff"),url(fonts/socials.svg?egvu10#socials) format("svg");font-weight:400;font-style:normal}#socials_footer{padding:0;text-align:center;left:0;right:0}.socialicons{display:inline-block;font-size:18px;font-family:socials!important;speak:none;color:#ccc;text-decoration:none;margin:15px 15px 5px;transition:.3s;-webkit-transition:.3s;-moz-transition:.3s;-o-transition:.3s}#twitter:before{content:"\ea96"}#instagram:before{content:"\ea92"}#youtube:before{content:"\ea9d"}#flickr:before{content:"\eaa4"}#facebook:before{content:"\ea91"}@media (hover:hover){.sharing_view .basicModal__button:hover{background:#2293ec;color:#fff;cursor:pointer}.sharing_view input:hover{border-bottom:1px solid #2293ec}.socialicons:hover{color:#b5b5b5;-ms-transform:scale(1.3);transform:scale(1.3);-webkit-transform:scale(1.3)}}@media tv{.basicModal__button:focus{background:#2293ec;color:#fff;cursor:pointer;outline-style:none}.basicModal__button#basicModal__action:focus{color:#fff}.photo:focus{outline:#fff solid 10px}.album:focus{outline-width:0}.toolbar .button:focus{outline-width:0;background-color:#fff}.header__title:focus{outline-width:0;background-color:#fff;color:#000}.toolbar .button:focus .iconic{fill:#000}#imageview{background-color:#000}#imageview #image,#imageview #livephoto{outline-width:0}}#lychee_view_container{position:absolute;top:0;left:0;height:100%;width:100%;overflow:clip auto}.leaflet-image-layer,.leaflet-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane,.leaflet-pane>canvas,.leaflet-pane>svg,.leaflet-tile,.leaflet-tile-container,.leaflet-zoom-box{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden;-webkit-tap-highlight-color:transparent;background:#ddd;outline-offset:1px;font-family:"Helvetica Neue",Arial,Helvetica,sans-serif;font-size:.75rem;line-height:1.5}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::-moz-selection{background:0 0}.leaflet-tile::selection{background:0 0}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer{max-width:none!important;max-height:none!important;width:auto;padding:0}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4);color:#0078a8}.leaflet-tile{-webkit-filter:inherit;filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;-webkit-box-sizing:border-box;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto;float:left;clear:both}.leaflet-bottom,.leaflet-top{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-right .leaflet-control{float:right;margin-right:10px}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity .2s linear;-o-transition:opacity .2s linear;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1);-o-transition:transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1),-webkit-transform .25s cubic-bezier(0,0,.25,1)}.leaflet-pan-anim .leaflet-tile,.leaflet-zoom-anim .leaflet-tile{-webkit-transition:none;-o-transition:none;transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-control,.leaflet-popup-pane{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:grabbing}.leaflet-image-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-image-layer.leaflet-interactive,.leaflet-marker-icon.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-zoom-box{border:2px dotted #38f;background:rgba(255,255,255,.5)}.leaflet-bar{-webkit-box-shadow:0 1px 5px rgba(0,0,0,.65);box-shadow:0 1px 5px rgba(0,0,0,.65);border-radius:4px}.leaflet-bar a{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:focus,.leaflet-bar a:hover{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:bold 18px "Lucida Console",Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{-webkit-box-shadow:0 1px 5px rgba(0,0,0,.4);box-shadow:0 1px 5px rgba(0,0,0,.4);background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url(images/layers.png);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(images/layers-2x.png);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block;font-size:1.08333em}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(images/marker-icon.png)}.leaflet-container .leaflet-control-attribution{background:rgba(255,255,255,.8);margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:focus,.leaflet-control-attribution a:hover{text-decoration:underline}.leaflet-attribution-flag{display:inline!important;vertical-align:baseline!important;width:1em;height:.6669em}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;white-space:nowrap;-webkit-box-sizing:border-box;box-sizing:border-box;background:rgba(255,255,255,.8);text-shadow:1px 1px #fff}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-bar,.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers{-webkit-box-shadow:none;box-shadow:none}.leaflet-touch .leaflet-bar,.leaflet-touch .leaflet-control-layers{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 24px 13px 20px;line-height:1.3;font-size:1.08333em;min-height:1px}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-top:-1px;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;pointer-events:auto;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;-webkit-box-shadow:0 3px 14px rgba(0,0,0,.4);box-shadow:0 3px 14px rgba(0,0,0,.4)}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;border:none;text-align:center;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;color:#757575;text-decoration:none;background:0 0}.leaflet-container a.leaflet-popup-close-button:focus,.leaflet-container a.leaflet-popup-close-button:hover{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto}.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.4);box-shadow:0 1px 3px rgba(0,0,0,.4)}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before,.leaflet-tooltip-top:before{position:absolute;pointer-events:none;border:6px solid transparent;background:0 0;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.leaflet-cluster-anim .leaflet-marker-icon,.leaflet-cluster-anim .leaflet-marker-shadow{-webkit-transition:opacity .3s ease-in,-webkit-transform .3s ease-out;-o-transition:transform .3s ease-out,opacity .3s ease-in;transition:transform .3s ease-out,opacity .3s ease-in,-webkit-transform .3s ease-out}.leaflet-cluster-spider-leg{-webkit-transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in;-o-transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in;transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in}.leaflet-marker-photo{border:2px solid #fff;-webkit-box-shadow:3px 3px 10px #888;box-shadow:3px 3px 10px #888}.leaflet-marker-photo div{width:100%;height:100%;background-size:cover;background-position:center center;background-repeat:no-repeat}.leaflet-marker-photo b{position:absolute;top:-7px;right:-11px;color:#555;background-color:#fff;border-radius:8px;height:12px;min-width:12px;line-height:12px;text-align:center;padding:3px;-webkit-box-shadow:0 3px 14px rgba(0,0,0,.4);box-shadow:0 3px 14px rgba(0,0,0,.4)} \ No newline at end of file +@charset "UTF-8";@-webkit-keyframes basicModal__fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes basicModal__fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes basicModal__fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes basicModal__fadeOut{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes basicModal__moveUpFade{0%{-webkit-transform:translateY(80px);transform:translateY(80px)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes basicModal__moveUpFade{0%{-webkit-transform:translateY(80px);transform:translateY(80px)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes basicModal__shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}20%,60%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes basicModal__shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}20%,60%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}.basicModalContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:fixed;width:100%;height:100%;top:0;left:0;background-color:rgba(0,0,0,.4);z-index:1000;-webkit-box-sizing:border-box;box-sizing:border-box}.basicModalContainer *,.basicModalContainer :after,.basicModalContainer :before{-webkit-box-sizing:border-box;box-sizing:border-box}.basicModalContainer--fadeIn{-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__fadeIn;animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__fadeIn}.basicModalContainer--fadeOut{-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__fadeOut;animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__fadeOut}.basicModalContainer--fadeIn .basicModal--fadeIn{-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__moveUpFade;animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__moveUpFade}.basicModalContainer--fadeIn .basicModal--shake{-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__shake;animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__shake}.basicModal{position:relative;width:500px;background-color:#fff;border-radius:5px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.2);box-shadow:0 1px 2px rgba(0,0,0,.2)}.basicModal__content{padding:7%;max-height:70vh;overflow:auto;-webkit-overflow-scrolling:touch}.basicModal__buttons{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;-webkit-box-shadow:0 -1px 0 rgba(0,0,0,.1);box-shadow:0 -1px 0 rgba(0,0,0,.1)}.basicModal__button{display:inline-block;width:100%;font-weight:700;text-align:center;-webkit-transition:background-color .2s;transition:background-color .2s;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.basicModal__button:hover{background-color:rgba(0,0,0,.02)}.basicModal__button#basicModal__cancel{-ms-flex-negative:2;flex-shrink:2}.basicModal__button#basicModal__action{-ms-flex-negative:1;flex-shrink:1;-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.1);box-shadow:inset 1px 0 0 rgba(0,0,0,.1)}.basicModal__button#basicModal__action:first-child{-webkit-box-shadow:none;box-shadow:none}.basicModal__button:first-child{border-radius:0 0 0 5px}.basicModal__button:last-child{border-radius:0 0 5px}.basicModal__small{max-width:340px;text-align:center}.basicModal__small .basicModal__content{padding:10% 5%}.basicModal__xclose#basicModal__cancel{position:absolute;top:-8px;right:-8px;margin:0;padding:0;width:40px;height:40px;background-color:#fff;border-radius:100%;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.2);box-shadow:0 1px 2px rgba(0,0,0,.2)}.basicModal__xclose#basicModal__cancel:after{content:"";position:absolute;left:-3px;top:8px;width:35px;height:34px;background:#fff}.basicModal__xclose#basicModal__cancel svg{position:relative;width:20px;height:39px;fill:#888;z-index:1;-webkit-transition:fill .2s;transition:fill .2s}.basicModal__xclose#basicModal__cancel:after:hover svg,.basicModal__xclose#basicModal__cancel:hover svg{fill:#2875ed}.basicModal__xclose#basicModal__cancel:active svg,.basicModal__xclose#basicModal__cancel:after:active svg{fill:#1364e3}.basicContextContainer{position:fixed;width:100%;height:100%;top:0;left:0;z-index:1000;-webkit-tap-highlight-color:transparent}.basicContext{position:absolute;opacity:0;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.2) basicContext__popIn;animation:.3s cubic-bezier(.51,.92,.24,1.2) basicContext__popIn}.basicContext *{-webkit-box-sizing:border-box;box-sizing:border-box}.basicContext__item{cursor:pointer}.basicContext__item--separator{float:left;width:100%;cursor:default}.basicContext__data{min-width:140px;text-align:left}.basicContext__icon{display:inline-block}.basicContext--scrollable{height:100%;-webkit-overflow-scrolling:touch;overflow-x:hidden;overflow-y:auto}.basicContext--scrollable .basicContext__data{min-width:160px}@-webkit-keyframes basicContext__popIn{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes basicContext__popIn{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1;background-color:#1d1d1d;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;-webkit-font-smoothing:antialiased;-moz-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}table{border-collapse:collapse;border-spacing:0}em,i{font-style:italic}b,strong{font-weight:700}*{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:color .3s,opacity .3s ease-out,-webkit-transform .3s ease-out,-webkit-box-shadow .3s;transition:color .3s,opacity .3s ease-out,transform .3s ease-out,box-shadow .3s,-webkit-transform .3s ease-out,-webkit-box-shadow .3s}body,html{width:100%;height:100%;position:relative;overflow:clip}body.mode-frame div#container,body.mode-none div#container{display:none}input,textarea{-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;user-select:text!important}.svgsprite{display:none}.iconic{width:100%;height:100%}#upload{display:none}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1);animation-timing-function:cubic-bezier(.51,.92,.24,1)}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1);animation-timing-function:cubic-bezier(.51,.92,.24,1)}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes moveBackground{0%{background-position-x:0}100%{background-position-x:-100px}}@keyframes moveBackground{0%{background-position-x:0}100%{background-position-x:-100px}}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes zoomOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}}@keyframes zoomOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}}@-webkit-keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}body.mode-frame #lychee_application_container,body.mode-none #lychee_application_container{display:none}.hflex-container,.hflex-item-rigid,.hflex-item-stretch,.vflex-container,.vflex-item-rigid,.vflex-item-stretch{position:relative;overflow:clip}.hflex-container,.vflex-container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:stretch;align-content:stretch;gap:0 0}.vflex-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.hflex-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.hflex-item-stretch,.vflex-item-stretch{-webkit-box-flex:1;-ms-flex:auto;flex:auto}.hflex-item-stretch{width:0;height:100%}.vflex-item-stretch{width:100%;height:0}.hflex-item-rigid,.vflex-item-rigid{-webkit-box-flex:0;-ms-flex:none;flex:none}.hflex-item-rigid{width:auto;height:100%}.vflex-item-rigid{width:100%;height:auto}.overlay-container{position:absolute;display:none;top:0;left:0;width:100%;height:100%;background-color:#000;-webkit-transition:background-color .3s;transition:background-color .3s}.overlay-container.full{cursor:none}.overlay-container.active{display:unset}#lychee_view_content{height:auto;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-line-pack:start;align-content:flex-start;padding-bottom:16px;-webkit-overflow-scrolling:touch}#lychee_view_content.contentZoomIn .album,#lychee_view_content.contentZoomIn .photo{-webkit-animation-name:zoomIn;animation-name:zoomIn}#lychee_view_content.contentZoomIn .divider{-webkit-animation-name:fadeIn;animation-name:fadeIn}#lychee_view_content.contentZoomOut .album,#lychee_view_content.contentZoomOut .photo{-webkit-animation-name:zoomOut;animation-name:zoomOut}#lychee_view_content.contentZoomOut .divider{-webkit-animation-name:fadeOut;animation-name:fadeOut}.album,.photo{position:relative;width:202px;height:202px;margin:30px 0 0 30px;cursor:default;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1);animation-timing-function:cubic-bezier(.51,.92,.24,1)}.album .thumbimg,.photo .thumbimg{position:absolute;width:200px;height:200px;background:#222;color:#222;-webkit-box-shadow:0 2px 5px rgba(0,0,0,.5);box-shadow:0 2px 5px rgba(0,0,0,.5);border:1px solid rgba(255,255,255,.5);-webkit-transition:opacity .3s ease-out,border-color .3s ease-out,-webkit-transform .3s ease-out;transition:opacity .3s ease-out,transform .3s ease-out,border-color .3s ease-out,-webkit-transform .3s ease-out}.album .thumbimg>img,.photo .thumbimg>img{width:100%;height:100%}.album.active .thumbimg,.album:focus .thumbimg,.photo.active .thumbimg,.photo:focus .thumbimg{border-color:#2293ec}.album:active .thumbimg,.photo:active .thumbimg{-webkit-transition:none;transition:none;border-color:#0f6ab2}.album.selected img,.photo.selected img{outline:#2293ec solid 1px}.album .video::before,.photo .video::before{content:"";position:absolute;display:block;height:100%;width:100%;background:url(../img/play-icon.png) 46% 50% no-repeat;-webkit-transition:.3s;transition:.3s;will-change:opacity,height}.album .video:focus::before,.photo .video:focus::before{opacity:.75}.album .livephoto::before,.photo .livephoto::before{content:"";position:absolute;display:block;height:100%;width:100%;background:url(../img/live-photo-icon.png) 2% 2% no-repeat;-webkit-transition:.3s;transition:.3s;will-change:opacity,height}.album .livephoto:focus::before,.photo .livephoto:focus::before{opacity:.75}.album .thumbimg:first-child,.album .thumbimg:nth-child(2){-webkit-transform:rotate(0) translateY(0) translateX(0);-ms-transform:rotate(0) translateY(0) translateX(0);transform:rotate(0) translateY(0) translateX(0);opacity:0}.album:focus .thumbimg:nth-child(1),.album:focus .thumbimg:nth-child(2){opacity:1;will-change:transform}.album:focus .thumbimg:nth-child(1){-webkit-transform:rotate(-2deg) translateY(10px) translateX(-12px);-ms-transform:rotate(-2deg) translateY(10px) translateX(-12px);transform:rotate(-2deg) translateY(10px) translateX(-12px)}.album:focus .thumbimg:nth-child(2){-webkit-transform:rotate(5deg) translateY(-8px) translateX(12px);-ms-transform:rotate(5deg) translateY(-8px) translateX(12px);transform:rotate(5deg) translateY(-8px) translateX(12px)}.blurred span{overflow:hidden}.blurred img{-webkit-filter:blur(5px);filter:blur(5px)}.album .album_counters{position:absolute;right:8px;top:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:4px 4px;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right;font:bold 10px sans-serif;-webkit-filter:drop-shadow(0 0 4px rgba(0, 0, 0, .75));filter:drop-shadow(0 0 4px rgba(0, 0, 0, .75))}.album .album_counters .layers{position:relative;padding:6px 4px}.album .album_counters .layers .iconic{fill:#fff;width:12px;height:12px}.album .album_counters .folders,.album .album_counters .photos{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:distribute;justify-content:space-around;text-align:end}.album .album_counters .folders .iconic,.album .album_counters .photos .iconic{fill:#fff;width:15px;height:15px}.album .album_counters .folders span,.album .album_counters .photos span{position:absolute;bottom:0;color:#222;padding-right:1px;padding-left:1px}.album .album_counters .folders span{right:0;line-height:.9}.album .album_counters .photos span{right:4px;min-width:10px;background-color:#fff;padding-top:1px;line-height:1}.album .overlay,.photo .overlay{position:absolute;margin:0 1px;width:200px;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(rgba(0,0,0,.6)));background:linear-gradient(to bottom,rgba(0,0,0,0),rgba(0,0,0,.6));bottom:1px}.album .thumbimg[data-overlay=false]+.overlay{background:0 0}.photo .overlay{opacity:0}.photo.active .overlay,.photo:focus .overlay{opacity:1}.album .overlay h1,.photo .overlay h1{min-height:19px;width:180px;margin:12px 0 5px 15px;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.4);font-size:16px;font-weight:700;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.album .overlay a,.photo .overlay a{display:block;margin:0 0 12px 15px;font-size:11px;color:#ccc;text-shadow:0 1px 3px rgba(0,0,0,.4)}.album .overlay a .iconic,.photo .overlay a .iconic{fill:#ccc;margin:0 5px 0 0;width:8px;height:8px}.album .thumbimg[data-overlay=false]+.overlay a,.album .thumbimg[data-overlay=false]+.overlay h1{text-shadow:none}.album .badges,.photo .badges{position:absolute;margin:-1px 0 0 6px}.album .subalbum_badge{position:absolute;right:0;top:0}.album .badge,.photo .badge{display:none;margin:0 0 0 6px;padding:12px 8px 6px;width:18px;background:#d92c34;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);border-radius:0 0 5px 5px;border:1px solid #fff;border-top:none;color:#fff;text-align:center;text-shadow:0 1px 0 rgba(0,0,0,.4);opacity:.9}.album .badge--visible,.photo .badge--visible{display:inline-block}.album .badge--not--hidden,.photo .badge--not--hidden{background:#0a0}.album .badge--hidden,.photo .badge--hidden{background:#f90}.album .badge--cover,.photo .badge--cover{display:inline-block;background:#f90}.album .badge--star,.photo .badge--star{display:inline-block;background:#fc0}.album .badge--nsfw,.photo .badge--nsfw{display:inline-block;background:#ff82ee}.album .badge--list,.photo .badge--list{background:#2293ec}.album .badge--tag,.photo .badge--tag{display:inline-block;background:#0a0}.album .badge .iconic,.photo .badge .iconic{fill:#fff;width:16px;height:16px}.divider{margin:50px 0 0;padding:10px 0 0;width:100%;opacity:0;border-top:1px solid rgba(255,255,255,.02);-webkit-box-shadow:0 -1px 0 rgba(0,0,0,.2);box-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1);animation-timing-function:cubic-bezier(.51,.92,.24,1)}.divider:first-child{margin-top:10px;border-top:0;-webkit-box-shadow:none;box-shadow:none}.divider h1{margin:0 0 0 30px;color:rgba(255,255,255,.6);font-size:14px;font-weight:700}@media only screen and (min-width:320px) and (max-width:567px){.album,.photo{--size:calc((100vw - 3px) / 3);width:calc(var(--size) - 3px);height:calc(var(--size) - 3px);margin:3px 0 0 3px}.album .thumbimg,.photo .thumbimg{width:calc(var(--size) - 5px);height:calc(var(--size) - 5px)}.album .overlay,.photo .overlay{width:calc(var(--size) - 5px)}.album .overlay h1,.photo .overlay h1{min-height:14px;width:calc(var(--size) - 19px);margin:8px 0 2px 6px;font-size:12px}.album .overlay a,.photo .overlay a{display:none}.album .badge,.photo .badge{padding:4px 3px 3px;width:12px}.album .badge .iconic,.photo .badge .iconic{width:12px;height:12px}.album .album_counters{-webkit-filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));font:bold 7px sans-serif;gap:2px 2px;right:3px;top:3px}.album .album_counters .layers{position:relative;padding:3px 2px}.album .album_counters .layers .iconic{fill:#fff;width:8px;height:8px}.album .album_counters .folders .iconic,.album .album_counters .photos .iconic{width:11px;height:11px}.album .album_counters .photos span{right:3px;min-width:5px;line-height:.9;padding-top:2px}.divider{margin:20px 0 0}.divider:first-child{margin-top:0}.divider h1{margin:0 0 6px 8px;font-size:12px}}@media only screen and (min-width:568px) and (max-width:639px){.album,.photo{--size:calc((100vw - 3px) / 4);width:calc(var(--size) - 3px);height:calc(var(--size) - 3px);margin:3px 0 0 3px}.album .thumbimg,.photo .thumbimg{width:calc(var(--size) - 5px);height:calc(var(--size) - 5px)}.album .overlay,.photo .overlay{width:calc(var(--size) - 5px)}.album .overlay h1,.photo .overlay h1{min-height:14px;width:calc(var(--size) - 19px);margin:8px 0 2px 6px;font-size:12px}.album .overlay a,.photo .overlay a{display:none}.album .badge,.photo .badge{padding:4px 3px 3px;width:14px}.album .badge .iconic,.photo .badge .iconic{width:14px;height:14px}.album .album_counters{-webkit-filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));font:bold 8px sans-serif;gap:3px 3px;right:4px;top:4px}.album .album_counters .layers{position:relative;padding:3px 2px}.album .album_counters .layers .iconic{fill:#fff;width:9px;height:9px}.album .album_counters .folders .iconic,.album .album_counters .photos .iconic{width:13px;height:13px}.album .album_counters .photos span{right:3px;min-width:8px;padding-top:2px}.divider{margin:24px 0 0}.divider:first-child{margin-top:0}.divider h1{margin:0 0 6px 10px}}@media only screen and (min-width:640px) and (max-width:768px){.album,.photo{--size:calc((100vw - 5px) / 5);width:calc(var(--size) - 5px);height:calc(var(--size) - 5px);margin:5px 0 0 5px}.album .thumbimg,.photo .thumbimg{width:calc(var(--size) - 7px);height:calc(var(--size) - 7px)}.album .overlay,.photo .overlay{width:calc(var(--size) - 7px)}.album .overlay h1,.photo .overlay h1{min-height:14px;width:calc(var(--size) - 21px);margin:10px 0 3px 8px;font-size:12px}.album .overlay a,.photo .overlay a{display:none}.album .badge,.photo .badge{padding:6px 4px 4px;width:16px}.album .badge .iconic,.photo .badge .iconic{width:16px;height:16px}.album .album_counters{-webkit-filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));font:bold 9px sans-serif;gap:4px 4px;right:6px;top:6px}.album .album_counters .layers{position:relative;padding:3px 2px}.album .album_counters .layers .iconic{fill:#fff;width:11px;height:11px}.album .album_counters .folders .iconic,.album .album_counters .photos .iconic{width:15px;height:15px}.album .album_counters .folders span{line-height:1}.album .album_counters .photos span{right:3px;min-width:10px;padding-top:2px}.divider{margin:28px 0 0}.divider:first-child{margin-top:0}.divider h1{margin:0 0 6px 10px}}.no_content{position:absolute;top:50%;left:50%;padding-top:20px;color:rgba(255,255,255,.35);text-align:center;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.no_content .iconic{fill:rgba(255,255,255,.3);margin:0 0 10px;width:50px;height:50px}.no_content p{font-size:16px;font-weight:700}body.mode-gallery #lychee_frame_container,body.mode-none #lychee_frame_container,body.mode-view #lychee_frame_container{display:none}#lychee_frame_bg_canvas{width:100%;height:100%;position:absolute}#lychee_frame_bg_image{position:absolute;display:none}#lychee_frame_noise_layer{position:absolute;top:0;left:0;width:100%;height:100%;background-image:url(../img/noise.png);background-repeat:repeat;background-position:44px 44px}#lychee_frame_image_container{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-line-pack:center;align-content:center}#lychee_frame_image_container img{height:95%;width:95%;-o-object-fit:contain;object-fit:contain;-webkit-filter:drop-shadow(0 0 1px rgba(0, 0, 0, .3)) drop-shadow(0 0 10px rgba(0, 0, 0, .3));filter:drop-shadow(0 0 1px rgba(0, 0, 0, .3)) drop-shadow(0 0 10px rgba(0, 0, 0, .3))}#lychee_frame_shutter{position:absolute;width:100%;height:100%;top:0;left:0;padding:0;margin:0;background-color:#1d1d1d;opacity:1;-webkit-transition:opacity 1s ease-in-out;transition:opacity 1s ease-in-out}#lychee_frame_shutter.opened{opacity:0}#lychee_left_menu_container{width:0;background-color:#111;padding-top:16px;-webkit-transition:width .5s;transition:width .5s;height:100%;z-index:998}#lychee_left_menu,#lychee_left_menu_container.visible{width:250px}#lychee_left_menu a{padding:8px 8px 8px 32px;text-decoration:none;font-size:18px;color:#818181;display:block;cursor:pointer}#lychee_left_menu a.linkMenu{white-space:nowrap}#lychee_left_menu .iconic{display:inline-block;margin:0 10px 0 1px;width:15px;height:14px;fill:#818181}#lychee_left_menu .iconic.ionicons{margin:0 8px -2px 0;width:18px;height:18px}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){#lychee_left_menu,#lychee_left_menu_container{position:absolute;left:0}#lychee_left_menu_container.visible{width:100%}}@media (hover:hover){.album:hover .thumbimg,.photo:hover .thumbimg{border-color:#2293ec}.album .livephoto:hover::before,.album .video:hover::before,.photo .livephoto:hover::before,.photo .video:hover::before{opacity:.75}.album:hover .thumbimg:nth-child(1),.album:hover .thumbimg:nth-child(2),.album__dragover .thumbimg:nth-child(1),.album__dragover .thumbimg:nth-child(2){opacity:1;will-change:transform}.album:hover .thumbimg:nth-child(1),.album__dragover .thumbimg:nth-child(1){-webkit-transform:rotate(-2deg) translateY(10px) translateX(-12px);-ms-transform:rotate(-2deg) translateY(10px) translateX(-12px);transform:rotate(-2deg) translateY(10px) translateX(-12px)}.album:hover .thumbimg:nth-child(2),.album__dragover .thumbimg:nth-child(2){-webkit-transform:rotate(5deg) translateY(-8px) translateX(12px);-ms-transform:rotate(5deg) translateY(-8px) translateX(12px);transform:rotate(5deg) translateY(-8px) translateX(12px)}.photo:hover .overlay{opacity:1}#lychee_left_menu a:hover{color:#f1f1f1}}.basicContext{padding:5px 0 6px;background:-webkit-gradient(linear,left top,left bottom,from(#333),to(#252525));background:linear-gradient(to bottom,#333,#252525);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 4px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.05);border-radius:5px;border:1px solid rgba(0,0,0,.7);border-bottom:1px solid rgba(0,0,0,.8);-webkit-transition:none;transition:none;max-width:240px}.basicContext__item{margin-bottom:2px;font-size:14px;color:#ccc}.basicContext__item--separator{margin:4px 0;height:2px;background:rgba(0,0,0,.2);border-bottom:1px solid rgba(255,255,255,.06)}.basicContext__item--disabled{cursor:default;opacity:.5}.basicContext__item:last-child{margin-bottom:0}.basicContext__data{min-width:auto;padding:6px 25px 7px 12px;white-space:normal;overflow-wrap:normal;-webkit-transition:none;transition:none;cursor:default}@media (hover:none) and (pointer:coarse){.basicContext__data{padding:12px 25px 12px 12px}}.basicContext__item:not(.basicContext__item--disabled):active .basicContext__data{background:-webkit-gradient(linear,left top,left bottom,from(#1178ca),to(#0f6ab2));background:linear-gradient(to bottom,#1178ca,#0f6ab2)}.basicContext__icon{margin-right:10px;width:12px;text-align:center}@media (hover:hover){.basicContext__item:not(.basicContext__item--disabled):hover .basicContext__data{background:-webkit-gradient(linear,left top,left bottom,from(#2293ec),to(#1386e1));background:linear-gradient(to bottom,#2293ec,#1386e1)}.basicContext__item:hover{color:#fff;-webkit-transition:.3s;transition:.3s;-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}.basicContext__item:hover .iconic{fill:#fff}.basicContext__item--noHover:hover .basicContext__data{background:0 0!important}}#addMenu{top:48px!important;left:unset!important;right:4px}.basicContext__data{padding-left:40px}.basicContext__data .cover{position:absolute;background-color:#222;border-radius:2px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.5);box-shadow:0 0 0 1px rgba(0,0,0,.5)}.basicContext__data .title{display:inline-block;margin:0 0 3px 26px}.basicContext__data .iconic{display:inline-block;margin:0 10px 0 -22px;width:11px;height:10px;fill:#fff}.basicContext__data .iconic.active{fill:#f90}.basicContext__data .iconic.ionicons{margin:0 8px -2px 0;width:14px;height:14px}.basicContext__data input#link{margin:-2px 0;padding:5px 7px 6px;width:100%;background:#333;color:#fff;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05);border:1px solid rgba(0,0,0,.4);border-radius:3px;outline:0}.basicContext__item--noHover .basicContext__data{padding-right:12px}div.basicModalContainer{background-color:rgba(0,0,0,.85);z-index:999}div.basicModalContainer--error{-webkit-transform:translateY(40px);-ms-transform:translateY(40px);transform:translateY(40px)}div.basicModal{background:-webkit-gradient(linear,left top,left bottom,from(#444),to(#333));background:linear-gradient(to bottom,#444,#333);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 4px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.05);font-size:14px;line-height:17px}div.basicModal--error{-webkit-transform:translateY(-40px);-ms-transform:translateY(-40px);transform:translateY(-40px)}div.basicModal__buttons{-webkit-box-shadow:none;box-shadow:none}.basicModal__button{padding:13px 0 15px;background:0 0;color:#999;border-top:1px solid rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02);box-shadow:inset 0 1px 0 rgba(255,255,255,.02);cursor:default}.basicModal__button--busy,.basicModal__button:active{-webkit-transition:none;transition:none;background:rgba(0,0,0,.1);cursor:wait}.basicModal__button#basicModal__action{color:#2293ec;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2)}.basicModal__button#basicModal__action.red,.basicModal__button#basicModal__cancel.red{color:#d92c34}.basicModal__button.hidden{display:none}div.basicModal__content{padding:36px;color:#ececec;text-align:left}div.basicModal__content>*{display:block;width:100%;margin:24px 0;padding:0}div.basicModal__content>.force-first-child,div.basicModal__content>:first-child{margin-top:0}div.basicModal__content>.force-last-child,div.basicModal__content>:last-child{margin-bottom:0}div.basicModal__content .disabled{color:#999}div.basicModal__content b{font-weight:700;color:#fff}div.basicModal__content a{color:inherit;text-decoration:none;border-bottom:1px dashed #ececec}div.basicModal__content a.button{display:inline-block;margin:0 6px;padding:3px 12px;color:#2293ec;text-align:center;border-radius:5px;border:none;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2)}div.basicModal__content a.button .iconic{fill:#2293ec}div.basicModal__content>hr{border:none;border-top:1px solid rgba(0,0,0,.3)}#lychee_toolbar_container{-webkit-transition:height .3s ease-out;transition:height .3s ease-out}#lychee_toolbar_container.hidden{height:0}#lychee_toolbar_container,.toolbar{height:49px}.toolbar{background:-webkit-gradient(linear,left top,left bottom,from(#222),to(#1a1a1a));background:linear-gradient(to bottom,#222,#1a1a1a);border-bottom:1px solid #0f0f0f;display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.toolbar.visible{display:-webkit-box;display:-ms-flexbox;display:flex}#lychee_toolbar_config .toolbar .button .iconic{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}#lychee_toolbar_config .toolbar .header__title{padding-right:80px}.toolbar .header__title{width:100%;padding:16px 0;color:#fff;font-size:16px;font-weight:700;text-align:center;cursor:default;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;-webkit-transition:margin-left .5s;transition:margin-left .5s}.toolbar .header__title .iconic{display:none;margin:0 0 0 5px;width:10px;height:10px;fill:rgba(255,255,255,.5);-webkit-transition:fill .2s ease-out;transition:fill .2s ease-out}.toolbar .header__title:active .iconic{-webkit-transition:none;transition:none;fill:rgba(255,255,255,.8)}.toolbar .header__title--editable .iconic{display:inline-block}.toolbar .button{-ms-flex-negative:0;flex-shrink:0;padding:16px 8px;height:15px}.toolbar .button .iconic{width:15px;height:15px;fill:rgba(255,255,255,.5);-webkit-transition:fill .2s ease-out;transition:fill .2s ease-out}.toolbar .button:active .iconic{-webkit-transition:none;transition:none;fill:rgba(255,255,255,.8)}.toolbar .button--star.active .iconic{fill:#f0ef77}.toolbar .button--eye.active .iconic{fill:#d92c34}.toolbar .button--eye.active--not-hidden .iconic{fill:#0a0}.toolbar .button--eye.active--hidden .iconic{fill:#f90}.toolbar .button--share .iconic.ionicons{margin:-2px 0;width:18px;height:18px}.toolbar .button--nsfw.active .iconic{fill:#ff82ee}.toolbar .button--info.active .iconic{fill:#2293ec}.toolbar #button_back,.toolbar #button_back_home,.toolbar #button_close_config,.toolbar #button_settings,.toolbar #button_signin{padding:16px 12px 16px 18px}.toolbar .button_add{padding:16px 18px 16px 12px}.toolbar .header__divider{-ms-flex-negative:0;flex-shrink:0;width:14px}.toolbar .header__search__field{position:relative}.toolbar input[type=text].header__search{-ms-flex-negative:0;flex-shrink:0;width:80px;margin:0;padding:5px 12px 6px;background-color:#1d1d1d;color:#fff;border:1px solid rgba(0,0,0,.9);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.04);box-shadow:0 1px 0 rgba(255,255,255,.04);outline:0;border-radius:50px;opacity:.6;-webkit-transition:opacity .3s ease-out,width .2s ease-out,-webkit-box-shadow .3s ease-out;transition:opacity .3s ease-out,box-shadow .3s ease-out,width .2s ease-out,-webkit-box-shadow .3s ease-out}.toolbar input[type=text].header__search:focus{width:140px;border-color:#2293ec;-webkit-box-shadow:0 1px 0 rgba(255,255,255,0);box-shadow:0 1px 0 rgba(255,255,255,0);opacity:1}.toolbar input[type=text].header__search:focus~.header__clear{opacity:1}.toolbar input[type=text].header__search::-ms-clear{display:none}.toolbar .header__clear{position:absolute;top:50%;-ms-transform:translateY(-50%);-webkit-transform:translateY(-50%);transform:translateY(-50%);right:8px;padding:0;color:rgba(255,255,255,.5);font-size:24px;opacity:0;-webkit-transition:color .2s ease-out;transition:color .2s ease-out;cursor:default}.toolbar .header__clear_nomap{right:60px}.toolbar .header__hostedwith{-ms-flex-negative:0;flex-shrink:0;padding:5px 10px;margin:11px 0;color:#888;font-size:13px;border-radius:100px;cursor:default}@media only screen and (max-width:640px){#button_move,#button_move_album,#button_nsfw_album,#button_trash,#button_trash_album,#button_visibility,#button_visibility_album{display:none!important}}@media only screen and (max-width:640px) and (max-width:567px){#button_rotate_ccwise,#button_rotate_cwise{display:none!important}.header__divider{width:0}}#imageview #image,#imageview #livephoto{position:absolute;top:30px;right:30px;bottom:30px;left:30px;margin:auto;max-width:calc(100% - 60px);max-height:calc(100% - 60px);width:auto;height:auto;-webkit-transition:top .3s,right .3s,bottom .3s,left .3s,max-width .3s,max-height .3s;transition:top .3s,right .3s,bottom .3s,left .3s,max-width .3s,max-height .3s;-webkit-animation-name:zoomIn;animation-name:zoomIn;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1.15);animation-timing-function:cubic-bezier(.51,.92,.24,1.15);background-size:contain;background-position:center;background-repeat:no-repeat}#imageview.full #image,#imageview.full #livephoto{top:0;right:0;bottom:0;left:0;max-width:100%;max-height:100%}#imageview #image_overlay{position:absolute;bottom:30px;left:30px;color:#fff;text-shadow:1px 1px 2px #000;z-index:3}#imageview #image_overlay h1{font-size:28px;font-weight:500;-webkit-transition:visibility .3s linear,opacity .3s linear;transition:visibility .3s linear,opacity .3s linear}#imageview #image_overlay p{margin-top:5px;font-size:20px;line-height:24px}#imageview #image_overlay a .iconic{fill:#fff;margin:0 5px 0 0;width:14px;height:14px}#imageview .arrow_wrapper{position:absolute;width:15%;height:calc(100% - 60px);top:60px}#imageview .arrow_wrapper--previous{left:0}#imageview .arrow_wrapper--next{right:0}#imageview .arrow_wrapper a{position:absolute;top:50%;margin:-19px 0 0;padding:8px 12px;width:16px;height:22px;background-size:100% 100%;border:1px solid rgba(255,255,255,.8);opacity:.6;z-index:2;-webkit-transition:opacity .2s ease-out,-webkit-transform .2s ease-out;transition:transform .2s ease-out,opacity .2s ease-out,-webkit-transform .2s ease-out;will-change:transform}#imageview .arrow_wrapper a#previous{left:-1px;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}#imageview .arrow_wrapper a#next{right:-1px;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}#imageview .arrow_wrapper .iconic{fill:rgba(255,255,255,.8)}#imageview video{z-index:1}@media (hover:hover){.basicModal__button:hover{background:rgba(255,255,255,.02)}div.basicModal__content a.button:hover{color:#fff;background:#2293ec}.toolbar .button:hover .iconic,.toolbar .header__title:hover .iconic,div.basicModal__content a.button:hover .iconic{fill:#fff}.toolbar .header__clear:hover{color:#fff}.toolbar .header__hostedwith:hover{background-color:rgba(0,0,0,.3)}#imageview .arrow_wrapper:hover a#next,#imageview .arrow_wrapper:hover a#previous{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}#imageview .arrow_wrapper a:hover{opacity:1}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){#imageview #image,#imageview #livephoto{top:0;right:0;bottom:0;left:0;max-width:100%;max-height:100%}#imageview #image_overlay h1{font-size:14px}#imageview #image_overlay p{margin-top:2px;font-size:11px;line-height:13px}#imageview #image_overlay a .iconic{width:9px;height:9px}}@media only screen and (min-width:568px) and (max-width:768px),only screen and (min-width:568px) and (max-width:640px) and (orientation:landscape){#imageview #image,#imageview #livephoto{top:0;right:0;bottom:0;left:0;max-width:100%;max-height:100%}#imageview #image_overlay h1{font-size:18px}#imageview #image_overlay p{margin-top:4px;font-size:14px;line-height:16px}#imageview #image_overlay a .iconic{width:12px;height:12px}}.leaflet-marker-photo img{width:100%;height:100%}.image-leaflet-popup{width:100%}.leaflet-popup-content div{pointer-events:none;position:absolute;bottom:19px;left:22px;right:22px;padding-bottom:10px;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(rgba(0,0,0,.6)));background:linear-gradient(to bottom,rgba(0,0,0,0),rgba(0,0,0,.6))}.leaflet-popup-content h1{top:0;position:relative;margin:12px 0 5px 15px;font-size:16px;font-weight:700;text-shadow:0 1px 3px rgba(255,255,255,.4);color:#fff;white-space:nowrap;text-overflow:ellipsis}.leaflet-popup-content span{margin-left:12px}.leaflet-popup-content svg{fill:#fff;vertical-align:middle}.leaflet-popup-content p{display:inline;font-size:11px;color:#fff}.leaflet-popup-content .iconic{width:20px;height:15px}#lychee_sidebar_container{width:0;-webkit-transition:width .3s cubic-bezier(.51,.92,.24,1);transition:width .3s cubic-bezier(.51,.92,.24,1)}#lychee_sidebar,#lychee_sidebar_container.active{width:350px}#lychee_sidebar{height:100%;background-color:rgba(25,25,25,.98);border-left:1px solid rgba(0,0,0,.2)}#lychee_sidebar_header{height:49px;background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,.02)),to(rgba(0,0,0,0)));background:linear-gradient(to bottom,rgba(255,255,255,.02),rgba(0,0,0,0));border-top:1px solid #2293ec}#lychee_sidebar_header h1{margin:15px 0;color:#fff;font-size:16px;font-weight:700;text-align:center;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content{overflow:clip auto;-webkit-overflow-scrolling:touch}#lychee_sidebar_content .sidebar__divider{padding:12px 0 8px;width:100%;border-top:1px solid rgba(255,255,255,.02);-webkit-box-shadow:0 -1px 0 rgba(0,0,0,.2);box-shadow:0 -1px 0 rgba(0,0,0,.2)}#lychee_sidebar_content .sidebar__divider:first-child{border-top:0;-webkit-box-shadow:none;box-shadow:none}#lychee_sidebar_content .sidebar__divider h1{margin:0 0 0 20px;color:rgba(255,255,255,.6);font-size:14px;font-weight:700;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content .edit{display:inline-block;margin-left:3px;width:10px}#lychee_sidebar_content .edit .iconic{width:10px;height:10px;fill:rgba(255,255,255,.5);-webkit-transition:fill .2s ease-out;transition:fill .2s ease-out}#lychee_sidebar_content .edit:active .iconic{-webkit-transition:none;transition:none;fill:rgba(255,255,255,.8)}#lychee_sidebar_content table{margin:10px 0 15px 20px;width:calc(100% - 20px)}#lychee_sidebar_content table tr td{padding:5px 0;color:#fff;font-size:14px;line-height:19px;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content table tr td:first-child{width:110px}#lychee_sidebar_content table tr td:last-child{padding-right:10px}#lychee_sidebar_content table tr td span{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content #tags{width:calc(100% - 40px);margin:16px 20px 12px;color:#fff;display:inline-block}#lychee_sidebar_content #tags>div{display:inline-block}#lychee_sidebar_content #tags .empty{font-size:14px;margin:0 2px 8px 0;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content #tags .edit{margin-top:6px}#lychee_sidebar_content #tags .empty .edit{margin-top:0}#lychee_sidebar_content #tags .tag{cursor:default;display:inline-block;padding:6px 10px;margin:0 6px 8px 0;background-color:rgba(0,0,0,.5);border-radius:100px;font-size:12px;-webkit-transition:background-color .2s;transition:background-color .2s;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content #tags .tag span{display:inline-block;padding:0;margin:0 0 -2px;width:0;overflow:hidden;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:width .2s,margin .2s,fill .2s ease-out,-webkit-transform .2s;transition:width .2s,margin .2s,transform .2s,fill .2s ease-out,-webkit-transform .2s}#lychee_sidebar_content #tags .tag span .iconic{fill:#d92c34;width:8px;height:8px}#lychee_sidebar_content #tags .tag span:active .iconic{-webkit-transition:none;transition:none;fill:#b22027}#lychee_sidebar_content #leaflet_map_single_photo{margin:10px 0 0 20px;height:180px;width:calc(100% - 40px)}#lychee_sidebar_content .attr_location.search{cursor:pointer}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){#lychee_sidebar_container{position:absolute;right:0}#lychee_sidebar{background-color:rgba(0,0,0,.6)}#lychee_sidebar,#lychee_sidebar_container.active{width:240px}#lychee_sidebar_header{height:22px}#lychee_sidebar_header h1{margin:6px 0;font-size:13px}#lychee_sidebar_content{padding-bottom:10px}#lychee_sidebar_content .sidebar__divider{padding:6px 0 2px}#lychee_sidebar_content .sidebar__divider h1{margin:0 0 0 10px;font-size:12px}#lychee_sidebar_content #tags,#lychee_sidebar_content table{margin:4px 0 6px 10px;width:calc(100% - 16px)}#lychee_sidebar_content table tr td{padding:2px 0;font-size:11px;line-height:12px}#lychee_sidebar_content table tr td:first-child{width:80px}#lychee_sidebar_content #tags .empty{margin:0;font-size:11px}}@media only screen and (min-width:568px) and (max-width:768px),only screen and (min-width:568px) and (max-width:640px) and (orientation:landscape){#lychee_sidebar,#lychee_sidebar_container.active{width:280px}#lychee_sidebar_header{height:28px}#lychee_sidebar_header h1{margin:8px 0;font-size:15px}#lychee_sidebar_content{padding-bottom:10px}#lychee_sidebar_content .sidebar__divider{padding:8px 0 4px}#lychee_sidebar_content .sidebar__divider h1{margin:0 0 0 10px;font-size:13px}#lychee_sidebar_content #tags,#lychee_sidebar_content table{margin:4px 0 6px 10px;width:calc(100% - 16px)}#lychee_sidebar_content table tr td{padding:2px 0;font-size:12px;line-height:13px}#lychee_sidebar_content table tr td:first-child{width:90px}#lychee_sidebar_content #tags .empty{margin:0;font-size:12px}}#lychee_loading{height:0;-webkit-transition:height .3s;transition:height .3s;background-size:100px 3px;background-repeat:repeat-x;-webkit-animation-name:moveBackground;animation-name:moveBackground;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}#lychee_loading.loading{height:3px;background-image:-webkit-gradient(linear,left top,right top,from(#153674),color-stop(47%,#153674),color-stop(53%,#2651ae),to(#2651ae));background-image:linear-gradient(to right,#153674 0,#153674 47%,#2651ae 53%,#2651ae 100%)}#lychee_loading.error{height:40px;background-color:#2f0d0e;background-image:-webkit-gradient(linear,left top,right top,from(#451317),color-stop(47%,#451317),color-stop(53%,#aa3039),to(#aa3039));background-image:linear-gradient(to right,#451317 0,#451317 47%,#aa3039 53%,#aa3039 100%)}#lychee_loading.success{height:40px;background-color:#070;background-image:-webkit-gradient(linear,left top,right top,from(#070),color-stop(47%,#090),color-stop(53%,#0a0),to(#0c0));background-image:linear-gradient(to right,#070 0,#090 47%,#0a0 53%,#0c0 100%)}#lychee_loading h1{margin:13px 13px 0;color:#ddd;font-size:14px;font-weight:700;text-shadow:0 1px 0 #000;text-transform:capitalize}#lychee_loading h1 span{margin-left:10px;font-weight:400;text-transform:none}div.select,input,output,select,textarea{display:inline-block;position:relative}div.select>select{display:block;width:100%}div.select,input,output,select,select option,textarea{color:#fff;background-color:#2c2c2c;margin:0;font-size:inherit;line-height:inherit;padding:0;border:none;-webkit-box-shadow:none;box-shadow:none;outline:0}input[type=password],input[type=text],select{padding-top:3px;padding-bottom:3px}input[type=password],input[type=text]{padding-left:2px;padding-right:2px;background-color:transparent;border-bottom:1px solid #222;border-radius:0;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05)}input[type=password]:focus,input[type=text]:focus{border-bottom-color:#2293ec}input[type=password].error,input[type=text].error{border-bottom-color:#d92c34}input[type=checkbox]{top:2px;height:16px;width:16px;-webkit-appearance:none;-moz-appearance:none;appearance:none;color:#2293ec;border:none;border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}input[type=checkbox]::before{content:"✔";position:absolute;text-align:center;font-size:16px;line-height:16px;top:0;bottom:0;left:0;right:0;width:auto;height:auto;visibility:hidden}input[type=checkbox]:checked::before{visibility:visible}input[type=checkbox].slider{top:5px;height:22px;width:42px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);border-radius:11px;background:#2c2c2c}input[type=checkbox].slider::before{content:"";background-color:#2293ec;height:14px;width:14px;left:3px;top:3px;border:none;border-radius:7px;visibility:visible}input[type=checkbox].slider:checked{background-color:#2293ec}input[type=checkbox].slider:checked::before{left:auto;right:3px;background-color:#fff}div.select{font-size:12px;background:#2c2c2c;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02)}div.select::after{position:absolute;content:"≡";right:8px;top:3px;color:#2293ec;font-size:16px;font-weight:700;pointer-events:none}select{padding-left:8px;padding-right:8px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:0 0}select option{padding:2px 0;-webkit-transition:none;transition:none}form div.input-group{position:relative;margin:18px 0}form div.input-group:first-child{margin-top:0}form div.input-group:last-child{margin-bottom:0}form div.input-group.hidden{display:none}form div.input-group label{font-weight:700}form div.input-group p{display:block;margin:6px 0;font-size:13px;line-height:16px}form div.input-group p:last-child{margin-bottom:0}form div.input-group.stacked>label{display:block;margin-bottom:6px}form div.input-group.stacked>label>input[type=password],form div.input-group.stacked>label>input[type=text]{margin-top:12px}form div.input-group.stacked>div.select,form div.input-group.stacked>input,form div.input-group.stacked>output,form div.input-group.stacked>textarea{width:100%;display:block}form div.input-group.compact{padding-left:120px}form div.input-group.compact>label{display:block;position:absolute;margin:0;left:0;width:108px;height:auto;top:3px;bottom:0;overflow-y:hidden}form div.input-group.compact>div.select,form div.input-group.compact>input,form div.input-group.compact>output,form div.input-group.compact>textarea{display:block;width:100%}form div.input-group.compact-inverse{padding-left:36px}form div.input-group.compact-inverse label{display:block}form div.input-group.compact-inverse>div.select,form div.input-group.compact-inverse>input,form div.input-group.compact-inverse>output,form div.input-group.compact-inverse>textarea{display:block;position:absolute;width:16px;height:16px;top:2px;left:0}form div.input-group.compact-no-indent>label{display:inline}form div.input-group.compact-no-indent>div.select,form div.input-group.compact-no-indent>input,form div.input-group.compact-no-indent>output,form div.input-group.compact-no-indent>textarea{display:inline-block;margin-left:.3em;margin-right:.3em}div.basicModal.about-dialog div.basicModal__content h1{font-size:120%;font-weight:700;text-align:center;color:#fff}div.basicModal.about-dialog div.basicModal__content h2{font-weight:700;color:#fff}div.basicModal.about-dialog div.basicModal__content p.update-status.up-to-date-git,div.basicModal.about-dialog div.basicModal__content p.update-status.up-to-date-release{display:none}div.basicModal.about-dialog div.basicModal__content p.about-desc{line-height:1.4em}div.basicModal.downloads div.basicModal__content a.button{display:block;margin:12px 0;padding:12px;font-weight:700;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02);box-shadow:inset 0 1px 0 rgba(255,255,255,.02);border:1px solid rgba(0,0,0,.2)}div.basicModal.downloads div.basicModal__content a.button .iconic{width:12px;height:12px;margin-right:12px}div.basicModal.qr-code{width:300px}div.basicModal.qr-code div.basicModal__content{padding:12px}.basicModal.import div.basicModal__content{padding:12px 8px}.basicModal.import div.basicModal__content h1{margin-bottom:12px;color:#fff;font-size:16px;line-height:19px;font-weight:700;text-align:center}.basicModal.import div.basicModal__content ol{margin-top:12px;height:300px;background-color:#2c2c2c;overflow:hidden;overflow-y:auto;border-radius:3px;-webkit-box-shadow:inset 0 0 3px rgba(0,0,0,.4);box-shadow:inset 0 0 3px rgba(0,0,0,.4)}.basicModal.import div.basicModal__content ol li{float:left;padding:8px 0;width:100%;background-color:rgba(255,255,255,.02)}.basicModal.import div.basicModal__content ol li:nth-child(2n){background-color:rgba(255,255,255,0)}.basicModal.import div.basicModal__content ol li h2{float:left;padding:5px 10px;width:70%;color:#fff;font-size:14px;white-space:nowrap;overflow:hidden}.basicModal.import div.basicModal__content ol li p.status{float:left;padding:5px 10px;width:30%;color:#999;font-size:14px;text-align:right;-webkit-animation-name:pulse;animation-name:pulse;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.basicModal.import div.basicModal__content ol li p.status.error,.basicModal.import div.basicModal__content ol li p.status.success,.basicModal.import div.basicModal__content ol li p.status.warning{-webkit-animation:none;animation:none}.basicModal.import div.basicModal__content ol li p.status.error{color:#d92c34}.basicModal.import div.basicModal__content ol li p.status.warning{color:#fc0}.basicModal.import div.basicModal__content ol li p.status.success{color:#0a0}.basicModal.import div.basicModal__content ol li p.notice{float:left;padding:2px 10px 5px;width:100%;color:#999;font-size:12px;overflow:hidden;line-height:16px}.basicModal.import div.basicModal__content ol li p.notice:empty{display:none}div.basicModal.login div.basicModal__content a.button#signInKeyLess{position:absolute;display:block;color:#999;top:8px;left:8px;width:30px;height:30px;margin:0;padding:5px;cursor:pointer;-webkit-box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);border:1px solid rgba(0,0,0,.2)}div.basicModal.login div.basicModal__content a.button#signInKeyLess .iconic{width:100%;height:100%;fill:#999}div.basicModal.login div.basicModal__content p.version{font-size:12px;text-align:right}div.basicModal.login div.basicModal__content p.version span.update-status.up-to-date-git,div.basicModal.login div.basicModal__content p.version span.update-status.up-to-date-release{display:none}@media (hover:hover){#lychee_sidebar .edit:hover .iconic{fill:#fff}#lychee_sidebar #tags .tag:hover{background-color:rgba(0,0,0,.3)}#lychee_sidebar #tags .tag:hover.search{cursor:pointer}#lychee_sidebar #tags .tag:hover span{width:9px;margin:0 0 -2px 5px;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}#lychee_sidebar #tags .tag span:hover .iconic{fill:#e1575e}div.basicModal.login div.basicModal__content a.button#signInKeyLess:hover{color:#fff;background:inherit}div.basicModal.login div.basicModal__content a.button#signInKeyLess:hover .iconic{fill:#fff}}form.photo-links div.input-group{padding-right:30px}form.photo-links div.input-group a.button{display:block;position:absolute;margin:0;padding:4px;right:0;bottom:0;width:26px;height:26px;cursor:pointer;-webkit-box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);border:1px solid rgba(0,0,0,.2)}form.photo-links div.input-group a.button .iconic{width:100%;height:100%}form.token div.input-group{padding-right:82px}form.token div.input-group input.disabled,form.token div.input-group input[disabled]{color:#999}form.token div.input-group div.button-group{display:block;position:absolute;margin:0;padding:0;right:0;bottom:0;width:78px}form.token div.input-group div.button-group a.button{display:block;float:right;margin:0;padding:4px;bottom:4px;width:26px;height:26px;cursor:pointer;-webkit-box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);border:1px solid rgba(0,0,0,.2)}form.token div.input-group div.button-group a.button .iconic{width:100%;height:100%}#sensitive_warning{background:rgba(100,0,0,.95);text-align:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#fff}#sensitive_warning.active{display:-webkit-box;display:-ms-flexbox;display:flex}#sensitive_warning h1{font-size:36px;font-weight:700;border-bottom:2px solid #fff;margin-bottom:15px}#sensitive_warning p{font-size:20px;max-width:40%;margin-top:15px}.settings_view{width:90%;max-width:700px;margin-left:auto;margin-right:auto}.settings_view input.text{padding:9px 2px;width:calc(50% - 4px);background-color:transparent;color:#fff;border:none;border-bottom:1px solid #222;border-radius:0;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05);outline:0}.settings_view input.text:focus{border-bottom-color:#2293ec}.settings_view input.text .error{border-bottom-color:#d92c34}.settings_view .basicModal__button{color:#2293ec;display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);border-radius:5px}.settings_view .basicModal__button_MORE,.settings_view .basicModal__button_SAVE{color:#b22027;border-radius:5px}.settings_view>div{font-size:14px;width:100%;padding:12px 0}.settings_view>div p{margin:0 0 5%;width:100%;color:#ccc;line-height:16px}.settings_view>div p a{color:rgba(255,255,255,.9);text-decoration:none;border-bottom:1px dashed #888}.settings_view>div p:last-of-type{margin:0}.settings_view>div input.text{width:100%}.settings_view>div textarea{padding:9px;width:calc(100% - 18px);height:100px;background-color:transparent;color:#fff;border:1px solid #666;border-radius:0;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05);outline:0;resize:vertical}.settings_view>div textarea:focus{border-color:#2293ec}.settings_view>div .choice{padding:0 30px 15px;width:100%;color:#fff}.settings_view>div .choice:last-child{padding-bottom:40px}.settings_view>div .choice label{float:left;color:#fff;font-size:14px;font-weight:700}.settings_view>div .choice label input{position:absolute;margin:0;opacity:0}.settings_view>div .choice label .checkbox{float:left;display:block;width:16px;height:16px;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.settings_view>div .choice label .checkbox .iconic{-webkit-box-sizing:border-box;box-sizing:border-box;fill:#2293ec;padding:2px;opacity:0;-ms-transform:scale(0);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1)}.settings_view>div .select{position:relative;margin:1px 5px;padding:0;width:110px;color:#fff;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);font-size:11px;line-height:16px;overflow:hidden;outline:0;vertical-align:middle;background:rgba(0,0,0,.3);display:inline-block}.settings_view>div .select select{margin:0;padding:4px 8px;width:120%;color:#fff;font-size:11px;line-height:16px;border:0;outline:0;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background-color:transparent;background-image:none;-moz-appearance:none;-webkit-appearance:none;appearance:none}.settings_view>div .select select option{margin:0;padding:0;background:#fff;color:#333;-webkit-transition:none;transition:none}.settings_view>div .select select:disabled{color:#000;cursor:not-allowed}.settings_view>div .select::after{position:absolute;content:"≡";right:8px;top:4px;color:#2293ec;font-size:16px;line-height:16px;font-weight:700;pointer-events:none}.settings_view>div .switch{position:relative;display:inline-block;width:42px;height:22px;bottom:-2px;line-height:24px}.settings_view>div .switch input{opacity:0;width:0;height:0}.settings_view>div .slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);background:rgba(0,0,0,.3);-webkit-transition:.4s;transition:.4s}.settings_view>div .slider:before{position:absolute;content:"";height:14px;width:14px;left:3px;bottom:3px;background-color:#2293ec}.settings_view>div input:checked+.slider{background-color:#2293ec}.settings_view>div input:checked+.slider:before{-ms-transform:translateX(20px);-webkit-transform:translateX(20px);transform:translateX(20px);background-color:#fff}.settings_view>div .slider.round{border-radius:20px}.settings_view>div .slider.round:before{border-radius:50%}.settings_view .setting_category{font-size:20px;width:100%;padding-top:10px;padding-left:4px;border-bottom:1px dotted #222;margin-top:20px;color:#fff;font-weight:700;text-transform:capitalize}.settings_view .setting_line{font-size:14px;width:100%}.settings_view .setting_line:first-child,.settings_view .setting_line:last-child{padding-top:50px}.settings_view .setting_line p{min-width:550px;margin:0;color:#ccc;display:inline-block;width:100%;overflow-wrap:break-word}.settings_view .setting_line p a{color:rgba(255,255,255,.9);text-decoration:none;border-bottom:1px dashed #888}.settings_view .setting_line p:last-of-type{margin:0}.settings_view .setting_line p .warning{margin-bottom:30px;color:#d92c34;font-weight:700;font-size:18px;text-align:justify;line-height:22px}.settings_view .setting_line span.text{display:inline-block;padding:9px 4px;width:calc(50% - 12px);background-color:transparent;color:#fff;border:none}.settings_view .setting_line span.text_icon{width:5%}.settings_view .setting_line span.text_icon .iconic{width:15px;height:14px;margin:0 10px 0 1px;fill:#fff}.settings_view .setting_line input.text{width:calc(50% - 4px)}@media (hover:hover){.settings_view .basicModal__button:hover{background:#2293ec;color:#fff;cursor:pointer}.settings_view .basicModal__button_MORE:hover,.settings_view .basicModal__button_SAVE:hover{background:#b22027;color:#fff}.settings_view input:hover{border-bottom:1px solid #2293ec}}@media (hover:none){#lychee_left_menu a{padding:14px 8px 14px 32px}.settings_view input.text{border-bottom:1px solid #2293ec;margin:6px 0}.settings_view>div{padding:16px 0}.settings_view .basicModal__button{background:#2293ec;color:#fff;max-width:320px;margin-top:20px}.settings_view .basicModal__button_MORE,.settings_view .basicModal__button_SAVE{background:#b22027}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.settings_view{max-width:100%}.settings_view .setting_category{font-size:14px;padding-left:0;margin-bottom:4px}.settings_view .setting_line{font-size:12px}.settings_view .setting_line:first-child{padding-top:20px}.settings_view .setting_line p{min-width:unset;line-height:20px}.settings_view .setting_line p.warning{font-size:14px;line-height:16px;margin-bottom:0}.settings_view .setting_line p input,.settings_view .setting_line p span{padding:0}.settings_view .basicModal__button_SAVE{margin-top:20px}}.users_view{width:90%;max-width:700px;margin-left:auto;margin-right:auto}.users_view_line{font-size:14px;width:100%}.users_view_line:first-child,.users_view_line:last-child{padding-top:50px}.users_view_line p{width:550px;margin:0 0 5%;color:#ccc;display:inline-block}.users_view_line p a{color:rgba(255,255,255,.9);text-decoration:none;border-bottom:1px dashed #888}.users_view_line p.line,.users_view_line p:last-of-type{margin:0}.users_view_line span.text{display:inline-block;padding:9px 6px 9px 0;width:40%;background-color:transparent;color:#fff;border:none}.users_view_line span.text_icon{width:5%;min-width:32px}.users_view_line span.text_icon .iconic{width:15px;height:14px;margin:0 8px;fill:#fff}.users_view_line input.text{padding:9px 6px 9px 0;width:40%;background-color:transparent;color:#fff;border:none;border-bottom:1px solid #222;border-radius:0;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05);outline:0;margin:0 0 10px}.users_view_line input.text:focus{border-bottom-color:#2293ec}.users_view_line input.text.error{border-bottom-color:#d92c34}.users_view_line .choice label input:checked~.checkbox .iconic{opacity:1;-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}.users_view_line .choice{display:inline-block;width:5%;min-width:32px;color:#fff}.users_view_line .choice input{position:absolute;margin:0;opacity:0}.users_view_line .choice .checkbox{display:inline-block;width:16px;height:16px;margin:10px 8px 0;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.users_view_line .choice .checkbox .iconic{-webkit-box-sizing:border-box;box-sizing:border-box;fill:#2293ec;padding:2px;opacity:0;-ms-transform:scale(0);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1)}.users_view_line .basicModal__button{display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);width:10%;min-width:72px;border-radius:0}.users_view_line .basicModal__button_OK{color:#2293ec;border-radius:5px 0 0 5px;margin-right:-4px}.users_view_line .basicModal__button_OK_no_DEL{border-radius:5px;min-width:144px;width:20%}.users_view_line .basicModal__button_DEL{color:#b22027;border-radius:0 5px 5px 0}.users_view_line .basicModal__button_CREATE{width:20%;color:#090;border-radius:5px;min-width:144px}.users_view_line .select{position:relative;margin:1px 5px;padding:0;width:110px;color:#fff;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);font-size:11px;line-height:16px;overflow:hidden;outline:0;vertical-align:middle;background:rgba(0,0,0,.3);display:inline-block}.users_view_line .select select{margin:0;padding:4px 8px;width:120%;color:#fff;font-size:11px;line-height:16px;border:0;outline:0;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background:0 0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.users_view_line .select select option{margin:0;padding:0;background:#fff;color:#333;-webkit-transition:none;transition:none}.users_view_line .select::after{position:absolute;content:"≡";right:8px;top:4px;color:#2293ec;font-size:16px;line-height:16px;font-weight:700;pointer-events:none}@media (hover:hover){.users_view_line .basicModal__button:hover{cursor:pointer;color:#fff}.users_view_line .basicModal__button_OK:hover{background:#2293ec}.users_view_line .basicModal__button_DEL:hover{background:#b22027}.users_view_line .basicModal__button_CREATE:hover{background:#090}.users_view_line input:hover{border-bottom:1px solid #2293ec}}@media (hover:none){.users_view_line .basicModal__button{color:#fff}.users_view_line .basicModal__button_OK{background:#2293ec}.users_view_line .basicModal__button_DEL{background:#b22027}.users_view_line .basicModal__button_CREATE{background:#090}.users_view_line input{border-bottom:1px solid #2293ec}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.users_view{width:100%;max-width:100%;padding:20px}.users_view_line p{width:100%}.users_view_line p .text,.users_view_line p input.text{width:36%;font-size:smaller}.users_view_line .choice{margin-left:-8px;margin-right:3px}}.u2f_view{width:90%;max-width:700px;margin-left:auto;margin-right:auto}.u2f_view_line{font-size:14px;width:100%}.u2f_view_line:first-child,.u2f_view_line:last-child{padding-top:50px}.u2f_view_line p{width:550px;margin:0 0 5%;color:#ccc;display:inline-block}.u2f_view_line p a{color:rgba(255,255,255,.9);text-decoration:none;border-bottom:1px dashed #888}.u2f_view_line p.line,.u2f_view_line p:last-of-type{margin:0}.u2f_view_line p.single{text-align:center}.u2f_view_line span.text{display:inline-block;padding:9px 4px;width:80%;background-color:transparent;color:#fff;border:none}.u2f_view_line span.text_icon{width:5%}.u2f_view_line span.text_icon .iconic{width:15px;height:14px;margin:0 15px 0 1px;fill:#fff}.u2f_view_line .choice label input:checked~.checkbox .iconic{opacity:1;-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}.u2f_view_line .choice{display:inline-block;width:5%;color:#fff}.u2f_view_line .choice input{position:absolute;margin:0;opacity:0}.u2f_view_line .choice .checkbox{display:inline-block;width:16px;height:16px;margin-top:10px;margin-left:2px;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.u2f_view_line .choice .checkbox .iconic{-webkit-box-sizing:border-box;box-sizing:border-box;fill:#2293ec;padding:2px;opacity:0;-ms-transform:scale(0);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1)}.u2f_view_line .basicModal__button{display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);width:20%;min-width:50px;border-radius:0}.u2f_view_line .basicModal__button_OK{color:#2293ec;border-radius:5px 0 0 5px}.u2f_view_line .basicModal__button_DEL{color:#b22027;border-radius:0 5px 5px 0}.u2f_view_line .basicModal__button_CREATE{width:100%;color:#090;border-radius:5px}.u2f_view_line .select{position:relative;margin:1px 5px;padding:0;width:110px;color:#fff;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);font-size:11px;line-height:16px;overflow:hidden;outline:0;vertical-align:middle;background:rgba(0,0,0,.3);display:inline-block}.u2f_view_line .select select{margin:0;padding:4px 8px;width:120%;color:#fff;font-size:11px;line-height:16px;border:0;outline:0;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background:0 0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.u2f_view_line .select select option{margin:0;padding:0;background:#fff;color:#333;-webkit-transition:none;transition:none}.u2f_view_line .select::after{position:absolute;content:"≡";right:8px;top:4px;color:#2293ec;font-size:16px;line-height:16px;font-weight:700;pointer-events:none}@media (hover:hover){.u2f_view_line .basicModal__button:hover{cursor:pointer}.u2f_view_line .basicModal__button_OK:hover{background:#2293ec;color:#fff}.u2f_view_line .basicModal__button_DEL:hover{background:#b22027;color:#fff}.u2f_view_line .basicModal__button_CREATE:hover{background:#090;color:#fff}.u2f_view_line input:hover{border-bottom:1px solid #2293ec}}@media (hover:none){.u2f_view_line .basicModal__button{color:#fff}.u2f_view_line .basicModal__button_OK{background:#2293ec}.u2f_view_line .basicModal__button_DEL{background:#b22027}.u2f_view_line .basicModal__button_CREATE{background:#090}.u2f_view_line input{border-bottom:1px solid #2293ec}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.u2f_view{width:100%;max-width:100%;padding:20px}.u2f_view_line p{width:100%}.u2f_view_line .basicModal__button_CREATE{width:80%;margin:0 10%}}.logs_diagnostics_view{width:90%;margin-left:auto;margin-right:auto;color:#ccc;font-size:12px;line-height:14px}.logs_diagnostics_view pre{font-family:monospace;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;padding-right:30px}.clear_logs_update{padding-left:30px;margin:20px auto}.clear_logs_update .basicModal__button,.logs_diagnostics_view .basicModal__button{color:#2293ec;display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);border-radius:5px}.clear_logs_update .iconic,.logs_diagnostics_view .iconic{display:inline-block;margin:0 10px 0 1px;width:13px;height:12px;fill:#2293ec}.clear_logs_update .button_left,.logs_diagnostics_view .button_left{margin-left:24px;width:400px}@media (hover:none){.clear_logs_update .basicModal__button,.logs_diagnostics_view .basicModal__button{background:#2293ec;color:#fff;max-width:320px;margin-top:20px}.clear_logs_update .iconic,.logs_diagnostics_view .iconic{fill:#fff}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.clear_logs_update,.logs_diagnostics_view{width:100%;max-width:100%;font-size:11px;line-height:12px}.clear_logs_update .basicModal__button,.clear_logs_update .button_left,.logs_diagnostics_view .basicModal__button,.logs_diagnostics_view .button_left{width:80%;margin:0 10%}.logs_diagnostics_view{padding:10px 10px 0 0}.clear_logs_update{padding:10px 10px 0;margin:0}}.sharing_view{width:90%;max-width:700px;margin-left:auto;margin-right:auto;margin-top:20px}.sharing_view .sharing_view_line{width:100%;display:block;clear:left}.sharing_view .col-xs-1,.sharing_view .col-xs-10,.sharing_view .col-xs-11,.sharing_view .col-xs-12,.sharing_view .col-xs-2,.sharing_view .col-xs-3,.sharing_view .col-xs-4,.sharing_view .col-xs-5,.sharing_view .col-xs-6,.sharing_view .col-xs-7,.sharing_view .col-xs-8,.sharing_view .col-xs-9{float:left;position:relative;min-height:1px}.sharing_view .col-xs-2{width:10%;padding-right:3%;padding-left:3%}.sharing_view .col-xs-5{width:42%}.sharing_view .btn-block+.btn-block{margin-top:5px}.sharing_view .btn-block{display:block;width:100%}.sharing_view .btn-default{color:#2293ec;border-color:#2293ec;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.sharing_view .btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.sharing_view select[multiple],.sharing_view select[size]{height:150px}.sharing_view .form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}.sharing_view .iconic{display:inline-block;width:15px;height:14px;fill:#2293ec}.sharing_view .iconic .iconic.ionicons{margin:0 8px -2px 0;width:18px;height:18px}.sharing_view .blue .iconic{fill:#2293ec}.sharing_view .grey .iconic{fill:#b4b4b4}.sharing_view p{width:100%;color:#ccc;text-align:center;font-size:14px;display:block}.sharing_view p.with{padding:15px 0}.sharing_view span.text{display:inline-block;padding:0 2px;width:40%;background-color:transparent;color:#fff;border:none}.sharing_view span.text:last-of-type{width:5%}.sharing_view span.text .iconic{width:15px;height:14px;margin:0 10px 0 1px;fill:#fff}.sharing_view .basicModal__button{margin-top:10px;color:#2293ec;display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);border-radius:5px}.sharing_view .choice label input:checked~.checkbox .iconic{opacity:1;-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}.sharing_view .choice{display:inline-block;width:5%;margin:0 10px;color:#fff}.sharing_view .choice input{position:absolute;margin:0;opacity:0}.sharing_view .choice .checkbox{display:inline-block;width:16px;height:16px;margin-top:10px;margin-left:2px;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.sharing_view .choice .checkbox .iconic{-webkit-box-sizing:border-box;box-sizing:border-box;fill:#2293ec;padding:2px;opacity:0;-ms-transform:scale(0);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1)}.sharing_view .select{position:relative;padding:0;color:#fff;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);font-size:14px;line-height:16px;outline:0;vertical-align:middle;background:rgba(0,0,0,.3);display:inline-block}.sharing_view .borderBlue{border:1px solid #2293ec}@media (hover:none){.sharing_view .basicModal__button{background:#2293ec;color:#fff}.sharing_view input{border-bottom:1px solid #2293ec}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.sharing_view{width:100%;max-width:100%;padding:10px}.sharing_view .select{font-size:12px}.sharing_view .iconic{margin-left:-4px}.sharing_view_line p{width:100%}.sharing_view_line .basicModal__button{width:80%;margin:0 10%}}#multiselect{position:absolute;background-color:rgba(0,94,204,.3);border:1px solid #005ecc;border-radius:3px;z-index:5}.justified-layout,.unjustified-layout{margin:30px;width:100%;position:relative}.justified-layout.laying-out,.unjustified-layout.laying-out{display:none}.justified-layout>.photo{position:absolute;--lychee-default-height:320px;margin:0}.unjustified-layout>.photo{float:left;max-height:240px;margin:5px}.justified-layout>.photo>.thumbimg,.justified-layout>.photo>.thumbimg>img,.unjustified-layout>.photo>.thumbimg,.unjustified-layout>.photo>.thumbimg>img{width:100%;height:100%;border:none;-o-object-fit:cover;object-fit:cover}.justified-layout>.photo>.overlay,.unjustified-layout>.photo>.overlay{width:100%;bottom:0;margin:0}.justified-layout>.photo>.overlay>h1,.unjustified-layout>.photo>.overlay>h1{width:auto;margin-right:15px}@media only screen and (min-width:320px) and (max-width:567px){.justified-layout{margin:8px}.justified-layout .photo{--lychee-default-height:160px}}@media only screen and (min-width:568px) and (max-width:639px){.justified-layout{margin:9px}.justified-layout .photo{--lychee-default-height:200px}}@media only screen and (min-width:640px) and (max-width:768px){.justified-layout{margin:10px}.justified-layout .photo{--lychee-default-height:240px}}#lychee_footer{text-align:center;padding:5px 0;background:#1d1d1d;-webkit-transition:color .3s,opacity .3s ease-out,margin-left .5s,-webkit-transform .3s ease-out,-webkit-box-shadow .3s;transition:color .3s,opacity .3s ease-out,transform .3s ease-out,box-shadow .3s,margin-left .5s,-webkit-transform .3s ease-out,-webkit-box-shadow .3s}#lychee_footer p{color:#ccc;font-size:.75em;font-weight:400;line-height:26px}#lychee_footer p a,#lychee_footer p a:visited{color:#ccc}#lychee_footer p.home_copyright,#lychee_footer p.hosted_by{text-transform:uppercase}#lychee_footer #home_socials a[href=""],#lychee_footer p:empty,.hide_footer,body.mode-frame div#footer,body.mode-none div#footer{display:none}@font-face{font-family:socials;src:url(fonts/socials.eot?egvu10);src:url(fonts/socials.eot?egvu10#iefix) format("embedded-opentype"),url(fonts/socials.ttf?egvu10) format("truetype"),url(fonts/socials.woff?egvu10) format("woff"),url(fonts/socials.svg?egvu10#socials) format("svg");font-weight:400;font-style:normal}#socials_footer{padding:0;text-align:center;left:0;right:0}.socialicons{display:inline-block;font-size:18px;font-family:socials!important;speak:none;color:#ccc;text-decoration:none;margin:15px 15px 5px;transition:.3s;-webkit-transition:.3s;-moz-transition:.3s;-o-transition:.3s}#twitter:before{content:"\ea96"}#instagram:before{content:"\ea92"}#youtube:before{content:"\ea9d"}#flickr:before{content:"\eaa4"}#facebook:before{content:"\ea91"}@media (hover:hover){.sharing_view .basicModal__button:hover{background:#2293ec;color:#fff;cursor:pointer}.sharing_view input:hover{border-bottom:1px solid #2293ec}.socialicons:hover{color:#b5b5b5;-ms-transform:scale(1.3);transform:scale(1.3);-webkit-transform:scale(1.3)}}@media tv{.basicModal__button:focus{background:#2293ec;color:#fff;cursor:pointer;outline-style:none}.basicModal__button#basicModal__action:focus{color:#fff}.photo:focus{outline:#fff solid 10px}.album:focus{outline-width:0}.toolbar .button:focus{outline-width:0;background-color:#fff}.header__title:focus{outline-width:0;background-color:#fff;color:#000}.toolbar .button:focus .iconic{fill:#000}#imageview{background-color:#000}#imageview #image,#imageview #livephoto{outline-width:0}}#lychee_view_container{position:absolute;top:0;left:0;height:100%;width:100%;overflow:clip auto}.leaflet-image-layer,.leaflet-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane,.leaflet-pane>canvas,.leaflet-pane>svg,.leaflet-tile,.leaflet-tile-container,.leaflet-zoom-box{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden;-webkit-tap-highlight-color:transparent;background:#ddd;outline-offset:1px;font-family:"Helvetica Neue",Arial,Helvetica,sans-serif;font-size:.75rem;line-height:1.5}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::-moz-selection{background:0 0}.leaflet-tile::selection{background:0 0}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer{max-width:none!important;max-height:none!important;width:auto;padding:0}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4);color:#0078a8}.leaflet-tile{-webkit-filter:inherit;filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;-webkit-box-sizing:border-box;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto;float:left;clear:both}.leaflet-bottom,.leaflet-top{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-right .leaflet-control{float:right;margin-right:10px}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1),-webkit-transform .25s cubic-bezier(0,0,.25,1)}.leaflet-pan-anim .leaflet-tile,.leaflet-zoom-anim .leaflet-tile{-webkit-transition:none;transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-control,.leaflet-popup-pane{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:grabbing}.leaflet-image-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-image-layer.leaflet-interactive,.leaflet-marker-icon.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-zoom-box{border:2px dotted #38f;background:rgba(255,255,255,.5)}.leaflet-bar{-webkit-box-shadow:0 1px 5px rgba(0,0,0,.65);box-shadow:0 1px 5px rgba(0,0,0,.65);border-radius:4px}.leaflet-bar a{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:focus,.leaflet-bar a:hover{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:bold 18px "Lucida Console",Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{-webkit-box-shadow:0 1px 5px rgba(0,0,0,.4);box-shadow:0 1px 5px rgba(0,0,0,.4);background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url(images/layers.png);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(images/layers-2x.png);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block;font-size:1.08333em}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(images/marker-icon.png)}.leaflet-container .leaflet-control-attribution{background:rgba(255,255,255,.8);margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:focus,.leaflet-control-attribution a:hover{text-decoration:underline}.leaflet-attribution-flag{display:inline!important;vertical-align:baseline!important;width:1em;height:.6669em}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;white-space:nowrap;-webkit-box-sizing:border-box;box-sizing:border-box;background:rgba(255,255,255,.8);text-shadow:1px 1px #fff}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-bar,.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers{-webkit-box-shadow:none;box-shadow:none}.leaflet-touch .leaflet-bar,.leaflet-touch .leaflet-control-layers{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 24px 13px 20px;line-height:1.3;font-size:1.08333em;min-height:1px}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-top:-1px;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;pointer-events:auto;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;-webkit-box-shadow:0 3px 14px rgba(0,0,0,.4);box-shadow:0 3px 14px rgba(0,0,0,.4)}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;border:none;text-align:center;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;color:#757575;text-decoration:none;background:0 0}.leaflet-container a.leaflet-popup-close-button:focus,.leaflet-container a.leaflet-popup-close-button:hover{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto}.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.4);box-shadow:0 1px 3px rgba(0,0,0,.4)}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before,.leaflet-tooltip-top:before{position:absolute;pointer-events:none;border:6px solid transparent;background:0 0;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.leaflet-cluster-anim .leaflet-marker-icon,.leaflet-cluster-anim .leaflet-marker-shadow{-webkit-transition:opacity .3s ease-in,-webkit-transform .3s ease-out;transition:transform .3s ease-out,opacity .3s ease-in,-webkit-transform .3s ease-out}.leaflet-cluster-spider-leg{-webkit-transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in;transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in}.leaflet-marker-photo{border:2px solid #fff;-webkit-box-shadow:3px 3px 10px #888;box-shadow:3px 3px 10px #888}.leaflet-marker-photo div{width:100%;height:100%;background-size:cover;background-position:center center;background-repeat:no-repeat}.leaflet-marker-photo b{position:absolute;top:-7px;right:-11px;color:#555;background-color:#fff;border-radius:8px;height:12px;min-width:12px;line-height:12px;text-align:center;padding:3px;-webkit-box-shadow:0 3px 14px rgba(0,0,0,.4);box-shadow:0 3px 14px rgba(0,0,0,.4)} \ No newline at end of file diff --git a/public/dist/frontend.js b/public/dist/frontend.js index 9286c3833f7..7fe8e7782aa 100644 --- a/public/dist/frontend.js +++ b/public/dist/frontend.js @@ -1,5 +1,5 @@ -/*! jQuery v3.6.3 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},S=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||S).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.3",E=function(e,t){return new E.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,S)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=E)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{if(d.cssSupportsSelector&&!CSS.supports("selector(:is("+c+"))"))throw new Error;return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===E&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[E]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,S=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.cssSupportsSelector=ce(function(){return CSS.supports("selector(*)")&&C.querySelectorAll(":is(:jqfake)")&&!CSS.supports("selector(:is(*,:jqfake))")}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=E,!C.getElementsByName||!C.getElementsByName(E).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&S){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&S){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&S)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+E+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+E+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),d.cssSupportsSelector||y.push(":has"),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType&&e.documentElement||e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&S&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:S,!0)),N.test(r[1])&&E.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=S.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)}).prototype=E.fn,D=E(S);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=S.createDocumentFragment().appendChild(S.createElement("div")),(fe=S.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?E.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),S.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;E.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||E.expando+"_"+Ct.guid++;return this[e]=!0,e}}),E.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||E.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?E(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=S.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=S.implementation.createHTMLDocument("")).createElement("base")).href=S.location.href,t.head.appendChild(r)):t=S),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&E(o).remove(),E.merge([],i.childNodes)));var r,i,o},E.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(E.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},E.expr.pseudos.animated=function(t){return E.grep(E.timers,function(e){return t===e.elem}).length},E.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=E.css(e,"position"),c=E(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=E.css(e,"top"),u=E.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),i.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-E.css(r,"marginTop",!0),left:t.left-i.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===E.css(e,"position"))e=e.offsetParent;return e||re})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;E.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(a,s){E.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){E.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?E.css(e,t,i):E.style(e,t,n,i)},s,n?e:void 0,n)}})}),E.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){E.fn[t]=function(e){return this.on(t,e)}}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},R=function(){V()},M=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&z(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function X(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&M(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function U(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function z(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",R),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Me(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return R(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return R(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0=layoutConfig.maxNumRows){currentRow=null;return true}currentRow=createNewRow(layoutConfig,layoutData);if(!itemAdded){itemAdded=currentRow.addItem(itemData);if(currentRow.isLayoutComplete()){laidOutItems=laidOutItems.concat(addRow(layoutConfig,layoutData,currentRow));if(layoutData._rows.length>=layoutConfig.maxNumRows){currentRow=null;return true}currentRow=createNewRow(layoutConfig,layoutData)}}}});if(currentRow&¤tRow.getItems().length&&layoutConfig.showWidows){if(layoutData._rows.length){if(layoutData._rows[layoutData._rows.length-1].isBreakoutRow){nextToLastRowHeight=layoutData._rows[layoutData._rows.length-1].targetRowHeight}else{nextToLastRowHeight=layoutData._rows[layoutData._rows.length-1].height}currentRow.forceComplete(false,nextToLastRowHeight)}else{currentRow.forceComplete(false)}laidOutItems=laidOutItems.concat(addRow(layoutConfig,layoutData,currentRow));layoutConfig._widowCount=currentRow.getItems().length}layoutData._containerHeight=layoutData._containerHeight-layoutConfig.boxSpacing.vertical;layoutData._containerHeight=layoutData._containerHeight+layoutConfig.containerPadding.bottom;return{containerHeight:layoutData._containerHeight,widowCount:layoutConfig._widowCount,boxes:layoutData._layoutItems}}module.exports=function(input,config){var layoutConfig={};var layoutData={};var defaults={containerWidth:1060,containerPadding:10,boxSpacing:10,targetRowHeight:320,targetRowHeightTolerance:.25,maxNumRows:Number.POSITIVE_INFINITY,forceAspectRatio:false,showWidows:true,fullWidthBreakoutRowCadence:false,widowLayoutStyle:"left"};var containerPadding={};var boxSpacing={};config=config||{};layoutConfig=Object.assign(defaults,config);containerPadding.top=!isNaN(parseFloat(layoutConfig.containerPadding.top))?layoutConfig.containerPadding.top:layoutConfig.containerPadding;containerPadding.right=!isNaN(parseFloat(layoutConfig.containerPadding.right))?layoutConfig.containerPadding.right:layoutConfig.containerPadding;containerPadding.bottom=!isNaN(parseFloat(layoutConfig.containerPadding.bottom))?layoutConfig.containerPadding.bottom:layoutConfig.containerPadding;containerPadding.left=!isNaN(parseFloat(layoutConfig.containerPadding.left))?layoutConfig.containerPadding.left:layoutConfig.containerPadding;boxSpacing.horizontal=!isNaN(parseFloat(layoutConfig.boxSpacing.horizontal))?layoutConfig.boxSpacing.horizontal:layoutConfig.boxSpacing;boxSpacing.vertical=!isNaN(parseFloat(layoutConfig.boxSpacing.vertical))?layoutConfig.boxSpacing.vertical:layoutConfig.boxSpacing;layoutConfig.containerPadding=containerPadding;layoutConfig.boxSpacing=boxSpacing;layoutData._layoutItems=[];layoutData._awakeItems=[];layoutData._inViewportItems=[];layoutData._leadingOrphans=[];layoutData._trailingOrphans=[];layoutData._containerHeight=layoutConfig.containerPadding.top;layoutData._rows=[];layoutData._orphans=[];layoutConfig._widowCount=0;return computeLayout(layoutConfig,layoutData,input.map(function(item){if(item.width&&item.height){return{aspectRatio:item.width/item.height}}else{return{aspectRatio:item}}}))}},{"./row":1}]},{},[]); /* @preserve - * Leaflet 1.9.3, a JS library for interactive maps. https://leafletjs.com - * (c) 2010-2022 Vladimir Agafonkin, (c) 2010-2011 CloudMade + * Leaflet 1.9.4, a JS library for interactive maps. https://leafletjs.com + * (c) 2010-2023 Vladimir Agafonkin, (c) 2010-2011 CloudMade */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).leaflet={})}(this,function(t){"use strict";function l(t){for(var e,i,n=1,o=arguments.length;n=this.min.x&&i.x<=this.max.x&&e.y>=this.min.y&&i.y<=this.max.y},intersects:function(t){t=_(t);var e=this.min,i=this.max,n=t.min,t=t.max,o=t.x>=e.x&&n.x<=i.x,t=t.y>=e.y&&n.y<=i.y;return o&&t},overlaps:function(t){t=_(t);var e=this.min,i=this.max,n=t.min,t=t.max,o=t.x>e.x&&n.xe.y&&n.y=n.lat&&i.lat<=o.lat&&e.lng>=n.lng&&i.lng<=o.lng},intersects:function(t){t=g(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),t=t.getNorthEast(),o=t.lat>=e.lat&&n.lat<=i.lat,t=t.lng>=e.lng&&n.lng<=i.lng;return o&&t},overlaps:function(t){t=g(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),t=t.getNorthEast(),o=t.lat>e.lat&&n.late.lng&&n.lng","http://www.w3.org/2000/svg"===(Ft.firstChild&&Ft.firstChild.namespaceURI));function y(t){return 0<=navigator.userAgent.toLowerCase().indexOf(t)}var b={ie:pt,ielt9:mt,edge:n,webkit:ft,android:gt,android23:vt,androidStock:yt,opera:xt,chrome:wt,gecko:bt,safari:Pt,phantom:Lt,opera12:o,win:Tt,ie3d:Mt,webkit3d:zt,gecko3d:_t,any3d:Ct,mobile:Zt,mobileWebkit:St,mobileWebkit3d:Et,msPointer:kt,pointer:Ot,touch:Bt,touchNative:At,mobileOpera:It,mobileGecko:Rt,retina:Nt,passiveEvents:Dt,canvas:jt,svg:Ht,vml:!Ht&&function(){try{var t=document.createElement("div"),e=(t.innerHTML='',t.firstChild);return e.style.behavior="url(#default#VML)",e&&"object"==typeof e.adj}catch(t){return!1}}(),inlineSvg:Ft,mac:0===navigator.platform.indexOf("Mac"),linux:0===navigator.platform.indexOf("Linux")},Wt=b.msPointer?"MSPointerDown":"pointerdown",Ut=b.msPointer?"MSPointerMove":"pointermove",Vt=b.msPointer?"MSPointerUp":"pointerup",qt=b.msPointer?"MSPointerCancel":"pointercancel",Gt={touchstart:Wt,touchmove:Ut,touchend:Vt,touchcancel:qt},Kt={touchstart:function(t,e){e.MSPOINTER_TYPE_TOUCH&&e.pointerType===e.MSPOINTER_TYPE_TOUCH&&O(e);ee(t,e)},touchmove:ee,touchend:ee,touchcancel:ee},Yt={},Xt=!1;function Jt(t,e,i){return"touchstart"!==e||Xt||(document.addEventListener(Wt,$t,!0),document.addEventListener(Ut,Qt,!0),document.addEventListener(Vt,te,!0),document.addEventListener(qt,te,!0),Xt=!0),Kt[e]?(i=Kt[e].bind(this,i),t.addEventListener(Gt[e],i,!1),i):(console.warn("wrong event specified:",e),u)}function $t(t){Yt[t.pointerId]=t}function Qt(t){Yt[t.pointerId]&&(Yt[t.pointerId]=t)}function te(t){delete Yt[t.pointerId]}function ee(t,e){if(e.pointerType!==(e.MSPOINTER_TYPE_MOUSE||"mouse")){for(var i in e.touches=[],Yt)e.touches.push(Yt[i]);e.changedTouches=[e],t(e)}}var ie=200;function ne(t,i){t.addEventListener("dblclick",i);var n,o=0;function e(t){var e;1!==t.detail?n=t.detail:"mouse"===t.pointerType||t.sourceCapabilities&&!t.sourceCapabilities.firesTouchEvents||((e=Ne(t)).some(function(t){return t instanceof HTMLLabelElement&&t.attributes.for})&&!e.some(function(t){return t instanceof HTMLInputElement||t instanceof HTMLSelectElement})||((e=Date.now())-o<=ie?2===++n&&i(function(t){var e,i,n={};for(i in t)e=t[i],n[i]=e&&e.bind?e.bind(t):e;return(t=n).type="dblclick",n.detail=2,n.isTrusted=!1,n._simulated=!0,n}(t)):n=1,o=e))}return t.addEventListener("click",e),{dblclick:i,simDblclick:e}}var oe,se,re,ae,he,le,ue=we(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),ce=we(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),de="webkitTransition"===ce||"OTransition"===ce?ce+"End":"transitionend";function _e(t){return"string"==typeof t?document.getElementById(t):t}function pe(t,e){var i=t.style[e]||t.currentStyle&&t.currentStyle[e];return"auto"===(i=i&&"auto"!==i||!document.defaultView?i:(t=document.defaultView.getComputedStyle(t,null))?t[e]:null)?null:i}function P(t,e,i){t=document.createElement(t);return t.className=e||"",i&&i.appendChild(t),t}function T(t){var e=t.parentNode;e&&e.removeChild(t)}function me(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function fe(t){var e=t.parentNode;e&&e.lastChild!==t&&e.appendChild(t)}function ge(t){var e=t.parentNode;e&&e.firstChild!==t&&e.insertBefore(t,e.firstChild)}function ve(t,e){return void 0!==t.classList?t.classList.contains(e):0<(t=xe(t)).length&&new RegExp("(^|\\s)"+e+"(\\s|$)").test(t)}function M(t,e){var i;if(void 0!==t.classList)for(var n=W(e),o=0,s=n.length;othis.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,e){this._enforcingBounds=!0;var i=this.getCenter(),t=this._limitCenter(i,this._zoom,g(t));return i.equals(t)||this.panTo(t,e),this._enforcingBounds=!1,this},panInside:function(t,e){var i=m((e=e||{}).paddingTopLeft||e.padding||[0,0]),n=m(e.paddingBottomRight||e.padding||[0,0]),o=this.project(this.getCenter()),t=this.project(t),s=this.getPixelBounds(),i=_([s.min.add(i),s.max.subtract(n)]),s=i.getSize();return i.contains(t)||(this._enforcingBounds=!0,n=t.subtract(i.getCenter()),i=i.extend(t).getSize().subtract(s),o.x+=n.x<0?-i.x:i.x,o.y+=n.y<0?-i.y:i.y,this.panTo(this.unproject(o),e),this._enforcingBounds=!1),this},invalidateSize:function(t){if(!this._loaded)return this;t=l({animate:!1,pan:!0},!0===t?{animate:!0}:t);var e=this.getSize(),i=(this._sizeChanged=!0,this._lastCenter=null,this.getSize()),n=e.divideBy(2).round(),o=i.divideBy(2).round(),n=n.subtract(o);return n.x||n.y?(t.animate&&t.pan?this.panBy(n):(t.pan&&this._rawPanBy(n),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(a(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:e,newSize:i})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){var e,i;return t=this._locateOptions=l({timeout:1e4,watch:!1},t),"geolocation"in navigator?(e=a(this._handleGeolocationResponse,this),i=a(this._handleGeolocationError,this),t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,i,t):navigator.geolocation.getCurrentPosition(e,i,t)):this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var e;this._container._leaflet_id&&(e=t.code,t=t.message||(1===e?"permission denied":2===e?"position unavailable":"timeout"),this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:e,message:"Geolocation error: "+t+"."}))},_handleGeolocationResponse:function(t){if(this._container._leaflet_id){var e,i,n=new v(t.coords.latitude,t.coords.longitude),o=n.toBounds(2*t.coords.accuracy),s=this._locateOptions,r=(s.setView&&(e=this.getBoundsZoom(o),this.setView(n,s.maxZoom?Math.min(e,s.maxZoom):e)),{latlng:n,bounds:o,timestamp:t.timestamp});for(i in t.coords)"number"==typeof t.coords[i]&&(r[i]=t.coords[i]);this.fire("locationfound",r)}},addHandler:function(t,e){return e&&(e=this[t]=new e(this),this._handlers.push(e),this.options[t]&&e.enable()),this},remove:function(){if(this._initEvents(!0),this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}for(var t in void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),T(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(r(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload"),this._layers)this._layers[t].remove();for(t in this._panes)T(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,e){e=P("div","leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),e||this._mapPane);return t&&(this._panes[t]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter.clone():this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new s(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,e,i){t=g(t),i=m(i||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),t=t.getSouthEast(),i=this.getSize().subtract(i),t=_(this.project(t,n),this.project(r,n)).getSize(),r=b.any3d?this.options.zoomSnap:1,a=i.x/t.x,i=i.y/t.y,t=e?Math.max(a,i):Math.min(a,i),n=this.getScaleZoom(t,n);return r&&(n=Math.round(n/(r/100))*(r/100),n=e?Math.ceil(n/r)*r:Math.floor(n/r)*r),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new p(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,e){t=this._getTopLeftPoint(t,e);return new f(t,t.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return"string"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,e){var i=this.options.crs;return e=void 0===e?this._zoom:e,i.scale(t)/i.scale(e)},getScaleZoom:function(t,e){var i=this.options.crs,t=(e=void 0===e?this._zoom:e,i.zoom(t*i.scale(e)));return isNaN(t)?1/0:t},project:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.latLngToPoint(w(t),e)},unproject:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.pointToLatLng(m(t),e)},layerPointToLatLng:function(t){t=m(t).add(this.getPixelOrigin());return this.unproject(t)},latLngToLayerPoint:function(t){return this.project(w(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(w(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(g(t))},distance:function(t,e){return this.options.crs.distance(w(t),w(e))},containerPointToLayerPoint:function(t){return m(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return m(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){t=this.containerPointToLayerPoint(m(t));return this.layerPointToLatLng(t)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(w(t)))},mouseEventToContainerPoint:function(t){return De(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){t=this._container=_e(t);if(!t)throw new Error("Map container not found.");if(t._leaflet_id)throw new Error("Map container is already initialized.");S(t,"scroll",this._onScroll,this),this._containerId=h(t)},_initLayout:function(){var t=this._container,e=(this._fadeAnimated=this.options.fadeAnimation&&b.any3d,M(t,"leaflet-container"+(b.touch?" leaflet-touch":"")+(b.retina?" leaflet-retina":"")+(b.ielt9?" leaflet-oldie":"")+(b.safari?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":"")),pe(t,"position"));"absolute"!==e&&"relative"!==e&&"fixed"!==e&&"sticky"!==e&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),Z(this._mapPane,new p(0,0)),this.createPane("tilePane"),this.createPane("overlayPane"),this.createPane("shadowPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(M(t.markerPane,"leaflet-zoom-hide"),M(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,e,i){Z(this._mapPane,new p(0,0));var n=!this._loaded,o=(this._loaded=!0,e=this._limitZoom(e),this.fire("viewprereset"),this._zoom!==e);this._moveStart(o,i)._move(t,e)._moveEnd(o),this.fire("viewreset"),n&&this.fire("load")},_moveStart:function(t,e){return t&&this.fire("zoomstart"),e||this.fire("movestart"),this},_move:function(t,e,i,n){void 0===e&&(e=this._zoom);var o=this._zoom!==e;return this._zoom=e,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),n?i&&i.pinch&&this.fire("zoom",i):((o||i&&i.pinch)&&this.fire("zoom",i),this.fire("move",i)),this},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return r(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){Z(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={};var e=t?k:S;e((this._targets[h(this._container)]=this)._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",this._handleDOMEvent,this),this.options.trackResize&&e(window,"resize",this._onResize,this),b.any3d&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){r(this._resizeRequest),this._resizeRequest=x(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,e){for(var i,n=[],o="mouseout"===e||"mouseover"===e,s=t.target||t.srcElement,r=!1;s;){if((i=this._targets[h(s)])&&("click"===e||"preclick"===e)&&this._draggableMoved(i)){r=!0;break}if(i&&i.listens(e,!0)){if(o&&!Fe(s,t))break;if(n.push(i),o)break}if(s===this._container)break;s=s.parentNode}return n=n.length||r||o||!this.listens(e,!0)?n:[this]},_isClickDisabled:function(t){for(;t&&t!==this._container;){if(t._leaflet_disable_click)return!0;t=t.parentNode}},_handleDOMEvent:function(t){var e,i=t.target||t.srcElement;!this._loaded||i._leaflet_disable_events||"click"===t.type&&this._isClickDisabled(i)||("mousedown"===(e=t.type)&&Me(i),this._fireDOMEvent(t,e))},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,e,i){"click"===t.type&&((a=l({},t)).type="preclick",this._fireDOMEvent(a,a.type,i));var n=this._findEventTargets(t,e);if(i){for(var o=[],s=0;sthis.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(e),n=this._getCenterOffset(t)._divideBy(1-1/n);if(!0!==i.animate&&!this.getSize().contains(n))return!1;x(function(){this._moveStart(!0,!1)._animateZoom(t,e,!0)},this)}return!0},_animateZoom:function(t,e,i,n){this._mapPane&&(i&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=e,M(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:e,noUpdate:n}),this._tempFireZoomEvent||(this._tempFireZoomEvent=this._zoom!==this._animateToZoom),this._move(this._animateToCenter,this._animateToZoom,void 0,!0),setTimeout(a(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&z(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom,void 0,!0),this._tempFireZoomEvent&&this.fire("zoom"),delete this._tempFireZoomEvent,this.fire("move"),this._moveEnd(!0))}});function Ue(t){return new B(t)}var Ve,B=et.extend({options:{position:"topright"},initialize:function(t){c(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var e=this._map;return e&&e.removeControl(this),this.options.position=t,e&&e.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var e=this._container=this.onAdd(t),i=this.getPosition(),t=t._controlCorners[i];return M(e,"leaflet-control"),-1!==i.indexOf("bottom")?t.insertBefore(e,t.firstChild):t.appendChild(e),this._map.on("unload",this.remove,this),this},remove:function(){return this._map&&(T(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null),this},_refocusOnMap:function(t){this._map&&t&&0",e=document.createElement("div");return e.innerHTML=t,e.firstChild},_addItem:function(t){var e,i=document.createElement("label"),n=this._map.hasLayer(t.layer),n=(t.overlay?((e=document.createElement("input")).type="checkbox",e.className="leaflet-control-layers-selector",e.defaultChecked=n):e=this._createRadioElement("leaflet-base-layers_"+h(this),n),this._layerControlInputs.push(e),e.layerId=h(t.layer),S(e,"click",this._onInputClick,this),document.createElement("span")),o=(n.innerHTML=" "+t.name,document.createElement("span"));return i.appendChild(o),o.appendChild(e),o.appendChild(n),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(i),this._checkDisabledLayers(),i},_onInputClick:function(){var t,e,i=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=i.length-1;0<=s;s--)t=i[s],e=this._getLayer(t.layerId).layer,t.checked?n.push(e):t.checked||o.push(e);for(s=0;se.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expandSafely:function(){var t=this._section;S(t,"click",O),this.expand(),setTimeout(function(){k(t,"click",O)})}})),Ge=B.extend({options:{position:"topleft",zoomInText:'',zoomInTitle:"Zoom in",zoomOutText:'',zoomOutTitle:"Zoom out"},onAdd:function(t){var e="leaflet-control-zoom",i=P("div",e+" leaflet-bar"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,e+"-in",i,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,e+"-out",i,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),i},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoomthis._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,e,i,n,o){i=P("a",i,n);return i.innerHTML=t,i.href="#",i.title=e,i.setAttribute("role","button"),i.setAttribute("aria-label",e),Ie(i),S(i,"click",Re),S(i,"click",o,this),S(i,"click",this._refocusOnMap,this),i},_updateDisabled:function(){var t=this._map,e="leaflet-disabled";z(this._zoomInButton,e),z(this._zoomOutButton,e),this._zoomInButton.setAttribute("aria-disabled","false"),this._zoomOutButton.setAttribute("aria-disabled","false"),!this._disabled&&t._zoom!==t.getMinZoom()||(M(this._zoomOutButton,e),this._zoomOutButton.setAttribute("aria-disabled","true")),!this._disabled&&t._zoom!==t.getMaxZoom()||(M(this._zoomInButton,e),this._zoomInButton.setAttribute("aria-disabled","true"))}}),Ke=(A.mergeOptions({zoomControl:!0}),A.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new Ge,this.addControl(this.zoomControl))}),B.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var e="leaflet-control-scale",i=P("div",e),n=this.options;return this._addScales(n,e+"-line",i),t.on(n.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,e,i){t.metric&&(this._mScale=P("div",e,i)),t.imperial&&(this._iScale=P("div",e,i))},_update:function(){var t=this._map,e=t.getSize().y/2,t=t.distance(t.containerPointToLatLng([0,e]),t.containerPointToLatLng([this.options.maxWidth,e]));this._updateScales(t)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var e=this._getRoundNum(t);this._updateScale(this._mScale,e<1e3?e+" m":e/1e3+" km",e/t)},_updateImperial:function(t){var e,i,t=3.2808399*t;5280'+(b.inlineSvg?' ':"")+"Leaflet"},initialize:function(t){c(this,t),this._attributions={}},onAdd:function(t){for(var e in(t.attributionControl=this)._container=P("div","leaflet-control-attribution"),Ie(this._container),t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return this._update(),t.on("layeradd",this._addAttribution,this),this._container},onRemove:function(t){t.off("layeradd",this._addAttribution,this)},_addAttribution:function(t){t.layer.getAttribution&&(this.addAttribution(t.layer.getAttribution()),t.layer.once("remove",function(){this.removeAttribution(t.layer.getAttribution())},this))},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t&&(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update()),this},removeAttribution:function(t){return t&&this._attributions[t]&&(this._attributions[t]--,this._update()),this},_update:function(){if(this._map){var t,e=[];for(t in this._attributions)this._attributions[t]&&e.push(t);var i=[];this.options.prefix&&i.push(this.options.prefix),e.length&&i.push(e.join(", ")),this._container.innerHTML=i.join(' ')}}}),n=(A.mergeOptions({attributionControl:!0}),A.addInitHook(function(){this.options.attributionControl&&(new Ye).addTo(this)}),B.Layers=qe,B.Zoom=Ge,B.Scale=Ke,B.Attribution=Ye,Ue.layers=function(t,e,i){return new qe(t,e,i)},Ue.zoom=function(t){return new Ge(t)},Ue.scale=function(t){return new Ke(t)},Ue.attribution=function(t){return new Ye(t)},et.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled||(this._enabled=!0,this.addHooks()),this},disable:function(){return this._enabled&&(this._enabled=!1,this.removeHooks()),this},enabled:function(){return!!this._enabled}})),ft=(n.addTo=function(t,e){return t.addHandler(e,this),this},{Events:e}),Xe=b.touch?"touchstart mousedown":"mousedown",Je=it.extend({options:{clickTolerance:3},initialize:function(t,e,i,n){c(this,n),this._element=t,this._dragStartTarget=e||t,this._preventOutline=i},enable:function(){this._enabled||(S(this._dragStartTarget,Xe,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Je._dragging===this&&this.finishDrag(!0),k(this._dragStartTarget,Xe,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){var e,i;this._enabled&&(this._moved=!1,ve(this._element,"leaflet-zoom-anim")||(t.touches&&1!==t.touches.length?Je._dragging===this&&this.finishDrag():Je._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||((Je._dragging=this)._preventOutline&&Me(this._element),Le(),re(),this._moving||(this.fire("down"),i=t.touches?t.touches[0]:t,e=Ce(this._element),this._startPoint=new p(i.clientX,i.clientY),this._startPos=Pe(this._element),this._parentScale=Ze(e),i="mousedown"===t.type,S(document,i?"mousemove":"touchmove",this._onMove,this),S(document,i?"mouseup":"touchend touchcancel",this._onUp,this)))))},_onMove:function(t){var e;this._enabled&&(t.touches&&1e&&(i.push(t[n]),o=n);oe.max.x&&(i|=2),t.ye.max.y&&(i|=8),i}function ni(t,e,i,n){var o=e.x,e=e.y,s=i.x-o,r=i.y-e,a=s*s+r*r;return 0this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()t.y!=n.y>t.y&&t.x<(n.x-i.x)*(t.y-i.y)/(n.y-i.y)+i.x&&(l=!l);return l||vi.prototype._containsPoint.call(this,t,!0)}});var xi=ui.extend({initialize:function(t,e){c(this,e),this._layers={},t&&this.addData(t)},addData:function(t){var e,i,n,o=d(t)?t:t.features;if(o){for(e=0,i=o.length;es.x&&(r=i.x+a-s.x+o.x),i.x-r-n.x<(a=0)&&(r=i.x-n.x),i.y+e+o.y>s.y&&(a=i.y+e-s.y+o.y),i.y-a-n.y<0&&(a=i.y-n.y),(r||a)&&(this.options.keepInView&&(this._autopanning=!0),t.fire("autopanstart").panBy([r,a]))))},_getAnchor:function(){return m(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}})),Bi=(A.mergeOptions({closePopupOnClick:!0}),A.include({openPopup:function(t,e,i){return this._initOverlay(Ai,t,e,i).openOn(this),this},closePopup:function(t){return(t=arguments.length?t:this._popup)&&t.close(),this}}),o.include({bindPopup:function(t,e){return this._popup=this._initOverlay(Ai,this._popup,t,e),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t){return this._popup&&(this instanceof ui||(this._popup._source=this),this._popup._prepareOpen(t||this._latlng)&&this._popup.openOn(this._map)),this},closePopup:function(){return this._popup&&this._popup.close(),this},togglePopup:function(){return this._popup&&this._popup.toggle(this),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var e;this._popup&&this._map&&(Re(t),e=t.layer||t.target,this._popup._source!==e||e instanceof mi?(this._popup._source=e,this.openPopup(t.latlng)):this._map.hasLayer(this._popup)?this.closePopup():this.openPopup(t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}}),Oi.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,opacity:.9},onAdd:function(t){Oi.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&(this.addEventParent(this._source),this._source.fire("tooltipopen",{tooltip:this},!0))},onRemove:function(t){Oi.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&(this.removeEventParent(this._source),this._source.fire("tooltipclose",{tooltip:this},!0))},getEvents:function(){var t=Oi.prototype.getEvents.call(this);return this.options.permanent||(t.preclick=this.close),t},_initLayout:function(){var t="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=P("div",t),this._container.setAttribute("role","tooltip"),this._container.setAttribute("id","leaflet-tooltip-"+h(this))},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var e,i=this._map,n=this._container,o=i.latLngToContainerPoint(i.getCenter()),i=i.layerPointToContainerPoint(t),s=this.options.direction,r=n.offsetWidth,a=n.offsetHeight,h=m(this.options.offset),l=this._getAnchor(),i="top"===s?(e=r/2,a):"bottom"===s?(e=r/2,0):(e="center"===s?r/2:"right"===s?0:"left"===s?r:i.xthis.options.maxZoom||nthis.options.maxZoom||void 0!==this.options.minZoom&&oi.max.x)||!e.wrapLat&&(t.yi.max.y))return!1}return!this.options.bounds||(e=this._tileCoordsToBounds(t),g(this.options.bounds).overlaps(e))},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var e=this._map,i=this.getTileSize(),n=t.scaleBy(i),i=n.add(i);return[e.unproject(n,t.z),e.unproject(i,t.z)]},_tileCoordsToBounds:function(t){t=this._tileCoordsToNwSe(t),t=new s(t[0],t[1]);return t=this.options.noWrap?t:this._map.wrapLatLngBounds(t)},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var t=t.split(":"),e=new p(+t[0],+t[1]);return e.z=+t[2],e},_removeTile:function(t){var e=this._tiles[t];e&&(T(e.el),delete this._tiles[t],this.fire("tileunload",{tile:e.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){M(t,"leaflet-tile");var e=this.getTileSize();t.style.width=e.x+"px",t.style.height=e.y+"px",t.onselectstart=u,t.onmousemove=u,b.ielt9&&this.options.opacity<1&&C(t,this.options.opacity)},_addTile:function(t,e){var i=this._getTilePos(t),n=this._tileCoordsToKey(t),o=this.createTile(this._wrapCoords(t),a(this._tileReady,this,t));this._initTile(o),this.createTile.length<2&&x(a(this._tileReady,this,t,null,o)),Z(o,i),this._tiles[n]={el:o,coords:t,current:!0},e.appendChild(o),this.fire("tileloadstart",{tile:o,coords:t})},_tileReady:function(t,e,i){e&&this.fire("tileerror",{error:e,tile:i,coords:t});var n=this._tileCoordsToKey(t);(i=this._tiles[n])&&(i.loaded=+new Date,this._map._fadeAnimated?(C(i.el,0),r(this._fadeFrame),this._fadeFrame=x(this._updateOpacity,this)):(i.active=!0,this._pruneTiles()),e||(M(i.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:i.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),b.ielt9||!this._map._fadeAnimated?x(this._pruneTiles,this):setTimeout(a(this._pruneTiles,this),250)))},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var e=new p(this._wrapX?H(t.x,this._wrapX):t.x,this._wrapY?H(t.y,this._wrapY):t.y);return e.z=t.z,e},_pxBoundsToTileRange:function(t){var e=this.getTileSize();return new f(t.min.unscaleBy(e).floor(),t.max.unscaleBy(e).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}});var Ni=Ri.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1,referrerPolicy:!1},initialize:function(t,e){this._url=t,(e=c(this,e)).detectRetina&&b.retina&&0')}}catch(t){}return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}(),zt={_initContainer:function(){this._container=P("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(Hi.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var e=t._container=Ui("shape");M(e,"leaflet-vml-shape "+(this.options.className||"")),e.coordsize="1 1",t._path=Ui("path"),e.appendChild(t._path),this._updateStyle(t),this._layers[h(t)]=t},_addPath:function(t){var e=t._container;this._container.appendChild(e),t.options.interactive&&t.addInteractiveTarget(e)},_removePath:function(t){var e=t._container;T(e),t.removeInteractiveTarget(e),delete this._layers[h(t)]},_updateStyle:function(t){var e=t._stroke,i=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(e=e||(t._stroke=Ui("stroke")),o.appendChild(e),e.weight=n.weight+"px",e.color=n.color,e.opacity=n.opacity,n.dashArray?e.dashStyle=d(n.dashArray)?n.dashArray.join(" "):n.dashArray.replace(/( *, *)/g," "):e.dashStyle="",e.endcap=n.lineCap.replace("butt","flat"),e.joinstyle=n.lineJoin):e&&(o.removeChild(e),t._stroke=null),n.fill?(i=i||(t._fill=Ui("fill")),o.appendChild(i),i.color=n.fillColor||n.color,i.opacity=n.fillOpacity):i&&(o.removeChild(i),t._fill=null)},_updateCircle:function(t){var e=t._point.round(),i=Math.round(t._radius),n=Math.round(t._radiusY||i);this._setPath(t,t._empty()?"M0 0":"AL "+e.x+","+e.y+" "+i+","+n+" 0,23592600")},_setPath:function(t,e){t._path.v=e},_bringToFront:function(t){fe(t._container)},_bringToBack:function(t){ge(t._container)}},Vi=b.vml?Ui:ct,qi=Hi.extend({_initContainer:function(){this._container=Vi("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=Vi("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){T(this._container),k(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_update:function(){var t,e,i;this._map._animatingZoom&&this._bounds||(Hi.prototype._update.call(this),e=(t=this._bounds).getSize(),i=this._container,this._svgSize&&this._svgSize.equals(e)||(this._svgSize=e,i.setAttribute("width",e.x),i.setAttribute("height",e.y)),Z(i,t.min),i.setAttribute("viewBox",[t.min.x,t.min.y,e.x,e.y].join(" ")),this.fire("update"))},_initPath:function(t){var e=t._path=Vi("path");t.options.className&&M(e,t.options.className),t.options.interactive&&M(e,"leaflet-interactive"),this._updateStyle(t),this._layers[h(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){T(t._path),t.removeInteractiveTarget(t._path),delete this._layers[h(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var e=t._path,t=t.options;e&&(t.stroke?(e.setAttribute("stroke",t.color),e.setAttribute("stroke-opacity",t.opacity),e.setAttribute("stroke-width",t.weight),e.setAttribute("stroke-linecap",t.lineCap),e.setAttribute("stroke-linejoin",t.lineJoin),t.dashArray?e.setAttribute("stroke-dasharray",t.dashArray):e.removeAttribute("stroke-dasharray"),t.dashOffset?e.setAttribute("stroke-dashoffset",t.dashOffset):e.removeAttribute("stroke-dashoffset")):e.setAttribute("stroke","none"),t.fill?(e.setAttribute("fill",t.fillColor||t.color),e.setAttribute("fill-opacity",t.fillOpacity),e.setAttribute("fill-rule",t.fillRule||"evenodd")):e.setAttribute("fill","none"))},_updatePoly:function(t,e){this._setPath(t,dt(t._parts,e))},_updateCircle:function(t){var e=t._point,i=Math.max(Math.round(t._radius),1),n="a"+i+","+(Math.max(Math.round(t._radiusY),1)||i)+" 0 1,0 ",e=t._empty()?"M0 0":"M"+(e.x-i)+","+e.y+n+2*i+",0 "+n+2*-i+",0 ";this._setPath(t,e)},_setPath:function(t,e){t._path.setAttribute("d",e)},_bringToFront:function(t){fe(t._path)},_bringToBack:function(t){ge(t._path)}});function Gi(t){return b.svg||b.vml?new qi(t):null}b.vml&&qi.include(zt),A.include({getRenderer:function(t){t=(t=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer)||(this._renderer=this._createRenderer());return this.hasLayer(t)||this.addLayer(t),t},_getPaneRenderer:function(t){var e;return"overlayPane"!==t&&void 0!==t&&(void 0===(e=this._paneRenderers[t])&&(e=this._createRenderer({pane:t}),this._paneRenderers[t]=e),e)},_createRenderer:function(t){return this.options.preferCanvas&&Wi(t)||Gi(t)}});var Ki=yi.extend({initialize:function(t,e){yi.prototype.initialize.call(this,this._boundsToLatLngs(t),e)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return[(t=g(t)).getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});qi.create=Vi,qi.pointsToPath=dt,xi.geometryToLayer=wi,xi.coordsToLatLng=Pi,xi.coordsToLatLngs=Li,xi.latLngToCoords=Ti,xi.latLngsToCoords=Mi,xi.getFeature=zi,xi.asFeature=Ci,A.mergeOptions({boxZoom:!0});var _t=n.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){S(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){k(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){T(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),re(),Le(),this._startPoint=this._map.mouseEventToContainerPoint(t),S(document,{contextmenu:Re,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=P("div","leaflet-zoom-box",this._container),M(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var t=new f(this._point,this._startPoint),e=t.getSize();Z(this._box,t.min),this._box.style.width=e.x+"px",this._box.style.height=e.y+"px"},_finish:function(){this._moved&&(T(this._box),z(this._container,"leaflet-crosshair")),ae(),Te(),k(document,{contextmenu:Re,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){1!==t.which&&1!==t.button||(this._finish(),this._moved&&(this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(a(this._resetState,this),0),t=new s(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point)),this._map.fitBounds(t).fire("boxzoomend",{boxZoomBounds:t})))},_onKeyDown:function(t){27===t.keyCode&&(this._finish(),this._clearDeferredResetState(),this._resetState())}}),Ct=(A.addInitHook("addHandler","boxZoom",_t),A.mergeOptions({doubleClickZoom:!0}),n.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var e=this._map,i=e.getZoom(),n=e.options.zoomDelta,i=t.originalEvent.shiftKey?i-n:i+n;"center"===e.options.doubleClickZoom?e.setZoom(i):e.setZoomAround(t.containerPoint,i)}})),Zt=(A.addInitHook("addHandler","doubleClickZoom",Ct),A.mergeOptions({dragging:!0,inertia:!0,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0}),n.extend({addHooks:function(){var t;this._draggable||(t=this._map,this._draggable=new Je(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))),M(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){z(this._map._container,"leaflet-grab"),z(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t,e=this._map;e._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity?(t=g(this._map.options.maxBounds),this._offsetLimit=_(this._map.latLngToContainerPoint(t.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(t.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))):this._offsetLimit=null,e.fire("movestart").fire("dragstart"),e.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){var e,i;this._map.options.inertia&&(e=this._lastTime=+new Date,i=this._lastPos=this._draggable._absPos||this._draggable._newPos,this._positions.push(i),this._times.push(e),this._prunePositions(e)),this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;1e.max.x&&(t.x=this._viscousLimit(t.x,e.max.x)),t.y>e.max.y&&(t.y=this._viscousLimit(t.y,e.max.y)),this._draggable._newPos=this._draggable._startPos.add(t))},_onPreDragWrap:function(){var t=this._worldWidth,e=Math.round(t/2),i=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-e+i)%t+e-i,n=(n+e+i)%t-e-i,t=Math.abs(o+i)e.getMaxZoom()&&1=this.min.x&&i.x<=this.max.x&&e.y>=this.min.y&&i.y<=this.max.y},intersects:function(t){t=_(t);var e=this.min,i=this.max,n=t.min,t=t.max,o=t.x>=e.x&&n.x<=i.x,t=t.y>=e.y&&n.y<=i.y;return o&&t},overlaps:function(t){t=_(t);var e=this.min,i=this.max,n=t.min,t=t.max,o=t.x>e.x&&n.xe.y&&n.y=n.lat&&i.lat<=o.lat&&e.lng>=n.lng&&i.lng<=o.lng},intersects:function(t){t=g(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),t=t.getNorthEast(),o=t.lat>=e.lat&&n.lat<=i.lat,t=t.lng>=e.lng&&n.lng<=i.lng;return o&&t},overlaps:function(t){t=g(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),t=t.getNorthEast(),o=t.lat>e.lat&&n.late.lng&&n.lng","http://www.w3.org/2000/svg"===(Wt.firstChild&&Wt.firstChild.namespaceURI));function y(t){return 0<=navigator.userAgent.toLowerCase().indexOf(t)}var b={ie:pt,ielt9:mt,edge:n,webkit:ft,android:gt,android23:vt,androidStock:yt,opera:xt,chrome:wt,gecko:bt,safari:Pt,phantom:Lt,opera12:o,win:Tt,ie3d:Mt,webkit3d:zt,gecko3d:_t,any3d:Ct,mobile:Zt,mobileWebkit:St,mobileWebkit3d:Et,msPointer:kt,pointer:Ot,touch:Bt,touchNative:At,mobileOpera:It,mobileGecko:Rt,retina:Nt,passiveEvents:Dt,canvas:jt,svg:Ht,vml:!Ht&&function(){try{var t=document.createElement("div"),e=(t.innerHTML='',t.firstChild);return e.style.behavior="url(#default#VML)",e&&"object"==typeof e.adj}catch(t){return!1}}(),inlineSvg:Wt,mac:0===navigator.platform.indexOf("Mac"),linux:0===navigator.platform.indexOf("Linux")},Ft=b.msPointer?"MSPointerDown":"pointerdown",Ut=b.msPointer?"MSPointerMove":"pointermove",Vt=b.msPointer?"MSPointerUp":"pointerup",qt=b.msPointer?"MSPointerCancel":"pointercancel",Gt={touchstart:Ft,touchmove:Ut,touchend:Vt,touchcancel:qt},Kt={touchstart:function(t,e){e.MSPOINTER_TYPE_TOUCH&&e.pointerType===e.MSPOINTER_TYPE_TOUCH&&O(e);ee(t,e)},touchmove:ee,touchend:ee,touchcancel:ee},Yt={},Xt=!1;function Jt(t,e,i){return"touchstart"!==e||Xt||(document.addEventListener(Ft,$t,!0),document.addEventListener(Ut,Qt,!0),document.addEventListener(Vt,te,!0),document.addEventListener(qt,te,!0),Xt=!0),Kt[e]?(i=Kt[e].bind(this,i),t.addEventListener(Gt[e],i,!1),i):(console.warn("wrong event specified:",e),u)}function $t(t){Yt[t.pointerId]=t}function Qt(t){Yt[t.pointerId]&&(Yt[t.pointerId]=t)}function te(t){delete Yt[t.pointerId]}function ee(t,e){if(e.pointerType!==(e.MSPOINTER_TYPE_MOUSE||"mouse")){for(var i in e.touches=[],Yt)e.touches.push(Yt[i]);e.changedTouches=[e],t(e)}}var ie=200;function ne(t,i){t.addEventListener("dblclick",i);var n,o=0;function e(t){var e;1!==t.detail?n=t.detail:"mouse"===t.pointerType||t.sourceCapabilities&&!t.sourceCapabilities.firesTouchEvents||((e=Ne(t)).some(function(t){return t instanceof HTMLLabelElement&&t.attributes.for})&&!e.some(function(t){return t instanceof HTMLInputElement||t instanceof HTMLSelectElement})||((e=Date.now())-o<=ie?2===++n&&i(function(t){var e,i,n={};for(i in t)e=t[i],n[i]=e&&e.bind?e.bind(t):e;return(t=n).type="dblclick",n.detail=2,n.isTrusted=!1,n._simulated=!0,n}(t)):n=1,o=e))}return t.addEventListener("click",e),{dblclick:i,simDblclick:e}}var oe,se,re,ae,he,le,ue=we(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),ce=we(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),de="webkitTransition"===ce||"OTransition"===ce?ce+"End":"transitionend";function _e(t){return"string"==typeof t?document.getElementById(t):t}function pe(t,e){var i=t.style[e]||t.currentStyle&&t.currentStyle[e];return"auto"===(i=i&&"auto"!==i||!document.defaultView?i:(t=document.defaultView.getComputedStyle(t,null))?t[e]:null)?null:i}function P(t,e,i){t=document.createElement(t);return t.className=e||"",i&&i.appendChild(t),t}function T(t){var e=t.parentNode;e&&e.removeChild(t)}function me(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function fe(t){var e=t.parentNode;e&&e.lastChild!==t&&e.appendChild(t)}function ge(t){var e=t.parentNode;e&&e.firstChild!==t&&e.insertBefore(t,e.firstChild)}function ve(t,e){return void 0!==t.classList?t.classList.contains(e):0<(t=xe(t)).length&&new RegExp("(^|\\s)"+e+"(\\s|$)").test(t)}function M(t,e){var i;if(void 0!==t.classList)for(var n=F(e),o=0,s=n.length;othis.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,e){this._enforcingBounds=!0;var i=this.getCenter(),t=this._limitCenter(i,this._zoom,g(t));return i.equals(t)||this.panTo(t,e),this._enforcingBounds=!1,this},panInside:function(t,e){var i=m((e=e||{}).paddingTopLeft||e.padding||[0,0]),n=m(e.paddingBottomRight||e.padding||[0,0]),o=this.project(this.getCenter()),t=this.project(t),s=this.getPixelBounds(),i=_([s.min.add(i),s.max.subtract(n)]),s=i.getSize();return i.contains(t)||(this._enforcingBounds=!0,n=t.subtract(i.getCenter()),i=i.extend(t).getSize().subtract(s),o.x+=n.x<0?-i.x:i.x,o.y+=n.y<0?-i.y:i.y,this.panTo(this.unproject(o),e),this._enforcingBounds=!1),this},invalidateSize:function(t){if(!this._loaded)return this;t=l({animate:!1,pan:!0},!0===t?{animate:!0}:t);var e=this.getSize(),i=(this._sizeChanged=!0,this._lastCenter=null,this.getSize()),n=e.divideBy(2).round(),o=i.divideBy(2).round(),n=n.subtract(o);return n.x||n.y?(t.animate&&t.pan?this.panBy(n):(t.pan&&this._rawPanBy(n),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(a(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:e,newSize:i})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){var e,i;return t=this._locateOptions=l({timeout:1e4,watch:!1},t),"geolocation"in navigator?(e=a(this._handleGeolocationResponse,this),i=a(this._handleGeolocationError,this),t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,i,t):navigator.geolocation.getCurrentPosition(e,i,t)):this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var e;this._container._leaflet_id&&(e=t.code,t=t.message||(1===e?"permission denied":2===e?"position unavailable":"timeout"),this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:e,message:"Geolocation error: "+t+"."}))},_handleGeolocationResponse:function(t){if(this._container._leaflet_id){var e,i,n=new v(t.coords.latitude,t.coords.longitude),o=n.toBounds(2*t.coords.accuracy),s=this._locateOptions,r=(s.setView&&(e=this.getBoundsZoom(o),this.setView(n,s.maxZoom?Math.min(e,s.maxZoom):e)),{latlng:n,bounds:o,timestamp:t.timestamp});for(i in t.coords)"number"==typeof t.coords[i]&&(r[i]=t.coords[i]);this.fire("locationfound",r)}},addHandler:function(t,e){return e&&(e=this[t]=new e(this),this._handlers.push(e),this.options[t]&&e.enable()),this},remove:function(){if(this._initEvents(!0),this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}for(var t in void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),T(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(r(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload"),this._layers)this._layers[t].remove();for(t in this._panes)T(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,e){e=P("div","leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),e||this._mapPane);return t&&(this._panes[t]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter.clone():this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new s(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,e,i){t=g(t),i=m(i||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),t=t.getSouthEast(),i=this.getSize().subtract(i),t=_(this.project(t,n),this.project(r,n)).getSize(),r=b.any3d?this.options.zoomSnap:1,a=i.x/t.x,i=i.y/t.y,t=e?Math.max(a,i):Math.min(a,i),n=this.getScaleZoom(t,n);return r&&(n=Math.round(n/(r/100))*(r/100),n=e?Math.ceil(n/r)*r:Math.floor(n/r)*r),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new p(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,e){t=this._getTopLeftPoint(t,e);return new f(t,t.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return"string"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,e){var i=this.options.crs;return e=void 0===e?this._zoom:e,i.scale(t)/i.scale(e)},getScaleZoom:function(t,e){var i=this.options.crs,t=(e=void 0===e?this._zoom:e,i.zoom(t*i.scale(e)));return isNaN(t)?1/0:t},project:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.latLngToPoint(w(t),e)},unproject:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.pointToLatLng(m(t),e)},layerPointToLatLng:function(t){t=m(t).add(this.getPixelOrigin());return this.unproject(t)},latLngToLayerPoint:function(t){return this.project(w(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(w(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(g(t))},distance:function(t,e){return this.options.crs.distance(w(t),w(e))},containerPointToLayerPoint:function(t){return m(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return m(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){t=this.containerPointToLayerPoint(m(t));return this.layerPointToLatLng(t)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(w(t)))},mouseEventToContainerPoint:function(t){return De(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){t=this._container=_e(t);if(!t)throw new Error("Map container not found.");if(t._leaflet_id)throw new Error("Map container is already initialized.");S(t,"scroll",this._onScroll,this),this._containerId=h(t)},_initLayout:function(){var t=this._container,e=(this._fadeAnimated=this.options.fadeAnimation&&b.any3d,M(t,"leaflet-container"+(b.touch?" leaflet-touch":"")+(b.retina?" leaflet-retina":"")+(b.ielt9?" leaflet-oldie":"")+(b.safari?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":"")),pe(t,"position"));"absolute"!==e&&"relative"!==e&&"fixed"!==e&&"sticky"!==e&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),Z(this._mapPane,new p(0,0)),this.createPane("tilePane"),this.createPane("overlayPane"),this.createPane("shadowPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(M(t.markerPane,"leaflet-zoom-hide"),M(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,e,i){Z(this._mapPane,new p(0,0));var n=!this._loaded,o=(this._loaded=!0,e=this._limitZoom(e),this.fire("viewprereset"),this._zoom!==e);this._moveStart(o,i)._move(t,e)._moveEnd(o),this.fire("viewreset"),n&&this.fire("load")},_moveStart:function(t,e){return t&&this.fire("zoomstart"),e||this.fire("movestart"),this},_move:function(t,e,i,n){void 0===e&&(e=this._zoom);var o=this._zoom!==e;return this._zoom=e,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),n?i&&i.pinch&&this.fire("zoom",i):((o||i&&i.pinch)&&this.fire("zoom",i),this.fire("move",i)),this},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return r(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){Z(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={};var e=t?k:S;e((this._targets[h(this._container)]=this)._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",this._handleDOMEvent,this),this.options.trackResize&&e(window,"resize",this._onResize,this),b.any3d&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){r(this._resizeRequest),this._resizeRequest=x(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,e){for(var i,n=[],o="mouseout"===e||"mouseover"===e,s=t.target||t.srcElement,r=!1;s;){if((i=this._targets[h(s)])&&("click"===e||"preclick"===e)&&this._draggableMoved(i)){r=!0;break}if(i&&i.listens(e,!0)){if(o&&!We(s,t))break;if(n.push(i),o)break}if(s===this._container)break;s=s.parentNode}return n=n.length||r||o||!this.listens(e,!0)?n:[this]},_isClickDisabled:function(t){for(;t&&t!==this._container;){if(t._leaflet_disable_click)return!0;t=t.parentNode}},_handleDOMEvent:function(t){var e,i=t.target||t.srcElement;!this._loaded||i._leaflet_disable_events||"click"===t.type&&this._isClickDisabled(i)||("mousedown"===(e=t.type)&&Me(i),this._fireDOMEvent(t,e))},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,e,i){"click"===t.type&&((a=l({},t)).type="preclick",this._fireDOMEvent(a,a.type,i));var n=this._findEventTargets(t,e);if(i){for(var o=[],s=0;sthis.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(e),n=this._getCenterOffset(t)._divideBy(1-1/n);if(!0!==i.animate&&!this.getSize().contains(n))return!1;x(function(){this._moveStart(!0,i.noMoveStart||!1)._animateZoom(t,e,!0)},this)}return!0},_animateZoom:function(t,e,i,n){this._mapPane&&(i&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=e,M(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:e,noUpdate:n}),this._tempFireZoomEvent||(this._tempFireZoomEvent=this._zoom!==this._animateToZoom),this._move(this._animateToCenter,this._animateToZoom,void 0,!0),setTimeout(a(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&z(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom,void 0,!0),this._tempFireZoomEvent&&this.fire("zoom"),delete this._tempFireZoomEvent,this.fire("move"),this._moveEnd(!0))}});function Ue(t){return new B(t)}var B=et.extend({options:{position:"topright"},initialize:function(t){c(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var e=this._map;return e&&e.removeControl(this),this.options.position=t,e&&e.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var e=this._container=this.onAdd(t),i=this.getPosition(),t=t._controlCorners[i];return M(e,"leaflet-control"),-1!==i.indexOf("bottom")?t.insertBefore(e,t.firstChild):t.appendChild(e),this._map.on("unload",this.remove,this),this},remove:function(){return this._map&&(T(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null),this},_refocusOnMap:function(t){this._map&&t&&0",e=document.createElement("div");return e.innerHTML=t,e.firstChild},_addItem:function(t){var e,i=document.createElement("label"),n=this._map.hasLayer(t.layer),n=(t.overlay?((e=document.createElement("input")).type="checkbox",e.className="leaflet-control-layers-selector",e.defaultChecked=n):e=this._createRadioElement("leaflet-base-layers_"+h(this),n),this._layerControlInputs.push(e),e.layerId=h(t.layer),S(e,"click",this._onInputClick,this),document.createElement("span")),o=(n.innerHTML=" "+t.name,document.createElement("span"));return i.appendChild(o),o.appendChild(e),o.appendChild(n),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(i),this._checkDisabledLayers(),i},_onInputClick:function(){if(!this._preventClick){var t,e,i=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=i.length-1;0<=s;s--)t=i[s],e=this._getLayer(t.layerId).layer,t.checked?n.push(e):t.checked||o.push(e);for(s=0;se.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expandSafely:function(){var t=this._section,e=(this._preventClick=!0,S(t,"click",O),this.expand(),this);setTimeout(function(){k(t,"click",O),e._preventClick=!1})}})),qe=B.extend({options:{position:"topleft",zoomInText:'',zoomInTitle:"Zoom in",zoomOutText:'',zoomOutTitle:"Zoom out"},onAdd:function(t){var e="leaflet-control-zoom",i=P("div",e+" leaflet-bar"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,e+"-in",i,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,e+"-out",i,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),i},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoomthis._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,e,i,n,o){i=P("a",i,n);return i.innerHTML=t,i.href="#",i.title=e,i.setAttribute("role","button"),i.setAttribute("aria-label",e),Ie(i),S(i,"click",Re),S(i,"click",o,this),S(i,"click",this._refocusOnMap,this),i},_updateDisabled:function(){var t=this._map,e="leaflet-disabled";z(this._zoomInButton,e),z(this._zoomOutButton,e),this._zoomInButton.setAttribute("aria-disabled","false"),this._zoomOutButton.setAttribute("aria-disabled","false"),!this._disabled&&t._zoom!==t.getMinZoom()||(M(this._zoomOutButton,e),this._zoomOutButton.setAttribute("aria-disabled","true")),!this._disabled&&t._zoom!==t.getMaxZoom()||(M(this._zoomInButton,e),this._zoomInButton.setAttribute("aria-disabled","true"))}}),Ge=(A.mergeOptions({zoomControl:!0}),A.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new qe,this.addControl(this.zoomControl))}),B.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var e="leaflet-control-scale",i=P("div",e),n=this.options;return this._addScales(n,e+"-line",i),t.on(n.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,e,i){t.metric&&(this._mScale=P("div",e,i)),t.imperial&&(this._iScale=P("div",e,i))},_update:function(){var t=this._map,e=t.getSize().y/2,t=t.distance(t.containerPointToLatLng([0,e]),t.containerPointToLatLng([this.options.maxWidth,e]));this._updateScales(t)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var e=this._getRoundNum(t);this._updateScale(this._mScale,e<1e3?e+" m":e/1e3+" km",e/t)},_updateImperial:function(t){var e,i,t=3.2808399*t;5280'+(b.inlineSvg?' ':"")+"Leaflet"},initialize:function(t){c(this,t),this._attributions={}},onAdd:function(t){for(var e in(t.attributionControl=this)._container=P("div","leaflet-control-attribution"),Ie(this._container),t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return this._update(),t.on("layeradd",this._addAttribution,this),this._container},onRemove:function(t){t.off("layeradd",this._addAttribution,this)},_addAttribution:function(t){t.layer.getAttribution&&(this.addAttribution(t.layer.getAttribution()),t.layer.once("remove",function(){this.removeAttribution(t.layer.getAttribution())},this))},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t&&(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update()),this},removeAttribution:function(t){return t&&this._attributions[t]&&(this._attributions[t]--,this._update()),this},_update:function(){if(this._map){var t,e=[];for(t in this._attributions)this._attributions[t]&&e.push(t);var i=[];this.options.prefix&&i.push(this.options.prefix),e.length&&i.push(e.join(", ")),this._container.innerHTML=i.join(' ')}}}),n=(A.mergeOptions({attributionControl:!0}),A.addInitHook(function(){this.options.attributionControl&&(new Ke).addTo(this)}),B.Layers=Ve,B.Zoom=qe,B.Scale=Ge,B.Attribution=Ke,Ue.layers=function(t,e,i){return new Ve(t,e,i)},Ue.zoom=function(t){return new qe(t)},Ue.scale=function(t){return new Ge(t)},Ue.attribution=function(t){return new Ke(t)},et.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled||(this._enabled=!0,this.addHooks()),this},disable:function(){return this._enabled&&(this._enabled=!1,this.removeHooks()),this},enabled:function(){return!!this._enabled}})),ft=(n.addTo=function(t,e){return t.addHandler(e,this),this},{Events:e}),Ye=b.touch?"touchstart mousedown":"mousedown",Xe=it.extend({options:{clickTolerance:3},initialize:function(t,e,i,n){c(this,n),this._element=t,this._dragStartTarget=e||t,this._preventOutline=i},enable:function(){this._enabled||(S(this._dragStartTarget,Ye,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Xe._dragging===this&&this.finishDrag(!0),k(this._dragStartTarget,Ye,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){var e,i;this._enabled&&(this._moved=!1,ve(this._element,"leaflet-zoom-anim")||(t.touches&&1!==t.touches.length?Xe._dragging===this&&this.finishDrag():Xe._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||((Xe._dragging=this)._preventOutline&&Me(this._element),Le(),re(),this._moving||(this.fire("down"),i=t.touches?t.touches[0]:t,e=Ce(this._element),this._startPoint=new p(i.clientX,i.clientY),this._startPos=Pe(this._element),this._parentScale=Ze(e),i="mousedown"===t.type,S(document,i?"mousemove":"touchmove",this._onMove,this),S(document,i?"mouseup":"touchend touchcancel",this._onUp,this)))))},_onMove:function(t){var e;this._enabled&&(t.touches&&1e&&(i.push(t[n]),o=n);oe.max.x&&(i|=2),t.ye.max.y&&(i|=8),i}function ri(t,e,i,n){var o=e.x,e=e.y,s=i.x-o,r=i.y-e,a=s*s+r*r;return 0this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()t.y!=n.y>t.y&&t.x<(n.x-i.x)*(t.y-i.y)/(n.y-i.y)+i.x&&(l=!l);return l||yi.prototype._containsPoint.call(this,t,!0)}});var wi=ci.extend({initialize:function(t,e){c(this,e),this._layers={},t&&this.addData(t)},addData:function(t){var e,i,n,o=d(t)?t:t.features;if(o){for(e=0,i=o.length;es.x&&(r=i.x+a-s.x+o.x),i.x-r-n.x<(a=0)&&(r=i.x-n.x),i.y+e+o.y>s.y&&(a=i.y+e-s.y+o.y),i.y-a-n.y<0&&(a=i.y-n.y),(r||a)&&(this.options.keepInView&&(this._autopanning=!0),t.fire("autopanstart").panBy([r,a]))))},_getAnchor:function(){return m(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}})),Ii=(A.mergeOptions({closePopupOnClick:!0}),A.include({openPopup:function(t,e,i){return this._initOverlay(Bi,t,e,i).openOn(this),this},closePopup:function(t){return(t=arguments.length?t:this._popup)&&t.close(),this}}),o.include({bindPopup:function(t,e){return this._popup=this._initOverlay(Bi,this._popup,t,e),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t){return this._popup&&(this instanceof ci||(this._popup._source=this),this._popup._prepareOpen(t||this._latlng)&&this._popup.openOn(this._map)),this},closePopup:function(){return this._popup&&this._popup.close(),this},togglePopup:function(){return this._popup&&this._popup.toggle(this),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var e;this._popup&&this._map&&(Re(t),e=t.layer||t.target,this._popup._source!==e||e instanceof fi?(this._popup._source=e,this.openPopup(t.latlng)):this._map.hasLayer(this._popup)?this.closePopup():this.openPopup(t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}}),Ai.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,opacity:.9},onAdd:function(t){Ai.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&(this.addEventParent(this._source),this._source.fire("tooltipopen",{tooltip:this},!0))},onRemove:function(t){Ai.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&(this.removeEventParent(this._source),this._source.fire("tooltipclose",{tooltip:this},!0))},getEvents:function(){var t=Ai.prototype.getEvents.call(this);return this.options.permanent||(t.preclick=this.close),t},_initLayout:function(){var t="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=P("div",t),this._container.setAttribute("role","tooltip"),this._container.setAttribute("id","leaflet-tooltip-"+h(this))},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var e,i=this._map,n=this._container,o=i.latLngToContainerPoint(i.getCenter()),i=i.layerPointToContainerPoint(t),s=this.options.direction,r=n.offsetWidth,a=n.offsetHeight,h=m(this.options.offset),l=this._getAnchor(),i="top"===s?(e=r/2,a):"bottom"===s?(e=r/2,0):(e="center"===s?r/2:"right"===s?0:"left"===s?r:i.xthis.options.maxZoom||nthis.options.maxZoom||void 0!==this.options.minZoom&&oi.max.x)||!e.wrapLat&&(t.yi.max.y))return!1}return!this.options.bounds||(e=this._tileCoordsToBounds(t),g(this.options.bounds).overlaps(e))},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var e=this._map,i=this.getTileSize(),n=t.scaleBy(i),i=n.add(i);return[e.unproject(n,t.z),e.unproject(i,t.z)]},_tileCoordsToBounds:function(t){t=this._tileCoordsToNwSe(t),t=new s(t[0],t[1]);return t=this.options.noWrap?t:this._map.wrapLatLngBounds(t)},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var t=t.split(":"),e=new p(+t[0],+t[1]);return e.z=+t[2],e},_removeTile:function(t){var e=this._tiles[t];e&&(T(e.el),delete this._tiles[t],this.fire("tileunload",{tile:e.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){M(t,"leaflet-tile");var e=this.getTileSize();t.style.width=e.x+"px",t.style.height=e.y+"px",t.onselectstart=u,t.onmousemove=u,b.ielt9&&this.options.opacity<1&&C(t,this.options.opacity)},_addTile:function(t,e){var i=this._getTilePos(t),n=this._tileCoordsToKey(t),o=this.createTile(this._wrapCoords(t),a(this._tileReady,this,t));this._initTile(o),this.createTile.length<2&&x(a(this._tileReady,this,t,null,o)),Z(o,i),this._tiles[n]={el:o,coords:t,current:!0},e.appendChild(o),this.fire("tileloadstart",{tile:o,coords:t})},_tileReady:function(t,e,i){e&&this.fire("tileerror",{error:e,tile:i,coords:t});var n=this._tileCoordsToKey(t);(i=this._tiles[n])&&(i.loaded=+new Date,this._map._fadeAnimated?(C(i.el,0),r(this._fadeFrame),this._fadeFrame=x(this._updateOpacity,this)):(i.active=!0,this._pruneTiles()),e||(M(i.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:i.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),b.ielt9||!this._map._fadeAnimated?x(this._pruneTiles,this):setTimeout(a(this._pruneTiles,this),250)))},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var e=new p(this._wrapX?H(t.x,this._wrapX):t.x,this._wrapY?H(t.y,this._wrapY):t.y);return e.z=t.z,e},_pxBoundsToTileRange:function(t){var e=this.getTileSize();return new f(t.min.unscaleBy(e).floor(),t.max.unscaleBy(e).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}});var Di=Ni.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1,referrerPolicy:!1},initialize:function(t,e){this._url=t,(e=c(this,e)).detectRetina&&b.retina&&0')}}catch(t){}return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}(),zt={_initContainer:function(){this._container=P("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(Wi.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var e=t._container=Vi("shape");M(e,"leaflet-vml-shape "+(this.options.className||"")),e.coordsize="1 1",t._path=Vi("path"),e.appendChild(t._path),this._updateStyle(t),this._layers[h(t)]=t},_addPath:function(t){var e=t._container;this._container.appendChild(e),t.options.interactive&&t.addInteractiveTarget(e)},_removePath:function(t){var e=t._container;T(e),t.removeInteractiveTarget(e),delete this._layers[h(t)]},_updateStyle:function(t){var e=t._stroke,i=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(e=e||(t._stroke=Vi("stroke")),o.appendChild(e),e.weight=n.weight+"px",e.color=n.color,e.opacity=n.opacity,n.dashArray?e.dashStyle=d(n.dashArray)?n.dashArray.join(" "):n.dashArray.replace(/( *, *)/g," "):e.dashStyle="",e.endcap=n.lineCap.replace("butt","flat"),e.joinstyle=n.lineJoin):e&&(o.removeChild(e),t._stroke=null),n.fill?(i=i||(t._fill=Vi("fill")),o.appendChild(i),i.color=n.fillColor||n.color,i.opacity=n.fillOpacity):i&&(o.removeChild(i),t._fill=null)},_updateCircle:function(t){var e=t._point.round(),i=Math.round(t._radius),n=Math.round(t._radiusY||i);this._setPath(t,t._empty()?"M0 0":"AL "+e.x+","+e.y+" "+i+","+n+" 0,23592600")},_setPath:function(t,e){t._path.v=e},_bringToFront:function(t){fe(t._container)},_bringToBack:function(t){ge(t._container)}},qi=b.vml?Vi:ct,Gi=Wi.extend({_initContainer:function(){this._container=qi("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=qi("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){T(this._container),k(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_update:function(){var t,e,i;this._map._animatingZoom&&this._bounds||(Wi.prototype._update.call(this),e=(t=this._bounds).getSize(),i=this._container,this._svgSize&&this._svgSize.equals(e)||(this._svgSize=e,i.setAttribute("width",e.x),i.setAttribute("height",e.y)),Z(i,t.min),i.setAttribute("viewBox",[t.min.x,t.min.y,e.x,e.y].join(" ")),this.fire("update"))},_initPath:function(t){var e=t._path=qi("path");t.options.className&&M(e,t.options.className),t.options.interactive&&M(e,"leaflet-interactive"),this._updateStyle(t),this._layers[h(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){T(t._path),t.removeInteractiveTarget(t._path),delete this._layers[h(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var e=t._path,t=t.options;e&&(t.stroke?(e.setAttribute("stroke",t.color),e.setAttribute("stroke-opacity",t.opacity),e.setAttribute("stroke-width",t.weight),e.setAttribute("stroke-linecap",t.lineCap),e.setAttribute("stroke-linejoin",t.lineJoin),t.dashArray?e.setAttribute("stroke-dasharray",t.dashArray):e.removeAttribute("stroke-dasharray"),t.dashOffset?e.setAttribute("stroke-dashoffset",t.dashOffset):e.removeAttribute("stroke-dashoffset")):e.setAttribute("stroke","none"),t.fill?(e.setAttribute("fill",t.fillColor||t.color),e.setAttribute("fill-opacity",t.fillOpacity),e.setAttribute("fill-rule",t.fillRule||"evenodd")):e.setAttribute("fill","none"))},_updatePoly:function(t,e){this._setPath(t,dt(t._parts,e))},_updateCircle:function(t){var e=t._point,i=Math.max(Math.round(t._radius),1),n="a"+i+","+(Math.max(Math.round(t._radiusY),1)||i)+" 0 1,0 ",e=t._empty()?"M0 0":"M"+(e.x-i)+","+e.y+n+2*i+",0 "+n+2*-i+",0 ";this._setPath(t,e)},_setPath:function(t,e){t._path.setAttribute("d",e)},_bringToFront:function(t){fe(t._path)},_bringToBack:function(t){ge(t._path)}});function Ki(t){return b.svg||b.vml?new Gi(t):null}b.vml&&Gi.include(zt),A.include({getRenderer:function(t){t=(t=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer)||(this._renderer=this._createRenderer());return this.hasLayer(t)||this.addLayer(t),t},_getPaneRenderer:function(t){var e;return"overlayPane"!==t&&void 0!==t&&(void 0===(e=this._paneRenderers[t])&&(e=this._createRenderer({pane:t}),this._paneRenderers[t]=e),e)},_createRenderer:function(t){return this.options.preferCanvas&&Ui(t)||Ki(t)}});var Yi=xi.extend({initialize:function(t,e){xi.prototype.initialize.call(this,this._boundsToLatLngs(t),e)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return[(t=g(t)).getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});Gi.create=qi,Gi.pointsToPath=dt,wi.geometryToLayer=bi,wi.coordsToLatLng=Li,wi.coordsToLatLngs=Ti,wi.latLngToCoords=Mi,wi.latLngsToCoords=zi,wi.getFeature=Ci,wi.asFeature=Zi,A.mergeOptions({boxZoom:!0});var _t=n.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){S(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){k(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){T(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),re(),Le(),this._startPoint=this._map.mouseEventToContainerPoint(t),S(document,{contextmenu:Re,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=P("div","leaflet-zoom-box",this._container),M(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var t=new f(this._point,this._startPoint),e=t.getSize();Z(this._box,t.min),this._box.style.width=e.x+"px",this._box.style.height=e.y+"px"},_finish:function(){this._moved&&(T(this._box),z(this._container,"leaflet-crosshair")),ae(),Te(),k(document,{contextmenu:Re,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){1!==t.which&&1!==t.button||(this._finish(),this._moved&&(this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(a(this._resetState,this),0),t=new s(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point)),this._map.fitBounds(t).fire("boxzoomend",{boxZoomBounds:t})))},_onKeyDown:function(t){27===t.keyCode&&(this._finish(),this._clearDeferredResetState(),this._resetState())}}),Ct=(A.addInitHook("addHandler","boxZoom",_t),A.mergeOptions({doubleClickZoom:!0}),n.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var e=this._map,i=e.getZoom(),n=e.options.zoomDelta,i=t.originalEvent.shiftKey?i-n:i+n;"center"===e.options.doubleClickZoom?e.setZoom(i):e.setZoomAround(t.containerPoint,i)}})),Zt=(A.addInitHook("addHandler","doubleClickZoom",Ct),A.mergeOptions({dragging:!0,inertia:!0,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0}),n.extend({addHooks:function(){var t;this._draggable||(t=this._map,this._draggable=new Xe(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))),M(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){z(this._map._container,"leaflet-grab"),z(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t,e=this._map;e._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity?(t=g(this._map.options.maxBounds),this._offsetLimit=_(this._map.latLngToContainerPoint(t.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(t.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))):this._offsetLimit=null,e.fire("movestart").fire("dragstart"),e.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){var e,i;this._map.options.inertia&&(e=this._lastTime=+new Date,i=this._lastPos=this._draggable._absPos||this._draggable._newPos,this._positions.push(i),this._times.push(e),this._prunePositions(e)),this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;1e.max.x&&(t.x=this._viscousLimit(t.x,e.max.x)),t.y>e.max.y&&(t.y=this._viscousLimit(t.y,e.max.y)),this._draggable._newPos=this._draggable._startPos.add(t))},_onPreDragWrap:function(){var t=this._worldWidth,e=Math.round(t/2),i=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-e+i)%t+e-i,n=(n+e+i)%t-e-i,t=Math.abs(o+i)e.getMaxZoom()&&10&&arguments[0]!==undefined?arguments[0]:{};var _headers2=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var includeCredentials=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var xcsrfToken=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;_classCallCheck(this,WebAuthn);/** + * Parses the outgoing credentials from the browser to the server. + * + * @param credentials {Credential|PublicKeyCredential} + * @return {{response: {string}, rawId: string, id: string, type: string}} + */_classPrivateMethodInitSpec(this,_parseOutgoingCredentials);/** + * Parses the Public Key Options received from the Server for the browser. + * + * @param publicKey {Object} + * @returns {Object} + */_classPrivateMethodInitSpec(this,_parseIncomingServerOptions);/** + * Returns a fetch promise to resolve later. + * + * @param data {Object} + * @param route {string} + * @param headers {{string}} + * @returns {Promise} + */_classPrivateMethodInitSpec(this,_fetch);/** * Routes for WebAuthn assertion (login) and attestation (register). * * @type {{registerOptions: string, register: string, loginOptions: string, login: string, }} - */ /** + */_classPrivateFieldInitSpec(this,_routes,{writable:true,value:{registerOptions:"webauthn/register/options",register:"webauthn/register",loginOptions:"webauthn/login/options",login:"webauthn/login"}});/** * Headers to use in ALL requests done. * * @type {{Accept: string, "Content-Type": string, "X-Requested-With": string}} - */ /** + */_classPrivateFieldInitSpec(this,_headers,{writable:true,value:{Accept:"application/json","Content-Type":"application/json","X-Requested-With":"XMLHttpRequest"}});/** * If set to true, the credentials option will be set to 'include' on all fetch calls, * or else it will use the default 'same-origin'. Use this if the backend is not the * same origin as the client or the XSRF protection will break without the session. * * @type {boolean} - */ /** - * Create a new WebAuthn instance. - * - * @param routes {{registerOptions: string, register: string, loginOptions: string, login: string}} - * @param headers {{string}} - * @param includeCredentials {boolean} - * @param xcsrfToken {string|null} Either a csrf token (40 chars) or xsrfToken (224 chars) - */function WebAuthn(){var routes=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var _headers2=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var includeCredentials=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var xcsrfToken=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;_classCallCheck(this,WebAuthn);_classPrivateMethodInitSpec(this,_parseOutgoingCredentials);_classPrivateMethodInitSpec(this,_parseIncomingServerOptions);_classPrivateMethodInitSpec(this,_fetch);_classPrivateFieldInitSpec(this,_routes,{writable:true,value:{registerOptions:"webauthn/register/options",register:"webauthn/register",loginOptions:"webauthn/login/options",login:"webauthn/login"}});_classPrivateFieldInitSpec(this,_headers,{writable:true,value:{Accept:"application/json","Content-Type":"application/json","X-Requested-With":"XMLHttpRequest"}});_classPrivateFieldInitSpec(this,_includeCredentials,{writable:true,value:false});Object.assign(_classPrivateFieldGet(this,_routes),routes);Object.assign(_classPrivateFieldGet(this,_headers),_headers2);_classPrivateFieldSet(this,_includeCredentials,includeCredentials);var xsrfToken;var csrfToken;if(xcsrfToken===null){// If the developer didn't issue an XSRF token, we will find it ourselves. + */_classPrivateFieldInitSpec(this,_includeCredentials,{writable:true,value:false});Object.assign(_classPrivateFieldGet(this,_routes),routes);Object.assign(_classPrivateFieldGet(this,_headers),_headers2);_classPrivateFieldSet(this,_includeCredentials,includeCredentials);var xsrfToken;var csrfToken;if(xcsrfToken===null){// If the developer didn't issue an XSRF token, we will find it ourselves. xsrfToken=_classStaticPrivateFieldSpecGet(WebAuthn,WebAuthn,_XsrfToken);csrfToken=_classStaticPrivateFieldSpecGet(WebAuthn,WebAuthn,_firstInputWithCsrfToken);}else{// Check if it is a CSRF or XSRF token if(xcsrfToken.length===40){csrfToken=xcsrfToken;}else if(xcsrfToken.length===224){xsrfToken=xcsrfToken;}else{throw new TypeError("CSRF token or XSRF token provided does not match requirements. Must be 40 or 224 characters.");}}if(xsrfToken!==null){var _classPrivateFieldGet2,_XXSRFTOKEN,_classPrivateFieldGet3;(_classPrivateFieldGet3=(_classPrivateFieldGet2=_classPrivateFieldGet(this,_headers))[_XXSRFTOKEN="X-XSRF-TOKEN"])!==null&&_classPrivateFieldGet3!==void 0?_classPrivateFieldGet3:_classPrivateFieldGet2[_XXSRFTOKEN]=xsrfToken;}else if(csrfToken!==null){var _classPrivateFieldGet4,_XCSRFTOKEN,_classPrivateFieldGet5;(_classPrivateFieldGet5=(_classPrivateFieldGet4=_classPrivateFieldGet(this,_headers))[_XCSRFTOKEN="X-CSRF-TOKEN"])!==null&&_classPrivateFieldGet5!==void 0?_classPrivateFieldGet5:_classPrivateFieldGet4[_XCSRFTOKEN]=csrfToken;}else{// We didn't find it, and since is required, we will bail out. throw new TypeError('Ensure a CSRF/XSRF token is manually set, or provided in a cookie "XSRF-TOKEN" or or there is meta tag named "csrf-token".');}}/** @@ -5557,7 +5574,13 @@ throw new TypeError('Ensure a CSRF/XSRF token is manually set, or provided in a * @returns {boolean} */},{key:"doesntSupportWebAuthn",value:function doesntSupportWebAuthn(){return!this.supportsWebAuthn();}}]);return WebAuthn;}();function _get_firstInputWithCsrfToken(){// First, try finding an CSRF Token in the head. var token=Array.from(document.head.getElementsByTagName("meta")).find(function(element){return element.name==="csrf-token";});if(token){return token.content;}// Then, try to find a hidden input containing the CSRF token. -token=Array.from(document.getElementsByTagName("input")).find(function(input){return input.name==="_token"&&input.type==="hidden";});if(token){return token.value;}return null;}function _get_XsrfToken(){var cookie=document.cookie.split(";").find(function(row){return /^\s*(X-)?[XC]SRF-TOKEN\s*=/.test(row);});// We must remove all '%3D' from the end of the string. +token=Array.from(document.getElementsByTagName("input")).find(function(input){return input.name==="_token"&&input.type==="hidden";});if(token){return token.value;}return null;}/** + * Returns the value of the XSRF token if it exists in a cookie. + * + * Inspired by https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie#example_2_get_a_sample_cookie_named_test2 + * + * @returns {?string} + */function _get_XsrfToken(){var cookie=document.cookie.split(";").find(function(row){return /^\s*(X-)?[XC]SRF-TOKEN\s*=/.test(row);});// We must remove all '%3D' from the end of the string. // Background: // The actual binary value of the CSFR value is encoded in Base64. // If the length of original, binary value is not a multiple of 3 bytes, @@ -5569,7 +5592,31 @@ token=Array.from(document.getElementsByTagName("input")).find(function(input){re // When we send back the value to the server as part of an AJAX request, // Laravel expects an unpadded value. // Hence, we must remove the `%3D`. -return cookie?cookie.split("=")[1].trim().replaceAll("%3D",""):null;}function _fetch2(data,route){var headers=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var url=new URL(route,window.location.origin).href;return fetch(url,{method:"POST",credentials:_classPrivateFieldGet(this,_includeCredentials)?"include":"same-origin",redirect:"error",headers:_objectSpread(_objectSpread({},_classPrivateFieldGet(this,_headers)),headers),body:JSON.stringify(data)});}function _base64UrlDecode(input){input=input.replace(/-/g,"+").replace(/_/g,"/");var pad=input.length%4;if(pad){if(pad===1){throw new Error("InvalidLengthError: Input base64url string is the wrong length to determine padding");}input+=new Array(5-pad).join("=");}return atob(input);}function _uint8Array(input){var useAtob=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;return Uint8Array.from(useAtob?atob(input):_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_base64UrlDecode).call(WebAuthn,input),function(c){return c.charCodeAt(0);});}function _arrayToBase64String(arrayBuffer){return btoa(String.fromCharCode.apply(String,_toConsumableArray(new Uint8Array(arrayBuffer))));}function _parseIncomingServerOptions2(publicKey){console.debug(publicKey);publicKey.challenge=_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_uint8Array).call(WebAuthn,publicKey.challenge);if("user"in publicKey){publicKey.user=_objectSpread(_objectSpread({},publicKey.user),{},{id:_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_uint8Array).call(WebAuthn,publicKey.user.id)});}["excludeCredentials","allowCredentials"].filter(function(key){return key in publicKey;}).forEach(function(key){publicKey[key]=publicKey[key].map(function(data){return _objectSpread(_objectSpread({},data),{},{id:_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_uint8Array).call(WebAuthn,data.id)});});});console.log(publicKey);return publicKey;}function _parseOutgoingCredentials2(credentials){var parseCredentials={id:credentials.id,type:credentials.type,rawId:_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_arrayToBase64String).call(WebAuthn,credentials.rawId),response:{}};["clientDataJSON","attestationObject","authenticatorData","signature","userHandle"].filter(function(key){return key in credentials.response;}).forEach(function(key){return parseCredentials.response[key]=_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_arrayToBase64String).call(WebAuthn,credentials.response[key]);});return parseCredentials;}function _handleResponse(response){if(!response.ok){throw response;}// Here we will do a small trick. Since most of the responses from the server +return cookie?cookie.split("=")[1].trim().replaceAll("%3D",""):null;}function _fetch2(data,route){var headers=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var url=new URL(route,window.location.origin).href;return fetch(url,{method:"POST",credentials:_classPrivateFieldGet(this,_includeCredentials)?"include":"same-origin",redirect:"error",headers:_objectSpread(_objectSpread({},_classPrivateFieldGet(this,_headers)),headers),body:JSON.stringify(data)});}/** + * Decodes a BASE64 URL string into a normal string. + * + * @param input {string} + * @returns {string|Iterable} + */function _base64UrlDecode(input){input=input.replace(/-/g,"+").replace(/_/g,"/");var pad=input.length%4;if(pad){if(pad===1){throw new Error("InvalidLengthError: Input base64url string is the wrong length to determine padding");}input+=new Array(5-pad).join("=");}return atob(input);}/** + * Transform a string into Uint8Array instance. + * + * @param input {string} + * @param useAtob {boolean} + * @returns {Uint8Array} + */function _uint8Array(input){var useAtob=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;return Uint8Array.from(useAtob?atob(input):_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_base64UrlDecode).call(WebAuthn,input),function(c){return c.charCodeAt(0);});}/** + * Encodes an array of bytes to a BASE64 URL string + * + * @param arrayBuffer {ArrayBuffer|Uint8Array} + * @returns {string} + */function _arrayToBase64String(arrayBuffer){return btoa(String.fromCharCode.apply(String,_toConsumableArray(new Uint8Array(arrayBuffer))));}function _parseIncomingServerOptions2(publicKey){console.debug(publicKey);publicKey.challenge=_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_uint8Array).call(WebAuthn,publicKey.challenge);if("user"in publicKey){publicKey.user=_objectSpread(_objectSpread({},publicKey.user),{},{id:_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_uint8Array).call(WebAuthn,publicKey.user.id)});}["excludeCredentials","allowCredentials"].filter(function(key){return key in publicKey;}).forEach(function(key){publicKey[key]=publicKey[key].map(function(data){return _objectSpread(_objectSpread({},data),{},{id:_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_uint8Array).call(WebAuthn,data.id)});});});console.log(publicKey);return publicKey;}function _parseOutgoingCredentials2(credentials){var parseCredentials={id:credentials.id,type:credentials.type,rawId:_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_arrayToBase64String).call(WebAuthn,credentials.rawId),response:{}};["clientDataJSON","attestationObject","authenticatorData","signature","userHandle"].filter(function(key){return key in credentials.response;}).forEach(function(key){return parseCredentials.response[key]=_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_arrayToBase64String).call(WebAuthn,credentials.response[key]);});return parseCredentials;}/** + * Handles the response from the Server. + * + * Throws the entire response if is not OK (HTTP 2XX). + * + * @param response {Response} + * @returns Promise + * @throws Response + */function _handleResponse(response){if(!response.ok){throw response;}// Here we will do a small trick. Since most of the responses from the server // are JSON, we will automatically parse the JSON body from the response. If // it's not JSON, we will push the body verbatim and let the dev handle it. return new Promise(function(resolve){response.json().then(function(json){return resolve(json);})["catch"](function(){return resolve(response.body);});});}var _XsrfToken={get:_get_XsrfToken,set:void 0};var _firstInputWithCsrfToken={get:_get_firstInputWithCsrfToken,set:void 0}; \ No newline at end of file diff --git a/public/dist/landing.css b/public/dist/landing.css index 64086f6cd7a..6eef016d8f6 100644 --- a/public/dist/landing.css +++ b/public/dist/landing.css @@ -166,7 +166,6 @@ b { user-select: none; -webkit-transition: color 0.3s, opacity 0.3s ease-out, -webkit-transform 0.3s ease-out, -webkit-box-shadow 0.3s; transition: color 0.3s, opacity 0.3s ease-out, -webkit-transform 0.3s ease-out, -webkit-box-shadow 0.3s; - -o-transition: color 0.3s, opacity 0.3s ease-out, transform 0.3s ease-out, box-shadow 0.3s; transition: color 0.3s, opacity 0.3s ease-out, transform 0.3s ease-out, box-shadow 0.3s; transition: color 0.3s, opacity 0.3s ease-out, transform 0.3s ease-out, box-shadow 0.3s, -webkit-transform 0.3s ease-out, -webkit-box-shadow 0.3s; } @@ -3772,7 +3771,6 @@ a { padding: 5px 0 5px 0; -webkit-transition: color 0.3s, opacity 0.3s ease-out, margin-left 0.5s, -webkit-transform 0.3s ease-out, -webkit-box-shadow 0.3s; transition: color 0.3s, opacity 0.3s ease-out, margin-left 0.5s, -webkit-transform 0.3s ease-out, -webkit-box-shadow 0.3s; - -o-transition: color 0.3s, opacity 0.3s ease-out, transform 0.3s ease-out, box-shadow 0.3s, margin-left 0.5s; transition: color 0.3s, opacity 0.3s ease-out, transform 0.3s ease-out, box-shadow 0.3s, margin-left 0.5s; transition: color 0.3s, opacity 0.3s ease-out, transform 0.3s ease-out, box-shadow 0.3s, margin-left 0.5s, -webkit-transform 0.3s ease-out, -webkit-box-shadow 0.3s; } diff --git a/public/dist/landing.js b/public/dist/landing.js index d38af676466..be17a259f01 100644 --- a/public/dist/landing.js +++ b/public/dist/landing.js @@ -1,5 +1,5 @@ -/*! jQuery v3.6.3 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},S=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||S).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.3",E=function(e,t){return new E.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,S)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=E)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{if(d.cssSupportsSelector&&!CSS.supports("selector(:is("+c+"))"))throw new Error;return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===E&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[E]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,S=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.cssSupportsSelector=ce(function(){return CSS.supports("selector(*)")&&C.querySelectorAll(":is(:jqfake)")&&!CSS.supports("selector(:is(*,:jqfake))")}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=E,!C.getElementsByName||!C.getElementsByName(E).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&S){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&S){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&S)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+E+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+E+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),d.cssSupportsSelector||y.push(":has"),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType&&e.documentElement||e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&S&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:S,!0)),N.test(r[1])&&E.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=S.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)}).prototype=E.fn,D=E(S);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=S.createDocumentFragment().appendChild(S.createElement("div")),(fe=S.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?E.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),S.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;E.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||E.expando+"_"+Ct.guid++;return this[e]=!0,e}}),E.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||E.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?E(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=S.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=S.implementation.createHTMLDocument("")).createElement("base")).href=S.location.href,t.head.appendChild(r)):t=S),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&E(o).remove(),E.merge([],i.childNodes)));var r,i,o},E.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(E.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},E.expr.pseudos.animated=function(t){return E.grep(E.timers,function(e){return t===e.elem}).length},E.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=E.css(e,"position"),c=E(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=E.css(e,"top"),u=E.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),i.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-E.css(r,"marginTop",!0),left:t.left-i.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===E.css(e,"position"))e=e.offsetParent;return e||re})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;E.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(a,s){E.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){E.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?E.css(e,t,i):E.style(e,t,n,i)},s,n?e:void 0,n)}})}),E.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){E.fn[t]=function(e){return this.on(t,e)}}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},R=function(){V()},M=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&z(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function X(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&M(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function U(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function z(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",R),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Me(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return R(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return R(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0 Date: Wed, 28 Jun 2023 17:18:59 +0200 Subject: [PATCH 006/209] v4.9.4 (#1907) --- .../2023_06_28_144440_bump_version040904.php | 26 +++++++++++++++++++ version.md | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 database/migrations/2023_06_28_144440_bump_version040904.php diff --git a/database/migrations/2023_06_28_144440_bump_version040904.php b/database/migrations/2023_06_28_144440_bump_version040904.php new file mode 100644 index 00000000000..5f2bd82a12a --- /dev/null +++ b/database/migrations/2023_06_28_144440_bump_version040904.php @@ -0,0 +1,26 @@ +where('key', 'version')->update(['value' => '040904']); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down(): void + { + DB::table('configs')->where('key', 'version')->update(['value' => '040903']); + } +}; diff --git a/version.md b/version.md index e94f14fa9ed..f4cfd30c459 100644 --- a/version.md +++ b/version.md @@ -1 +1 @@ -4.9.3 \ No newline at end of file +4.9.4 \ No newline at end of file From ddc2f1ebdaa277e16d2aca3833b8ecd1848b0710 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sun, 9 Jul 2023 22:57:49 +0200 Subject: [PATCH 007/209] Fix NSFW not toggling via Protection Panel (#1928) --- app/Actions/Album/SetProtectionPolicy.php | 2 ++ tests/Feature/AlbumTest.php | 26 +++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/app/Actions/Album/SetProtectionPolicy.php b/app/Actions/Album/SetProtectionPolicy.php index 91a483f79dc..d94322567cf 100644 --- a/app/Actions/Album/SetProtectionPolicy.php +++ b/app/Actions/Album/SetProtectionPolicy.php @@ -30,6 +30,8 @@ class SetProtectionPolicy extends Action public function do(BaseAlbum $album, AlbumProtectionPolicy $protectionPolicy, bool $shallSetPassword, ?string $password): void { $album->is_nsfw = $protectionPolicy->is_nsfw; + $album->save(); + $active_permissions = $album->public_permissions(); if (!$protectionPolicy->is_public) { diff --git a/tests/Feature/AlbumTest.php b/tests/Feature/AlbumTest.php index 952594ee131..973ce3d5040 100644 --- a/tests/Feature/AlbumTest.php +++ b/tests/Feature/AlbumTest.php @@ -947,4 +947,30 @@ public function testAddPublicByDefault(): void Configs::set(TestConstants::CONFIG_DEFAULT_ALBUM_PROTECTION, $defaultProtectionType); } + + /** + * Test that setting NSFW via the Protection Policy works. + * 1. Create album + * 2. check nsfw is false + * 3. set nsfw to true + * 4. check nsfw is true + * 5. set nsfw to false + * 6. check nsfw is false. + * + * @return void + */ + public function testNSFWViaProtectionPolicy(): void + { + Auth::loginUsingId(1); + $albumID1 = $this->albums_tests->add(null, 'Test Album')->offsetGet('id'); + $res = $this->albums_tests->get($albumID1); + $res->assertJson(['policy' => ['is_nsfw' => false]]); + $this->albums_tests->set_protection_policy(id: $albumID1, is_nsfw: true); + $res = $this->albums_tests->get($albumID1); + $res->assertJson(['policy' => ['is_nsfw' => true]]); + $this->albums_tests->set_protection_policy(id: $albumID1, is_nsfw: false); + $res = $this->albums_tests->get($albumID1); + $res->assertJson(['policy' => ['is_nsfw' => false]]); + Auth::logout(); + } } From 9862ff9baf93f3e24d1a8c2431e1d8ee4b18293d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Mon, 10 Jul 2023 10:03:08 +0200 Subject: [PATCH 008/209] Change lang from English to German (#1933) * Change lang from English to German * Update lychee.php --------- Co-authored-by: CodingWithCard Co-authored-by: qwerty287 <80460567+qwerty287@users.noreply.github.com> --- lang/de/lychee.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lang/de/lychee.php b/lang/de/lychee.php index 49875cfc1b9..ce32425fae1 100644 --- a/lang/de/lychee.php +++ b/lang/de/lychee.php @@ -32,7 +32,7 @@ 'SIGN_OUT' => 'Abmelden', 'UPDATE_AVAILABLE' => 'Update verfügbar!', 'MIGRATION_AVAILABLE' => 'Migration verfügbar!', - 'CHECK_FOR_UPDATE' => 'Check for updates', + 'CHECK_FOR_UPDATE' => 'auf Updates prüfen', 'DEFAULT_LICENSE' => 'Standard-Lizenz für neue Uploads:', 'SET_LICENSE' => 'Lizenz anwenden', 'SET_OVERLAY_TYPE' => 'Setze Overlay', @@ -270,8 +270,8 @@ 'PHOTO_EDIT_SHARING_TEXT' => 'Die Einstellungen zum Teilen des Foto werden wie folgt angepasst:', 'PHOTO_NO_EDIT_SHARING_TEXT' => 'Dieses Foto ist in einem öffentlichen Album und erbt deshalb die Sichtbarkeitseinstellungen des Albums. Die aktuellen Sichtbarkeitseinstellungen werden unten nur zur Info dargestellt.', 'PHOTO_EDIT_GLOBAL_SHARING_TEXT' => 'Die Sichtbarkeit dieses Fotos kann über die globalen Lychee Einstellungen modifiziert werden. Die aktuellen Sichtbarkeitseinstellungen werden unten nur zur Info dargestellt.', - 'PHOTO_NEW_CREATED_AT' => 'Enter the upload date for this photo. mm/dd/yyyy, hh:mm [am/pm]', - 'PHOTO_SET_CREATED_AT' => 'Set upload date', + 'PHOTO_NEW_CREATED_AT' => 'Geben Sie das Upload-Datum für dieses Foto ein. MM/TT/JJJJ, hh:mm', + 'PHOTO_SET_CREATED_AT' => 'Upload-Datum festlegen', 'LOADING' => 'Laden', 'ERROR' => 'Fehler', @@ -311,7 +311,7 @@ 'U2F_CREDENTIALS_DELETED' => 'Anmeldedaten gelöscht!', 'NEW_PHOTOS_NOTIFICATION' => 'E-Mails für neue Fotos senden', - 'SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION' => 'New photos notification updated', + 'SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION' => 'Benachrichtigung für neue Fotos aktualisiert', 'USER_EMAIL_INSTRUCTION' => 'Geben Sie Ihre E-Mail-Adresse unten ein, um Benachrichtigungen zu aktivieren. Um Benachrichtigungen zu deaktivieren, entfernen Sie die E-Mail-Adresse unten einfach.', 'LOGIN_USERNAME' => 'Neuer Benutzername', From edf286a67e95c100bf0fb4182e699f0f7c91d72f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Mon, 10 Jul 2023 10:04:14 +0200 Subject: [PATCH 009/209] Use Actions instead of direct call in controller (#1916) * use Actions instead of direct call in controller * and fix save --- app/Actions/User/Save.php | 3 +-- app/Actions/User/TokenDisable.php | 25 ++++++++++++++++++ app/Actions/User/TokenReset.php | 26 +++++++++++++++++++ .../Administration/UserController.php | 17 +++++------- 4 files changed, 58 insertions(+), 13 deletions(-) create mode 100644 app/Actions/User/TokenDisable.php create mode 100644 app/Actions/User/TokenReset.php diff --git a/app/Actions/User/Save.php b/app/Actions/User/Save.php index 5b9b7bd715e..6532495d342 100644 --- a/app/Actions/User/Save.php +++ b/app/Actions/User/Save.php @@ -5,7 +5,6 @@ use App\Exceptions\ConflictingPropertyException; use App\Exceptions\InvalidPropertyException; use App\Exceptions\ModelDBException; -use App\Http\Requests\Traits\HasPasswordTrait; use App\Models\User; use Illuminate\Support\Facades\Hash; @@ -36,7 +35,7 @@ public function do(User $user, string $username, ?string $password, bool $mayUpl $user->username = $username; $user->may_upload = $mayUpload; $user->may_edit_own_settings = $mayEditOwnSettings; - if ($password !== null) { + if ($password !== null && $password !== '') { $user->password = Hash::make($password); } $user->save(); diff --git a/app/Actions/User/TokenDisable.php b/app/Actions/User/TokenDisable.php new file mode 100644 index 00000000000..74daba3e617 --- /dev/null +++ b/app/Actions/User/TokenDisable.php @@ -0,0 +1,25 @@ +token = null; + $user->save(); + + return $user; + } +} diff --git a/app/Actions/User/TokenReset.php b/app/Actions/User/TokenReset.php new file mode 100644 index 00000000000..8c2d08730ff --- /dev/null +++ b/app/Actions/User/TokenReset.php @@ -0,0 +1,26 @@ +token = hash('SHA512', $token); + $user->save(); + + return $token; + } +} diff --git a/app/Http/Controllers/Administration/UserController.php b/app/Http/Controllers/Administration/UserController.php index 12626257acc..659819b3826 100644 --- a/app/Http/Controllers/Administration/UserController.php +++ b/app/Http/Controllers/Administration/UserController.php @@ -3,6 +3,8 @@ namespace App\Http\Controllers\Administration; use App\Actions\Settings\UpdateLogin; +use App\Actions\User\TokenDisable; +use App\Actions\User\TokenReset; use App\Contracts\Exceptions\InternalLycheeException; use App\Exceptions\Internal\FrameworkException; use App\Exceptions\ModelDBException; @@ -94,13 +96,9 @@ public function getAuthenticatedUser(): UserResource * @throws ModelDBException * @throws \Exception */ - public function resetToken(ChangeTokenRequest $request): array + public function resetToken(ChangeTokenRequest $request, TokenReset $tokenReset): array { - /** @var User $user */ - $user = Auth::user(); - $token = strtr(base64_encode(random_bytes(16)), '+/', '-_'); - $user->token = hash('SHA512', $token); - $user->save(); + $token = $tokenReset->do(); return ['token' => $token]; } @@ -113,11 +111,8 @@ public function resetToken(ChangeTokenRequest $request): array * @throws UnauthenticatedException * @throws ModelDBException */ - public function unsetToken(ChangeTokenRequest $request): void + public function unsetToken(ChangeTokenRequest $request, TokenDisable $tokenDisable): void { - /** @var User $user */ - $user = Auth::user(); - $user->token = null; - $user->save(); + $tokenDisable->do(); } } From 648107909c696f30ff8fb991a9e0f3be06e7626a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Mon, 10 Jul 2023 10:05:09 +0200 Subject: [PATCH 010/209] Make this function public static so it can be used also in other places (#1917) --- app/Http/Controllers/IndexController.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/IndexController.php b/app/Http/Controllers/IndexController.php index 09798d8de1a..a5b6d1f9f42 100644 --- a/app/Http/Controllers/IndexController.php +++ b/app/Http/Controllers/IndexController.php @@ -73,8 +73,8 @@ public function show(): View 'infos' => $infos, 'page_config' => $page_config, 'rss_enable' => $rss_enable, - 'user_css_url' => $this->getUserCustomFiles('user.css'), - 'user_js_url' => $this->getUserCustomFiles('custom.js'), + 'user_css_url' => self::getUserCustomFiles('user.css'), + 'user_js_url' => self::getUserCustomFiles('custom.js'), ]); } @@ -203,8 +203,8 @@ protected function frontend(?string $title = null, ?string $description = null, 'pageUrl' => url()->current(), 'rssEnable' => Configs::getValueAsBool('rss_enable'), 'bodyHtml' => file_get_contents(public_path('dist/frontend.html')), - 'userCssUrl' => $this->getUserCustomFiles('user.css'), - 'userJsUrl' => $this->getUserCustomFiles('custom.js'), + 'userCssUrl' => self::getUserCustomFiles('user.css'), + 'userJsUrl' => self::getUserCustomFiles('custom.js'), ]); } catch (BindingResolutionException $e) { throw new FrameworkException('Laravel\'s container component', $e); @@ -216,7 +216,7 @@ protected function frontend(?string $title = null, ?string $description = null, * * @return string */ - private function getUserCustomFiles(string $fileName): string + public static function getUserCustomFiles(string $fileName): string { $cssCacheBusting = ''; if (Storage::disk('dist')->fileExists($fileName)) { From dcf411505d2ee228331be9f898a85ff1b078cc92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Mon, 10 Jul 2023 10:06:26 +0200 Subject: [PATCH 011/209] import from url with ruleset (#1921) --- .../Http/Requests/RequestAttribute.php | 1 + .../Requests/Import/ImportFromUrlRequest.php | 12 +++------ .../RuleSets/Import/ImportFromUrlRuleSet.php | 25 +++++++++++++++++++ 3 files changed, 29 insertions(+), 9 deletions(-) create mode 100644 app/Http/RuleSets/Import/ImportFromUrlRuleSet.php diff --git a/app/Contracts/Http/Requests/RequestAttribute.php b/app/Contracts/Http/Requests/RequestAttribute.php index 817ed489567..26b11f92a16 100644 --- a/app/Contracts/Http/Requests/RequestAttribute.php +++ b/app/Contracts/Http/Requests/RequestAttribute.php @@ -78,4 +78,5 @@ class RequestAttribute public const RESYNC_METADATA_ATTRIBUTE = 'resync_metadata'; public const FILE_LAST_MODIFIED_TIME = 'fileLastModifiedTime'; + public const URLS_ATTRIBUTE = 'urls'; } \ No newline at end of file diff --git a/app/Http/Requests/Import/ImportFromUrlRequest.php b/app/Http/Requests/Import/ImportFromUrlRequest.php index f1717f78aec..ef62eb996c9 100644 --- a/app/Http/Requests/Import/ImportFromUrlRequest.php +++ b/app/Http/Requests/Import/ImportFromUrlRequest.php @@ -7,16 +7,14 @@ use App\Http\Requests\BaseApiRequest; use App\Http\Requests\Traits\Authorize\AuthorizeCanEditAlbumTrait; use App\Http\Requests\Traits\HasAlbumTrait; +use App\Http\RuleSets\Import\ImportFromUrlRuleSet; use App\Models\Album; -use App\Rules\RandomIDRule; class ImportFromUrlRequest extends BaseApiRequest implements HasAlbum { use HasAlbumTrait; use AuthorizeCanEditAlbumTrait; - public const URLS_ATTRIBUTE = 'urls'; - /** * @var string[] */ @@ -27,11 +25,7 @@ class ImportFromUrlRequest extends BaseApiRequest implements HasAlbum */ public function rules(): array { - return [ - RequestAttribute::ALBUM_ID_ATTRIBUTE => ['present', new RandomIDRule(true)], - self::URLS_ATTRIBUTE => 'required|array|min:1', - self::URLS_ATTRIBUTE . '.*' => 'required|string', - ]; + return ImportFromUrlRuleSet::rules(); } /** @@ -52,7 +46,7 @@ protected function processValidatedValues(array $values, array $files): void // Hence, either use a proper encoding method here instead of our // home-brewed, poor-man replacement or drop it entirely. // TODO: Find out what is needed and proceed accordingly. - $this->urls = str_replace(' ', '%20', $values[self::URLS_ATTRIBUTE]); + $this->urls = str_replace(' ', '%20', $values[RequestAttribute::URLS_ATTRIBUTE]); } /** diff --git a/app/Http/RuleSets/Import/ImportFromUrlRuleSet.php b/app/Http/RuleSets/Import/ImportFromUrlRuleSet.php new file mode 100644 index 00000000000..e5b4df66def --- /dev/null +++ b/app/Http/RuleSets/Import/ImportFromUrlRuleSet.php @@ -0,0 +1,25 @@ + ['present', new RandomIDRule(true)], + RequestAttribute::URLS_ATTRIBUTE => 'required|array|min:1', + RequestAttribute::URLS_ATTRIBUTE . '.*' => 'required|string', + ]; + } +} From d8aa7b6762b4fe1daa25629737fe443251e7122c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Mon, 10 Jul 2023 10:07:14 +0200 Subject: [PATCH 012/209] fix dto (#1920) --- app/DTO/AlbumProtectionPolicy.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/DTO/AlbumProtectionPolicy.php b/app/DTO/AlbumProtectionPolicy.php index 2c8ff95616c..f433684d862 100644 --- a/app/DTO/AlbumProtectionPolicy.php +++ b/app/DTO/AlbumProtectionPolicy.php @@ -2,7 +2,6 @@ namespace App\DTO; -use App\Models\Album; use App\Models\BaseAlbumImpl; use App\Models\Extensions\BaseAlbum; use App\SmartAlbums\BaseSmartAlbum; @@ -55,7 +54,7 @@ public static function ofBaseAlbumImplementation(BaseAlbumImpl $baseAlbum): self /** * Given a {@link BaseAlbum}, returns the Protection Policy associated to it. * - * @param Album $baseAlbum + * @param BaseAlbum $baseAlbum * * @return AlbumProtectionPolicy */ From 957c26d01fe0c5a9bddd485eb758fa975f8054ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Mon, 10 Jul 2023 10:07:58 +0200 Subject: [PATCH 013/209] jobs can now also take string as input (useful for upload in smart albums) (#1919) --- app/Jobs/ProcessImageJob.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Jobs/ProcessImageJob.php b/app/Jobs/ProcessImageJob.php index de6e7ba7c11..1fcbd684aa8 100644 --- a/app/Jobs/ProcessImageJob.php +++ b/app/Jobs/ProcessImageJob.php @@ -45,12 +45,12 @@ class ProcessImageJob implements ShouldQueue */ public function __construct( ProcessableJobFile $file, - ?AbstractAlbum $albumId, + string|AbstractAlbum|null $albumId, ?int $fileLastModifiedTime, ) { $this->filePath = $file->getPath(); $this->originalBaseName = $file->getOriginalBasename(); - $this->albumId = $albumId?->id; + $this->albumId = is_string($albumId) ? $albumId : $albumId?->id; $this->userId = Auth::user()->id; $this->fileLastModifiedTime = $fileLastModifiedTime; From b47c5bbf4da3cafdc220cefa435fc3e719b458a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Mon, 10 Jul 2023 10:08:20 +0200 Subject: [PATCH 014/209] Move GetSymbolByQuantity (#1918) --- app/Assets/Helpers.php | 22 ++++++++++++++++++++++ app/Metadata/DiskUsage.php | 29 ++++------------------------- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/app/Assets/Helpers.php b/app/Assets/Helpers.php index 31f3fa2d185..ef96076da12 100644 --- a/app/Assets/Helpers.php +++ b/app/Assets/Helpers.php @@ -223,6 +223,28 @@ public function data_index_set(int $idx = 0): void $this->numTab = $idx; } + /** + * From https://www.php.net/manual/en/function.disk-total-space.php. + * + * @param float $bytes + * + * @return string + */ + public function getSymbolByQuantity(float $bytes): string + { + $symbols = [ + 'B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB', + ]; + $exp = intval(floor(log($bytes) / log(1024.0))); + + if ($exp >= sizeof($symbols)) { + // if the number is too large, we fall back to the largest available symbol + $exp = sizeof($symbols) - 1; + } + + return sprintf('%.2f %s', ($bytes / pow(1024, $exp)), $symbols[$exp]); + } + /** * Check if the `exec` function is available. * diff --git a/app/Metadata/DiskUsage.php b/app/Metadata/DiskUsage.php index 4a409055476..88e2cee7215 100644 --- a/app/Metadata/DiskUsage.php +++ b/app/Metadata/DiskUsage.php @@ -23,27 +23,6 @@ public function is_win(): bool return $os === 'WIN'; } - /** - * From https://www.php.net/manual/en/function.disk-total-space.php. - * - * @param float $bytes - * - * @return string - */ - public function getSymbolByQuantity(float $bytes): string - { - $symbols = [ - 'B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB', - ]; - $exp = intval(floor(log($bytes) / log(1024))); - - return sprintf( - '%.2f %s', - ($bytes / pow(1024, $exp)), - $symbols[$exp] - ); - } - /** * from https://stackoverflow.com/questions/478121/how-to-get-directory-size-in-php. * @@ -97,7 +76,7 @@ public function get_total_space(): string // TODO : FIX TO USE STORAGE FACADE => uploads may not be in public/uploads $dts = disk_total_space(base_path('')); - return $this->getSymbolByQuantity($dts); + return Helpers::getSymbolByQuantity($dts); } /** @@ -110,7 +89,7 @@ public function get_free_space(): string // TODO : FIX TO USE STORAGE FACADE => uploads may not be in public/uploads $dfs = disk_free_space(base_path('')); - return $this->getSymbolByQuantity($dfs); + return Helpers::getSymbolByQuantity($dfs); } /** @@ -136,7 +115,7 @@ public function get_lychee_space(): string { $ds = $this->getTotalSize(base_path('')); - return $this->getSymbolByQuantity($ds); + return Helpers::getSymbolByQuantity($ds); } /** @@ -148,6 +127,6 @@ public function get_lychee_upload_space(): string { $ds = $this->getTotalSize(Storage::disk('images')->path('')); - return $this->getSymbolByQuantity($ds); + return Helpers::getSymbolByQuantity($ds); } } From 5fb32dcc62d6275df75977b2f9d415717baf71ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Mon, 10 Jul 2023 10:09:13 +0200 Subject: [PATCH 015/209] Add integrity DB check (#1922) * add integrity DB check * fix formatting --- app/Actions/Diagnostics/Errors.php | 2 ++ .../Pipes/Checks/DBIntegrityCheck.php | 33 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 app/Actions/Diagnostics/Pipes/Checks/DBIntegrityCheck.php diff --git a/app/Actions/Diagnostics/Errors.php b/app/Actions/Diagnostics/Errors.php index 12326fbe8e7..9d94185ef90 100644 --- a/app/Actions/Diagnostics/Errors.php +++ b/app/Actions/Diagnostics/Errors.php @@ -5,6 +5,7 @@ use App\Actions\Diagnostics\Pipes\Checks\AdminUserExistsCheck; use App\Actions\Diagnostics\Pipes\Checks\BasicPermissionCheck; use App\Actions\Diagnostics\Pipes\Checks\ConfigSanityCheck; +use App\Actions\Diagnostics\Pipes\Checks\DBIntegrityCheck; use App\Actions\Diagnostics\Pipes\Checks\DBSupportCheck; use App\Actions\Diagnostics\Pipes\Checks\ForeignKeyListInfo; use App\Actions\Diagnostics\Pipes\Checks\GDSupportCheck; @@ -36,6 +37,7 @@ class Errors TimezoneCheck::class, UpdatableCheck::class, ForeignKeyListInfo::class, + DBIntegrityCheck::class, ]; /** diff --git a/app/Actions/Diagnostics/Pipes/Checks/DBIntegrityCheck.php b/app/Actions/Diagnostics/Pipes/Checks/DBIntegrityCheck.php new file mode 100644 index 00000000000..f52ca588204 --- /dev/null +++ b/app/Actions/Diagnostics/Pipes/Checks/DBIntegrityCheck.php @@ -0,0 +1,33 @@ +where('size_variants.type', '=', 0); + $photos = Photo::query() + ->with(['album']) + ->select(['photos.id', 'title', 'album_id']) + ->joinSub($subJoin, 'size_variants', 'size_variants.photo_id', '=', 'photos.id', 'left') + ->whereNull('size_variants.id') + ->get(); + + foreach ($photos as $photo) { + $data[] = 'Error: Photo without Original found -- ' . $photo->title . ' in ' . ($photo->album?->title ?? __('lychee.UNSORTED')); + } + + return $next($data); + } +} \ No newline at end of file From a532fa416fd88101bd07292fda6489733c037da6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Mon, 10 Jul 2023 10:10:45 +0200 Subject: [PATCH 016/209] Support ratio (#1925) * support ratio * fix format + phpstan --- app/DTO/ImageDimension.php | 10 +++ app/Models/Extensions/SizeVariants.php | 1 + ..._05_195600_enable_disable_smart_albums.php | 1 + ...022_12_26_101639_allow_username_change.php | 1 + ...92505_add_auto_fix_orientation_setting.php | 1 + .../2023_04_05_150625_queue-processing.php | 1 + ...odified_date_when_no_exit_date_setting.php | 1 + ...3_07_07_143908_add_ratio_size_variants.php | 68 +++++++++++++++++++ 8 files changed, 84 insertions(+) create mode 100644 database/migrations/2023_07_07_143908_add_ratio_size_variants.php diff --git a/app/DTO/ImageDimension.php b/app/DTO/ImageDimension.php index 105ffbfd14c..e3972909779 100644 --- a/app/DTO/ImageDimension.php +++ b/app/DTO/ImageDimension.php @@ -9,4 +9,14 @@ public function __construct( public int $height ) { } + + /** + * Return the ratio given width and height. + * + * @return float + */ + public function getRatio(): float + { + return $this->height > 0 ? $this->width / $this->height : 0; + } } diff --git a/app/Models/Extensions/SizeVariants.php b/app/Models/Extensions/SizeVariants.php index 66fa70f2c08..1c94833a822 100644 --- a/app/Models/Extensions/SizeVariants.php +++ b/app/Models/Extensions/SizeVariants.php @@ -174,6 +174,7 @@ public function create(SizeVariantType $sizeVariantType, string $shortPath, Imag $result->width = $dim->width; $result->height = $dim->height; $result->filesize = $filesize; + $result->ratio = $dim->getRatio(); $result->save(); $this->add($result); diff --git a/database/migrations/2022_12_05_195600_enable_disable_smart_albums.php b/database/migrations/2022_12_05_195600_enable_disable_smart_albums.php index f2a5de4a485..3c4d9ad7435 100644 --- a/database/migrations/2022_12_05_195600_enable_disable_smart_albums.php +++ b/database/migrations/2022_12_05_195600_enable_disable_smart_albums.php @@ -1,6 +1,7 @@ getConnection(); + $this->schemaManager = $connection->getDoctrineSchemaManager(); + } + + /** + * Run the migrations. + */ + public function up(): void + { + Schema::table('size_variants', function (Blueprint $table) { + // This index is required by \App\Actions\SizeVariant\Delete::do() + // for `SizeVariant::query()` + $table->float('ratio')->after('height')->default(1); + $table->index(['photo_id', 'type', 'ratio']); + }); + + DB::table('size_variants') + ->where('height', '>', 0) + ->update(['ratio' => DB::raw('width / height')]); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('photos', function (Blueprint $table) { + $this->dropIndexIfExists($table, 'photo_id_type_ratio_index'); + }); + + Schema::table('size_variants', function (Blueprint $table) { + $table->dropColumn('ratio'); + }); + } + + /** + * A helper function that allows to drop an index if exists. + * + * @param Blueprint $table + * @param string $indexName + * + * @throws DBALException + */ + private function dropIndexIfExists(Blueprint $table, string $indexName): void + { + $doctrineTable = $this->schemaManager->introspectTable($table->getTable()); + if ($doctrineTable->hasIndex($indexName)) { + $table->dropIndex($indexName); + } + } +}; From 6303e6641722364e166204fc929ce3dcfd516c2b Mon Sep 17 00:00:00 2001 From: qwerty287 <80460567+qwerty287@users.noreply.github.com> Date: Mon, 10 Jul 2023 13:56:10 +0200 Subject: [PATCH 017/209] Update OSM domain (#1935) * Update OSM domain * sync --- config/secure-headers.php | 4 +--- public/Lychee-front | 2 +- public/dist/frontend.js | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/config/secure-headers.php b/config/secure-headers.php index 32351f91e5c..7d06ebd5975 100644 --- a/config/secure-headers.php +++ b/config/secure-headers.php @@ -382,9 +382,7 @@ 'https://a.tile.osm.org/', 'https://b.tile.osm.org/', 'https://c.tile.osm.org/', - 'https://a.tile.openstreetmap.de/', - 'https://b.tile.openstreetmap.de/', - 'https://c.tile.openstreetmap.de/', + 'https://tile.openstreetmap.de/', 'https://a.tile.openstreetmap.fr/osmfr/', 'https://b.tile.openstreetmap.fr/osmfr/', 'https://c.tile.openstreetmap.fr/osmfr/', diff --git a/public/Lychee-front b/public/Lychee-front index e727d1b59a5..c7f59972c7b 160000 --- a/public/Lychee-front +++ b/public/Lychee-front @@ -1 +1 @@ -Subproject commit e727d1b59a59b57887962147f6749aaf8cbc7ebb +Subproject commit c7f59972c7b97245d7f2d1d088563d86b82fcf0f diff --git a/public/dist/frontend.js b/public/dist/frontend.js index 7fe8e7782aa..4d043828efa 100644 --- a/public/dist/frontend.js +++ b/public/dist/frontend.js @@ -3505,7 +3505,7 @@ var format={month:"short",year:"numeric"};return new Date(jsonDateTime).toLocale * @type {MapProvider} */"OpenStreetMap.org":{layer:"https://{s}.tile.osm.org/{z}/{x}/{y}.png",attribution:"© ".concat(lychee.locale["OSM_CONTRIBUTORS"],"")},/** * @type {MapProvider} - */"OpenStreetMap.de":{layer:"https://{s}.tile.openstreetmap.de/{z}/{x}/{y}.png ",attribution:"© ".concat(lychee.locale["OSM_CONTRIBUTORS"],"")},/** + */"OpenStreetMap.de":{layer:"https://tile.openstreetmap.de/{z}/{x}/{y}.png ",attribution:"© ".concat(lychee.locale["OSM_CONTRIBUTORS"],"")},/** * @type {MapProvider} */"OpenStreetMap.fr":{layer:"https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png ",attribution:"© ".concat(lychee.locale["OSM_CONTRIBUTORS"],"")},/** * @type {MapProvider} From 939dfbbf935fdd2353c4cf7e75bbe7939c5c49dc Mon Sep 17 00:00:00 2001 From: qwerty287 <80460567+qwerty287@users.noreply.github.com> Date: Tue, 11 Jul 2023 07:58:37 +0200 Subject: [PATCH 018/209] Remove OSM subdomains (#1936) --- config/secure-headers.php | 4 +--- public/Lychee-front | 2 +- public/dist/frontend.js | 8 ++++---- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/config/secure-headers.php b/config/secure-headers.php index 7d06ebd5975..2fd6b1ce0b4 100644 --- a/config/secure-headers.php +++ b/config/secure-headers.php @@ -379,9 +379,7 @@ // Allow image to be directly encoded at the img source parameter 'allow' => [ 'https://maps.wikimedia.org/osm-intl/', - 'https://a.tile.osm.org/', - 'https://b.tile.osm.org/', - 'https://c.tile.osm.org/', + 'https://tile.osm.org/', 'https://tile.openstreetmap.de/', 'https://a.tile.openstreetmap.fr/osmfr/', 'https://b.tile.openstreetmap.fr/osmfr/', diff --git a/public/Lychee-front b/public/Lychee-front index c7f59972c7b..742e4538b08 160000 --- a/public/Lychee-front +++ b/public/Lychee-front @@ -1 +1 @@ -Subproject commit c7f59972c7b97245d7f2d1d088563d86b82fcf0f +Subproject commit 742e4538b0827a72f23d2ea05dd8e2ad9cd3df28 diff --git a/public/dist/frontend.js b/public/dist/frontend.js index 4d043828efa..0d9a0905ba9 100644 --- a/public/dist/frontend.js +++ b/public/dist/frontend.js @@ -3503,13 +3503,13 @@ var format={month:"short",year:"numeric"};return new Date(jsonDateTime).toLocale * @type {MapProvider} */Wikimedia:{layer:"https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}{r}.png",attribution:'Wikimedia'},/** * @type {MapProvider} - */"OpenStreetMap.org":{layer:"https://{s}.tile.osm.org/{z}/{x}/{y}.png",attribution:"© ".concat(lychee.locale["OSM_CONTRIBUTORS"],"")},/** + */"OpenStreetMap.org":{layer:"https://tile.openstreetmap.org/{z}/{x}/{y}.png",attribution:"© ".concat(lychee.locale["OSM_CONTRIBUTORS"],"")},/** * @type {MapProvider} - */"OpenStreetMap.de":{layer:"https://tile.openstreetmap.de/{z}/{x}/{y}.png ",attribution:"© ".concat(lychee.locale["OSM_CONTRIBUTORS"],"")},/** + */"OpenStreetMap.de":{layer:"https://tile.openstreetmap.de/{z}/{x}/{y}.png ",attribution:"© ".concat(lychee.locale["OSM_CONTRIBUTORS"],"")},/** * @type {MapProvider} - */"OpenStreetMap.fr":{layer:"https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png ",attribution:"© ".concat(lychee.locale["OSM_CONTRIBUTORS"],"")},/** + */"OpenStreetMap.fr":{layer:"https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png ",attribution:"© ".concat(lychee.locale["OSM_CONTRIBUTORS"],"")},/** * @type {MapProvider} - */RRZE:{layer:"https://{s}.osm.rrze.fau.de/osmhd/{z}/{x}/{y}.png",attribution:"© ".concat(lychee.locale["OSM_CONTRIBUTORS"],"")}};var mapview={/** @type {?L.Map} */map:null,photoLayer:null,trackLayer:null,/** @type {(?LatLngBounds|?number[][])} */bounds:null,/** @type {?string} */albumID:null,/** @type {?string} */map_provider:null};/** + */RRZE:{layer:"https://{s}.osm.rrze.fau.de/osmhd/{z}/{x}/{y}.png",attribution:"© ".concat(lychee.locale["OSM_CONTRIBUTORS"],"")}};var mapview={/** @type {?L.Map} */map:null,photoLayer:null,trackLayer:null,/** @type {(?LatLngBounds|?number[][])} */bounds:null,/** @type {?string} */albumID:null,/** @type {?string} */map_provider:null};/** * @typedef MapPhotoEntry * * @property {number} [lat] - latitude From 66a20a35e2b8efd87cca629c00498ba85bb9eb9b Mon Sep 17 00:00:00 2001 From: qwerty287 <80460567+qwerty287@users.noreply.github.com> Date: Tue, 11 Jul 2023 16:52:18 +0200 Subject: [PATCH 019/209] Fix URL (#1937) --- config/secure-headers.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/secure-headers.php b/config/secure-headers.php index 2fd6b1ce0b4..fd7159a20aa 100644 --- a/config/secure-headers.php +++ b/config/secure-headers.php @@ -379,7 +379,7 @@ // Allow image to be directly encoded at the img source parameter 'allow' => [ 'https://maps.wikimedia.org/osm-intl/', - 'https://tile.osm.org/', + 'https://tile.openstreetmap.org/', 'https://tile.openstreetmap.de/', 'https://a.tile.openstreetmap.fr/osmfr/', 'https://b.tile.openstreetmap.fr/osmfr/', From 2d899a1ab236ece1e238d3bcd9f0c6d074c02b59 Mon Sep 17 00:00:00 2001 From: Merlyn <1927249+Merlyn42@users.noreply.github.com> Date: Sat, 22 Jul 2023 16:44:31 +0100 Subject: [PATCH 020/209] Fixes #1942 "Content-Security-Policy blocks blob requests required for Google Motion Pictures images" (#1943) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Live photos make "blob:" requests, currently that results in an error: Content-Security-Policy: The page’s settings blocked the loading of a resource at blob:https://xxx.com/48d5c8e8-8bac-43af-92d0-b13eda3f6eb6 (“media-src”). and Content-Security-Policy: The page’s settings blocked the loading of a resource at blob:https://xxx.com/f8d5c8e8-8bac-43af-92d0-b13eda3f6eb6 (“img-src”). This change fixes that --- config/secure-headers.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/config/secure-headers.php b/config/secure-headers.php index fd7159a20aa..6ef3153aa70 100644 --- a/config/secure-headers.php +++ b/config/secure-headers.php @@ -388,6 +388,7 @@ 'https://b.osm.rrze.fau.de/osmhd/', 'https://c.osm.rrze.fau.de/osmhd/', 'data:', // required by openstreetmap + 'blob:', // required for "live" photos ], ], @@ -398,6 +399,9 @@ // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/media-src 'media-src' => [ 'self' => true, + 'allow' => [ + 'blob:', // required for "live" photos + ], ], // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/navigate-to From dcd9bc11ecaeb2ea52495a510bc524b76d428af3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Tue, 1 Aug 2023 17:06:33 +0200 Subject: [PATCH 021/209] v4.10.0 (#1940) --- .../2023_07_16_110146_bump_version041000.php | 26 +++++++++++++++++++ version.md | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 database/migrations/2023_07_16_110146_bump_version041000.php diff --git a/database/migrations/2023_07_16_110146_bump_version041000.php b/database/migrations/2023_07_16_110146_bump_version041000.php new file mode 100644 index 00000000000..aabdc97bd72 --- /dev/null +++ b/database/migrations/2023_07_16_110146_bump_version041000.php @@ -0,0 +1,26 @@ +where('key', 'version')->update(['value' => '041000']); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down(): void + { + DB::table('configs')->where('key', 'version')->update(['value' => '040904']); + } +}; diff --git a/version.md b/version.md index f4cfd30c459..1910ba9d233 100644 --- a/version.md +++ b/version.md @@ -1 +1 @@ -4.9.4 \ No newline at end of file +4.10.0 \ No newline at end of file From d1115f27cbce897eb22f683fbfe2a4fad8506fa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Tue, 1 Aug 2023 19:24:21 +0200 Subject: [PATCH 022/209] Composer update (#1961) --- .github/workflows/php-cs-fixer.yml | 2 +- .../Pipes/Checks/AdminUserExistsCheck.php | 3 + .../Pipes/Checks/BasicPermissionCheck.php | 13 +- .../Pipes/Checks/ConfigSanityCheck.php | 21 + .../Pipes/Checks/DBIntegrityCheck.php | 3 + .../Pipes/Checks/DBSupportCheck.php | 7 + .../Pipes/Checks/ForeignKeyListInfo.php | 7 + .../Pipes/Checks/GDSupportCheck.php | 6 + .../Pipes/Checks/ImageOptCheck.php | 6 + .../Pipes/Checks/IniSettingsCheck.php | 7 + .../Pipes/Checks/MigrationCheck.php | 8 +- .../Pipes/Checks/PHPVersionCheck.php | 6 + .../Pipes/Checks/TimezoneCheck.php | 6 + .../Pipes/Checks/UpdatableCheck.php | 3 + .../Pipes/Infos/CountForeignKeyInfo.php | 6 + .../Pipes/Infos/ExtensionsInfo.php | 6 + .../Pipes/Infos/InstallTypeInfo.php | 7 + .../Diagnostics/Pipes/Infos/SystemInfo.php | 6 + .../Diagnostics/Pipes/Infos/VersionInfo.php | 6 + .../Pipes/AbstractUpdateInstallerPipe.php | 2 +- app/Contracts/DiagnosticPipe.php | 2 +- composer.lock | 506 ++++++++++-------- 22 files changed, 406 insertions(+), 233 deletions(-) diff --git a/.github/workflows/php-cs-fixer.yml b/.github/workflows/php-cs-fixer.yml index a619865a52a..f96ee5e723a 100644 --- a/.github/workflows/php-cs-fixer.yml +++ b/.github/workflows/php-cs-fixer.yml @@ -30,7 +30,7 @@ jobs: coverage: none - name: Install PHP-CS-Fixer run: | - curl -L https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v3.18.0/php-cs-fixer.phar -o .github/build/php-cs-fixer + curl -L https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v3.22.0/php-cs-fixer.phar -o .github/build/php-cs-fixer chmod a+x .github/build/php-cs-fixer - name: Prepare Git User run: | diff --git a/app/Actions/Diagnostics/Pipes/Checks/AdminUserExistsCheck.php b/app/Actions/Diagnostics/Pipes/Checks/AdminUserExistsCheck.php index 1c4a5589bcd..6da4210efa9 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/AdminUserExistsCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/AdminUserExistsCheck.php @@ -7,6 +7,9 @@ class AdminUserExistsCheck implements DiagnosticPipe { + /** + * {@inheritDoc} + */ public function handle(array &$data, \Closure $next): array { $numberOfAdmin = User::query()->where('may_administrate', '=', true)->count(); diff --git a/app/Actions/Diagnostics/Pipes/Checks/BasicPermissionCheck.php b/app/Actions/Diagnostics/Pipes/Checks/BasicPermissionCheck.php index d2648d14fd8..0e3c560c46b 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/BasicPermissionCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/BasicPermissionCheck.php @@ -19,6 +19,10 @@ use function Safe\posix_getgrgid; use function Safe\posix_getgroups; +/** + * We check that the folders are with the correct permissions. + * Mostly read write. + */ class BasicPermissionCheck implements DiagnosticPipe { public const MAX_ISSUE_REPORTS_PER_TYPE = 5; @@ -40,10 +44,7 @@ class BasicPermissionCheck implements DiagnosticPipe protected int $numAccessIssues; /** - * @param array $data - * @param \Closure(array $data): array $next - * - * @return array + * {@inheritDoc} */ public function handle(array &$data, \Closure $next): array { @@ -54,6 +55,8 @@ public function handle(array &$data, \Closure $next): array } /** + * Check all the folders with the correct permissions. + * * @param array $data * * @return void @@ -113,6 +116,8 @@ function (int $gid): string { } /** + * Check if user.css has the correct permissions. + * * @param array $data * * @return void diff --git a/app/Actions/Diagnostics/Pipes/Checks/ConfigSanityCheck.php b/app/Actions/Diagnostics/Pipes/Checks/ConfigSanityCheck.php index e62cc56a16a..b9bef2147ee 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/ConfigSanityCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/ConfigSanityCheck.php @@ -5,10 +5,17 @@ use App\Contracts\DiagnosticPipe; use App\Models\Configs; +/** + * Small checks on the content of the config database. + * Mostly verifying that some keys exists. + */ class ConfigSanityCheck implements DiagnosticPipe { private array $settings; + /** + * {@inheritDoc} + */ public function handle(array &$data, \Closure $next): array { // Load settings @@ -23,6 +30,13 @@ public function handle(array &$data, \Closure $next): array return $next($data); } + /** + * Check that a certain set of configuration exists in the database. + * + * @param array $data + * + * @return void + */ private function checkKeysExistsAndSet(array &$data): void { $keys_checked = [ @@ -37,6 +51,13 @@ private function checkKeysExistsAndSet(array &$data): void } } + /** + * Warning if the Dropbox key does not exists. + * + * @param array $data + * + * @return void + */ private function checkDropBoxKeyWarning(array &$data): void { if (!isset($this->settings['dropbox_key'])) { diff --git a/app/Actions/Diagnostics/Pipes/Checks/DBIntegrityCheck.php b/app/Actions/Diagnostics/Pipes/Checks/DBIntegrityCheck.php index f52ca588204..3871dae507d 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/DBIntegrityCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/DBIntegrityCheck.php @@ -14,6 +14,9 @@ */ class DBIntegrityCheck implements DiagnosticPipe { + /** + * {@inheritDoc} + */ public function handle(array &$data, \Closure $next): array { $subJoin = DB::table('size_variants')->where('size_variants.type', '=', 0); diff --git a/app/Actions/Diagnostics/Pipes/Checks/DBSupportCheck.php b/app/Actions/Diagnostics/Pipes/Checks/DBSupportCheck.php index a81ce5ec2b0..bd186d48c24 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/DBSupportCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/DBSupportCheck.php @@ -4,8 +4,15 @@ use App\Contracts\DiagnosticPipe; +/** + * Check that the database is supported. + * In theory this should be the case by default. + */ class DBSupportCheck implements DiagnosticPipe { + /** + * {@inheritDoc} + */ public function handle(array &$data, \Closure $next): array { $db_possibilities = [ diff --git a/app/Actions/Diagnostics/Pipes/Checks/ForeignKeyListInfo.php b/app/Actions/Diagnostics/Pipes/Checks/ForeignKeyListInfo.php index 06e4d0d79a3..1b94b74af78 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/ForeignKeyListInfo.php +++ b/app/Actions/Diagnostics/Pipes/Checks/ForeignKeyListInfo.php @@ -5,8 +5,15 @@ use App\Contracts\DiagnosticPipe; use Illuminate\Support\Facades\DB; +/** + * We list the foreign keys. + * This is useful to debug when Lychee is getting pretty slow. + */ class ForeignKeyListInfo implements DiagnosticPipe { + /** + * {@inheritDoc} + */ public function handle(array &$data, \Closure $next): array { if (config('database.list_foreign_keys') === false) { diff --git a/app/Actions/Diagnostics/Pipes/Checks/GDSupportCheck.php b/app/Actions/Diagnostics/Pipes/Checks/GDSupportCheck.php index 8b568582981..498f7f4ec45 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/GDSupportCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/GDSupportCheck.php @@ -4,8 +4,14 @@ use App\Contracts\DiagnosticPipe; +/** + * Verify that GD support the correct images extensions. + */ class GDSupportCheck implements DiagnosticPipe { + /** + * {@inheritDoc} + */ public function handle(array &$data, \Closure $next): array { if (function_exists('gd_info')) { diff --git a/app/Actions/Diagnostics/Pipes/Checks/ImageOptCheck.php b/app/Actions/Diagnostics/Pipes/Checks/ImageOptCheck.php index 89ae7b450a1..031f4bf3bc0 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/ImageOptCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/ImageOptCheck.php @@ -13,8 +13,14 @@ use Spatie\ImageOptimizer\Optimizers\Pngquant; use Spatie\ImageOptimizer\Optimizers\Svgo; +/** + * Verify that we have some image optimization available if enabled. + */ class ImageOptCheck implements DiagnosticPipe { + /** + * {@inheritDoc} + */ public function handle(array &$data, \Closure $next): array { $tools = []; diff --git a/app/Actions/Diagnostics/Pipes/Checks/IniSettingsCheck.php b/app/Actions/Diagnostics/Pipes/Checks/IniSettingsCheck.php index dccf11c4f03..cda251d2a09 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/IniSettingsCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/IniSettingsCheck.php @@ -8,8 +8,15 @@ use function Safe\ini_get; use function Safe\preg_match; +/** + * Double check that the init settings are not too low. + * This informs us if something may not be uploaded because too big. + */ class IniSettingsCheck implements DiagnosticPipe { + /** + * {@inheritDoc} + */ public function handle(array &$data, \Closure $next): array { // Check php.ini Settings diff --git a/app/Actions/Diagnostics/Pipes/Checks/MigrationCheck.php b/app/Actions/Diagnostics/Pipes/Checks/MigrationCheck.php index 352c96bf54b..74528975f1d 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/MigrationCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/MigrationCheck.php @@ -6,13 +6,13 @@ use App\Metadata\Versions\FileVersion; use App\Metadata\Versions\InstalledVersion; +/** + * Just checking that the Database or the files are in the correct version. + */ class MigrationCheck implements DiagnosticPipe { /** - * @param array $data list of error messages - * @param \Closure(array $data): array $next - * - * @return array + * {@inheritDoc} */ public function handle(array &$data, \Closure $next): array { diff --git a/app/Actions/Diagnostics/Pipes/Checks/PHPVersionCheck.php b/app/Actions/Diagnostics/Pipes/Checks/PHPVersionCheck.php index f829dea08bc..276edbacc19 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/PHPVersionCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/PHPVersionCheck.php @@ -4,6 +4,9 @@ use App\Contracts\DiagnosticPipe; +/** + * We want to make sure that our users are using the correct version of PHP. + */ class PHPVersionCheck implements DiagnosticPipe { // We only support the actively supported version of php. @@ -12,6 +15,9 @@ class PHPVersionCheck implements DiagnosticPipe public const PHP_WARNING = 8.1; public const PHP_LATEST = 8.2; + /** + * {@inheritDoc} + */ public function handle(array &$data, \Closure $next): array { $this->checkPhpVersion($data); diff --git a/app/Actions/Diagnostics/Pipes/Checks/TimezoneCheck.php b/app/Actions/Diagnostics/Pipes/Checks/TimezoneCheck.php index 856cc61d0a2..aee354836af 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/TimezoneCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/TimezoneCheck.php @@ -5,8 +5,14 @@ use App\Contracts\DiagnosticPipe; use Carbon\CarbonTimeZone; +/** + * quick check that the Timezone has been set. + */ class TimezoneCheck implements DiagnosticPipe { + /** + * {@inheritDoc} + */ public function handle(array &$data, \Closure $next): array { $timezone = CarbonTimeZone::create(); diff --git a/app/Actions/Diagnostics/Pipes/Checks/UpdatableCheck.php b/app/Actions/Diagnostics/Pipes/Checks/UpdatableCheck.php index 1dcbeda34f6..7b70ea97f10 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/UpdatableCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/UpdatableCheck.php @@ -13,6 +13,9 @@ use App\Models\Configs; use function Safe\exec; +/** + * Check whether or not it is possible to update this installation. + */ class UpdatableCheck implements DiagnosticPipe { private InstalledVersion $installedVersion; diff --git a/app/Actions/Diagnostics/Pipes/Infos/CountForeignKeyInfo.php b/app/Actions/Diagnostics/Pipes/Infos/CountForeignKeyInfo.php index c9a165f841a..37fbdaf12a3 100644 --- a/app/Actions/Diagnostics/Pipes/Infos/CountForeignKeyInfo.php +++ b/app/Actions/Diagnostics/Pipes/Infos/CountForeignKeyInfo.php @@ -6,8 +6,14 @@ use App\Contracts\DiagnosticPipe; use Illuminate\Support\Facades\DB; +/** + * Instead of listing all Foreign key as in the Errors, we just check their number. + */ class CountForeignKeyInfo implements DiagnosticPipe { + /** + * {@inheritDoc} + */ public function handle(array &$data, \Closure $next): array { match (DB::getDriverName()) { diff --git a/app/Actions/Diagnostics/Pipes/Infos/ExtensionsInfo.php b/app/Actions/Diagnostics/Pipes/Infos/ExtensionsInfo.php index dad1d295174..e756abc8611 100644 --- a/app/Actions/Diagnostics/Pipes/Infos/ExtensionsInfo.php +++ b/app/Actions/Diagnostics/Pipes/Infos/ExtensionsInfo.php @@ -7,8 +7,14 @@ use App\Facades\Helpers; use App\Models\Configs; +/** + * Info on what image processing we have available. + */ class ExtensionsInfo implements DiagnosticPipe { + /** + * {@inheritDoc} + */ public function handle(array &$data, \Closure $next): array { // Load settings diff --git a/app/Actions/Diagnostics/Pipes/Infos/InstallTypeInfo.php b/app/Actions/Diagnostics/Pipes/Infos/InstallTypeInfo.php index 9d311e17e7d..24ea30184a6 100644 --- a/app/Actions/Diagnostics/Pipes/Infos/InstallTypeInfo.php +++ b/app/Actions/Diagnostics/Pipes/Infos/InstallTypeInfo.php @@ -7,6 +7,10 @@ use App\Metadata\Versions\InstalledVersion; use Illuminate\Support\Facades\Config; +/** + * What kind of Lychee install we are looking at? + * Composer? Dev? Release? + */ class InstallTypeInfo implements DiagnosticPipe { private InstalledVersion $installedVersion; @@ -16,6 +20,9 @@ public function __construct(InstalledVersion $installedVersion) $this->installedVersion = $installedVersion; } + /** + * {@inheritDoc} + */ public function handle(array &$data, \Closure $next): array { $data[] = Diagnostics::line('composer install:', $this->installedVersion->isDev() ? 'dev' : '--no-dev'); diff --git a/app/Actions/Diagnostics/Pipes/Infos/SystemInfo.php b/app/Actions/Diagnostics/Pipes/Infos/SystemInfo.php index 9b3d8daacd7..ac35ab4d37b 100644 --- a/app/Actions/Diagnostics/Pipes/Infos/SystemInfo.php +++ b/app/Actions/Diagnostics/Pipes/Infos/SystemInfo.php @@ -9,8 +9,14 @@ use Illuminate\Support\Facades\DB; use function Safe\ini_get; +/** + * What system are we running on? + */ class SystemInfo implements DiagnosticPipe { + /** + * {@inheritDoc} + */ public function handle(array &$data, \Closure $next): array { // About SQL version diff --git a/app/Actions/Diagnostics/Pipes/Infos/VersionInfo.php b/app/Actions/Diagnostics/Pipes/Infos/VersionInfo.php index dc2bc33e841..539bfc3a1aa 100644 --- a/app/Actions/Diagnostics/Pipes/Infos/VersionInfo.php +++ b/app/Actions/Diagnostics/Pipes/Infos/VersionInfo.php @@ -9,6 +9,9 @@ use App\Metadata\Versions\GitHubVersion; use App\Metadata\Versions\InstalledVersion; +/** + * Which version of Lychee are we using? + */ class VersionInfo implements DiagnosticPipe { private InstalledVersion $installedVersion; @@ -19,6 +22,9 @@ public function __construct( $this->installedVersion = $installedVersion; } + /** + * {@inheritDoc} + */ public function handle(array &$data, \Closure $next): array { if ($this->installedVersion->isRelease()) { diff --git a/app/Actions/InstallUpdate/Pipes/AbstractUpdateInstallerPipe.php b/app/Actions/InstallUpdate/Pipes/AbstractUpdateInstallerPipe.php index e7bcb1ee745..81974c99753 100644 --- a/app/Actions/InstallUpdate/Pipes/AbstractUpdateInstallerPipe.php +++ b/app/Actions/InstallUpdate/Pipes/AbstractUpdateInstallerPipe.php @@ -5,7 +5,7 @@ abstract class AbstractUpdateInstallerPipe { /** - * @param array &$output + * @param array &$output * @param \Closure(array $output): array $next * * @return array diff --git a/app/Contracts/DiagnosticPipe.php b/app/Contracts/DiagnosticPipe.php index 399a7b9295f..a5e5099258d 100644 --- a/app/Contracts/DiagnosticPipe.php +++ b/app/Contracts/DiagnosticPipe.php @@ -11,7 +11,7 @@ interface DiagnosticPipe { /** - * @param array &$data + * @param array &$data * @param \Closure(array $data): array $next * * @return array diff --git a/composer.lock b/composer.lock index 68ad1b42c62..3296ec4d213 100644 --- a/composer.lock +++ b/composer.lock @@ -375,16 +375,16 @@ }, { "name": "doctrine/dbal", - "version": "3.6.4", + "version": "3.6.5", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "19f0dec95edd6a3c3c5ff1d188ea94c6b7fc903f" + "reference": "96d5a70fd91efdcec81fc46316efc5bf3da17ddf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/19f0dec95edd6a3c3c5ff1d188ea94c6b7fc903f", - "reference": "19f0dec95edd6a3c3c5ff1d188ea94c6b7fc903f", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/96d5a70fd91efdcec81fc46316efc5bf3da17ddf", + "reference": "96d5a70fd91efdcec81fc46316efc5bf3da17ddf", "shasum": "" }, "require": { @@ -399,10 +399,10 @@ "require-dev": { "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", - "jetbrains/phpstorm-stubs": "2022.3", - "phpstan/phpstan": "1.10.14", + "jetbrains/phpstorm-stubs": "2023.1", + "phpstan/phpstan": "1.10.21", "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "9.6.7", + "phpunit/phpunit": "9.6.9", "psalm/plugin-phpunit": "0.18.4", "squizlabs/php_codesniffer": "3.7.2", "symfony/cache": "^5.4|^6.0", @@ -467,7 +467,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.6.4" + "source": "https://github.com/doctrine/dbal/tree/3.6.5" }, "funding": [ { @@ -483,7 +483,7 @@ "type": "tidelift" } ], - "time": "2023-06-15T07:40:12+00:00" + "time": "2023-07-17T09:15:50+00:00" }, { "name": "doctrine/deprecations", @@ -2041,16 +2041,16 @@ }, { "name": "laravel/framework", - "version": "v10.14.1", + "version": "v10.17.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "6f89a2b74b232d8bf2e1d9ed87e311841263dfcb" + "reference": "a0e3f5ac5b6258f6ede9a2a2c5cc3820baea24a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/6f89a2b74b232d8bf2e1d9ed87e311841263dfcb", - "reference": "6f89a2b74b232d8bf2e1d9ed87e311841263dfcb", + "url": "https://api.github.com/repos/laravel/framework/zipball/a0e3f5ac5b6258f6ede9a2a2c5cc3820baea24a2", + "reference": "a0e3f5ac5b6258f6ede9a2a2c5cc3820baea24a2", "shasum": "" }, "require": { @@ -2068,11 +2068,12 @@ "ext-tokenizer": "*", "fruitcake/php-cors": "^1.2", "guzzlehttp/uri-template": "^1.0", + "laravel/prompts": "^0.1", "laravel/serializable-closure": "^1.3", "league/commonmark": "^2.2.1", "league/flysystem": "^3.8.0", "monolog/monolog": "^3.0", - "nesbot/carbon": "^2.62.1", + "nesbot/carbon": "^2.67", "nunomaduro/termwind": "^1.13", "php": "^8.1", "psr/container": "^1.1.1|^2.0.1", @@ -2151,7 +2152,6 @@ "mockery/mockery": "^1.5.1", "orchestra/testbench-core": "^8.4", "pda/pheanstalk": "^4.0", - "phpstan/phpdoc-parser": "^1.15", "phpstan/phpstan": "^1.4.7", "phpunit/phpunit": "^10.0.7", "predis/predis": "^2.0.2", @@ -2237,20 +2237,68 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-06-28T14:25:16+00:00" + "time": "2023-08-01T14:08:45+00:00" + }, + { + "name": "laravel/prompts", + "version": "v0.1.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/prompts.git", + "reference": "309b30157090a63c40152aa912d198d6aeb60ea6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/prompts/zipball/309b30157090a63c40152aa912d198d6aeb60ea6", + "reference": "309b30157090a63c40152aa912d198d6aeb60ea6", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "illuminate/collections": "^10.0", + "php": "^8.1", + "symfony/console": "^6.2" + }, + "require-dev": { + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3", + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-mockery": "^1.1" + }, + "suggest": { + "ext-pcntl": "Required for the spinner to be animated." + }, + "type": "library", + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Laravel\\Prompts\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "support": { + "issues": "https://github.com/laravel/prompts/issues", + "source": "https://github.com/laravel/prompts/tree/v0.1.1" + }, + "time": "2023-07-31T15:03:02+00:00" }, { "name": "laravel/serializable-closure", - "version": "v1.3.0", + "version": "v1.3.1", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "f23fe9d4e95255dacee1bf3525e0810d1a1b0f37" + "reference": "e5a3057a5591e1cfe8183034b0203921abe2c902" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/f23fe9d4e95255dacee1bf3525e0810d1a1b0f37", - "reference": "f23fe9d4e95255dacee1bf3525e0810d1a1b0f37", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/e5a3057a5591e1cfe8183034b0203921abe2c902", + "reference": "e5a3057a5591e1cfe8183034b0203921abe2c902", "shasum": "" }, "require": { @@ -2297,7 +2345,7 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2023-01-30T18:31:20+00:00" + "time": "2023-07-14T13:56:28+00:00" }, { "name": "league/commonmark", @@ -3092,16 +3140,16 @@ }, { "name": "nesbot/carbon", - "version": "2.67.0", + "version": "2.68.1", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "c1001b3bc75039b07f38a79db5237c4c529e04c8" + "reference": "4f991ed2a403c85efbc4f23eb4030063fdbe01da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/c1001b3bc75039b07f38a79db5237c4c529e04c8", - "reference": "c1001b3bc75039b07f38a79db5237c4c529e04c8", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4f991ed2a403c85efbc4f23eb4030063fdbe01da", + "reference": "4f991ed2a403c85efbc4f23eb4030063fdbe01da", "shasum": "" }, "require": { @@ -3190,7 +3238,7 @@ "type": "tidelift" } ], - "time": "2023-05-25T22:09:47+00:00" + "time": "2023-06-20T18:29:04+00:00" }, { "name": "nette/schema", @@ -3256,20 +3304,20 @@ }, { "name": "nette/utils", - "version": "v4.0.0", + "version": "v4.0.1", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "cacdbf5a91a657ede665c541eda28941d4b09c1e" + "reference": "9124157137da01b1f5a5a22d6486cb975f26db7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/cacdbf5a91a657ede665c541eda28941d4b09c1e", - "reference": "cacdbf5a91a657ede665c541eda28941d4b09c1e", + "url": "https://api.github.com/repos/nette/utils/zipball/9124157137da01b1f5a5a22d6486cb975f26db7e", + "reference": "9124157137da01b1f5a5a22d6486cb975f26db7e", "shasum": "" }, "require": { - "php": ">=8.0 <8.3" + "php": ">=8.0 <8.4" }, "conflict": { "nette/finder": "<3", @@ -3277,7 +3325,7 @@ }, "require-dev": { "jetbrains/phpstorm-attributes": "dev-master", - "nette/tester": "^2.4", + "nette/tester": "^2.5", "phpstan/phpstan": "^1.0", "tracy/tracy": "^2.9" }, @@ -3337,9 +3385,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.0" + "source": "https://github.com/nette/utils/tree/v4.0.1" }, - "time": "2023-02-02T10:41:53+00:00" + "time": "2023-07-30T15:42:21+00:00" }, { "name": "nunomaduro/termwind", @@ -3614,16 +3662,16 @@ }, { "name": "php-http/discovery", - "version": "1.19.0", + "version": "1.19.1", "source": { "type": "git", "url": "https://github.com/php-http/discovery.git", - "reference": "1856a119a0b0ba8da8b5c33c080aa7af8fac25b4" + "reference": "57f3de01d32085fea20865f9b16fb0e69347c39e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/discovery/zipball/1856a119a0b0ba8da8b5c33c080aa7af8fac25b4", - "reference": "1856a119a0b0ba8da8b5c33c080aa7af8fac25b4", + "url": "https://api.github.com/repos/php-http/discovery/zipball/57f3de01d32085fea20865f9b16fb0e69347c39e", + "reference": "57f3de01d32085fea20865f9b16fb0e69347c39e", "shasum": "" }, "require": { @@ -3686,9 +3734,9 @@ ], "support": { "issues": "https://github.com/php-http/discovery/issues", - "source": "https://github.com/php-http/discovery/tree/1.19.0" + "source": "https://github.com/php-http/discovery/tree/1.19.1" }, - "time": "2023-06-19T08:45:36+00:00" + "time": "2023-07-11T07:02:26+00:00" }, { "name": "php-http/guzzle7-adapter", @@ -4752,16 +4800,16 @@ }, { "name": "spatie/image-optimizer", - "version": "1.6.4", + "version": "1.7.1", "source": { "type": "git", "url": "https://github.com/spatie/image-optimizer.git", - "reference": "d997e01ba980b2769ddca2f00badd3b80c2a2512" + "reference": "af179994e2d2413e4b3ba2d348d06b4eaddbeb30" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/image-optimizer/zipball/d997e01ba980b2769ddca2f00badd3b80c2a2512", - "reference": "d997e01ba980b2769ddca2f00badd3b80c2a2512", + "url": "https://api.github.com/repos/spatie/image-optimizer/zipball/af179994e2d2413e4b3ba2d348d06b4eaddbeb30", + "reference": "af179994e2d2413e4b3ba2d348d06b4eaddbeb30", "shasum": "" }, "require": { @@ -4801,9 +4849,9 @@ ], "support": { "issues": "https://github.com/spatie/image-optimizer/issues", - "source": "https://github.com/spatie/image-optimizer/tree/1.6.4" + "source": "https://github.com/spatie/image-optimizer/tree/1.7.1" }, - "time": "2023-03-10T08:43:19+00:00" + "time": "2023-07-27T07:57:32+00:00" }, { "name": "spatie/laravel-feed", @@ -5089,16 +5137,16 @@ }, { "name": "symfony/cache", - "version": "v6.3.1", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "52cff7608ef6e38376ac11bd1fbb0a220107f066" + "reference": "d176b97600860df13e851538c2df2ad88e9e5ca9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/52cff7608ef6e38376ac11bd1fbb0a220107f066", - "reference": "52cff7608ef6e38376ac11bd1fbb0a220107f066", + "url": "https://api.github.com/repos/symfony/cache/zipball/d176b97600860df13e851538c2df2ad88e9e5ca9", + "reference": "d176b97600860df13e851538c2df2ad88e9e5ca9", "shasum": "" }, "require": { @@ -5165,7 +5213,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.3.1" + "source": "https://github.com/symfony/cache/tree/v6.3.2" }, "funding": [ { @@ -5181,7 +5229,7 @@ "type": "tidelift" } ], - "time": "2023-06-24T11:51:27+00:00" + "time": "2023-07-27T16:19:14+00:00" }, { "name": "symfony/cache-contracts", @@ -5261,16 +5309,16 @@ }, { "name": "symfony/console", - "version": "v6.3.0", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7" + "reference": "aa5d64ad3f63f2e48964fc81ee45cb318a723898" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7", - "reference": "8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7", + "url": "https://api.github.com/repos/symfony/console/zipball/aa5d64ad3f63f2e48964fc81ee45cb318a723898", + "reference": "aa5d64ad3f63f2e48964fc81ee45cb318a723898", "shasum": "" }, "require": { @@ -5331,7 +5379,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.3.0" + "source": "https://github.com/symfony/console/tree/v6.3.2" }, "funding": [ { @@ -5347,20 +5395,20 @@ "type": "tidelift" } ], - "time": "2023-05-29T12:49:39+00:00" + "time": "2023-07-19T20:17:28+00:00" }, { "name": "symfony/css-selector", - "version": "v6.3.0", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "88453e64cd86c5b60e8d2fb2c6f953bbc353ffbf" + "reference": "883d961421ab1709877c10ac99451632a3d6fa57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/88453e64cd86c5b60e8d2fb2c6f953bbc353ffbf", - "reference": "88453e64cd86c5b60e8d2fb2c6f953bbc353ffbf", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/883d961421ab1709877c10ac99451632a3d6fa57", + "reference": "883d961421ab1709877c10ac99451632a3d6fa57", "shasum": "" }, "require": { @@ -5396,7 +5444,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.3.0" + "source": "https://github.com/symfony/css-selector/tree/v6.3.2" }, "funding": [ { @@ -5412,7 +5460,7 @@ "type": "tidelift" } ], - "time": "2023-03-20T16:43:42+00:00" + "time": "2023-07-12T16:00:22+00:00" }, { "name": "symfony/deprecation-contracts", @@ -5483,16 +5531,16 @@ }, { "name": "symfony/error-handler", - "version": "v6.3.0", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "99d2d814a6351461af350ead4d963bd67451236f" + "reference": "85fd65ed295c4078367c784e8a5a6cee30348b7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/99d2d814a6351461af350ead4d963bd67451236f", - "reference": "99d2d814a6351461af350ead4d963bd67451236f", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/85fd65ed295c4078367c784e8a5a6cee30348b7a", + "reference": "85fd65ed295c4078367c784e8a5a6cee30348b7a", "shasum": "" }, "require": { @@ -5537,7 +5585,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.3.0" + "source": "https://github.com/symfony/error-handler/tree/v6.3.2" }, "funding": [ { @@ -5553,20 +5601,20 @@ "type": "tidelift" } ], - "time": "2023-05-10T12:03:13+00:00" + "time": "2023-07-16T17:05:46+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.3.0", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa" + "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa", - "reference": "3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/adb01fe097a4ee930db9258a3cc906b5beb5cf2e", + "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e", "shasum": "" }, "require": { @@ -5617,7 +5665,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.2" }, "funding": [ { @@ -5633,7 +5681,7 @@ "type": "tidelift" } ], - "time": "2023-04-21T14:41:17+00:00" + "time": "2023-07-06T06:56:43+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -5713,16 +5761,16 @@ }, { "name": "symfony/finder", - "version": "v6.3.0", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "d9b01ba073c44cef617c7907ce2419f8d00d75e2" + "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/d9b01ba073c44cef617c7907ce2419f8d00d75e2", - "reference": "d9b01ba073c44cef617c7907ce2419f8d00d75e2", + "url": "https://api.github.com/repos/symfony/finder/zipball/9915db259f67d21eefee768c1abcf1cc61b1fc9e", + "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e", "shasum": "" }, "require": { @@ -5757,7 +5805,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.3.0" + "source": "https://github.com/symfony/finder/tree/v6.3.3" }, "funding": [ { @@ -5773,20 +5821,20 @@ "type": "tidelift" } ], - "time": "2023-04-02T01:25:41+00:00" + "time": "2023-07-31T08:31:44+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.3.1", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "e0ad0d153e1c20069250986cd9e9dd1ccebb0d66" + "reference": "43ed99d30f5f466ffa00bdac3f5f7aa9cd7617c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e0ad0d153e1c20069250986cd9e9dd1ccebb0d66", - "reference": "e0ad0d153e1c20069250986cd9e9dd1ccebb0d66", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/43ed99d30f5f466ffa00bdac3f5f7aa9cd7617c3", + "reference": "43ed99d30f5f466ffa00bdac3f5f7aa9cd7617c3", "shasum": "" }, "require": { @@ -5834,7 +5882,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.3.1" + "source": "https://github.com/symfony/http-foundation/tree/v6.3.2" }, "funding": [ { @@ -5850,20 +5898,20 @@ "type": "tidelift" } ], - "time": "2023-06-24T11:51:27+00:00" + "time": "2023-07-23T21:58:39+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.3.1", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "161e16fd2e35fb4881a43bc8b383dfd5be4ac374" + "reference": "d3b567f0addf695e10b0c6d57564a9bea2e058ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/161e16fd2e35fb4881a43bc8b383dfd5be4ac374", - "reference": "161e16fd2e35fb4881a43bc8b383dfd5be4ac374", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/d3b567f0addf695e10b0c6d57564a9bea2e058ee", + "reference": "d3b567f0addf695e10b0c6d57564a9bea2e058ee", "shasum": "" }, "require": { @@ -5947,7 +5995,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.3.1" + "source": "https://github.com/symfony/http-kernel/tree/v6.3.3" }, "funding": [ { @@ -5963,7 +6011,7 @@ "type": "tidelift" } ], - "time": "2023-06-26T06:07:32+00:00" + "time": "2023-07-31T10:33:00+00:00" }, { "name": "symfony/mailer", @@ -6047,20 +6095,21 @@ }, { "name": "symfony/mime", - "version": "v6.3.0", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "7b5d2121858cd6efbed778abce9cfdd7ab1f62ad" + "reference": "9a0cbd52baa5ba5a5b1f0cacc59466f194730f98" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/7b5d2121858cd6efbed778abce9cfdd7ab1f62ad", - "reference": "7b5d2121858cd6efbed778abce9cfdd7ab1f62ad", + "url": "https://api.github.com/repos/symfony/mime/zipball/9a0cbd52baa5ba5a5b1f0cacc59466f194730f98", + "reference": "9a0cbd52baa5ba5a5b1f0cacc59466f194730f98", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, @@ -6069,7 +6118,7 @@ "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", "symfony/mailer": "<5.4", - "symfony/serializer": "<6.2" + "symfony/serializer": "<6.2.13|>=6.3,<6.3.2" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", @@ -6078,7 +6127,7 @@ "symfony/dependency-injection": "^5.4|^6.0", "symfony/property-access": "^5.4|^6.0", "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^6.2" + "symfony/serializer": "~6.2.13|^6.3.2" }, "type": "library", "autoload": { @@ -6110,7 +6159,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.3.0" + "source": "https://github.com/symfony/mime/tree/v6.3.3" }, "funding": [ { @@ -6126,7 +6175,7 @@ "type": "tidelift" } ], - "time": "2023-04-28T15:57:00+00:00" + "time": "2023-07-31T07:08:24+00:00" }, { "name": "symfony/polyfill-ctype", @@ -6865,16 +6914,16 @@ }, { "name": "symfony/process", - "version": "v6.3.0", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "8741e3ed7fe2e91ec099e02446fb86667a0f1628" + "reference": "c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/8741e3ed7fe2e91ec099e02446fb86667a0f1628", - "reference": "8741e3ed7fe2e91ec099e02446fb86667a0f1628", + "url": "https://api.github.com/repos/symfony/process/zipball/c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d", + "reference": "c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d", "shasum": "" }, "require": { @@ -6906,7 +6955,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.3.0" + "source": "https://github.com/symfony/process/tree/v6.3.2" }, "funding": [ { @@ -6922,24 +6971,25 @@ "type": "tidelift" } ], - "time": "2023-05-19T08:06:44+00:00" + "time": "2023-07-12T16:00:22+00:00" }, { "name": "symfony/routing", - "version": "v6.3.1", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "d37ad1779c38b8eb71996d17dc13030dcb7f9cf5" + "reference": "e7243039ab663822ff134fbc46099b5fdfa16f6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/d37ad1779c38b8eb71996d17dc13030dcb7f9cf5", - "reference": "d37ad1779c38b8eb71996d17dc13030dcb7f9cf5", + "url": "https://api.github.com/repos/symfony/routing/zipball/e7243039ab663822ff134fbc46099b5fdfa16f6a", + "reference": "e7243039ab663822ff134fbc46099b5fdfa16f6a", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { "doctrine/annotations": "<1.12", @@ -6988,7 +7038,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.3.1" + "source": "https://github.com/symfony/routing/tree/v6.3.3" }, "funding": [ { @@ -7004,7 +7054,7 @@ "type": "tidelift" } ], - "time": "2023-06-05T15:30:22+00:00" + "time": "2023-07-31T07:08:24+00:00" }, { "name": "symfony/service-contracts", @@ -7091,16 +7141,16 @@ }, { "name": "symfony/string", - "version": "v6.3.0", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "f2e190ee75ff0f5eced645ec0be5c66fac81f51f" + "reference": "53d1a83225002635bca3482fcbf963001313fb68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/f2e190ee75ff0f5eced645ec0be5c66fac81f51f", - "reference": "f2e190ee75ff0f5eced645ec0be5c66fac81f51f", + "url": "https://api.github.com/repos/symfony/string/zipball/53d1a83225002635bca3482fcbf963001313fb68", + "reference": "53d1a83225002635bca3482fcbf963001313fb68", "shasum": "" }, "require": { @@ -7157,7 +7207,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.3.0" + "source": "https://github.com/symfony/string/tree/v6.3.2" }, "funding": [ { @@ -7173,24 +7223,25 @@ "type": "tidelift" } ], - "time": "2023-03-21T21:06:29+00:00" + "time": "2023-07-05T08:41:27+00:00" }, { "name": "symfony/translation", - "version": "v6.3.0", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "f72b2cba8f79dd9d536f534f76874b58ad37876f" + "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/f72b2cba8f79dd9d536f534f76874b58ad37876f", - "reference": "f72b2cba8f79dd9d536f534f76874b58ad37876f", + "url": "https://api.github.com/repos/symfony/translation/zipball/3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", + "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/translation-contracts": "^2.5|^3.0" }, @@ -7251,7 +7302,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.3.0" + "source": "https://github.com/symfony/translation/tree/v6.3.3" }, "funding": [ { @@ -7267,7 +7318,7 @@ "type": "tidelift" } ], - "time": "2023-05-19T12:46:45+00:00" + "time": "2023-07-31T07:08:24+00:00" }, { "name": "symfony/translation-contracts", @@ -7423,20 +7474,21 @@ }, { "name": "symfony/var-dumper", - "version": "v6.3.1", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "c81268d6960ddb47af17391a27d222bd58cf0515" + "reference": "77fb4f2927f6991a9843633925d111147449ee7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c81268d6960ddb47af17391a27d222bd58cf0515", - "reference": "c81268d6960ddb47af17391a27d222bd58cf0515", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/77fb4f2927f6991a9843633925d111147449ee7a", + "reference": "77fb4f2927f6991a9843633925d111147449ee7a", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { @@ -7445,6 +7497,7 @@ "require-dev": { "ext-iconv": "*", "symfony/console": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", "symfony/process": "^5.4|^6.0", "symfony/uid": "^5.4|^6.0", "twig/twig": "^2.13|^3.0.4" @@ -7485,7 +7538,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.3.1" + "source": "https://github.com/symfony/var-dumper/tree/v6.3.3" }, "funding": [ { @@ -7501,20 +7554,20 @@ "type": "tidelift" } ], - "time": "2023-06-21T12:08:28+00:00" + "time": "2023-07-31T07:08:24+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.3.0", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "db5416d04269f2827d8c54331ba4cfa42620d350" + "reference": "3400949782c0cb5b3e73aa64cfd71dde000beccc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/db5416d04269f2827d8c54331ba4cfa42620d350", - "reference": "db5416d04269f2827d8c54331ba4cfa42620d350", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/3400949782c0cb5b3e73aa64cfd71dde000beccc", + "reference": "3400949782c0cb5b3e73aa64cfd71dde000beccc", "shasum": "" }, "require": { @@ -7559,7 +7612,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.3.0" + "source": "https://github.com/symfony/var-exporter/tree/v6.3.2" }, "funding": [ { @@ -7575,7 +7628,7 @@ "type": "tidelift" } ], - "time": "2023-04-21T08:48:44+00:00" + "time": "2023-07-26T17:39:03+00:00" }, { "name": "thecodingmachine/safe", @@ -8051,16 +8104,16 @@ "packages-dev": [ { "name": "barryvdh/laravel-debugbar", - "version": "v3.8.1", + "version": "v3.8.2", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-debugbar.git", - "reference": "aff3235fecb4104203b1e62c32239c56530eee32" + "reference": "56a2dc1da9d3219164074713983eef68996386cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/aff3235fecb4104203b1e62c32239c56530eee32", - "reference": "aff3235fecb4104203b1e62c32239c56530eee32", + "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/56a2dc1da9d3219164074713983eef68996386cf", + "reference": "56a2dc1da9d3219164074713983eef68996386cf", "shasum": "" }, "require": { @@ -8119,7 +8172,7 @@ ], "support": { "issues": "https://github.com/barryvdh/laravel-debugbar/issues", - "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.8.1" + "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.8.2" }, "funding": [ { @@ -8131,7 +8184,7 @@ "type": "github" } ], - "time": "2023-02-21T14:21:02+00:00" + "time": "2023-07-26T04:57:49+00:00" }, { "name": "barryvdh/laravel-ide-helper", @@ -8229,16 +8282,16 @@ }, { "name": "barryvdh/reflection-docblock", - "version": "v2.1.0", + "version": "v2.1.1", "source": { "type": "git", "url": "https://github.com/barryvdh/ReflectionDocBlock.git", - "reference": "bf44b757feb8ba1734659029357646466ded673e" + "reference": "e6811e927f0ecc37cc4deaa6627033150343e597" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/bf44b757feb8ba1734659029357646466ded673e", - "reference": "bf44b757feb8ba1734659029357646466ded673e", + "url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/e6811e927f0ecc37cc4deaa6627033150343e597", + "reference": "e6811e927f0ecc37cc4deaa6627033150343e597", "shasum": "" }, "require": { @@ -8275,28 +8328,28 @@ } ], "support": { - "source": "https://github.com/barryvdh/ReflectionDocBlock/tree/v2.1.0" + "source": "https://github.com/barryvdh/ReflectionDocBlock/tree/v2.1.1" }, - "time": "2022-10-31T15:35:43+00:00" + "time": "2023-06-14T05:06:27+00:00" }, { "name": "composer/class-map-generator", - "version": "1.0.0", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/composer/class-map-generator.git", - "reference": "1e1cb2b791facb2dfe32932a7718cf2571187513" + "reference": "953cc4ea32e0c31f2185549c7d216d7921f03da9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/class-map-generator/zipball/1e1cb2b791facb2dfe32932a7718cf2571187513", - "reference": "1e1cb2b791facb2dfe32932a7718cf2571187513", + "url": "https://api.github.com/repos/composer/class-map-generator/zipball/953cc4ea32e0c31f2185549c7d216d7921f03da9", + "reference": "953cc4ea32e0c31f2185549c7d216d7921f03da9", "shasum": "" }, "require": { - "composer/pcre": "^2 || ^3", + "composer/pcre": "^2.1 || ^3.1", "php": "^7.2 || ^8.0", - "symfony/finder": "^4.4 || ^5.3 || ^6" + "symfony/finder": "^4.4 || ^5.3 || ^6 || ^7" }, "require-dev": { "phpstan/phpstan": "^1.6", @@ -8334,7 +8387,7 @@ ], "support": { "issues": "https://github.com/composer/class-map-generator/issues", - "source": "https://github.com/composer/class-map-generator/tree/1.0.0" + "source": "https://github.com/composer/class-map-generator/tree/1.1.0" }, "funding": [ { @@ -8350,7 +8403,7 @@ "type": "tidelift" } ], - "time": "2022-06-19T11:31:27+00:00" + "time": "2023-06-30T13:58:57+00:00" }, { "name": "composer/pcre", @@ -8723,16 +8776,16 @@ }, { "name": "filp/whoops", - "version": "2.15.2", + "version": "2.15.3", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "aac9304c5ed61bf7b1b7a6064bf9806ab842ce73" + "reference": "c83e88a30524f9360b11f585f71e6b17313b7187" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/aac9304c5ed61bf7b1b7a6064bf9806ab842ce73", - "reference": "aac9304c5ed61bf7b1b7a6064bf9806ab842ce73", + "url": "https://api.github.com/repos/filp/whoops/zipball/c83e88a30524f9360b11f585f71e6b17313b7187", + "reference": "c83e88a30524f9360b11f585f71e6b17313b7187", "shasum": "" }, "require": { @@ -8782,7 +8835,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.15.2" + "source": "https://github.com/filp/whoops/tree/2.15.3" }, "funding": [ { @@ -8790,20 +8843,20 @@ "type": "github" } ], - "time": "2023-04-12T12:00:00+00:00" + "time": "2023-07-13T12:00:00+00:00" }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.20.0", + "version": "v3.22.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "0e8249e0b15e2bc022fbbd1090ce29d071481e69" + "reference": "92b019f6c8d79aa26349d0db7671d37440dc0ff3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/0e8249e0b15e2bc022fbbd1090ce29d071481e69", - "reference": "0e8249e0b15e2bc022fbbd1090ce29d071481e69", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/92b019f6c8d79aa26349d0db7671d37440dc0ff3", + "reference": "92b019f6c8d79aa26349d0db7671d37440dc0ff3", "shasum": "" }, "require": { @@ -8827,6 +8880,7 @@ "symfony/stopwatch": "^5.4 || ^6.0" }, "require-dev": { + "facile-it/paraunit": "^1.3 || ^2.0", "justinrainbow/json-schema": "^5.2", "keradus/cli-executor": "^2.0", "mikey179/vfsstream": "^1.6.11", @@ -8878,7 +8932,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.20.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.22.0" }, "funding": [ { @@ -8886,7 +8940,7 @@ "type": "github" } ], - "time": "2023-06-27T20:22:39+00:00" + "time": "2023-07-16T23:08:06+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -9124,37 +9178,33 @@ }, { "name": "mockery/mockery", - "version": "1.6.2", + "version": "1.6.4", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "13a7fa2642c76c58fa2806ef7f565344c817a191" + "reference": "d1413755e26fe56a63455f7753221c86cbb88f66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/13a7fa2642c76c58fa2806ef7f565344c817a191", - "reference": "13a7fa2642c76c58fa2806ef7f565344c817a191", + "url": "https://api.github.com/repos/mockery/mockery/zipball/d1413755e26fe56a63455f7753221c86cbb88f66", + "reference": "d1413755e26fe56a63455f7753221c86cbb88f66", "shasum": "" }, "require": { "hamcrest/hamcrest-php": "^2.0.1", "lib-pcre": ">=7.0", - "php": "^7.4 || ^8.0" + "php": ">=7.4,<8.3" }, "conflict": { "phpunit/phpunit": "<8.0" }, "require-dev": { "phpunit/phpunit": "^8.5 || ^9.3", - "psalm/plugin-phpunit": "^0.18", - "vimeo/psalm": "^5.9" + "psalm/plugin-phpunit": "^0.18.4", + "symplify/easy-coding-standard": "^11.5.0", + "vimeo/psalm": "^5.13.1" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.6.x-dev" - } - }, "autoload": { "files": [ "library/helpers.php", @@ -9172,12 +9222,20 @@ { "name": "Pádraic Brady", "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" + "homepage": "https://github.com/padraic", + "role": "Author" }, { "name": "Dave Marshall", "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" } ], "description": "Mockery is a simple yet flexible PHP mock object framework", @@ -9195,10 +9253,13 @@ "testing" ], "support": { + "docs": "https://docs.mockery.io/", "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.6.2" + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" }, - "time": "2023-06-07T09:07:52+00:00" + "time": "2023-07-19T15:51:02+00:00" }, { "name": "myclabs/deep-copy", @@ -9317,16 +9378,16 @@ }, { "name": "nunomaduro/larastan", - "version": "v2.6.3", + "version": "v2.6.4", "source": { "type": "git", "url": "https://github.com/nunomaduro/larastan.git", - "reference": "73e5be5f5c732212ce6ca77ffd2753a136f36a23" + "reference": "6c5e8820f3db6397546f3ce48520af9d312aed27" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/larastan/zipball/73e5be5f5c732212ce6ca77ffd2753a136f36a23", - "reference": "73e5be5f5c732212ce6ca77ffd2753a136f36a23", + "url": "https://api.github.com/repos/nunomaduro/larastan/zipball/6c5e8820f3db6397546f3ce48520af9d312aed27", + "reference": "6c5e8820f3db6397546f3ce48520af9d312aed27", "shasum": "" }, "require": { @@ -9389,7 +9450,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/larastan/issues", - "source": "https://github.com/nunomaduro/larastan/tree/v2.6.3" + "source": "https://github.com/nunomaduro/larastan/tree/v2.6.4" }, "funding": [ { @@ -9409,7 +9470,7 @@ "type": "patreon" } ], - "time": "2023-06-13T21:39:27+00:00" + "time": "2023-07-29T12:13:13+00:00" }, { "name": "phar-io/manifest", @@ -9779,16 +9840,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.22.0", + "version": "1.23.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "ec58baf7b3c7f1c81b3b00617c953249fb8cf30c" + "reference": "a2b24135c35852b348894320d47b3902a94bc494" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/ec58baf7b3c7f1c81b3b00617c953249fb8cf30c", - "reference": "ec58baf7b3c7f1c81b3b00617c953249fb8cf30c", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/a2b24135c35852b348894320d47b3902a94bc494", + "reference": "a2b24135c35852b348894320d47b3902a94bc494", "shasum": "" }, "require": { @@ -9820,22 +9881,22 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.22.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.23.0" }, - "time": "2023-06-01T12:35:21+00:00" + "time": "2023-07-23T22:17:56+00:00" }, { "name": "phpstan/phpstan", - "version": "1.10.21", + "version": "1.10.26", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "b2a30186be2e4d97dce754ae4e65eb0ec2f04eb5" + "reference": "5d660cbb7e1b89253a47147ae44044f49832351f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/b2a30186be2e4d97dce754ae4e65eb0ec2f04eb5", - "reference": "b2a30186be2e4d97dce754ae4e65eb0ec2f04eb5", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/5d660cbb7e1b89253a47147ae44044f49832351f", + "reference": "5d660cbb7e1b89253a47147ae44044f49832351f", "shasum": "" }, "require": { @@ -9884,7 +9945,7 @@ "type": "tidelift" } ], - "time": "2023-06-21T20:07:58+00:00" + "time": "2023-07-19T12:44:37+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", @@ -9985,16 +10046,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "10.1.2", + "version": "10.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "db1497ec8dd382e82c962f7abbe0320e4882ee4e" + "reference": "be1fe461fdc917de2a29a452ccf2657d325b443d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/db1497ec8dd382e82c962f7abbe0320e4882ee4e", - "reference": "db1497ec8dd382e82c962f7abbe0320e4882ee4e", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/be1fe461fdc917de2a29a452ccf2657d325b443d", + "reference": "be1fe461fdc917de2a29a452ccf2657d325b443d", "shasum": "" }, "require": { @@ -10051,7 +10112,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.2" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.3" }, "funding": [ { @@ -10059,7 +10120,7 @@ "type": "github" } ], - "time": "2023-05-22T09:04:27+00:00" + "time": "2023-07-26T13:45:28+00:00" }, { "name": "phpunit/php-file-iterator", @@ -10305,16 +10366,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.2.2", + "version": "10.2.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "1ab521b24b88b88310c40c26c0cc4a94ba40ff95" + "reference": "1c17815c129f133f3019cc18e8d0c8622e6d9bcd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1ab521b24b88b88310c40c26c0cc4a94ba40ff95", - "reference": "1ab521b24b88b88310c40c26c0cc4a94ba40ff95", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1c17815c129f133f3019cc18e8d0c8622e6d9bcd", + "reference": "1c17815c129f133f3019cc18e8d0c8622e6d9bcd", "shasum": "" }, "require": { @@ -10386,7 +10447,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.2.2" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.2.6" }, "funding": [ { @@ -10402,7 +10463,7 @@ "type": "tidelift" } ], - "time": "2023-06-11T06:15:20+00:00" + "time": "2023-07-17T12:08:28+00:00" }, { "name": "sebastian/cli-parser", @@ -10914,16 +10975,16 @@ }, { "name": "sebastian/global-state", - "version": "6.0.0", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "aab257c712de87b90194febd52e4d184551c2d44" + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/aab257c712de87b90194febd52e4d184551c2d44", - "reference": "aab257c712de87b90194febd52e4d184551c2d44", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4", "shasum": "" }, "require": { @@ -10963,7 +11024,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.0" + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1" }, "funding": [ { @@ -10971,7 +11033,7 @@ "type": "github" } ], - "time": "2023-02-03T07:07:38+00:00" + "time": "2023-07-19T07:19:23+00:00" }, { "name": "sebastian/lines-of-code", From c423625902fbaea747a1d2d75cbafb9316cc9fcc Mon Sep 17 00:00:00 2001 From: caminsha <31421093+caminsha@users.noreply.github.com> Date: Thu, 3 Aug 2023 08:09:24 +0200 Subject: [PATCH 023/209] Change two German translations (#1963) I updated two text strings which were not translated to German. --- lang/de/lychee.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lang/de/lychee.php b/lang/de/lychee.php index ce32425fae1..514bf4c18ab 100644 --- a/lang/de/lychee.php +++ b/lang/de/lychee.php @@ -13,7 +13,7 @@ 'SEARCH' => 'Suchen …', 'MORE' => 'Mehr', 'DEFAULT' => 'Standard', - 'GALLERY' => 'Gallery', + 'GALLERY' => 'Gallerie', 'USERS' => 'Benutzer', 'CREATE' => 'Erstellen', @@ -402,7 +402,7 @@ 'SET_LAYOUT' => 'Ausgerichtetes Layout benutzen:', 'NSFW_VISIBLE_TEXT_1' => 'Sensible Alben sind standardmäßig auf sichtbar', - 'NSFW_VISIBLE_TEXT_2' => 'Wenn das Album öffentlich ist, kann weiterhin zugegriffen werden. Es wird nur ausgeblendet und kann durch Pressen der Taste H sichtbar gemacht werden..', + 'NSFW_VISIBLE_TEXT_2' => 'Wenn das Album öffentlich ist, kann weiterhin zugegriffen werden. Es wird nur ausgeblendet und kann durch Drücken der Taste H sichtbar gemacht werden..', 'SETTINGS_SUCCESS_NSFW_VISIBLE' => 'Standardmäßige Sichtbarkeit wurde erfolgreich geändert.', 'NSFW_BANNER' => '

Krititscher Inhalt

Diese Album enthält krititsche Inhalte, die manche Personen anstößig oder verstörend finden könnten.

Zur Einwilligung klicken.

', From 5ab140c15b3708db3ba9c7122b778b70dad80184 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sun, 6 Aug 2023 17:46:05 +0200 Subject: [PATCH 024/209] Use enum for album_subtitle_type (#1967) --- app/Enum/SmartAlbumType.php | 2 ++ app/Enum/ThumbAlbumSubtitleType.php | 16 ++++++++++++++++ app/Enum/{ => Traits}/DecorateBackedEnum.php | 2 +- app/Http/Resources/ConfigurationResource.php | 3 ++- 4 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 app/Enum/ThumbAlbumSubtitleType.php rename app/Enum/{ => Traits}/DecorateBackedEnum.php (97%) diff --git a/app/Enum/SmartAlbumType.php b/app/Enum/SmartAlbumType.php index cfa719bebbd..469061b6239 100644 --- a/app/Enum/SmartAlbumType.php +++ b/app/Enum/SmartAlbumType.php @@ -2,6 +2,8 @@ namespace App\Enum; +use App\Enum\Traits\DecorateBackedEnum; + /** * Enum SmartAlbumType. */ diff --git a/app/Enum/ThumbAlbumSubtitleType.php b/app/Enum/ThumbAlbumSubtitleType.php new file mode 100644 index 00000000000..5208f7dfde1 --- /dev/null +++ b/app/Enum/ThumbAlbumSubtitleType.php @@ -0,0 +1,16 @@ + Configs::getValueAsString('album_subtitle_type'), + 'album_subtitle_type' => Configs::getValueAsEnum('album_subtitle_type', ThumbAlbumSubtitleType::class), 'check_for_updates' => Configs::getValueAsBool('check_for_updates'), 'default_album_protection' => Configs::getValueAsEnum('default_album_protection', DefaultAlbumProtectionType::class), 'feeds' => [], From cccc97e132bbb35811985f3be41cf1c0ffd81538 Mon Sep 17 00:00:00 2001 From: Martin Stone Date: Fri, 11 Aug 2023 10:32:52 +0100 Subject: [PATCH 025/209] Fix bad placeholder in PT locale. Fixes #1975. --- lang/pt/lychee.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lang/pt/lychee.php b/lang/pt/lychee.php index d0de3ea0435..a2f4e0ab5fc 100644 --- a/lang/pt/lychee.php +++ b/lang/pt/lychee.php @@ -464,7 +464,7 @@ 'ABOUT_SUBTITLE' => 'Gestão de fotografias auto-hospedada e bem feita', 'ABOUT_DESCRIPTION' => 'Lychee é uma ferramenta gratuita de gestão de fotografias, que corre no teu servidor ou espaço web. A instalação demora segundos. Enviar, gerir e partilhar fotografias como uma aplicação nativa. O Lychee vem com tudo o que precisas e todas as tuas fotografias são guardadas de forma segura.', - 'FOOTER_COPYRIGHT' => 'Todas as imagens neste website estão sujeitas a direitos autorais por %0 © %1', + 'FOOTER_COPYRIGHT' => 'Todas as imagens neste website estão sujeitas a direitos autorais por %1$s © %2$s', 'HOSTED_WITH_LYCHEE' => 'Hospedado com Lychee', 'URL_COPY_TO_CLIPBOARD' => 'Copiar para o clipboard', From 7aded6b439231e3a67acedaa1d0e32df90292ac0 Mon Sep 17 00:00:00 2001 From: Lingxi Date: Fri, 11 Aug 2023 21:45:30 +0800 Subject: [PATCH 026/209] Enable video thumbnail by default (#1971) * Enable video thumbnail * use configuration + automatic detection instead --------- Co-authored-by: ildyria --- .../Handlers/GoogleMotionPictureHandler.php | 5 +- app/Image/Handlers/VideoHandler.php | 5 +- ...23_08_07_182802_add_config_ffmpeg_path.php | 64 +++++++++++++++++++ 3 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 database/migrations/2023_08_07_182802_add_config_ffmpeg_path.php diff --git a/app/Image/Handlers/GoogleMotionPictureHandler.php b/app/Image/Handlers/GoogleMotionPictureHandler.php index 41228b4e981..8240bf5e928 100644 --- a/app/Image/Handlers/GoogleMotionPictureHandler.php +++ b/app/Image/Handlers/GoogleMotionPictureHandler.php @@ -76,7 +76,10 @@ public function load(NativeLocalFile $file, int $videoLength = 0): void $this->workingCopy->write($readStream); $file->close(); - $ffmpeg = FFMpeg::create(); + $ffmpeg = FFMpeg::create([ + 'ffmpeg.binaries' => Configs::getValueAsString('ffmpeg_path'), + 'ffprobe.binaries' => Configs::getValueAsString('ffprobe_path'), + ]); $audioOrVideo = $ffmpeg->open($this->workingCopy->getRealPath()); if ($audioOrVideo instanceof Video) { $this->video = $audioOrVideo; diff --git a/app/Image/Handlers/VideoHandler.php b/app/Image/Handlers/VideoHandler.php index c95e3967a31..4c8efb5e972 100644 --- a/app/Image/Handlers/VideoHandler.php +++ b/app/Image/Handlers/VideoHandler.php @@ -43,7 +43,10 @@ public function load(NativeLocalFile $file): void throw new ConfigurationException('FFmpeg is disabled by configuration'); } try { - $ffmpeg = FFMpeg::create(); + $ffmpeg = FFMpeg::create([ + 'ffmpeg.binaries' => Configs::getValueAsString('ffmpeg_path'), + 'ffprobe.binaries' => Configs::getValueAsString('ffprobe_path'), + ]); $audioOrVideo = $ffmpeg->open($file->getRealPath()); if ($audioOrVideo instanceof Video) { $this->video = $audioOrVideo; diff --git a/database/migrations/2023_08_07_182802_add_config_ffmpeg_path.php b/database/migrations/2023_08_07_182802_add_config_ffmpeg_path.php new file mode 100644 index 00000000000..d8bd060d0b5 --- /dev/null +++ b/database/migrations/2023_08_07_182802_add_config_ffmpeg_path.php @@ -0,0 +1,64 @@ +insert([ + [ + 'key' => 'ffmpeg_path', + 'value' => $path_ffmpeg, + 'confidentiality' => 1, + 'cat' => 'Image Processing', + 'type_range' => 'string', + 'description' => 'Path to the binary of ffmpeg', + ], + [ + 'key' => 'ffprobe_path', + 'value' => $path_ffprobe, + 'confidentiality' => 1, + 'cat' => 'Image Processing', + 'type_range' => 'string', + 'description' => 'Path to the binary of ffprobe', + ], + ]); + } + + /** + * Reverse the migrations. + * + * @throws InvalidArgumentException + */ + public function down(): void + { + DB::table('configs') + ->where('key', '=', 'ffmpeg_path') + ->orWhere('key', '=', 'ffprobe_path') + ->delete(); + } +}; From f1fc1a430b9de61b4211280674e49562a0a76de9 Mon Sep 17 00:00:00 2001 From: KnauszFerenc <96515096+KnauszFerenc@users.noreply.github.com> Date: Fri, 11 Aug 2023 15:45:43 +0200 Subject: [PATCH 027/209] Hungarian language added (#1977) I added a full Hungarian translate --- lang/hu/lychee.php | 512 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 512 insertions(+) create mode 100644 lang/hu/lychee.php diff --git a/lang/hu/lychee.php b/lang/hu/lychee.php new file mode 100644 index 00000000000..7bd89d6bfa1 --- /dev/null +++ b/lang/hu/lychee.php @@ -0,0 +1,512 @@ + 'Felhasználónév', + 'PASSWORD' => 'Jelszó', + 'ENTER' => 'Belépés', + 'CANCEL' => 'Mégse', + 'SIGN_IN' => 'Bejelentkezés', + 'CLOSE' => 'Bezárás', + 'SETTINGS' => 'Beállítások', + 'SEARCH' => 'Keresés …', + 'MORE' => 'Több', + 'DEFAULT' => 'alapértelmezett', + 'GALLERY' => 'Galéria', + + 'USERS' => 'Felhasználók', + 'CREATE' => 'Létrehozás', + 'REMOVE' => 'Törlés', + 'SHARE' => 'Megosztás', + 'U2F' => '2 faktoros azonosítás', + 'NOTIFICATIONS' => 'Értesítések', + 'SHARING' => 'Megosztás', + 'CHANGE_LOGIN' => 'Bejelentkezés módosítása', + 'CHANGE_SORTING' => 'Rendezés módosítása', + 'SET_DROPBOX' => 'Dropbox beállítása', + 'ABOUT_LYCHEE' => 'A Lychee-ről', + 'DIAGNOSTICS' => 'Diagnosztika', + 'DIAGNOSTICS_GET_SIZE' => 'Térhasználat lekérése', + 'LOGS' => 'Naplók megtekintése', + 'SIGN_OUT' => 'Kijelentkezés', + 'UPDATE_AVAILABLE' => 'Frissítés elérhető!', + 'MIGRATION_AVAILABLE' => 'Migráció elérhető!', + 'CHECK_FOR_UPDATE' => 'Frissítések keresése', + 'DEFAULT_LICENSE' => 'Alapértelmezett licenc új feltöltésekhez:', + 'SET_LICENSE' => 'Licenc beállítása', + 'SET_OVERLAY_TYPE' => 'Átlátszó réteg beállítása', + 'SET_ALBUM_DECORATION' => 'Album díszítések beállítása', + 'SET_MAP_PROVIDER' => 'OpenStreetMap csempék szolgáltatójának beállítása', + 'FULL_SETTINGS' => 'Teljes beállítások', + 'UPDATE' => 'Frissítés', + 'RESET' => 'Alaphelyzetbe állítás', + 'DISABLE_TOKEN_TOOLTIP' => 'Letiltás', + 'ENABLE_TOKEN' => 'API token engedélyezése', + 'DISABLED_TOKEN_STATUS_MSG' => 'Letiltott', + 'TOKEN_BUTTON' => 'API Token ...', + 'TOKEN_NOT_AVAILABLE' => 'Már megtekintetted ezt a tokent.', + 'TOKEN_WAIT' => 'Várakozás ...', + + 'SMART_ALBUMS' => 'Okos albumok', + 'SHARED_ALBUMS' => 'Megosztott albumok', + 'ALBUMS' => 'Albumok', + 'PHOTOS' => 'Fényképek', + 'SEARCH_RESULTS' => 'Keresési eredmények', + + 'RENAME' => 'Átnevezés', + 'RENAME_ALL' => 'Kijelöltek átnevezése', + 'MERGE' => 'Összevonás', + 'MERGE_ALL' => 'Kijelöltek összevonása', + 'MAKE_PUBLIC' => 'Nyilvánosságra hozás', + 'SHARE_ALBUM' => 'Album megosztása', + 'SHARE_PHOTO' => 'Fotó megosztása', + 'VISIBILITY_ALBUM' => 'Album láthatósága', + 'VISIBILITY_PHOTO' => 'Fotó láthatósága', + 'DOWNLOAD_ALBUM' => 'Album letöltése', + 'ABOUT_ALBUM' => 'Az albumról', + 'DELETE_ALBUM' => 'Album törlése', + 'MOVE_ALBUM' => 'Album áthelyezése', + 'FULLSCREEN_ENTER' => 'Teljes képernyőre váltás', + 'FULLSCREEN_EXIT' => 'Kilépés a teljes képernyőből', + + 'SHARING_ALBUM_USERS' => 'Az album megosztása felhasználókkal', + 'WAIT_FETCH_DATA' => 'Kérjük, várjon, amíg lekérdezzük az adatokat …', + 'SHARING_ALBUM_USERS_NO_USERS' => 'Nincsenek felhasználók, akikkel meg lehetne osztani az albumot', + 'SHARING_ALBUM_USERS_LONG_MESSAGE' => 'Válassza ki a felhasználókat, akikkel megosztja ezt az albumot', + + 'DELETE_ALBUM_QUESTION' => 'Album és fényképek törlése', + 'KEEP_ALBUM' => 'Album megtartása', + 'DELETE_ALBUM_CONFIRMATION' => 'Biztosan törölni szeretné a(z) „%s” nevű albumot és az összes benne lévő fényképet? Ezt a műveletet nem lehet visszavonni!', + + 'DELETE_TAG_ALBUM_QUESTION' => 'Album törlése', + 'DELETE_TAG_ALBUM_CONFIRMATION' => 'Biztosan törölni szeretné a(z) „%s” nevű albumot (a benne lévő fényképek nem kerülnek törlésre)? Ezt a műveletet nem lehet visszavonni!', + + 'DELETE_ALBUMS_QUESTION' => 'Albumok és fényképek törlése', + 'KEEP_ALBUMS' => 'Albumok megtartása', + 'DELETE_ALBUMS_CONFIRMATION' => 'Biztosan törölni szeretné az összes %d kijelölt albumot és az azokban lévő összes fényképet? Ezt a műveletet nem lehet visszavonni!', + + 'DELETE_UNSORTED_CONFIRM' => 'Biztosan törölni szeretné az összes fotót a "Nem rendezett" albumból? Ezt a műveletet nem lehet visszavonni!', + 'CLEAR_UNSORTED' => 'Nem rendezett törlése', + 'KEEP_UNSORTED' => 'Nem rendezett megtartása', + + 'EDIT_SHARING' => 'Megosztás szerkesztése', + 'MAKE_PRIVATE' => 'Priváttá tétel', + + 'CLOSE_ALBUM' => 'Album bezárása', + 'CLOSE_PHOTO' => 'Fotó bezárása', + 'CLOSE_MAP' => 'Térkép bezárása', + + 'ADD' => 'Hozzáadás', + 'MOVE' => 'Áthelyezés', + 'MOVE_ALL' => 'Kijelöltek áthelyezése', + 'DUPLICATE' => 'Másolás', + 'DUPLICATE_ALL' => 'Kijelöltek másolása', + 'COPY_TO' => 'Másolás ide …', + 'COPY_ALL_TO' => 'Kijelöltek másolása ide …', + 'DELETE' => 'Törlés', + 'SAVE' => 'Mentés', + 'DELETE_ALL' => 'Kijelöltek törlése', + 'DOWNLOAD' => 'Letöltés', + 'DOWNLOAD_ALL' => 'Kijelöltek letöltése', + 'UPLOAD_PHOTO' => 'Fénykép feltöltése', + 'IMPORT_LINK' => 'Importálás hivatkozásból', + 'IMPORT_DROPBOX' => 'Importálás Dropboxból', + 'IMPORT_SERVER' => 'Importálás szerverről', + 'NEW_ALBUM' => 'Új album', + 'NEW_TAG_ALBUM' => 'Új címkézett album', + 'UPLOAD_TRACK' => 'Zeneszám feltöltése', + 'DELETE_TRACK' => 'Zeneszám törlése', + + 'TITLE_NEW_ALBUM' => 'Adjon meg egy címet az új albumnak:', + 'UNTITLED' => 'Cím nélküli', + 'UNSORTED' => 'Nem rendezett', + 'STARRED' => 'Kedvencek', + 'RECENT' => 'Legutóbbi', + 'PUBLIC' => 'Nyilvános', + 'ON_THIS_DAY' => 'Ezen a napon', + 'NUM_PHOTOS' => 'Fényképek', + + 'CREATE_ALBUM' => 'Album létrehozása', + 'CREATE_TAG_ALBUM' => 'Címke album létrehozása', + + 'STAR_PHOTO' => 'Kedvenc fotó', + 'STAR' => 'Kedvenc', + 'UNSTAR' => 'Nem kedvenc', + 'STAR_ALL' => 'Összes kedvenc', + 'UNSTAR_ALL' => 'Összes nem kedvenc', + 'TAG' => 'Címke', + 'TAG_ALL' => 'Összes címke', + 'UNSTAR_PHOTO' => 'Fotó kedvencjelölésének eltávolítása', + 'SET_COVER' => 'Album borítójának beállítása', + 'REMOVE_COVER' => 'Album borítójának eltávolítása', + + 'FULL_PHOTO' => 'Eredeti megnyitása', + 'ABOUT_PHOTO' => 'A fotóról', + 'DISPLAY_FULL_MAP' => 'Térkép', + 'DIRECT_LINK' => 'Közvetlen hivatkozás', + 'DIRECT_LINKS' => 'Közvetlen hivatkozások', + 'QR_CODE' => 'QR kód', + + 'ALBUM_ABOUT' => 'Névjegy', + 'ALBUM_BASICS' => 'Alapok', + 'ALBUM_TITLE' => 'Cím', + 'ALBUM_NEW_TITLE' => 'Adjon meg egy új címet ennek az albumnak:', + 'ALBUMS_NEW_TITLE' => 'Adjon meg címet az összes %d kiválasztott albumnak:', + 'ALBUM_SET_TITLE' => 'Cím beállítása', + 'ALBUM_DESCRIPTION' => 'Leírás', + 'ALBUM_SHOW_TAGS' => 'Megjelenítendő címkék', + 'ALBUM_NEW_DESCRIPTION' => 'Adjon meg egy új leírást ennek az albumnak:', + 'ALBUM_SET_DESCRIPTION' => 'Leírás beállítása', + 'ALBUM_NEW_SHOWTAGS' => 'Adjon meg olyan fényképek címkéit, amelyek láthatóak lesznek ebben az albumban:', + 'ALBUM_SET_SHOWTAGS' => 'Megjelenítendő címkék beállítása', + 'ALBUM_ALBUM' => 'Album', + 'ALBUM_CREATED' => 'Létrehozva', + 'ALBUM_IMAGES' => 'Képek', + 'ALBUM_VIDEOS' => 'Videók', + 'ALBUM_SUBALBUMS' => 'Al-albumok', + 'ALBUM_SHARING' => 'Megosztás', + 'ALBUM_SHR_YES' => 'IGEN', + 'ALBUM_SHR_NO' => 'Nem', + 'ALBUM_PUBLIC' => 'Nyilvános', + 'ALBUM_PUBLIC_EXPL' => 'Az anonim felhasználók hozzáférhetnek ehhez az albumhoz a következő korlátozások betartásával.', + 'ALBUM_FULL' => 'Eredeti', + 'ALBUM_FULL_EXPL' => 'Az anonim felhasználók megnézhetik a teljes felbontású fényképeket.', + 'ALBUM_HIDDEN' => 'Rejtett', + 'ALBUM_HIDDEN_EXPL' => 'Az anonim felhasználóknak közvetlen hivatkozásra van szükségük ennek az albumnak az eléréséhez.', + 'ALBUM_MARK_NSFW' => 'Album megjelölése érzékeny tartalomként', + 'ALBUM_UNMARK_NSFW' => 'Album érzékeny tartalomként jelölésének eltávolítása', + 'ALBUM_NSFW' => 'Érzékeny tartalom', + 'ALBUM_NSFW_EXPL' => 'Az album érzékeny tartalmat tartalmaz.', + 'ALBUM_DOWNLOADABLE' => 'Letölthető', + 'ALBUM_DOWNLOADABLE_EXPL' => 'Az anonim felhasználók letölthetik ezt az albumot.', + 'ALBUM_SHARE_BUTTON_VISIBLE' => 'Megosztás gomb látható', + 'ALBUM_SHARE_BUTTON_VISIBLE_EXPL' => 'Az anonim felhasználók láthatják a közösségi média megosztási linkeket.', + 'ALBUM_PASSWORD' => 'Jelszó', + 'ALBUM_PASSWORD_PROT' => 'Jelszóval védett', + 'ALBUM_PASSWORD_PROT_EXPL' => 'Az anonim felhasználóknak megosztott jelszóra van szükségük ennek az albumnak az eléréséhez.', + 'ALBUM_PASSWORD_REQUIRED' => 'Ezt az albumot jelszó véd. Az album fényképeinek megtekintéséhez adja meg a jelszót:', + 'ALBUM_MERGE' => 'Biztosan össze akarja olvasztani a(z) „%1$s” albumot a(z) „%2$s” albumba?', + 'ALBUMS_MERGE' => 'Biztosan össze akarja olvasztani az összes kiválasztott albumot a(z) „%s” albumba?', + 'MERGE_ALBUM' => 'Albumok összeolvasztása', + 'DONT_MERGE' => 'Ne olvassza össze', + 'ALBUM_MOVE' => 'Biztosan át akarja mozgatni a(z) „%1$s” albumot a(z) „%2$s” albumba?', + 'ALBUMS_MOVE' => 'Biztosan át akarja mozgatni az összes kiválasztott albumot a(z) „%s” albumba?', + 'MOVE_ALBUMS' => 'Albumok áthelyezése', + 'NOT_MOVE_ALBUMS' => 'Ne helyezze át', + 'ROOT' => 'Albumok', + 'ALBUM_REUSE' => 'Újrafelhasználás', + 'ALBUM_LICENSE' => 'Licenc', + 'ALBUM_SET_LICENSE' => 'Licenc beállítása', + 'ALBUM_LICENSE_HELP' => 'Segítségre van szüksége a választáshoz?', + 'ALBUM_LICENSE_NONE' => 'Nincs', + 'ALBUM_RESERVED' => 'Minden jog fenntartva', + 'ALBUM_SET_ORDER' => 'Sorrend beállítása', + 'ALBUM_ORDERING' => 'Sorrend:', + 'ALBUM_OWNER' => 'Tulajdonos', + + 'PHOTO_ABOUT' => 'Névjegy', + 'PHOTO_BASICS' => 'Alapok', + 'PHOTO_TITLE' => 'Cím', + 'PHOTO_NEW_TITLE' => 'Adjon meg egy új címet ennek a fényképnek:', + 'PHOTO_SET_TITLE' => 'Cím beállítása', + 'PHOTO_UPLOADED' => 'Feltöltve', + 'PHOTO_DESCRIPTION' => 'Leírás', + 'PHOTO_NEW_DESCRIPTION' => 'Adjon meg egy új leírást ennek a fényképnek:', + 'PHOTO_SET_DESCRIPTION' => 'Leírás beállítása', + 'PHOTO_NEW_LICENSE' => 'Licenc hozzáadása', + 'PHOTO_SET_LICENSE' => 'Licenc beállítása', + 'PHOTO_LICENSE' => 'Licenc', + 'PHOTO_LICENSE_HELP' => 'Segítségre van szüksége a választáshoz?', + 'PHOTO_REUSE' => 'Újrafelhasználás', + 'PHOTO_LICENSE_NONE' => 'Nincs', + 'PHOTO_RESERVED' => 'Minden jog fenntartva', + 'PHOTO_LATITUDE' => 'Szélesség', + 'PHOTO_LONGITUDE' => 'Hosszúság', + 'PHOTO_ALTITUDE' => 'Magasság', + 'PHOTO_IMGDIRECTION' => 'Irány', + 'PHOTO_LOCATION' => 'Hely', + 'PHOTO_IMAGE' => 'Kép', + 'PHOTO_VIDEO' => 'Videó', + 'PHOTO_SIZE' => 'Méret', + 'PHOTO_FORMAT' => 'Formátum', + 'PHOTO_RESOLUTION' => 'Felbontás', + 'PHOTO_DURATION' => 'Időtartam', + 'PHOTO_FPS' => 'Képfrissítési ráta', + 'PHOTO_TAGS' => 'Címkék', + 'PHOTO_NOTAGS' => 'Nincsenek címkék', + 'PHOTO_NEW_TAGS' => 'Adja meg a címkéket ehhez a fényképhez. Több címkét is hozzáadhat, vesszővel elválasztva:', + 'PHOTOS_NEW_TAGS' => 'Adja meg a címkéket az összes %d kiválasztott fényképhez. A meglévő címkéket felülírják. Több címkét is hozzáadhat, vesszővel elválasztva:', + 'PHOTO_SET_TAGS' => 'Címkék beállítása', + 'PHOTO_CAMERA' => 'Kamera', + 'PHOTO_CAPTURED' => 'Rögzítve', + 'PHOTO_MAKE' => 'Gyártó', + 'PHOTO_TYPE' => 'Típus/Modell', + 'PHOTO_LENS' => 'Objektív', + 'PHOTO_SHUTTER' => 'Záridő', + 'PHOTO_APERTURE' => 'Rekeszérték', + 'PHOTO_FOCAL' => 'Fókusztávolság', + 'PHOTO_ISO' => 'ISO %s', + 'PHOTO_SHARING' => 'Megosztás', + 'PHOTO_DELETE' => 'Fénykép törlése', + 'PHOTO_KEEP' => 'Fénykép megtartása', + 'PHOTO_DELETE_CONFIRMATION' => 'Biztosan törölni szeretné a(z) „%s” fényképet? Ez a művelet nem vonható vissza!', + 'PHOTO_DELETE_ALL' => 'Biztosan törölni szeretné az összes %d kiválasztott fényképet? Ez a művelet nem vonható vissza!', + 'PHOTOS_NEW_TITLE' => 'Adjon meg egy címet az összes %d kiválasztott fényképnek:', + 'PHOTO_MAKE_PRIVATE_ALBUM' => 'Ez a fénykép egy nyilvános albumon található. A fénykép privát vagy nyilvános beállításainak megváltoztatásához szerkessze az ehhez a fényképhez tartozó album láthatóságát.', + 'PHOTO_SHOW_ALBUM' => 'Album megjelenítése', + 'PHOTO_PUBLIC' => 'Nyilvános', + 'PHOTO_PUBLIC_EXPL' => 'Az anonim felhasználók megtekinthetik ezt a fényképet a következő korlátozások betartásával.', + 'PHOTO_FULL' => 'Eredeti', + 'PHOTO_FULL_EXPL' => 'Az anonim felhasználók megtekinthetik a teljes felbontású fényképet.', + 'PHOTO_HIDDEN' => 'Rejtett', + 'PHOTO_HIDDEN_EXPL' => 'Az anonim felhasználóknak szükségük van egy közvetlen hivatkozásra a fénykép megtekintéséhez.', + 'PHOTO_DOWNLOADABLE' => 'Letölthető', + 'PHOTO_DOWNLOADABLE_EXPL' => 'Az anonim felhasználók letölthetik ezt a fényképet.', + 'PHOTO_SHARE_BUTTON_VISIBLE' => 'Megosztás gomb látható', + 'PHOTO_SHARE_BUTTON_VISIBLE_EXPL' => 'Az anonim felhasználók láthatják a közösségi média megosztási linkeket.', + 'PHOTO_PASSWORD_PROT' => 'Jelszóval védett', + 'PHOTO_PASSWORD_PROT_EXPL' => 'Az anonim felhasználóknak megosztott jelszóra van szükségük a fénykép megtekintéséhez.', + 'PHOTO_EDIT_SHARING_TEXT' => 'E fénykép megosztási tulajdonságai a következőként fognak megváltozni:', + 'PHOTO_NO_EDIT_SHARING_TEXT' => 'Mivel ez a fénykép egy nyilvános albumon található, örökli azt az album láthatósági beállításait. Jelenlegi láthatósága csak tájékoztató jelleggel jelenik meg.', + 'PHOTO_EDIT_GLOBAL_SHARING_TEXT' => 'E fénykép láthatóságát globális Lychee beállításokkal finomhangolhatja. Jelenlegi láthatósága csak tájékoztató jelleggel jelenik meg.', + 'PHOTO_NEW_CREATED_AT' => 'Adja meg ennek a fényképnek a feltöltési dátumát. hh/nn/éééé, óó:pp [de/du]', + 'PHOTO_SET_CREATED_AT' => 'Feltöltési dátum beállítása', + + 'LOADING' => 'Betöltés', + 'ERROR' => 'Hiba', + 'ERROR_TEXT' => 'Hoppá, úgy tűnik, valami hiba történt. Kérjük, frissítse az oldalt és próbálja újra!', + 'ERROR_UNKNOWN' => 'Valami váratlan történt. Kérjük, próbálja újra, és ellenőrizze a telepítést és a szervert. További információért tekintse meg az útmutatót.', + 'ERROR_MAP_DEACTIVATED' => 'Térkép funkció letiltva a beállításokban.', + 'ERROR_SEARCH_DEACTIVATED' => 'Keresési funkció letiltva a beállításokban.', + 'SUCCESS' => 'Rendben', + 'RETRY' => 'Újra', + 'OVERRIDE' => 'Felülbírálás', + 'TAGS_OVERRIDE_INFO' => 'Ha ez nincs bejelölve, a címkéket hozzáadják a fénykép meglévő címkéihez.', + + 'SETTINGS_SUCCESS_LOGIN' => 'Bejelentkezési információk frissítve.', + 'SETTINGS_SUCCESS_SORT' => 'Rendezési sorrend frissítve.', + 'SETTINGS_SUCCESS_DROPBOX' => 'Dropbox kulcs frissítve.', + 'SETTINGS_SUCCESS_LANG' => 'Nyelv frissítve', + 'SETTINGS_SUCCESS_LAYOUT' => 'Elrendezés frissítve', + 'SETTINGS_SUCCESS_IMAGE_OVERLAY' => 'EXIF fedőréteg beállítás frissítve', + 'SETTINGS_SUCCESS_PUBLIC_SEARCH' => 'Nyilvános keresés frissítve', + 'SETTINGS_SUCCESS_LICENSE' => 'Alapértelmezett licenc frissítve', + 'SETTINGS_SUCCESS_MAP_DISPLAY' => 'Térkép megjelenítési beállítások frissítve', + 'SETTINGS_SUCCESS_MAP_DISPLAY_PUBLIC' => 'Térkép megjelenítési beállítások nyilvános albumokhoz frissítve', + 'SETTINGS_SUCCESS_MAP_PROVIDER' => 'Térkép szolgáltató beállítások frissítve', + 'SETTINGS_SUCCESS_CSS' => 'CSS frissítve', + 'SETTINGS_SUCCESS_JS' => 'JS frissítve', + 'SETTINGS_SUCCESS_UPDATE' => 'Beállítások sikeresen frissítve', + 'SETTINGS_DROPBOX_KEY' => 'Dropbox API kulcs', + 'SETTINGS_ADVANCED_WARNING_EXPL' => 'Ezen speciális beállítások módosítása káros lehet az alkalmazás stabilitására, biztonságára és teljesítményére nézve. Csak akkor módosítsa őket, ha biztos benne, hogy tudja, mit csinál.', + 'SETTINGS_ADVANCED_SAVE' => 'Módosítások mentése, elfogadom a kockázatot!', + + 'U2F_NOT_SUPPORTED' => 'Az U2F nem támogatott. Sajnáljuk.', + 'U2F_NOT_SECURE' => 'Nem biztonságos környezet. Az U2F nem érhető el.', + 'U2F_REGISTER_KEY' => 'Új eszköz regisztrálása.', + 'U2F_REGISTRATION_SUCCESS' => 'Sikeres regisztráció!', + 'U2F_AUTHENTIFICATION_SUCCESS' => 'Sikeres hitelesítés!', + 'U2F_CREDENTIALS' => 'Hitelesítő adatok', + 'U2F_CREDENTIALS_DELETED' => 'Hitelesítő adatok törölve!', + + 'NEW_PHOTOS_NOTIFICATION' => 'Küldjön értesítést az új fényképekről e-mailben.', + 'SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION' => 'Az új fényképek értesítése frissítve', + 'USER_EMAIL_INSTRUCTION' => 'Adja hozzá az alábbi e-mail címet a fogadásra jogosító e-mail értesítések engedélyezéséhez. Az e-mail értesítések visszavonásához egyszerűen távolítsa el az e-mail címet alulról.', + + 'LOGIN_USERNAME' => 'Új felhasználónév', + 'LOGIN_PASSWORD' => 'Új jelszó', + 'LOGIN_PASSWORD_CONFIRM' => 'Jelszó megerősítése', + 'PASSWORD_TITLE' => 'Adja meg jelenlegi jelszavát:', + 'PASSWORD_CURRENT' => 'Jelenlegi jelszó', + 'PASSWORD_TEXT' => 'A hitelesítő adatai a következőre lesznek megváltoztatva:', + 'PASSWORD_CHANGE' => 'Bejelentkezés változtatása', + + 'EDIT_SHARING_TITLE' => 'Megosztás szerkesztése', + 'EDIT_SHARING_TEXT' => 'Az album megosztási tulajdonságai a következőre lesznek megváltoztatva:', + 'SHARE_ALBUM_TEXT' => 'Ez az album a következő tulajdonságokkal lesz megosztva:', + + 'SORT_DIALOG_ATTRIBUTE_LABEL' => 'Attribútum', + 'SORT_DIALOG_ORDER_LABEL' => 'Rendelés', + + 'SORT_ALBUM_BY' => 'Albumok rendezése %1$s alapján %2$s rendben.', + + 'SORT_ALBUM_SELECT_1' => 'Létrehozás ideje', + 'SORT_ALBUM_SELECT_2' => 'Cím', + 'SORT_ALBUM_SELECT_3' => 'Leírás', + 'SORT_ALBUM_SELECT_5' => 'Legutóbbi felvétel dátuma', + 'SORT_ALBUM_SELECT_6' => 'Legrégebbi felvétel dátuma', + + 'SORT_PHOTO_BY' => 'Fényképek rendezése %1$s alapján %2$s rendben.', + + 'SORT_PHOTO_SELECT_1' => 'Feltöltés ideje', + 'SORT_PHOTO_SELECT_2' => 'Felvétel dátuma', + 'SORT_PHOTO_SELECT_3' => 'Cím', + 'SORT_PHOTO_SELECT_4' => 'Leírás', + 'SORT_PHOTO_SELECT_5' => 'Nyilvános', + 'SORT_PHOTO_SELECT_6' => 'Csillag', + 'SORT_PHOTO_SELECT_7' => 'Fénykép formátuma', + + 'SORT_ASCENDING' => 'Növekvő', + 'SORT_DESCENDING' => 'Csökkenő', + 'SORT_CHANGE' => 'Rendezés megváltoztatása', + + 'DROPBOX_TITLE' => 'Dropbox Kulcs Beállítása', + 'DROPBOX_TEXT' => "Annak érdekében, hogy képeket importáljon a Dropbox-ról, érvényes 'drop-ins app' kulcsra van szüksége a weboldalukon. Generáljon magának egy személyes kulcsot és írja be az alábbiakban:", + + 'LANG_TEXT' => 'Változtassa meg a Lychee nyelvét:', + 'LANG_TITLE' => 'Nyelv megváltoztatása', + + 'SETTING_RECENT_PUBLIC_TEXT' => '"Legutóbbi" okos album hozzáférhetővé tétele névtelen felhasználók számára', + 'SETTING_STARRED_PUBLIC_TEXT' => '"Csillagozott" okos album hozzáférhetővé tétele névtelen felhasználók számára', + 'SETTING_ONTHISDAY_PUBLIC_TEXT' => '"Ezen a napon" okos album hozzáférhetővé tétele névtelen felhasználók számára', + + 'CSS_TEXT' => 'Testreszabott CSS:', + 'CSS_TITLE' => 'CSS megváltoztatása', + 'JS_TEXT' => 'Testreszabott JS:', + 'JS_TITLE' => 'JS megváltoztatása', + 'PUBLIC_SEARCH_TEXT' => 'Nyilvános keresés engedélyezve:', + 'OVERLAY_TYPE' => 'Fénykép fedőréteg:', + 'OVERLAY_NONE' => 'Nincs', + 'OVERLAY_EXIF' => 'EXIF adatok', + 'OVERLAY_DESCRIPTION' => 'Leírás', + 'OVERLAY_DATE' => 'Felvétel dátuma', + 'ALBUM_DECORATION' => 'Album dekorációk:', + 'ALBUM_DECORATION_NONE' => 'Nincs', + 'ALBUM_DECORATION_ORIGINAL' => 'Al-album jelző', + 'ALBUM_DECORATION_ALBUM' => 'Al-albumok száma', + 'ALBUM_DECORATION_PHOTO' => 'Fényképek száma', + 'ALBUM_DECORATION_ALL' => 'Al-albumok és fényképek száma', + 'ALBUM_DECORATION_ORIENTATION' => 'Album dekorációk elrendezése:', + 'ALBUM_DECORATION_ORIENTATION_ROW' => 'Vízszintes (fényképek, albumok)', + 'ALBUM_DECORATION_ORIENTATION_ROW_REVERSE' => 'Vízszintes (albumok, fényképek)', + 'ALBUM_DECORATION_ORIENTATION_COLUMN' => 'Függőleges (felső fényképek, albumok)', + 'ALBUM_DECORATION_ORIENTATION_COLUMN_REVERSE' => 'Függőleges (felső albumok, fényképek)', + 'MAP_DISPLAY_TEXT' => 'Térképek engedélyezése (OpenStreetMap által):', + 'MAP_DISPLAY_PUBLIC_TEXT' => 'Térképek engedélyezése nyilvános albumokhoz (OpenStreetMap által):', + 'MAP_PROVIDER' => 'OpenStreetMap csempék szolgáltatója:', + 'MAP_PROVIDER_WIKIMEDIA' => 'Wikimedia', + 'MAP_PROVIDER_OSM_ORG' => 'OpenStreetMap.org (nem HiDPI)', + 'MAP_PROVIDER_OSM_DE' => 'OpenStreetMap.de (nem HiDPI)', + 'MAP_PROVIDER_OSM_FR' => 'OpenStreetMap.fr (nem HiDPI)', + 'MAP_PROVIDER_RRZE' => 'Erlangen Egyetem, Németország (csak HiDPI)', + 'MAP_INCLUDE_SUBALBUMS_TEXT' => 'Al-albumok fényképeinek belefoglalása a térképbe:', + 'LOCATION_DECODING' => 'GPS adatok dekódolása helyszín névbe', + 'LOCATION_SHOW' => 'Helyszín név megjelenítése', + 'LOCATION_SHOW_PUBLIC' => 'Helyszín név megjelenítése nyilvános módban', + + 'LAYOUT_TYPE' => 'Fényképek elrendezése:', + 'LAYOUT_SQUARES' => 'Négyzet alakú bélyegképek', + 'LAYOUT_JUSTIFIED' => 'Képaránnyal, igazított', + 'LAYOUT_UNJUSTIFIED' => 'Képaránnyal, igazítatlan', + 'SET_LAYOUT' => 'Elrendezés megváltoztatása', + + 'NSFW_VISIBLE_TEXT_1' => 'Érzékeny albumok alapértelmezett láthatóságának beállítása.', + 'NSFW_VISIBLE_TEXT_2' => 'Ha az album nyilvános, még mindig elérhető, csak el van rejtve a nézetből és megjeleníthető a H billentyű megnyomásával.', + 'SETTINGS_SUCCESS_NSFW_VISIBLE' => 'Az alapértelmezett érzékeny album láthatósága sikeresen frissítve.', + + 'NSFW_BANNER' => '

Érzékeny tartalom

Ez az album érzékeny tartalmat tartalmaz, amit néhány ember zavaró vagy zavarba ejtő lehet. Tapintson az engedélyezéshez.

', + + 'VIEW_NO_RESULT' => 'Nincs találat', + 'VIEW_NO_PUBLIC_ALBUMS' => 'Nincsenek nyilvános albumok', + 'VIEW_NO_CONFIGURATION' => 'Nincs konfiguráció', + 'VIEW_PHOTO_NOT_FOUND' => 'A fénykép nem található', + + 'NO_TAGS' => 'Nincsenek címkék', + + 'UPLOAD_MANAGE_NEW_PHOTOS' => 'Most már kezelheti az új fénykép(ek)et.', + 'UPLOAD_COMPLETE' => 'Feltöltés befejeződött', + 'UPLOAD_COMPLETE_FAILED' => 'Egy vagy több fénykép feltöltése sikertelen.', + 'UPLOAD_IMPORTING' => 'Importálás', + 'UPLOAD_IMPORTING_URL' => 'URL importálás', + 'UPLOAD_UPLOADING' => 'Feltöltés', + 'UPLOAD_FINISHED' => 'Befejezve', + 'UPLOAD_PROCESSING' => 'Feldolgozás', + 'UPLOAD_FAILED' => 'Sikertelen', + 'UPLOAD_FAILED_ERROR' => 'A feltöltés sikertelen. A kiszolgáló hibát adott vissza!', + 'UPLOAD_FAILED_WARNING' => 'A feltöltés sikertelen. A kiszolgáló figyelmeztetést adott vissza!', + 'UPLOAD_CANCELLED' => 'Megszakítva', + 'UPLOAD_SKIPPED' => 'Kihagyva', + 'UPLOAD_UPDATED' => 'Frissítve', + 'UPLOAD_GENERAL' => 'Általános', + 'UPLOAD_IMPORT_SKIPPED_DUPLICATE' => 'Ez a fénykép kimaradt, mert már a könyvtárában van.', + 'UPLOAD_IMPORT_RESYNCED_DUPLICATE' => 'Ez a fénykép kimaradt, mert már a könyvtárában van, de a metaadata frissítve lett.', + 'UPLOAD_ERROR_CONSOLE' => 'Tekintse meg a böngésző konzolját további részletekért.', + 'UPLOAD_UNKNOWN' => 'A kiszolgáló ismeretlen választ adott vissza. Tekintse meg a böngésző konzolját további részletekért.', + 'UPLOAD_ERROR_UNKNOWN' => 'A feltöltés sikertelen. A kiszolgáló ismeretlen hibát adott vissza!', + 'UPLOAD_ERROR_POSTSIZE' => 'A feltöltés sikertelen. A PHP post_max_size mérete lehet túl kicsi! Kérjük, ellenőrizze a GYIK-et.', + 'UPLOAD_ERROR_FILESIZE' => 'A feltöltés sikertelen. A PHP upload_max_filesize mérete lehet túl kicsi! Kérjük, ellenőrizze a GYIK-et.', + 'UPLOAD_IN_PROGRESS' => 'A Lychee jelenleg feltölti!', + 'UPLOAD_IMPORT_WARN_ERR' => 'Az importálás befejeződött, de figyelmeztetések vagy hibák jelentkeztek. Tekintse meg a naplót (Beállítások -> Napló mutatása) további részletekért.', + 'UPLOAD_IMPORT_COMPLETE' => 'Az importálás befejeződött', + 'UPLOAD_IMPORT_INSTR' => 'Kérjük, adja meg a fénykép közvetlen hivatkozását az importáláshoz:', + 'UPLOAD_IMPORT' => 'Importálás', + 'UPLOAD_IMPORT_SERVER' => 'Importálás a kiszolgálóról', + 'UPLOAD_IMPORT_SERVER_FOLD' => 'A mappa üres vagy nincsenek olvasható fájlok feldolgozásra. Tekintse meg a naplót (Beállítások -> Napló mutatása) további részletekért.', + 'UPLOAD_IMPORT_SERVER_INSTR' => 'Az alábbi abszolút elérési útvonalakkal (a kiszolgálón) rendelkező mappákban található összes fénykép, mappa és almappa importálása. Az elérési útvonalak szóközzel vannak elválasztva, a szóköz escape-elve van \'\\\'-vel az útvonalon.', + 'UPLOAD_ABSOLUTE_PATH' => 'Abszolút elérési útvonalak a könyvtárakhoz, szóközzel elválasztva', + 'UPLOAD_IMPORT_SERVER_EMPT' => 'Az importálás nem indítható el, mert a mappa üres!', + 'UPLOAD_IMPORT_DELETE_ORIGINALS' => 'Eredeti törlése', + 'UPLOAD_IMPORT_DELETE_ORIGINALS_EXPL' => 'Az eredeti fájlok az importálás után törölve lesznek, ha lehetséges.', + 'UPLOAD_IMPORT_VIA_SYMLINK' => 'Szimbolikus hivatkozások', + 'UPLOAD_IMPORT_VIA_SYMLINK_EXPL' => 'Fájlok importálása szimbolikus hivatkozásokkal az eredeti fájlokhoz.', + 'UPLOAD_IMPORT_SKIP_DUPLICATES' => 'Ismétlődők kihagyása', + 'UPLOAD_IMPORT_SKIP_DUPLICATES_EXPL' => 'Létező médiafájlok kihagyása.', + 'UPLOAD_IMPORT_RESYNC_METADATA' => 'Metaadat újrakapcsolása', + 'UPLOAD_IMPORT_RESYNC_METADATA_EXPL' => 'Meglévő médiafájlok metaadatainak frissítése.', + 'UPLOAD_IMPORT_LOW_MEMORY_EXPL' => 'Az import folyamata a kiszolgálón a memórialimithez közeledik, és előfordulhat, hogy előbb-utóbb megszakad.', + 'UPLOAD_WARNING' => 'Figyelmeztetés', + 'UPLOAD_IMPORT_NOT_A_DIRECTORY' => 'A megadott útvonal nem olvasható mappa!', + 'UPLOAD_IMPORT_PATH_RESERVED' => 'A megadott útvonal a Lychee fenntartott útvonala!', + 'UPLOAD_IMPORT_FAILED' => 'Nem sikerült importálni a fájlt!', + 'UPLOAD_IMPORT_UNSUPPORTED' => 'Nem támogatott fájltípus!', + 'UPLOAD_IMPORT_CANCELLED' => 'Az importálás megszakítva', + + 'ABOUT_SUBTITLE' => 'Önállóan futtatható, jól megtervezett fényképkezelés', + 'ABOUT_DESCRIPTION' => 'Lychee egy ingyenes fényképkezelő eszköz, amely saját szerverén vagy webtárhelyén fut. Az installáció néhány másodpercet vesz igénybe. Töltsön fel, kezeljen és osszon meg fényképeket, mintha egy natív alkalmazásban lenne. A Lychee mindennel rendelkezik, amire szüksége van, és az összes fényképe biztonságosan van tárolva.', + 'FOOTER_COPYRIGHT' => 'Az összes kép ezen a weboldalon szerzői jogi védelem alatt áll: %1$s © %2$s', + 'HOSTED_WITH_LYCHEE' => 'Futtatja: Lychee', + + 'URL_COPY_TO_CLIPBOARD' => 'Vágólapra másolás', + 'URL_COPIED_TO_CLIPBOARD' => 'URL másolva a vágólapra!', + 'PHOTO_DIRECT_LINKS_TO_IMAGES' => 'Közvetlen linkek a képfájlokhoz:', + 'PHOTO_ORIGINAL' => 'Eredeti', + 'PHOTO_MEDIUM' => 'Közepes', + 'PHOTO_MEDIUM_HIDPI' => 'Közepes HiDPI', + 'PHOTO_SMALL' => 'Bélyegkép', + 'PHOTO_SMALL_HIDPI' => 'Bélyegkép HiDPI', + 'PHOTO_THUMB' => 'Négyzetes bélyegkép', + 'PHOTO_THUMB_HIDPI' => 'Négyzetes bélyegkép HiDPI', + 'PHOTO_THUMBNAIL' => 'Kép bélyegképe', + 'PHOTO_LIVE_VIDEO' => 'Videó része a live-fotónak', + 'PHOTO_VIEW' => 'Lychee Kép Megtekintés:', + + 'PHOTO_EDIT_ROTATECWISE' => 'Forgatás óramutató járásával megegyezően', + 'PHOTO_EDIT_ROTATECCWISE' => 'Forgatás óramutató járásával ellenkezőleg', + + 'ERROR_GPX' => 'Hiba a GPX fájl betöltésekor: ', + 'ERROR_EITHER_ALBUMS_OR_PHOTOS' => 'Kérlek válassz albumban vagy fényképeknél közül!', + 'ERROR_COULD_NOT_FIND' => 'Nem található, amit keresel.', + 'ERROR_INVALID_EMAIL' => 'Érvénytelen email cím.', + 'EMAIL_SUCCESS' => 'Email frissítve!', + 'ERROR_PHOTO_NOT_FOUND' => 'Hiba: fénykép %s nem található!', + 'ERROR_EMPTY_USERNAME' => 'az új felhasználónév nem lehet üres.', + 'ERROR_PASSWORD_DOES_NOT_MATCH' => 'az új jelszó nem egyezik meg.', + 'ERROR_EMPTY_PASSWORD' => 'az új jelszó nem lehet üres.', + 'ERROR_SELECT_ALBUM' => 'Válassz egy albumot a megosztáshoz!', + 'ERROR_SELECT_USER' => 'Válassz egy felhasználót a megosztáshoz!', + 'ERROR_SELECT_SHARING' => 'Válassz egy megosztást a törléshez!', + 'SHARING_SUCCESS' => 'Megosztás frissítve!', + 'SHARING_REMOVED' => 'Megosztás eltávolítva!', + 'USER_CREATED' => 'Felhasználó létrehozva!', + 'USER_DELETED' => 'Felhasználó törölve!', + 'USER_UPDATED' => 'Felhasználó frissítve!', + 'ENTER_EMAIL' => 'Add meg az email címed:', + 'ERROR_ALBUM_JSON_NOT_FOUND' => 'Hiba: Album JSON nem található!', + 'ERROR_ALBUM_NOT_FOUND' => 'Hiba: album %s nem található', + 'ERROR_DROPBOX_KEY' => 'Hiba: A Dropbox kulcs nincs beállítva', + 'ERROR_SESSION' => 'A munkamenet lejárt.', + 'CAMERA_DATE' => 'Kamera dátuma', + 'NEW_PASSWORD' => 'új jelszó', + 'ALLOW_UPLOADS' => 'Feltöltések engedélyezése', + 'ALLOW_USER_SELF_EDIT' => 'Felhasználói fiókok önkezelésének engedélyezése', + 'OSM_CONTRIBUTORS' => 'OpenStreetMap hozzájárulók', +]; From 61911721b98e379535e7737affd012b5072dfb5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sun, 13 Aug 2023 12:08:35 +0200 Subject: [PATCH 028/209] v4.11.0 (#1978) --- .../2023_08_11_134652_bump_version041100.php | 26 +++++++++++++++++++ version.md | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 database/migrations/2023_08_11_134652_bump_version041100.php diff --git a/database/migrations/2023_08_11_134652_bump_version041100.php b/database/migrations/2023_08_11_134652_bump_version041100.php new file mode 100644 index 00000000000..fe92e6b577d --- /dev/null +++ b/database/migrations/2023_08_11_134652_bump_version041100.php @@ -0,0 +1,26 @@ +where('key', 'version')->update(['value' => '041100']); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down(): void + { + DB::table('configs')->where('key', 'version')->update(['value' => '041000']); + } +}; diff --git a/version.md b/version.md index 1910ba9d233..91f3b43844a 100644 --- a/version.md +++ b/version.md @@ -1 +1 @@ -4.10.0 \ No newline at end of file +4.11.0 \ No newline at end of file From 3b99b184e07235bef11edc9475ddf0d083d83c51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sun, 20 Aug 2023 10:42:53 +0200 Subject: [PATCH 029/209] How about we don't execute tests twice? (#1982) --- phpunit.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/phpunit.xml b/phpunit.xml index e0f105d6cfc..22c108ec0f3 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -8,7 +8,6 @@ - ./tests/Feature ./tests/Feature ./tests/Feature/Base/BasePhotoTest.php ./tests/Feature/Base/BasePhotosRotateTest.php From 12bd6d4fd33a1511702efe2510e28dc0ab266a01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Mon, 21 Aug 2023 20:48:53 +0200 Subject: [PATCH 030/209] Minor fixes on List sharing permissions. (#1981) * first pass * second pass * more tentative * more tentative * more work * how about we don't execute tests twice? * fix tests? * forgot to revert that --- .../Requests/Sharing/ListSharingRequest.php | 14 ++- app/Policies/AlbumPolicy.php | 98 ++++++++++++++++--- tests/Feature/SharingBasicTest.php | 3 +- 3 files changed, 98 insertions(+), 17 deletions(-) diff --git a/app/Http/Requests/Sharing/ListSharingRequest.php b/app/Http/Requests/Sharing/ListSharingRequest.php index 8ceadbb3b18..bc370137891 100644 --- a/app/Http/Requests/Sharing/ListSharingRequest.php +++ b/app/Http/Requests/Sharing/ListSharingRequest.php @@ -5,6 +5,7 @@ use App\Contracts\Http\Requests\HasBaseAlbum; use App\Contracts\Http\Requests\RequestAttribute; use App\Contracts\Models\AbstractAlbum; +use App\Exceptions\UnauthenticatedException; use App\Http\Requests\BaseApiRequest; use App\Http\Requests\Traits\HasBaseAlbumTrait; use App\Models\User; @@ -50,13 +51,20 @@ class ListSharingRequest extends BaseApiRequest implements HasBaseAlbum */ public function authorize(): bool { - if (Gate::check(AlbumPolicy::CAN_SHARE_WITH_USERS, [AbstractAlbum::class, $this->album])) { + /** @var User $user */ + $user = Auth::user() ?? throw new UnauthenticatedException(); + + if (!Gate::check(AlbumPolicy::CAN_SHARE_WITH_USERS, [AbstractAlbum::class, $this->album])) { + return false; + } + + if ($user->may_administrate === true) { return true; } if ( - ($this->owner !== null && $this->owner->id === Auth::id()) || - ($this->participant !== null && $this->participant->id === Auth::id()) + ($this->owner?->id === $user->id) || + ($this->participant?->id === $user->id) ) { return true; } diff --git a/app/Policies/AlbumPolicy.php b/app/Policies/AlbumPolicy.php index 99a561f569f..30f6b06b9b2 100644 --- a/app/Policies/AlbumPolicy.php +++ b/app/Policies/AlbumPolicy.php @@ -7,6 +7,7 @@ use App\Exceptions\ConfigurationKeyMissingException; use App\Exceptions\Internal\LycheeAssertionError; use App\Exceptions\Internal\QueryBuilderException; +use App\Models\AccessPermission; use App\Models\BaseAlbumImpl; use App\Models\Configs; use App\Models\Extensions\BaseAlbum; @@ -21,6 +22,7 @@ class AlbumPolicy extends BasePolicy public const CAN_SEE = 'canSee'; public const CAN_ACCESS = 'canAccess'; public const CAN_DOWNLOAD = 'canDownload'; + public const CAN_DELETE = 'canDelete'; public const CAN_UPLOAD = 'canUpload'; public const CAN_EDIT = 'canEdit'; public const CAN_EDIT_ID = 'canEditById'; @@ -107,9 +109,11 @@ public function canAccess(?User $user, ?AbstractAlbum $album): bool return true; } - if ($album->public_permissions() !== null && + if ( + $album->public_permissions() !== null && ($album->public_permissions()->password === null || - $this->isUnlocked($album))) { + $this->isUnlocked($album)) + ) { return true; } @@ -233,13 +237,36 @@ public function canEdit(User $user, AbstractAlbum|null $album): bool if ($album instanceof BaseAlbum) { return $this->isOwner($user, $album) || - $album->current_user_permissions()?->grants_edit === true || - $album->public_permissions()?->grants_edit === true; + $album->current_user_permissions()?->grants_edit === true || + $album->public_permissions()?->grants_edit === true; } return false; } + /** + * Check if user is allowed to delete in current albumn. + * + * @param User $user + * @param AbstractAlbum|null $abstractAlbum + * + * @return bool + * + * @throws ConfigurationKeyMissingException + */ + public function canDelete(User $user, ?AbstractAlbum $abstractAlbum = null): bool + { + if (!$user->may_upload) { + return false; + } + + if (!$abstractAlbum instanceof BaseAlbum) { + return false; + } + + return $this->isOwner($user, $abstractAlbum); + } + /** * Checks whether the designated albums are editable by the current user. * @@ -274,12 +301,30 @@ public function canEditById(User $user, array $albumIDs): bool [null] ); - return - count($albumIDs) === 0 || - BaseAlbumImpl::query() + $num_albums = count($albumIDs); + + if ($num_albums === 0) { + return true; + } + + if (BaseAlbumImpl::query() ->whereIn('id', $albumIDs) - ->where('owner_id', $user->id) - ->count() === count($albumIDs); + ->where('owner_id', '=', $user->id) + ->count() === $num_albums + ) { + return true; + } + + if (AccessPermission::query() + ->whereIn('base_album_id', $albumIDs) + ->where('user_id', '=', $user->id) + ->where('grants_edit', '=', true) + ->count() === $num_albums + ) { + return true; + } + + return false; } /** @@ -294,12 +339,13 @@ public function canEditById(User $user, array $albumIDs): bool */ public function canShareWithUsers(?User $user, ?AbstractAlbum $abstractAlbum): bool { - if ($abstractAlbum === null) { + if ($user?->may_upload !== true) { return false; } - if ($user?->may_upload !== true) { - return false; + // If this is null, this means that we are looking at the list. + if ($abstractAlbum === null) { + return true; } if (SmartAlbumType::tryFrom($abstractAlbum->id) !== null) { @@ -321,7 +367,33 @@ public function canShareWithUsers(?User $user, ?AbstractAlbum $abstractAlbum): b */ public function canShareById(User $user, array $albumIDs): bool { - return $this->canEditById($user, $albumIDs); + if (!$user->may_upload) { + return false; + } + + // Remove root and smart albums, as they get a pass. + // Make IDs unique as otherwise count will fail. + $albumIDs = array_diff( + array_unique($albumIDs), + array_keys(SmartAlbumType::values()), + [null] + ); + + $num_albums = count($albumIDs); + + if ($num_albums === 0) { + return true; + } + + if (BaseAlbumImpl::query() + ->whereIn('id', $albumIDs) + ->where('owner_id', '=', $user->id) + ->count() === $num_albums + ) { + return true; + } + + return false; } /** diff --git a/tests/Feature/SharingBasicTest.php b/tests/Feature/SharingBasicTest.php index 8a9dd9df3e6..67e94d39e41 100644 --- a/tests/Feature/SharingBasicTest.php +++ b/tests/Feature/SharingBasicTest.php @@ -12,9 +12,10 @@ namespace Tests\Feature; +use Tests\Feature\Base\BaseSharingTest; use Tests\Feature\Constants\TestConstants; -class SharingBasicTest extends Base\BaseSharingTest +class SharingBasicTest extends BaseSharingTest { /** * @return void From d7d0b5f1c5e833bc27fa2e295a07a8c3f2c657af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Thu, 24 Aug 2023 19:38:09 +0200 Subject: [PATCH 031/209] fix complaints in Diagnostics when no migrations has been run (#1990) --- app/Actions/Diagnostics/Configuration.php | 5 +++++ .../Diagnostics/Pipes/Checks/AdminUserExistsCheck.php | 7 ++++++- app/Actions/Diagnostics/Pipes/Checks/ConfigSanityCheck.php | 5 +++++ app/Actions/Diagnostics/Pipes/Checks/DBIntegrityCheck.php | 5 +++++ app/Actions/Diagnostics/Pipes/Checks/ImageOptCheck.php | 5 +++++ app/Actions/Diagnostics/Pipes/Checks/UpdatableCheck.php | 4 ++++ app/Metadata/Versions/InstalledVersion.php | 5 +++++ app/Providers/AppServiceProvider.php | 3 +-- 8 files changed, 36 insertions(+), 3 deletions(-) diff --git a/app/Actions/Diagnostics/Configuration.php b/app/Actions/Diagnostics/Configuration.php index 2635bd056c3..36886ebff37 100644 --- a/app/Actions/Diagnostics/Configuration.php +++ b/app/Actions/Diagnostics/Configuration.php @@ -4,6 +4,7 @@ use App\Exceptions\Internal\QueryBuilderException; use App\Models\Configs; +use Illuminate\Support\Facades\Schema; class Configuration { @@ -17,6 +18,10 @@ class Configuration */ public function get(): array { + if (!Schema::hasTable('configs')) { + return ['Error: migration has not been run yet.']; + } + // Load settings $settings = Configs::query() ->where('confidentiality', '<=', 2) diff --git a/app/Actions/Diagnostics/Pipes/Checks/AdminUserExistsCheck.php b/app/Actions/Diagnostics/Pipes/Checks/AdminUserExistsCheck.php index 6da4210efa9..4473cab3462 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/AdminUserExistsCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/AdminUserExistsCheck.php @@ -4,6 +4,7 @@ use App\Contracts\DiagnosticPipe; use App\Models\User; +use Illuminate\Support\Facades\Schema; class AdminUserExistsCheck implements DiagnosticPipe { @@ -12,6 +13,10 @@ class AdminUserExistsCheck implements DiagnosticPipe */ public function handle(array &$data, \Closure $next): array { + if (!Schema::hasTable('users')) { + return $next($data); + } + $numberOfAdmin = User::query()->where('may_administrate', '=', true)->count(); if ($numberOfAdmin === 0) { $data[] = 'Error: User Admin not found in database. Please run: "php lychee:create_user {username} {password}"'; @@ -19,4 +24,4 @@ public function handle(array &$data, \Closure $next): array return $next($data); } -} \ No newline at end of file +} diff --git a/app/Actions/Diagnostics/Pipes/Checks/ConfigSanityCheck.php b/app/Actions/Diagnostics/Pipes/Checks/ConfigSanityCheck.php index b9bef2147ee..7dfea32d313 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/ConfigSanityCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/ConfigSanityCheck.php @@ -4,6 +4,7 @@ use App\Contracts\DiagnosticPipe; use App\Models\Configs; +use Illuminate\Support\Facades\Schema; /** * Small checks on the content of the config database. @@ -18,6 +19,10 @@ class ConfigSanityCheck implements DiagnosticPipe */ public function handle(array &$data, \Closure $next): array { + if (!Schema::hasTable('configs')) { + return $next($data); + } + // Load settings $this->settings = Configs::get(); diff --git a/app/Actions/Diagnostics/Pipes/Checks/DBIntegrityCheck.php b/app/Actions/Diagnostics/Pipes/Checks/DBIntegrityCheck.php index 3871dae507d..2bd2c8dcbd2 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/DBIntegrityCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/DBIntegrityCheck.php @@ -5,6 +5,7 @@ use App\Contracts\DiagnosticPipe; use App\Models\Photo; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Schema; /** * This checks the Database integrity. @@ -19,6 +20,10 @@ class DBIntegrityCheck implements DiagnosticPipe */ public function handle(array &$data, \Closure $next): array { + if (!Schema::hasTable('size_variants') || !Schema::hasTable('photos')) { + return $next($data); + } + $subJoin = DB::table('size_variants')->where('size_variants.type', '=', 0); $photos = Photo::query() ->with(['album']) diff --git a/app/Actions/Diagnostics/Pipes/Checks/ImageOptCheck.php b/app/Actions/Diagnostics/Pipes/Checks/ImageOptCheck.php index 031f4bf3bc0..4796260535f 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/ImageOptCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/ImageOptCheck.php @@ -5,6 +5,7 @@ use App\Contracts\DiagnosticPipe; use App\Facades\Helpers; use App\Models\Configs; +use Illuminate\Support\Facades\Schema; use function Safe\exec; use Spatie\ImageOptimizer\Optimizers\Cwebp; use Spatie\ImageOptimizer\Optimizers\Gifsicle; @@ -23,6 +24,10 @@ class ImageOptCheck implements DiagnosticPipe */ public function handle(array &$data, \Closure $next): array { + if (!Schema::hasTable('configs')) { + return $next($data); + } + $tools = []; $tools[] = new Cwebp(); $tools[] = new Gifsicle(); diff --git a/app/Actions/Diagnostics/Pipes/Checks/UpdatableCheck.php b/app/Actions/Diagnostics/Pipes/Checks/UpdatableCheck.php index 7b70ea97f10..4ef6189280f 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/UpdatableCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/UpdatableCheck.php @@ -11,6 +11,7 @@ use App\Metadata\Versions\GitHubVersion; use App\Metadata\Versions\InstalledVersion; use App\Models\Configs; +use Illuminate\Support\Facades\Schema; use function Safe\exec; /** @@ -64,6 +65,9 @@ public static function assertUpdatability(): void return; // @codeCoverageIgnoreEnd } + if (!Schema::hasTable('configs')) { + throw new ConfigurationException('Migration is not run'); + } if (!Configs::getValueAsBool('allow_online_git_pull')) { throw new ConfigurationException('Online updates are disabled by configuration'); diff --git a/app/Metadata/Versions/InstalledVersion.php b/app/Metadata/Versions/InstalledVersion.php index a8803534e52..b97e6356cb1 100644 --- a/app/Metadata/Versions/InstalledVersion.php +++ b/app/Metadata/Versions/InstalledVersion.php @@ -8,6 +8,7 @@ use App\Exceptions\ConfigurationKeyMissingException; use App\Models\Configs; use Illuminate\Support\Facades\File; +use Illuminate\Support\Facades\Schema; /** * InstalledVersion contains the following info: @@ -61,6 +62,10 @@ public function isDev(): bool */ public function getVersion(): Version { + if (!Schema::hasTable('configs')) { + return Version::createFromInt(10000); + } + return Version::createFromInt(Configs::getValueAsInt('version')); } } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 6b8d462c61b..78a95a7ba4e 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -99,12 +99,11 @@ public function boot() $lang = Configs::getValueAsString('lang'); app()->setLocale($lang); } catch (\Throwable $e) { - /** log and ignore. + /** Ignore. * This is necessary so that we can continue: * - if Configs table do not exists (no install), * - if the value does not exists in configs (no install),. */ - logger($e); } /** From 3dd7dcc416e3f18f8c59edecbb06e692fd303f26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Thu, 24 Aug 2023 20:10:22 +0200 Subject: [PATCH 032/209] Fixes #1751 - Add error thrown if APP_URL does not match current url (#1985) Co-authored-by: Martin Stone <1611702+d7415@users.noreply.github.com> --- app/Actions/Diagnostics/Errors.php | 2 ++ .../Pipes/Checks/AppUrlMatchCheck.php | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 app/Actions/Diagnostics/Pipes/Checks/AppUrlMatchCheck.php diff --git a/app/Actions/Diagnostics/Errors.php b/app/Actions/Diagnostics/Errors.php index 9d94185ef90..b54186dc43a 100644 --- a/app/Actions/Diagnostics/Errors.php +++ b/app/Actions/Diagnostics/Errors.php @@ -3,6 +3,7 @@ namespace App\Actions\Diagnostics; use App\Actions\Diagnostics\Pipes\Checks\AdminUserExistsCheck; +use App\Actions\Diagnostics\Pipes\Checks\AppUrlMatchCheck; use App\Actions\Diagnostics\Pipes\Checks\BasicPermissionCheck; use App\Actions\Diagnostics\Pipes\Checks\ConfigSanityCheck; use App\Actions\Diagnostics\Pipes\Checks\DBIntegrityCheck; @@ -32,6 +33,7 @@ class Errors GDSupportCheck::class, ImageOptCheck::class, IniSettingsCheck::class, + AppUrlMatchCheck::class, MigrationCheck::class, PHPVersionCheck::class, TimezoneCheck::class, diff --git a/app/Actions/Diagnostics/Pipes/Checks/AppUrlMatchCheck.php b/app/Actions/Diagnostics/Pipes/Checks/AppUrlMatchCheck.php new file mode 100644 index 00000000000..a3b02a41c52 --- /dev/null +++ b/app/Actions/Diagnostics/Pipes/Checks/AppUrlMatchCheck.php @@ -0,0 +1,24 @@ +httpHost() && $config_url !== request()->schemeAndHttpHost()) { + $data[] = 'Error: APP_URL does not match the current url. This will break WebAuthn authentication. Please update APP_URL to reflect this change.'; + } + + return $next($data); + } +} From cc9a6d47dde02a7aedfc7ea4637748d0fbd92fed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Fri, 25 Aug 2023 10:15:13 +0200 Subject: [PATCH 033/209] fix no log write access infinite loop (#1991) --- app/Exceptions/Handler.php | 9 ++++++++- .../NoWriteAccessOnLogsExceptions.php | 19 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 app/Exceptions/NoWriteAccessOnLogsExceptions.php diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 0c9a152febe..20ad4de790d 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -94,6 +94,7 @@ class Handler extends ExceptionHandler protected $dontReport = [ TokenMismatchException::class, SessionExpiredException::class, + NoWriteAccessOnLogsExceptions::class, ]; /** @@ -399,7 +400,13 @@ public function report(\Throwable $e): void } $msg = $msg_ . PHP_EOL . $msg; } while ($e = $e->getPrevious()); - Log::log($severity->value, $msg); + try { + Log::log($severity->value, $msg); + /** @phpstan-ignore-next-line // Yes it is thrown, trust me.... */ + } catch (\UnexpectedValueException $e2) { + throw new NoWriteAccessOnLogsExceptions($e2); + // abort(507, 'Could not write in the logs. Check that storage/logs/ and containing files have proper permissions.'); + } } /** diff --git a/app/Exceptions/NoWriteAccessOnLogsExceptions.php b/app/Exceptions/NoWriteAccessOnLogsExceptions.php new file mode 100644 index 00000000000..a571497e05c --- /dev/null +++ b/app/Exceptions/NoWriteAccessOnLogsExceptions.php @@ -0,0 +1,19 @@ + Date: Sun, 3 Sep 2023 14:50:40 +0200 Subject: [PATCH 034/209] Fixes #1950 : Do not enforce strict model when downloading (#1997) * Do not enforce strict more when downloading * add explanations --- app/Actions/Album/Archive.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/Actions/Album/Archive.php b/app/Actions/Album/Archive.php index 17675b53d59..e5556c99a4b 100644 --- a/app/Actions/Album/Archive.php +++ b/app/Actions/Album/Archive.php @@ -13,6 +13,7 @@ use App\Policies\AlbumPolicy; use App\Policies\PhotoPolicy; use App\SmartAlbums\BaseSmartAlbum; +use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Collection; use Illuminate\Support\Facades\Gate; use Safe\Exceptions\InfoException; @@ -49,6 +50,15 @@ class Archive extends Action */ public function do(Collection $albums): StreamedResponse { + // Issue #1950: Setting Model::shouldBeStrict(); in /app/Providers/AppServiceProvider.php breaks recursive album download. + // + // From my understanding it is because when we query an album with it's relations (photos & children), + // the relations of the children are not populated. + // As a result, when we try to query the picture list of those, it breaks. + // In that specific case, it is better to simply disable Model::shouldBeStrict() and eat the recursive SQL queries: + // for this specific case we must allow lazy loading. + Model::shouldBeStrict(false); + $this->deflateLevel = Configs::getValueAsInt('zip_deflate_level'); $responseGenerator = function () use ($albums) { From 4fc6a1476ab44c6ad54af81efc95b1754214dc35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sun, 3 Sep 2023 14:50:56 +0200 Subject: [PATCH 035/209] fixes #1686 by providing absolute path if not set (#1998) --- app/Console/Commands/PhotosAddedNotification.php | 8 ++++++++ app/Models/SizeVariant.php | 1 + 2 files changed, 9 insertions(+) diff --git a/app/Console/Commands/PhotosAddedNotification.php b/app/Console/Commands/PhotosAddedNotification.php index 8c82f9d849c..f5967316225 100644 --- a/app/Console/Commands/PhotosAddedNotification.php +++ b/app/Console/Commands/PhotosAddedNotification.php @@ -9,6 +9,8 @@ use Illuminate\Console\Command; use Illuminate\Notifications\DatabaseNotification; use Illuminate\Support\Facades\Mail; +use Illuminate\Support\Facades\URL; +use Illuminate\Support\Str; class PhotosAddedNotification extends Command { @@ -59,6 +61,12 @@ public function handle(): int $thumbUrl = $photo->size_variants->getThumb()?->url; + // Mail clients do not like relative paths. + // if url does not start with 'http', it is not absolute... + if (!Str::startsWith('http', $thumbUrl)) { + $thumbUrl = URL::asset($thumbUrl); + } + // If the url config doesn't contain a trailing slash then add it if (str_ends_with(config('app.url'), '/')) { $trailing_slash = ''; diff --git a/app/Models/SizeVariant.php b/app/Models/SizeVariant.php index df3e2852b03..1c2df0c17b8 100644 --- a/app/Models/SizeVariant.php +++ b/app/Models/SizeVariant.php @@ -21,6 +21,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\URL; use League\Flysystem\Local\LocalFilesystemAdapter; // TODO: Uncomment the following line, if Lychee really starts to support AWS s3. From 8708e47f1cef41c44f3665fdc198deb845ee1ff3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sun, 3 Sep 2023 15:02:00 +0200 Subject: [PATCH 036/209] webauthn supports also username (#1999) --- .../WebAuthn/WebAuthnLoginController.php | 10 ++++++- tests/Feature/WebAuthTest.php | 28 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/WebAuthn/WebAuthnLoginController.php b/app/Http/Controllers/WebAuthn/WebAuthnLoginController.php index 34b7d5b9014..18f7703b289 100644 --- a/app/Http/Controllers/WebAuthn/WebAuthnLoginController.php +++ b/app/Http/Controllers/WebAuthn/WebAuthnLoginController.php @@ -27,7 +27,15 @@ class WebAuthnLoginController */ public function options(AssertionRequest $request): Responsable { - return $request->toVerify($request->validate(['user_id' => 'sometimes|int'])['user_id'] ?? null); + $fields = $request->validate([ + 'user_id' => 'sometimes|int', + 'username' => 'sometimes|string', + ]); + + $username = $fields['username'] ?? null; + $authenticatable = $fields['user_id'] ?? ($username !== null ? ['username' => $username] : null); + + return $request->toVerify($authenticatable); } /** diff --git a/tests/Feature/WebAuthTest.php b/tests/Feature/WebAuthTest.php index 2efd76347f5..f1dedea0299 100644 --- a/tests/Feature/WebAuthTest.php +++ b/tests/Feature/WebAuthTest.php @@ -211,6 +211,34 @@ public function testWebAuthLoginOptions(): void ]); } + /** + * Testing the Login options. + * + * @return void + */ + public function testWebAuthLoginOptionsUsername(): void + { + $this->createCredentials(); + + // Generate a challenge for username = admin + $response = $this->postJson('/api/WebAuthn::login/options', ['username' => 'admin']); + $this->assertOk($response); + + $challengeRetrieved = Session::get(config('webauthn.challenge.key')); + $clg = $challengeRetrieved->data->toBase64Url(); + + $response->assertJson([ + 'timeout' => 60000, + 'challenge' => $clg, + 'allowCredentials' => [ + 0 => [ + 'id' => '_Xlz-khgFhDdkvOWyy_YqC54ExkYyp1o6HAQiybqLST-9RGBndpgI06TQygIYI7ZL2dayCMYm6J1-bXyl72obA', + 'type' => 'public-key', + ], + ], + ]); + } + /** * Testing the Login interface. * From c4202f3a96b0922c42e88c52db236f7826f51005 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sun, 3 Sep 2023 15:05:51 +0200 Subject: [PATCH 037/209] version 4.11.1 (#2000) --- .../2023_09_03_124836_bump_version041101.php | 26 +++++++++++++++++++ version.md | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 database/migrations/2023_09_03_124836_bump_version041101.php diff --git a/database/migrations/2023_09_03_124836_bump_version041101.php b/database/migrations/2023_09_03_124836_bump_version041101.php new file mode 100644 index 00000000000..9cd45fd7403 --- /dev/null +++ b/database/migrations/2023_09_03_124836_bump_version041101.php @@ -0,0 +1,26 @@ +where('key', 'version')->update(['value' => '041101']); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down(): void + { + DB::table('configs')->where('key', 'version')->update(['value' => '041100']); + } +}; diff --git a/version.md b/version.md index 91f3b43844a..012d0f057e0 100644 --- a/version.md +++ b/version.md @@ -1 +1 @@ -4.11.0 \ No newline at end of file +4.11.1 \ No newline at end of file From 79d105d55116db4816b8cac740ec954c7e2c6ea5 Mon Sep 17 00:00:00 2001 From: Christoph Hauert Date: Mon, 4 Sep 2023 00:51:05 -0700 Subject: [PATCH 038/209] Fix album decorations (#2003) album decoration settings were missing from returned array with config settings --- app/Http/Resources/ConfigurationResource.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/Http/Resources/ConfigurationResource.php b/app/Http/Resources/ConfigurationResource.php index 230cf91c3ff..611ba009e82 100644 --- a/app/Http/Resources/ConfigurationResource.php +++ b/app/Http/Resources/ConfigurationResource.php @@ -4,6 +4,8 @@ use App\DTO\AlbumSortingCriterion; use App\DTO\PhotoSortingCriterion; +use App\Enum\AlbumDecorationOrientation; +use App\Enum\AlbumDecorationType; use App\Enum\DefaultAlbumProtectionType; use App\Enum\ThumbAlbumSubtitleType; use App\Exceptions\Handler; @@ -118,6 +120,8 @@ public function toArray($request): array ], ]), + 'album_decoration' => Configs::getValueAsEnum('album_decoration', AlbumDecorationType::class), + 'album_decoration_orientation' => Configs::getValueAsEnum('album_decoration_orientation', AlbumDecorationOrientation::class), 'album_subtitle_type' => Configs::getValueAsEnum('album_subtitle_type', ThumbAlbumSubtitleType::class), 'check_for_updates' => Configs::getValueAsBool('check_for_updates'), 'default_album_protection' => Configs::getValueAsEnum('default_album_protection', DefaultAlbumProtectionType::class), From 845d624ca37207315d693446a539c6e9ddf69f93 Mon Sep 17 00:00:00 2001 From: Christoph Hauert Date: Mon, 4 Sep 2023 11:22:23 -0700 Subject: [PATCH 039/209] fix max/min_taken_at (#2005) --- app/Http/Resources/Models/AlbumResource.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Http/Resources/Models/AlbumResource.php b/app/Http/Resources/Models/AlbumResource.php index 76fd35b4b74..a093e1fb998 100644 --- a/app/Http/Resources/Models/AlbumResource.php +++ b/app/Http/Resources/Models/AlbumResource.php @@ -58,8 +58,8 @@ public function toArray($request) // timestamps 'created_at' => $this->resource->created_at->toIso8601String(), 'updated_at' => $this->resource->updated_at->toIso8601String(), - 'max_taken_at' => $this->resource->min_taken_at?->toIso8601String(), - 'min_taken_at' => $this->resource->max_taken_at?->toIso8601String(), + 'max_taken_at' => $this->resource->max_taken_at?->toIso8601String(), + 'min_taken_at' => $this->resource->min_taken_at?->toIso8601String(), // security 'policy' => AlbumProtectionPolicy::ofBaseAlbum($this->resource), From 995b4b37631cf7d9fc0144334ba9df9a1c4a6329 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Mon, 11 Sep 2023 09:03:03 +0200 Subject: [PATCH 040/209] fix 2007 (#2008) --- app/Http/Resources/Models/SmartAlbumResource.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Http/Resources/Models/SmartAlbumResource.php b/app/Http/Resources/Models/SmartAlbumResource.php index d3561f1c4af..9809bcafcfc 100644 --- a/app/Http/Resources/Models/SmartAlbumResource.php +++ b/app/Http/Resources/Models/SmartAlbumResource.php @@ -3,6 +3,7 @@ namespace App\Http\Resources\Models; use App\DTO\AlbumProtectionPolicy; +use App\Http\Resources\Collections\PhotoCollectionResource; use App\Http\Resources\Rights\AlbumRightsResource; use App\SmartAlbums\BaseSmartAlbum; use Illuminate\Http\Resources\Json\JsonResource; @@ -31,12 +32,11 @@ public function toArray($request) 'id' => $this->resource->id, 'title' => $this->resource->title, - // children // We use getPhotos() to be sure to not execute and cache the photos. // Some of the tests do check what is the value of the thumb id as a result, // if the id is not in thumb (intended behaviour we want to check) // but still in the photos (supposed to be null), this fail the test. - 'photos' => $this->whenLoaded('photos', PhotoResource::collection($this->resource->getPhotos() ?? []), null), + 'photos' => $this->whenLoaded('photos', PhotoCollectionResource::make($this->resource->getPhotos() ?? []), null), // thumb 'thumb' => $this->resource->thumb, From 6285da91a1e915e4d2b1ea886935bc0ff4032e4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Mon, 11 Sep 2023 09:03:33 +0200 Subject: [PATCH 041/209] composer + lychee-front sync (#2009) * composer + lychee-front sync * formatting --- app/Exceptions/Handlers/AccessDBDenied.php | 3 +- app/Exceptions/Handlers/NoEncryptionKey.php | 3 +- app/Http/Controllers/PhotoController.php | 1 + .../Extensions/ThrowsConsistentExceptions.php | 1 + app/Models/Extensions/UTCBasedTimes.php | 2 +- app/Models/Photo.php | 1 + composer.lock | 830 +++++++++--------- public/Lychee-front | 2 +- public/dist/frontend.css | 2 +- public/dist/frontend.js | 83 +- public/dist/landing.css | 2 + public/dist/landing.js | 4 +- 12 files changed, 435 insertions(+), 499 deletions(-) diff --git a/app/Exceptions/Handlers/AccessDBDenied.php b/app/Exceptions/Handlers/AccessDBDenied.php index 918be4e661c..6006855bf3e 100644 --- a/app/Exceptions/Handlers/AccessDBDenied.php +++ b/app/Exceptions/Handlers/AccessDBDenied.php @@ -7,7 +7,6 @@ use Illuminate\Database\QueryException; use Symfony\Component\HttpFoundation\Response as SymfonyResponse; use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface as HttpException; -use Throwable; /** * Class AccessDBDenied. @@ -45,7 +44,7 @@ public function renderHttpException(SymfonyResponse $defaultResponse, HttpExcept } return $redirectResponse; - } catch (Throwable) { + } catch (\Throwable) { return $defaultResponse; } } diff --git a/app/Exceptions/Handlers/NoEncryptionKey.php b/app/Exceptions/Handlers/NoEncryptionKey.php index fe65b0ff758..7240e6b26be 100644 --- a/app/Exceptions/Handlers/NoEncryptionKey.php +++ b/app/Exceptions/Handlers/NoEncryptionKey.php @@ -7,7 +7,6 @@ use Illuminate\Encryption\MissingAppKeyException; use Symfony\Component\HttpFoundation\Response as SymfonyResponse; use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface as HttpException; -use Throwable; /** * Class NoEncryptionKey. @@ -45,7 +44,7 @@ public function renderHttpException(SymfonyResponse $defaultResponse, HttpExcept } return $redirectResponse; - } catch (Throwable) { + } catch (\Throwable) { return $defaultResponse; } } diff --git a/app/Http/Controllers/PhotoController.php b/app/Http/Controllers/PhotoController.php index 74075b99280..49136eb4727 100644 --- a/app/Http/Controllers/PhotoController.php +++ b/app/Http/Controllers/PhotoController.php @@ -89,6 +89,7 @@ public function getRandom(PhotoQueryPolicy $photoQueryPolicy): PhotoResource ->photos() ->with(['album', 'size_variants', 'size_variants.sym_links']); } + // PHPStan does not understand that `firstOrFail` returns `Photo`, but assumes that it returns `Model` // @phpstan-ignore-next-line return PhotoResource::make($query->inRandomOrder() diff --git a/app/Models/Extensions/ThrowsConsistentExceptions.php b/app/Models/Extensions/ThrowsConsistentExceptions.php index 662fba56ac8..3141865f87e 100644 --- a/app/Models/Extensions/ThrowsConsistentExceptions.php +++ b/app/Models/Extensions/ThrowsConsistentExceptions.php @@ -24,6 +24,7 @@ trait ThrowsConsistentExceptions protected function friendlyModelName(): string { $name = Str::snake(class_basename($this), ' '); + // Remove some typical, implementation-specific pre- and suffixes from the name return str_replace('/(^abstract )|( impl$)|( interface$)/', '', $name); } diff --git a/app/Models/Extensions/UTCBasedTimes.php b/app/Models/Extensions/UTCBasedTimes.php index 06ea608d4d2..89deeb9802a 100644 --- a/app/Models/Extensions/UTCBasedTimes.php +++ b/app/Models/Extensions/UTCBasedTimes.php @@ -200,7 +200,7 @@ public function asDateTime($value): ?Carbon } return $result; - } catch (InvalidArgumentException) { + } catch (\InvalidArgumentException) { // If the specified format did not mach, don't throw an exception, // but try to parse the value using a best-effort approach, see below } diff --git a/app/Models/Photo.php b/app/Models/Photo.php index c42ccb52c8c..7e685c35511 100644 --- a/app/Models/Photo.php +++ b/app/Models/Photo.php @@ -298,6 +298,7 @@ protected function getFocalAttribute(?string $focal): ?string if ($focal === null || $focal === '') { return null; } + // We need to format the framerate (stored as focal) -> max 2 decimal digits return $this->isVideo() ? (string) round(floatval($focal), 2) : $focal; } diff --git a/composer.lock b/composer.lock index 3296ec4d213..adea1270512 100644 --- a/composer.lock +++ b/composer.lock @@ -375,16 +375,16 @@ }, { "name": "doctrine/dbal", - "version": "3.6.5", + "version": "3.6.6", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "96d5a70fd91efdcec81fc46316efc5bf3da17ddf" + "reference": "63646ffd71d1676d2f747f871be31b7e921c7864" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/96d5a70fd91efdcec81fc46316efc5bf3da17ddf", - "reference": "96d5a70fd91efdcec81fc46316efc5bf3da17ddf", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/63646ffd71d1676d2f747f871be31b7e921c7864", + "reference": "63646ffd71d1676d2f747f871be31b7e921c7864", "shasum": "" }, "require": { @@ -400,10 +400,11 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.21", + "phpstan/phpstan": "1.10.29", "phpstan/phpstan-strict-rules": "^1.5", "phpunit/phpunit": "9.6.9", "psalm/plugin-phpunit": "0.18.4", + "slevomat/coding-standard": "8.13.1", "squizlabs/php_codesniffer": "3.7.2", "symfony/cache": "^5.4|^6.0", "symfony/console": "^4.4|^5.4|^6.0", @@ -467,7 +468,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.6.5" + "source": "https://github.com/doctrine/dbal/tree/3.6.6" }, "funding": [ { @@ -483,7 +484,7 @@ "type": "tidelift" } ], - "time": "2023-07-17T09:15:50+00:00" + "time": "2023-08-17T05:38:17+00:00" }, { "name": "doctrine/deprecations", @@ -793,16 +794,16 @@ }, { "name": "dragonmantank/cron-expression", - "version": "v3.3.2", + "version": "v3.3.3", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8" + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/782ca5968ab8b954773518e9e49a6f892a34b2a8", - "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", "shasum": "" }, "require": { @@ -842,7 +843,7 @@ ], "support": { "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.2" + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.3" }, "funding": [ { @@ -850,7 +851,7 @@ "type": "github" } ], - "time": "2022-09-10T18:51:20+00:00" + "time": "2023-08-10T19:36:49+00:00" }, { "name": "egulias/email-validator", @@ -921,28 +922,28 @@ }, { "name": "evenement/evenement", - "version": "v3.0.1", + "version": "v3.0.2", "source": { "type": "git", "url": "https://github.com/igorw/evenement.git", - "reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7" + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/igorw/evenement/zipball/531bfb9d15f8aa57454f5f0285b18bec903b8fb7", - "reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7", + "url": "https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc", "shasum": "" }, "require": { "php": ">=7.0" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9 || ^6" }, "type": "library", "autoload": { - "psr-0": { - "Evenement": "src" + "psr-4": { + "Evenement\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -962,9 +963,9 @@ ], "support": { "issues": "https://github.com/igorw/evenement/issues", - "source": "https://github.com/igorw/evenement/tree/master" + "source": "https://github.com/igorw/evenement/tree/v3.0.2" }, - "time": "2017-07-23T21:35:13+00:00" + "time": "2023-08-08T05:53:35+00:00" }, { "name": "fruitcake/php-cors", @@ -1336,22 +1337,22 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.7.0", + "version": "7.8.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5" + "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/fb7566caccf22d74d1ab270de3551f72a58399f5", - "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1110f66a6530a40fe7aea0378fe608ee2b2248f9", + "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0", - "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -1442,7 +1443,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.7.0" + "source": "https://github.com/guzzle/guzzle/tree/7.8.0" }, "funding": [ { @@ -1458,20 +1459,20 @@ "type": "tidelift" } ], - "time": "2023-05-21T14:04:53+00:00" + "time": "2023-08-27T10:20:53+00:00" }, { "name": "guzzlehttp/promises", - "version": "2.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "3a494dc7dc1d7d12e511890177ae2d0e6c107da6" + "reference": "111166291a0f8130081195ac4556a5587d7f1b5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/3a494dc7dc1d7d12e511890177ae2d0e6c107da6", - "reference": "3a494dc7dc1d7d12e511890177ae2d0e6c107da6", + "url": "https://api.github.com/repos/guzzle/promises/zipball/111166291a0f8130081195ac4556a5587d7f1b5d", + "reference": "111166291a0f8130081195ac4556a5587d7f1b5d", "shasum": "" }, "require": { @@ -1525,7 +1526,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.0" + "source": "https://github.com/guzzle/promises/tree/2.0.1" }, "funding": [ { @@ -1541,20 +1542,20 @@ "type": "tidelift" } ], - "time": "2023-05-21T13:50:22+00:00" + "time": "2023-08-03T15:11:55+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.5.0", + "version": "2.6.1", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "b635f279edd83fc275f822a1188157ffea568ff6" + "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/b635f279edd83fc275f822a1188157ffea568ff6", - "reference": "b635f279edd83fc275f822a1188157ffea568ff6", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/be45764272e8873c72dbe3d2edcfdfcc3bc9f727", + "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727", "shasum": "" }, "require": { @@ -1641,7 +1642,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.5.0" + "source": "https://github.com/guzzle/psr7/tree/2.6.1" }, "funding": [ { @@ -1657,20 +1658,20 @@ "type": "tidelift" } ], - "time": "2023-04-17T16:11:26+00:00" + "time": "2023-08-27T10:13:57+00:00" }, { "name": "guzzlehttp/uri-template", - "version": "v1.0.1", + "version": "v1.0.2", "source": { "type": "git", "url": "https://github.com/guzzle/uri-template.git", - "reference": "b945d74a55a25a949158444f09ec0d3c120d69e2" + "reference": "61bf437fc2197f587f6857d3ff903a24f1731b5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/uri-template/zipball/b945d74a55a25a949158444f09ec0d3c120d69e2", - "reference": "b945d74a55a25a949158444f09ec0d3c120d69e2", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/61bf437fc2197f587f6857d3ff903a24f1731b5d", + "reference": "61bf437fc2197f587f6857d3ff903a24f1731b5d", "shasum": "" }, "require": { @@ -1678,15 +1679,11 @@ "symfony/polyfill-php80": "^1.17" }, "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.1", "phpunit/phpunit": "^8.5.19 || ^9.5.8", "uri-template/tests": "1.0.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, "autoload": { "psr-4": { "GuzzleHttp\\UriTemplate\\": "src" @@ -1725,7 +1722,7 @@ ], "support": { "issues": "https://github.com/guzzle/uri-template/issues", - "source": "https://github.com/guzzle/uri-template/tree/v1.0.1" + "source": "https://github.com/guzzle/uri-template/tree/v1.0.2" }, "funding": [ { @@ -1741,7 +1738,7 @@ "type": "tidelift" } ], - "time": "2021-10-07T12:57:01+00:00" + "time": "2023-08-27T10:19:19+00:00" }, { "name": "laminas/laminas-servicemanager", @@ -2041,16 +2038,16 @@ }, { "name": "laravel/framework", - "version": "v10.17.0", + "version": "v10.22.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "a0e3f5ac5b6258f6ede9a2a2c5cc3820baea24a2" + "reference": "9234388a895206d4e1df37342b61adc67e5c5d31" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/a0e3f5ac5b6258f6ede9a2a2c5cc3820baea24a2", - "reference": "a0e3f5ac5b6258f6ede9a2a2c5cc3820baea24a2", + "url": "https://api.github.com/repos/laravel/framework/zipball/9234388a895206d4e1df37342b61adc67e5c5d31", + "reference": "9234388a895206d4e1df37342b61adc67e5c5d31", "shasum": "" }, "require": { @@ -2237,25 +2234,25 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-08-01T14:08:45+00:00" + "time": "2023-09-05T13:20:01+00:00" }, { "name": "laravel/prompts", - "version": "v0.1.1", + "version": "v0.1.6", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "309b30157090a63c40152aa912d198d6aeb60ea6" + "reference": "b514c5620e1b3b61221b0024dc88def26d9654f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/309b30157090a63c40152aa912d198d6aeb60ea6", - "reference": "309b30157090a63c40152aa912d198d6aeb60ea6", + "url": "https://api.github.com/repos/laravel/prompts/zipball/b514c5620e1b3b61221b0024dc88def26d9654f4", + "reference": "b514c5620e1b3b61221b0024dc88def26d9654f4", "shasum": "" }, "require": { "ext-mbstring": "*", - "illuminate/collections": "^10.0", + "illuminate/collections": "^10.0|^11.0", "php": "^8.1", "symfony/console": "^6.2" }, @@ -2283,9 +2280,9 @@ ], "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.1.1" + "source": "https://github.com/laravel/prompts/tree/v0.1.6" }, - "time": "2023-07-31T15:03:02+00:00" + "time": "2023-08-18T13:32:23+00:00" }, { "name": "laravel/serializable-closure", @@ -2349,16 +2346,16 @@ }, { "name": "league/commonmark", - "version": "2.4.0", + "version": "2.4.1", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "d44a24690f16b8c1808bf13b1bd54ae4c63ea048" + "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/d44a24690f16b8c1808bf13b1bd54ae4c63ea048", - "reference": "d44a24690f16b8c1808bf13b1bd54ae4c63ea048", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/3669d6d5f7a47a93c08ddff335e6d945481a1dd5", + "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5", "shasum": "" }, "require": { @@ -2451,7 +2448,7 @@ "type": "tidelift" } ], - "time": "2023-03-24T15:16:10+00:00" + "time": "2023-08-30T16:55:00+00:00" }, { "name": "league/config", @@ -2537,16 +2534,16 @@ }, { "name": "league/flysystem", - "version": "3.15.1", + "version": "3.16.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "a141d430414fcb8bf797a18716b09f759a385bed" + "reference": "4fdf372ca6b63c6e281b1c01a624349ccb757729" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a141d430414fcb8bf797a18716b09f759a385bed", - "reference": "a141d430414fcb8bf797a18716b09f759a385bed", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/4fdf372ca6b63c6e281b1c01a624349ccb757729", + "reference": "4fdf372ca6b63c6e281b1c01a624349ccb757729", "shasum": "" }, "require": { @@ -2555,6 +2552,8 @@ "php": "^8.0.2" }, "conflict": { + "async-aws/core": "<1.19.0", + "async-aws/s3": "<1.14.0", "aws/aws-sdk-php": "3.209.31 || 3.210.0", "guzzlehttp/guzzle": "<7.0", "guzzlehttp/ringphp": "<1.1.1", @@ -2574,7 +2573,7 @@ "microsoft/azure-storage-blob": "^1.1", "phpseclib/phpseclib": "^3.0.14", "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", + "phpunit/phpunit": "^9.5.11|^10.0", "sabre/dav": "^4.3.1" }, "type": "library", @@ -2609,7 +2608,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.15.1" + "source": "https://github.com/thephpleague/flysystem/tree/3.16.0" }, "funding": [ { @@ -2621,20 +2620,20 @@ "type": "github" } ], - "time": "2023-05-04T09:04:26+00:00" + "time": "2023-09-07T19:22:17+00:00" }, { "name": "league/flysystem-local", - "version": "3.15.0", + "version": "3.16.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-local.git", - "reference": "543f64c397fefdf9cfeac443ffb6beff602796b3" + "reference": "ec7383f25642e6fd4bb0c9554fc2311245391781" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/543f64c397fefdf9cfeac443ffb6beff602796b3", - "reference": "543f64c397fefdf9cfeac443ffb6beff602796b3", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/ec7383f25642e6fd4bb0c9554fc2311245391781", + "reference": "ec7383f25642e6fd4bb0c9554fc2311245391781", "shasum": "" }, "require": { @@ -2669,7 +2668,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem-local/issues", - "source": "https://github.com/thephpleague/flysystem-local/tree/3.15.0" + "source": "https://github.com/thephpleague/flysystem-local/tree/3.16.0" }, "funding": [ { @@ -2681,30 +2680,30 @@ "type": "github" } ], - "time": "2023-05-02T20:02:14+00:00" + "time": "2023-08-30T10:23:59+00:00" }, { "name": "league/mime-type-detection", - "version": "1.11.0", + "version": "1.13.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd" + "reference": "a6dfb1194a2946fcdc1f38219445234f65b35c96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/a6dfb1194a2946fcdc1f38219445234f65b35c96", + "reference": "a6dfb1194a2946fcdc1f38219445234f65b35c96", "shasum": "" }, "require": { "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.2", "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" }, "type": "library", "autoload": { @@ -2725,7 +2724,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.11.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.13.0" }, "funding": [ { @@ -2737,7 +2736,7 @@ "type": "tidelift" } ], - "time": "2022-04-17T13:12:02+00:00" + "time": "2023-08-05T12:09:49+00:00" }, { "name": "lychee-org/nestedset", @@ -3140,25 +3139,29 @@ }, { "name": "nesbot/carbon", - "version": "2.68.1", + "version": "2.70.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "4f991ed2a403c85efbc4f23eb4030063fdbe01da" + "reference": "d3298b38ea8612e5f77d38d1a99438e42f70341d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4f991ed2a403c85efbc4f23eb4030063fdbe01da", - "reference": "4f991ed2a403c85efbc4f23eb4030063fdbe01da", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/d3298b38ea8612e5f77d38d1a99438e42f70341d", + "reference": "d3298b38ea8612e5f77d38d1a99438e42f70341d", "shasum": "" }, "require": { "ext-json": "*", "php": "^7.1.8 || ^8.0", + "psr/clock": "^1.0", "symfony/polyfill-mbstring": "^1.0", "symfony/polyfill-php80": "^1.16", "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" }, + "provide": { + "psr/clock-implementation": "1.0" + }, "require-dev": { "doctrine/dbal": "^2.0 || ^3.1.4", "doctrine/orm": "^2.7", @@ -3238,25 +3241,25 @@ "type": "tidelift" } ], - "time": "2023-06-20T18:29:04+00:00" + "time": "2023-09-07T16:43:50+00:00" }, { "name": "nette/schema", - "version": "v1.2.3", + "version": "v1.2.4", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f" + "reference": "c9ff517a53903b3d4e29ec547fb20feecb05b8ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/abbdbb70e0245d5f3bf77874cea1dfb0c930d06f", - "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f", + "url": "https://api.github.com/repos/nette/schema/zipball/c9ff517a53903b3d4e29ec547fb20feecb05b8ab", + "reference": "c9ff517a53903b3d4e29ec547fb20feecb05b8ab", "shasum": "" }, "require": { "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.3" + "php": "7.1 - 8.3" }, "require-dev": { "nette/tester": "^2.3 || ^2.4", @@ -3298,9 +3301,9 @@ ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.2.3" + "source": "https://github.com/nette/schema/tree/v1.2.4" }, - "time": "2022-10-13T01:24:26+00:00" + "time": "2023-08-05T18:56:25+00:00" }, { "name": "nette/utils", @@ -4162,6 +4165,54 @@ }, "time": "2021-02-03T23:26:27+00:00" }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, { "name": "psr/container", "version": "1.1.2", @@ -4855,30 +4906,29 @@ }, { "name": "spatie/laravel-feed", - "version": "4.2.1", + "version": "4.3.0", "source": { "type": "git", "url": "https://github.com/spatie/laravel-feed.git", - "reference": "0b9b7df3f716c6067b082cd6a985126c2189a6c4" + "reference": "1cf06a43b4ee0fdeb919983a76de68467ccdb844" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-feed/zipball/0b9b7df3f716c6067b082cd6a985126c2189a6c4", - "reference": "0b9b7df3f716c6067b082cd6a985126c2189a6c4", + "url": "https://api.github.com/repos/spatie/laravel-feed/zipball/1cf06a43b4ee0fdeb919983a76de68467ccdb844", + "reference": "1cf06a43b4ee0fdeb919983a76de68467ccdb844", "shasum": "" }, "require": { - "illuminate/contracts": "^8.0|^9.0|^10.0", - "illuminate/http": "^8.0|^9.0|^10.0", - "illuminate/support": "^8.0|^9.0|^10.0", + "illuminate/contracts": "^10.0", + "illuminate/http": "^10.0", + "illuminate/support": "^10.0", "php": "^8.0", - "spatie/laravel-package-tools": "^1.9" + "spatie/laravel-package-tools": "^1.15" }, "require-dev": { - "orchestra/testbench": "^6.23|^7.0|^8.0", - "pestphp/pest": "^1.22", - "phpunit/phpunit": "^9.5", - "spatie/pest-plugin-snapshots": "^1.1", + "orchestra/testbench": "^8.0", + "pestphp/pest": "^2.0", + "spatie/pest-plugin-snapshots": "^2.0", "spatie/test-time": "^1.2" }, "type": "library", @@ -4932,7 +4982,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/laravel-feed/tree/4.2.1" + "source": "https://github.com/spatie/laravel-feed/tree/4.3.0" }, "funding": [ { @@ -4944,7 +4994,7 @@ "type": "github" } ], - "time": "2023-01-25T09:39:38+00:00" + "time": "2023-08-07T14:46:53+00:00" }, { "name": "spatie/laravel-image-optimizer", @@ -5016,16 +5066,16 @@ }, { "name": "spatie/laravel-package-tools", - "version": "1.15.0", + "version": "1.16.1", "source": { "type": "git", "url": "https://github.com/spatie/laravel-package-tools.git", - "reference": "efab1844b8826443135201c4443690f032c3d533" + "reference": "cc7c991555a37f9fa6b814aa03af73f88026a83d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/efab1844b8826443135201c4443690f032c3d533", - "reference": "efab1844b8826443135201c4443690f032c3d533", + "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/cc7c991555a37f9fa6b814aa03af73f88026a83d", + "reference": "cc7c991555a37f9fa6b814aa03af73f88026a83d", "shasum": "" }, "require": { @@ -5064,7 +5114,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-package-tools/issues", - "source": "https://github.com/spatie/laravel-package-tools/tree/1.15.0" + "source": "https://github.com/spatie/laravel-package-tools/tree/1.16.1" }, "funding": [ { @@ -5072,7 +5122,7 @@ "type": "github" } ], - "time": "2023-04-27T08:09:01+00:00" + "time": "2023-08-23T09:04:39+00:00" }, { "name": "spatie/temporary-directory", @@ -5137,16 +5187,16 @@ }, { "name": "symfony/cache", - "version": "v6.3.2", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "d176b97600860df13e851538c2df2ad88e9e5ca9" + "reference": "e60d00b4f633efa4c1ef54e77c12762d9073e7b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/d176b97600860df13e851538c2df2ad88e9e5ca9", - "reference": "d176b97600860df13e851538c2df2ad88e9e5ca9", + "url": "https://api.github.com/repos/symfony/cache/zipball/e60d00b4f633efa4c1ef54e77c12762d9073e7b3", + "reference": "e60d00b4f633efa4c1ef54e77c12762d9073e7b3", "shasum": "" }, "require": { @@ -5213,7 +5263,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.3.2" + "source": "https://github.com/symfony/cache/tree/v6.3.4" }, "funding": [ { @@ -5229,7 +5279,7 @@ "type": "tidelift" } ], - "time": "2023-07-27T16:19:14+00:00" + "time": "2023-08-05T09:10:27+00:00" }, { "name": "symfony/cache-contracts", @@ -5309,16 +5359,16 @@ }, { "name": "symfony/console", - "version": "v6.3.2", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "aa5d64ad3f63f2e48964fc81ee45cb318a723898" + "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/aa5d64ad3f63f2e48964fc81ee45cb318a723898", - "reference": "aa5d64ad3f63f2e48964fc81ee45cb318a723898", + "url": "https://api.github.com/repos/symfony/console/zipball/eca495f2ee845130855ddf1cf18460c38966c8b6", + "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6", "shasum": "" }, "require": { @@ -5379,7 +5429,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.3.2" + "source": "https://github.com/symfony/console/tree/v6.3.4" }, "funding": [ { @@ -5395,7 +5445,7 @@ "type": "tidelift" } ], - "time": "2023-07-19T20:17:28+00:00" + "time": "2023-08-16T10:10:12+00:00" }, { "name": "symfony/css-selector", @@ -5825,16 +5875,16 @@ }, { "name": "symfony/http-foundation", - "version": "v6.3.2", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "43ed99d30f5f466ffa00bdac3f5f7aa9cd7617c3" + "reference": "cac1556fdfdf6719668181974104e6fcfa60e844" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/43ed99d30f5f466ffa00bdac3f5f7aa9cd7617c3", - "reference": "43ed99d30f5f466ffa00bdac3f5f7aa9cd7617c3", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/cac1556fdfdf6719668181974104e6fcfa60e844", + "reference": "cac1556fdfdf6719668181974104e6fcfa60e844", "shasum": "" }, "require": { @@ -5882,7 +5932,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.3.2" + "source": "https://github.com/symfony/http-foundation/tree/v6.3.4" }, "funding": [ { @@ -5898,20 +5948,20 @@ "type": "tidelift" } ], - "time": "2023-07-23T21:58:39+00:00" + "time": "2023-08-22T08:20:46+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.3.3", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "d3b567f0addf695e10b0c6d57564a9bea2e058ee" + "reference": "36abb425b4af863ae1fe54d8a8b8b4c76a2bccdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/d3b567f0addf695e10b0c6d57564a9bea2e058ee", - "reference": "d3b567f0addf695e10b0c6d57564a9bea2e058ee", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/36abb425b4af863ae1fe54d8a8b8b4c76a2bccdb", + "reference": "36abb425b4af863ae1fe54d8a8b8b4c76a2bccdb", "shasum": "" }, "require": { @@ -5920,7 +5970,7 @@ "symfony/deprecation-contracts": "^2.5|^3", "symfony/error-handler": "^6.3", "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^6.2.7", + "symfony/http-foundation": "^6.3.4", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -5928,7 +5978,7 @@ "symfony/cache": "<5.4", "symfony/config": "<6.1", "symfony/console": "<5.4", - "symfony/dependency-injection": "<6.3", + "symfony/dependency-injection": "<6.3.4", "symfony/doctrine-bridge": "<5.4", "symfony/form": "<5.4", "symfony/http-client": "<5.4", @@ -5952,7 +6002,7 @@ "symfony/config": "^6.1", "symfony/console": "^5.4|^6.0", "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^6.3", + "symfony/dependency-injection": "^6.3.4", "symfony/dom-crawler": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/finder": "^5.4|^6.0", @@ -5995,7 +6045,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.3.3" + "source": "https://github.com/symfony/http-kernel/tree/v6.3.4" }, "funding": [ { @@ -6011,7 +6061,7 @@ "type": "tidelift" } ], - "time": "2023-07-31T10:33:00+00:00" + "time": "2023-08-26T13:54:49+00:00" }, { "name": "symfony/mailer", @@ -6179,16 +6229,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", "shasum": "" }, "require": { @@ -6203,7 +6253,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6241,7 +6291,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" }, "funding": [ { @@ -6257,20 +6307,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + "reference": "875e90aeea2777b6f135677f618529449334a612" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", + "reference": "875e90aeea2777b6f135677f618529449334a612", "shasum": "" }, "require": { @@ -6282,7 +6332,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6322,7 +6372,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" }, "funding": [ { @@ -6338,20 +6388,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da" + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", "shasum": "" }, "require": { @@ -6365,7 +6415,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6409,7 +6459,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" }, "funding": [ { @@ -6425,20 +6475,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:30:37+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", "shasum": "" }, "require": { @@ -6450,7 +6500,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6493,7 +6543,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" }, "funding": [ { @@ -6509,20 +6559,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + "reference": "42292d99c55abe617799667f454222c54c60e229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", "shasum": "" }, "require": { @@ -6537,7 +6587,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6576,7 +6626,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" }, "funding": [ { @@ -6592,20 +6642,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-07-28T09:04:16+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97" + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/70f4aebd92afca2f865444d30a4d2151c13c3179", + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179", "shasum": "" }, "require": { @@ -6614,7 +6664,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6652,7 +6702,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.28.0" }, "funding": [ { @@ -6668,20 +6718,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", "shasum": "" }, "require": { @@ -6690,7 +6740,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6735,7 +6785,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" }, "funding": [ { @@ -6751,20 +6801,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-php83", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "508c652ba3ccf69f8c97f251534f229791b52a57" + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/508c652ba3ccf69f8c97f251534f229791b52a57", - "reference": "508c652ba3ccf69f8c97f251534f229791b52a57", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", "shasum": "" }, "require": { @@ -6774,7 +6824,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6787,7 +6837,10 @@ ], "psr-4": { "Symfony\\Polyfill\\Php83\\": "" - } + }, + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6812,7 +6865,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.28.0" }, "funding": [ { @@ -6828,20 +6881,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-08-16T06:22:46+00:00" }, { "name": "symfony/polyfill-uuid", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "f3cf1a645c2734236ed1e2e671e273eeb3586166" + "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/f3cf1a645c2734236ed1e2e671e273eeb3586166", - "reference": "f3cf1a645c2734236ed1e2e671e273eeb3586166", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/9c44518a5aff8da565c8a55dbe85d2769e6f630e", + "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e", "shasum": "" }, "require": { @@ -6856,7 +6909,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6894,7 +6947,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.28.0" }, "funding": [ { @@ -6910,20 +6963,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/process", - "version": "v6.3.2", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d" + "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d", - "reference": "c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d", + "url": "https://api.github.com/repos/symfony/process/zipball/0b5c29118f2e980d455d2e34a5659f4579847c54", + "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54", "shasum": "" }, "require": { @@ -6955,7 +7008,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.3.2" + "source": "https://github.com/symfony/process/tree/v6.3.4" }, "funding": [ { @@ -6971,7 +7024,7 @@ "type": "tidelift" } ], - "time": "2023-07-12T16:00:22+00:00" + "time": "2023-08-07T10:39:22+00:00" }, { "name": "symfony/routing", @@ -7474,16 +7527,16 @@ }, { "name": "symfony/var-dumper", - "version": "v6.3.3", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "77fb4f2927f6991a9843633925d111147449ee7a" + "reference": "2027be14f8ae8eae999ceadebcda5b4909b81d45" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/77fb4f2927f6991a9843633925d111147449ee7a", - "reference": "77fb4f2927f6991a9843633925d111147449ee7a", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2027be14f8ae8eae999ceadebcda5b4909b81d45", + "reference": "2027be14f8ae8eae999ceadebcda5b4909b81d45", "shasum": "" }, "require": { @@ -7538,7 +7591,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.3.3" + "source": "https://github.com/symfony/var-dumper/tree/v6.3.4" }, "funding": [ { @@ -7554,20 +7607,20 @@ "type": "tidelift" } ], - "time": "2023-07-31T07:08:24+00:00" + "time": "2023-08-24T14:51:05+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.3.2", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "3400949782c0cb5b3e73aa64cfd71dde000beccc" + "reference": "df1f8aac5751871b83d30bf3e2c355770f8f0691" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/3400949782c0cb5b3e73aa64cfd71dde000beccc", - "reference": "3400949782c0cb5b3e73aa64cfd71dde000beccc", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/df1f8aac5751871b83d30bf3e2c355770f8f0691", + "reference": "df1f8aac5751871b83d30bf3e2c355770f8f0691", "shasum": "" }, "require": { @@ -7612,7 +7665,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.3.2" + "source": "https://github.com/symfony/var-exporter/tree/v6.3.4" }, "funding": [ { @@ -7628,7 +7681,7 @@ "type": "tidelift" } ], - "time": "2023-07-26T17:39:03+00:00" + "time": "2023-08-16T18:14:47+00:00" }, { "name": "thecodingmachine/safe", @@ -8104,16 +8157,16 @@ "packages-dev": [ { "name": "barryvdh/laravel-debugbar", - "version": "v3.8.2", + "version": "v3.9.2", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-debugbar.git", - "reference": "56a2dc1da9d3219164074713983eef68996386cf" + "reference": "bfd0131c146973cab164e50f5cdd8a67cc60cab1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/56a2dc1da9d3219164074713983eef68996386cf", - "reference": "56a2dc1da9d3219164074713983eef68996386cf", + "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/bfd0131c146973cab164e50f5cdd8a67cc60cab1", + "reference": "bfd0131c146973cab164e50f5cdd8a67cc60cab1", "shasum": "" }, "require": { @@ -8172,7 +8225,7 @@ ], "support": { "issues": "https://github.com/barryvdh/laravel-debugbar/issues", - "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.8.2" + "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.9.2" }, "funding": [ { @@ -8184,7 +8237,7 @@ "type": "github" } ], - "time": "2023-07-26T04:57:49+00:00" + "time": "2023-08-25T18:43:57+00:00" }, { "name": "barryvdh/laravel-ide-helper", @@ -8478,16 +8531,16 @@ }, { "name": "composer/semver", - "version": "3.3.2", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", + "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", "shasum": "" }, "require": { @@ -8537,9 +8590,9 @@ "versioning" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.3.2" + "source": "https://github.com/composer/semver/tree/3.4.0" }, "funding": [ { @@ -8555,7 +8608,7 @@ "type": "tidelift" } ], - "time": "2022-04-01T19:23:25+00:00" + "time": "2023-08-31T09:50:34+00:00" }, { "name": "composer/xdebug-handler", @@ -8698,82 +8751,6 @@ ], "time": "2023-02-20T08:34:36+00:00" }, - { - "name": "doctrine/annotations", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", - "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^2 || ^3", - "ext-tokenizer": "*", - "php": "^7.2 || ^8.0", - "psr/cache": "^1 || ^2 || ^3" - }, - "require-dev": { - "doctrine/cache": "^2.0", - "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.8.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "symfony/cache": "^5.4 || ^6", - "vimeo/psalm": "^4.10" - }, - "suggest": { - "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Docblock Annotations Parser", - "homepage": "https://www.doctrine-project.org/projects/annotations.html", - "keywords": [ - "annotations", - "docblock", - "parser" - ], - "support": { - "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/2.0.1" - }, - "time": "2023-02-02T22:02:53+00:00" - }, { "name": "filp/whoops", "version": "2.15.3", @@ -8847,23 +8824,21 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.22.0", + "version": "v3.26.1", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "92b019f6c8d79aa26349d0db7671d37440dc0ff3" + "reference": "d023ba6684055f6ea1da1352d8a02baca0426983" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/92b019f6c8d79aa26349d0db7671d37440dc0ff3", - "reference": "92b019f6c8d79aa26349d0db7671d37440dc0ff3", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/d023ba6684055f6ea1da1352d8a02baca0426983", + "reference": "d023ba6684055f6ea1da1352d8a02baca0426983", "shasum": "" }, "require": { "composer/semver": "^3.3", "composer/xdebug-handler": "^3.0.3", - "doctrine/annotations": "^2", - "doctrine/lexer": "^2 || ^3", "ext-json": "*", "ext-tokenizer": "*", "php": "^7.4 || ^8.0", @@ -8932,7 +8907,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.22.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.26.1" }, "funding": [ { @@ -8940,7 +8915,7 @@ "type": "github" } ], - "time": "2023-07-16T23:08:06+00:00" + "time": "2023-09-08T19:09:07+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -9178,31 +9153,31 @@ }, { "name": "mockery/mockery", - "version": "1.6.4", + "version": "1.6.6", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "d1413755e26fe56a63455f7753221c86cbb88f66" + "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/d1413755e26fe56a63455f7753221c86cbb88f66", - "reference": "d1413755e26fe56a63455f7753221c86cbb88f66", + "url": "https://api.github.com/repos/mockery/mockery/zipball/b8e0bb7d8c604046539c1115994632c74dcb361e", + "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e", "shasum": "" }, "require": { "hamcrest/hamcrest-php": "^2.0.1", "lib-pcre": ">=7.0", - "php": ">=7.4,<8.3" + "php": ">=7.3" }, "conflict": { "phpunit/phpunit": "<8.0" }, "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3", + "phpunit/phpunit": "^8.5 || ^9.6.10", "psalm/plugin-phpunit": "^0.18.4", "symplify/easy-coding-standard": "^11.5.0", - "vimeo/psalm": "^5.13.1" + "vimeo/psalm": "^4.30" }, "type": "library", "autoload": { @@ -9259,7 +9234,7 @@ "security": "https://github.com/mockery/mockery/security/advisories", "source": "https://github.com/mockery/mockery" }, - "time": "2023-07-19T15:51:02+00:00" + "time": "2023-08-09T00:03:52+00:00" }, { "name": "myclabs/deep-copy", @@ -9322,16 +9297,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.16.0", + "version": "v4.17.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "19526a33fb561ef417e822e85f08a00db4059c17" + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/19526a33fb561ef417e822e85f08a00db4059c17", - "reference": "19526a33fb561ef417e822e85f08a00db4059c17", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", "shasum": "" }, "require": { @@ -9372,9 +9347,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.16.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" }, - "time": "2023-06-25T14:52:30+00:00" + "time": "2023-08-13T19:53:39+00:00" }, { "name": "nunomaduro/larastan", @@ -9695,16 +9670,16 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.7.2", + "version": "1.7.3", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d" + "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b2fe4d22a5426f38e014855322200b97b5362c0d", - "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", + "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", "shasum": "" }, "require": { @@ -9747,9 +9722,9 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.2" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.3" }, - "time": "2023-05-30T18:13:47+00:00" + "time": "2023-08-12T11:01:26+00:00" }, { "name": "phpmyadmin/sql-parser", @@ -9840,16 +9815,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.23.0", + "version": "1.24.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "a2b24135c35852b348894320d47b3902a94bc494" + "reference": "3510b0a6274cc42f7219367cb3abfc123ffa09d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/a2b24135c35852b348894320d47b3902a94bc494", - "reference": "a2b24135c35852b348894320d47b3902a94bc494", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/3510b0a6274cc42f7219367cb3abfc123ffa09d6", + "reference": "3510b0a6274cc42f7219367cb3abfc123ffa09d6", "shasum": "" }, "require": { @@ -9881,22 +9856,22 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.23.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.0" }, - "time": "2023-07-23T22:17:56+00:00" + "time": "2023-09-07T20:46:32+00:00" }, { "name": "phpstan/phpstan", - "version": "1.10.26", + "version": "1.10.33", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "5d660cbb7e1b89253a47147ae44044f49832351f" + "reference": "03b1cf9f814ba0863c4e9affea49a4d1ed9a2ed1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/5d660cbb7e1b89253a47147ae44044f49832351f", - "reference": "5d660cbb7e1b89253a47147ae44044f49832351f", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/03b1cf9f814ba0863c4e9affea49a4d1ed9a2ed1", + "reference": "03b1cf9f814ba0863c4e9affea49a4d1ed9a2ed1", "shasum": "" }, "require": { @@ -9945,25 +9920,25 @@ "type": "tidelift" } ], - "time": "2023-07-19T12:44:37+00:00" + "time": "2023-09-04T12:20:53+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", - "version": "1.1.3", + "version": "1.1.4", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-deprecation-rules.git", - "reference": "a22b36b955a2e9a3d39fe533b6c1bb5359f9c319" + "reference": "089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/a22b36b955a2e9a3d39fe533b6c1bb5359f9c319", - "reference": "a22b36b955a2e9a3d39fe533b6c1bb5359f9c319", + "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa", + "reference": "089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.10" + "phpstan/phpstan": "^1.10.3" }, "require-dev": { "php-parallel-lint/php-parallel-lint": "^1.2", @@ -9991,9 +9966,9 @@ "description": "PHPStan rules for detecting usage of deprecated classes, methods, properties, constants and traits.", "support": { "issues": "https://github.com/phpstan/phpstan-deprecation-rules/issues", - "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.1.3" + "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.1.4" }, - "time": "2023-03-17T07:50:08+00:00" + "time": "2023-08-05T09:02:04+00:00" }, { "name": "phpstan/phpstan-strict-rules", @@ -10046,16 +10021,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "10.1.3", + "version": "10.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "be1fe461fdc917de2a29a452ccf2657d325b443d" + "reference": "cd59bb34756a16ca8253ce9b2909039c227fff71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/be1fe461fdc917de2a29a452ccf2657d325b443d", - "reference": "be1fe461fdc917de2a29a452ccf2657d325b443d", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/cd59bb34756a16ca8253ce9b2909039c227fff71", + "reference": "cd59bb34756a16ca8253ce9b2909039c227fff71", "shasum": "" }, "require": { @@ -10112,7 +10087,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.3" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.4" }, "funding": [ { @@ -10120,20 +10095,20 @@ "type": "github" } ], - "time": "2023-07-26T13:45:28+00:00" + "time": "2023-08-31T14:04:38+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "4.0.2", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "5647d65443818959172645e7ed999217360654b6" + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/5647d65443818959172645e7ed999217360654b6", - "reference": "5647d65443818959172645e7ed999217360654b6", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "shasum": "" }, "require": { @@ -10173,7 +10148,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.0.2" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" }, "funding": [ { @@ -10181,7 +10156,7 @@ "type": "github" } ], - "time": "2023-05-07T09:13:23+00:00" + "time": "2023-08-31T06:24:48+00:00" }, { "name": "phpunit/php-invoker", @@ -10248,16 +10223,16 @@ }, { "name": "phpunit/php-text-template", - "version": "3.0.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d" + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/9f3d3709577a527025f55bcf0f7ab8052c8bb37d", - "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", "shasum": "" }, "require": { @@ -10295,7 +10270,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.0" + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" }, "funding": [ { @@ -10303,7 +10279,7 @@ "type": "github" } ], - "time": "2023-02-03T06:56:46+00:00" + "time": "2023-08-31T14:07:24+00:00" }, { "name": "phpunit/php-timer", @@ -10366,16 +10342,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.2.6", + "version": "10.3.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "1c17815c129f133f3019cc18e8d0c8622e6d9bcd" + "reference": "241ed4dd0db1c096984e62d414c4e1ac8d5dbff4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1c17815c129f133f3019cc18e8d0c8622e6d9bcd", - "reference": "1c17815c129f133f3019cc18e8d0c8622e6d9bcd", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/241ed4dd0db1c096984e62d414c4e1ac8d5dbff4", + "reference": "241ed4dd0db1c096984e62d414c4e1ac8d5dbff4", "shasum": "" }, "require": { @@ -10400,7 +10376,7 @@ "sebastian/diff": "^5.0", "sebastian/environment": "^6.0", "sebastian/exporter": "^5.0", - "sebastian/global-state": "^6.0", + "sebastian/global-state": "^6.0.1", "sebastian/object-enumerator": "^5.0", "sebastian/recursion-context": "^5.0", "sebastian/type": "^4.0", @@ -10415,7 +10391,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.2-dev" + "dev-main": "10.3-dev" } }, "autoload": { @@ -10447,7 +10423,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.2.6" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.3.3" }, "funding": [ { @@ -10463,7 +10439,7 @@ "type": "tidelift" } ], - "time": "2023-07-17T12:08:28+00:00" + "time": "2023-09-05T04:34:51+00:00" }, { "name": "sebastian/cli-parser", @@ -10634,16 +10610,16 @@ }, { "name": "sebastian/comparator", - "version": "5.0.0", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "72f01e6586e0caf6af81297897bd112eb7e9627c" + "reference": "2db5010a484d53ebf536087a70b4a5423c102372" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/72f01e6586e0caf6af81297897bd112eb7e9627c", - "reference": "72f01e6586e0caf6af81297897bd112eb7e9627c", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372", "shasum": "" }, "require": { @@ -10654,7 +10630,7 @@ "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^10.3" }, "type": "library", "extra": { @@ -10698,7 +10674,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" }, "funding": [ { @@ -10706,20 +10683,20 @@ "type": "github" } ], - "time": "2023-02-03T07:07:16+00:00" + "time": "2023-08-14T13:18:12+00:00" }, { "name": "sebastian/complexity", - "version": "3.0.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6" + "reference": "c70b73893e10757af9c6a48929fa6a333b56a97a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/e67d240970c9dc7ea7b2123a6d520e334dd61dc6", - "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/c70b73893e10757af9c6a48929fa6a333b56a97a", + "reference": "c70b73893e10757af9c6a48929fa6a333b56a97a", "shasum": "" }, "require": { @@ -10755,7 +10732,8 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.0.0" + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.0.1" }, "funding": [ { @@ -10763,7 +10741,7 @@ "type": "github" } ], - "time": "2023-02-03T06:59:47+00:00" + "time": "2023-08-31T09:55:53+00:00" }, { "name": "sebastian/diff", @@ -10898,16 +10876,16 @@ }, { "name": "sebastian/exporter", - "version": "5.0.0", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0" + "reference": "32ff03d078fed1279c4ec9a407d08c5e9febb480" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", - "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/32ff03d078fed1279c4ec9a407d08c5e9febb480", + "reference": "32ff03d078fed1279c4ec9a407d08c5e9febb480", "shasum": "" }, "require": { @@ -10963,7 +10941,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.0.1" }, "funding": [ { @@ -10971,7 +10950,7 @@ "type": "github" } ], - "time": "2023-02-03T07:06:49+00:00" + "time": "2023-09-08T04:46:58+00:00" }, { "name": "sebastian/global-state", @@ -11037,16 +11016,16 @@ }, { "name": "sebastian/lines-of-code", - "version": "2.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130" + "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/17c4d940ecafb3d15d2cf916f4108f664e28b130", - "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/649e40d279e243d985aa8fb6e74dd5bb28dc185d", + "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d", "shasum": "" }, "require": { @@ -11082,7 +11061,8 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.0" + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.1" }, "funding": [ { @@ -11090,7 +11070,7 @@ "type": "github" } ], - "time": "2023-02-03T07:08:02+00:00" + "time": "2023-08-31T09:25:50+00:00" }, { "name": "sebastian/object-enumerator", @@ -11635,16 +11615,16 @@ }, { "name": "symfony/polyfill-php81", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b", + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b", "shasum": "" }, "require": { @@ -11653,7 +11633,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -11694,7 +11674,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.28.0" }, "funding": [ { @@ -11710,7 +11690,7 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/stopwatch", diff --git a/public/Lychee-front b/public/Lychee-front index 742e4538b08..3398bbe13cf 160000 --- a/public/Lychee-front +++ b/public/Lychee-front @@ -1 +1 @@ -Subproject commit 742e4538b0827a72f23d2ea05dd8e2ad9cd3df28 +Subproject commit 3398bbe13cfb1c1d6cce46a003d43ac23c4272fb diff --git a/public/dist/frontend.css b/public/dist/frontend.css index 0682b7086a2..1f5978703c7 100644 --- a/public/dist/frontend.css +++ b/public/dist/frontend.css @@ -1 +1 @@ -@charset "UTF-8";@-webkit-keyframes basicModal__fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes basicModal__fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes basicModal__fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes basicModal__fadeOut{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes basicModal__moveUpFade{0%{-webkit-transform:translateY(80px);transform:translateY(80px)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes basicModal__moveUpFade{0%{-webkit-transform:translateY(80px);transform:translateY(80px)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes basicModal__shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}20%,60%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes basicModal__shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}20%,60%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}.basicModalContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:fixed;width:100%;height:100%;top:0;left:0;background-color:rgba(0,0,0,.4);z-index:1000;-webkit-box-sizing:border-box;box-sizing:border-box}.basicModalContainer *,.basicModalContainer :after,.basicModalContainer :before{-webkit-box-sizing:border-box;box-sizing:border-box}.basicModalContainer--fadeIn{-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__fadeIn;animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__fadeIn}.basicModalContainer--fadeOut{-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__fadeOut;animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__fadeOut}.basicModalContainer--fadeIn .basicModal--fadeIn{-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__moveUpFade;animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__moveUpFade}.basicModalContainer--fadeIn .basicModal--shake{-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__shake;animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__shake}.basicModal{position:relative;width:500px;background-color:#fff;border-radius:5px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.2);box-shadow:0 1px 2px rgba(0,0,0,.2)}.basicModal__content{padding:7%;max-height:70vh;overflow:auto;-webkit-overflow-scrolling:touch}.basicModal__buttons{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;-webkit-box-shadow:0 -1px 0 rgba(0,0,0,.1);box-shadow:0 -1px 0 rgba(0,0,0,.1)}.basicModal__button{display:inline-block;width:100%;font-weight:700;text-align:center;-webkit-transition:background-color .2s;transition:background-color .2s;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.basicModal__button:hover{background-color:rgba(0,0,0,.02)}.basicModal__button#basicModal__cancel{-ms-flex-negative:2;flex-shrink:2}.basicModal__button#basicModal__action{-ms-flex-negative:1;flex-shrink:1;-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.1);box-shadow:inset 1px 0 0 rgba(0,0,0,.1)}.basicModal__button#basicModal__action:first-child{-webkit-box-shadow:none;box-shadow:none}.basicModal__button:first-child{border-radius:0 0 0 5px}.basicModal__button:last-child{border-radius:0 0 5px}.basicModal__small{max-width:340px;text-align:center}.basicModal__small .basicModal__content{padding:10% 5%}.basicModal__xclose#basicModal__cancel{position:absolute;top:-8px;right:-8px;margin:0;padding:0;width:40px;height:40px;background-color:#fff;border-radius:100%;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.2);box-shadow:0 1px 2px rgba(0,0,0,.2)}.basicModal__xclose#basicModal__cancel:after{content:"";position:absolute;left:-3px;top:8px;width:35px;height:34px;background:#fff}.basicModal__xclose#basicModal__cancel svg{position:relative;width:20px;height:39px;fill:#888;z-index:1;-webkit-transition:fill .2s;transition:fill .2s}.basicModal__xclose#basicModal__cancel:after:hover svg,.basicModal__xclose#basicModal__cancel:hover svg{fill:#2875ed}.basicModal__xclose#basicModal__cancel:active svg,.basicModal__xclose#basicModal__cancel:after:active svg{fill:#1364e3}.basicContextContainer{position:fixed;width:100%;height:100%;top:0;left:0;z-index:1000;-webkit-tap-highlight-color:transparent}.basicContext{position:absolute;opacity:0;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.2) basicContext__popIn;animation:.3s cubic-bezier(.51,.92,.24,1.2) basicContext__popIn}.basicContext *{-webkit-box-sizing:border-box;box-sizing:border-box}.basicContext__item{cursor:pointer}.basicContext__item--separator{float:left;width:100%;cursor:default}.basicContext__data{min-width:140px;text-align:left}.basicContext__icon{display:inline-block}.basicContext--scrollable{height:100%;-webkit-overflow-scrolling:touch;overflow-x:hidden;overflow-y:auto}.basicContext--scrollable .basicContext__data{min-width:160px}@-webkit-keyframes basicContext__popIn{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes basicContext__popIn{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1;background-color:#1d1d1d;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;-webkit-font-smoothing:antialiased;-moz-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}table{border-collapse:collapse;border-spacing:0}em,i{font-style:italic}b,strong{font-weight:700}*{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:color .3s,opacity .3s ease-out,-webkit-transform .3s ease-out,-webkit-box-shadow .3s;transition:color .3s,opacity .3s ease-out,transform .3s ease-out,box-shadow .3s,-webkit-transform .3s ease-out,-webkit-box-shadow .3s}body,html{width:100%;height:100%;position:relative;overflow:clip}body.mode-frame div#container,body.mode-none div#container{display:none}input,textarea{-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;user-select:text!important}.svgsprite{display:none}.iconic{width:100%;height:100%}#upload{display:none}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1);animation-timing-function:cubic-bezier(.51,.92,.24,1)}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1);animation-timing-function:cubic-bezier(.51,.92,.24,1)}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes moveBackground{0%{background-position-x:0}100%{background-position-x:-100px}}@keyframes moveBackground{0%{background-position-x:0}100%{background-position-x:-100px}}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes zoomOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}}@keyframes zoomOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}}@-webkit-keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}body.mode-frame #lychee_application_container,body.mode-none #lychee_application_container{display:none}.hflex-container,.hflex-item-rigid,.hflex-item-stretch,.vflex-container,.vflex-item-rigid,.vflex-item-stretch{position:relative;overflow:clip}.hflex-container,.vflex-container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:stretch;align-content:stretch;gap:0 0}.vflex-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.hflex-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.hflex-item-stretch,.vflex-item-stretch{-webkit-box-flex:1;-ms-flex:auto;flex:auto}.hflex-item-stretch{width:0;height:100%}.vflex-item-stretch{width:100%;height:0}.hflex-item-rigid,.vflex-item-rigid{-webkit-box-flex:0;-ms-flex:none;flex:none}.hflex-item-rigid{width:auto;height:100%}.vflex-item-rigid{width:100%;height:auto}.overlay-container{position:absolute;display:none;top:0;left:0;width:100%;height:100%;background-color:#000;-webkit-transition:background-color .3s;transition:background-color .3s}.overlay-container.full{cursor:none}.overlay-container.active{display:unset}#lychee_view_content{height:auto;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-line-pack:start;align-content:flex-start;padding-bottom:16px;-webkit-overflow-scrolling:touch}#lychee_view_content.contentZoomIn .album,#lychee_view_content.contentZoomIn .photo{-webkit-animation-name:zoomIn;animation-name:zoomIn}#lychee_view_content.contentZoomIn .divider{-webkit-animation-name:fadeIn;animation-name:fadeIn}#lychee_view_content.contentZoomOut .album,#lychee_view_content.contentZoomOut .photo{-webkit-animation-name:zoomOut;animation-name:zoomOut}#lychee_view_content.contentZoomOut .divider{-webkit-animation-name:fadeOut;animation-name:fadeOut}.album,.photo{position:relative;width:202px;height:202px;margin:30px 0 0 30px;cursor:default;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1);animation-timing-function:cubic-bezier(.51,.92,.24,1)}.album .thumbimg,.photo .thumbimg{position:absolute;width:200px;height:200px;background:#222;color:#222;-webkit-box-shadow:0 2px 5px rgba(0,0,0,.5);box-shadow:0 2px 5px rgba(0,0,0,.5);border:1px solid rgba(255,255,255,.5);-webkit-transition:opacity .3s ease-out,border-color .3s ease-out,-webkit-transform .3s ease-out;transition:opacity .3s ease-out,transform .3s ease-out,border-color .3s ease-out,-webkit-transform .3s ease-out}.album .thumbimg>img,.photo .thumbimg>img{width:100%;height:100%}.album.active .thumbimg,.album:focus .thumbimg,.photo.active .thumbimg,.photo:focus .thumbimg{border-color:#2293ec}.album:active .thumbimg,.photo:active .thumbimg{-webkit-transition:none;transition:none;border-color:#0f6ab2}.album.selected img,.photo.selected img{outline:#2293ec solid 1px}.album .video::before,.photo .video::before{content:"";position:absolute;display:block;height:100%;width:100%;background:url(../img/play-icon.png) 46% 50% no-repeat;-webkit-transition:.3s;transition:.3s;will-change:opacity,height}.album .video:focus::before,.photo .video:focus::before{opacity:.75}.album .livephoto::before,.photo .livephoto::before{content:"";position:absolute;display:block;height:100%;width:100%;background:url(../img/live-photo-icon.png) 2% 2% no-repeat;-webkit-transition:.3s;transition:.3s;will-change:opacity,height}.album .livephoto:focus::before,.photo .livephoto:focus::before{opacity:.75}.album .thumbimg:first-child,.album .thumbimg:nth-child(2){-webkit-transform:rotate(0) translateY(0) translateX(0);-ms-transform:rotate(0) translateY(0) translateX(0);transform:rotate(0) translateY(0) translateX(0);opacity:0}.album:focus .thumbimg:nth-child(1),.album:focus .thumbimg:nth-child(2){opacity:1;will-change:transform}.album:focus .thumbimg:nth-child(1){-webkit-transform:rotate(-2deg) translateY(10px) translateX(-12px);-ms-transform:rotate(-2deg) translateY(10px) translateX(-12px);transform:rotate(-2deg) translateY(10px) translateX(-12px)}.album:focus .thumbimg:nth-child(2){-webkit-transform:rotate(5deg) translateY(-8px) translateX(12px);-ms-transform:rotate(5deg) translateY(-8px) translateX(12px);transform:rotate(5deg) translateY(-8px) translateX(12px)}.blurred span{overflow:hidden}.blurred img{-webkit-filter:blur(5px);filter:blur(5px)}.album .album_counters{position:absolute;right:8px;top:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:4px 4px;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right;font:bold 10px sans-serif;-webkit-filter:drop-shadow(0 0 4px rgba(0, 0, 0, .75));filter:drop-shadow(0 0 4px rgba(0, 0, 0, .75))}.album .album_counters .layers{position:relative;padding:6px 4px}.album .album_counters .layers .iconic{fill:#fff;width:12px;height:12px}.album .album_counters .folders,.album .album_counters .photos{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:distribute;justify-content:space-around;text-align:end}.album .album_counters .folders .iconic,.album .album_counters .photos .iconic{fill:#fff;width:15px;height:15px}.album .album_counters .folders span,.album .album_counters .photos span{position:absolute;bottom:0;color:#222;padding-right:1px;padding-left:1px}.album .album_counters .folders span{right:0;line-height:.9}.album .album_counters .photos span{right:4px;min-width:10px;background-color:#fff;padding-top:1px;line-height:1}.album .overlay,.photo .overlay{position:absolute;margin:0 1px;width:200px;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(rgba(0,0,0,.6)));background:linear-gradient(to bottom,rgba(0,0,0,0),rgba(0,0,0,.6));bottom:1px}.album .thumbimg[data-overlay=false]+.overlay{background:0 0}.photo .overlay{opacity:0}.photo.active .overlay,.photo:focus .overlay{opacity:1}.album .overlay h1,.photo .overlay h1{min-height:19px;width:180px;margin:12px 0 5px 15px;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.4);font-size:16px;font-weight:700;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.album .overlay a,.photo .overlay a{display:block;margin:0 0 12px 15px;font-size:11px;color:#ccc;text-shadow:0 1px 3px rgba(0,0,0,.4)}.album .overlay a .iconic,.photo .overlay a .iconic{fill:#ccc;margin:0 5px 0 0;width:8px;height:8px}.album .thumbimg[data-overlay=false]+.overlay a,.album .thumbimg[data-overlay=false]+.overlay h1{text-shadow:none}.album .badges,.photo .badges{position:absolute;margin:-1px 0 0 6px}.album .subalbum_badge{position:absolute;right:0;top:0}.album .badge,.photo .badge{display:none;margin:0 0 0 6px;padding:12px 8px 6px;width:18px;background:#d92c34;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);border-radius:0 0 5px 5px;border:1px solid #fff;border-top:none;color:#fff;text-align:center;text-shadow:0 1px 0 rgba(0,0,0,.4);opacity:.9}.album .badge--visible,.photo .badge--visible{display:inline-block}.album .badge--not--hidden,.photo .badge--not--hidden{background:#0a0}.album .badge--hidden,.photo .badge--hidden{background:#f90}.album .badge--cover,.photo .badge--cover{display:inline-block;background:#f90}.album .badge--star,.photo .badge--star{display:inline-block;background:#fc0}.album .badge--nsfw,.photo .badge--nsfw{display:inline-block;background:#ff82ee}.album .badge--list,.photo .badge--list{background:#2293ec}.album .badge--tag,.photo .badge--tag{display:inline-block;background:#0a0}.album .badge .iconic,.photo .badge .iconic{fill:#fff;width:16px;height:16px}.divider{margin:50px 0 0;padding:10px 0 0;width:100%;opacity:0;border-top:1px solid rgba(255,255,255,.02);-webkit-box-shadow:0 -1px 0 rgba(0,0,0,.2);box-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1);animation-timing-function:cubic-bezier(.51,.92,.24,1)}.divider:first-child{margin-top:10px;border-top:0;-webkit-box-shadow:none;box-shadow:none}.divider h1{margin:0 0 0 30px;color:rgba(255,255,255,.6);font-size:14px;font-weight:700}@media only screen and (min-width:320px) and (max-width:567px){.album,.photo{--size:calc((100vw - 3px) / 3);width:calc(var(--size) - 3px);height:calc(var(--size) - 3px);margin:3px 0 0 3px}.album .thumbimg,.photo .thumbimg{width:calc(var(--size) - 5px);height:calc(var(--size) - 5px)}.album .overlay,.photo .overlay{width:calc(var(--size) - 5px)}.album .overlay h1,.photo .overlay h1{min-height:14px;width:calc(var(--size) - 19px);margin:8px 0 2px 6px;font-size:12px}.album .overlay a,.photo .overlay a{display:none}.album .badge,.photo .badge{padding:4px 3px 3px;width:12px}.album .badge .iconic,.photo .badge .iconic{width:12px;height:12px}.album .album_counters{-webkit-filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));font:bold 7px sans-serif;gap:2px 2px;right:3px;top:3px}.album .album_counters .layers{position:relative;padding:3px 2px}.album .album_counters .layers .iconic{fill:#fff;width:8px;height:8px}.album .album_counters .folders .iconic,.album .album_counters .photos .iconic{width:11px;height:11px}.album .album_counters .photos span{right:3px;min-width:5px;line-height:.9;padding-top:2px}.divider{margin:20px 0 0}.divider:first-child{margin-top:0}.divider h1{margin:0 0 6px 8px;font-size:12px}}@media only screen and (min-width:568px) and (max-width:639px){.album,.photo{--size:calc((100vw - 3px) / 4);width:calc(var(--size) - 3px);height:calc(var(--size) - 3px);margin:3px 0 0 3px}.album .thumbimg,.photo .thumbimg{width:calc(var(--size) - 5px);height:calc(var(--size) - 5px)}.album .overlay,.photo .overlay{width:calc(var(--size) - 5px)}.album .overlay h1,.photo .overlay h1{min-height:14px;width:calc(var(--size) - 19px);margin:8px 0 2px 6px;font-size:12px}.album .overlay a,.photo .overlay a{display:none}.album .badge,.photo .badge{padding:4px 3px 3px;width:14px}.album .badge .iconic,.photo .badge .iconic{width:14px;height:14px}.album .album_counters{-webkit-filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));font:bold 8px sans-serif;gap:3px 3px;right:4px;top:4px}.album .album_counters .layers{position:relative;padding:3px 2px}.album .album_counters .layers .iconic{fill:#fff;width:9px;height:9px}.album .album_counters .folders .iconic,.album .album_counters .photos .iconic{width:13px;height:13px}.album .album_counters .photos span{right:3px;min-width:8px;padding-top:2px}.divider{margin:24px 0 0}.divider:first-child{margin-top:0}.divider h1{margin:0 0 6px 10px}}@media only screen and (min-width:640px) and (max-width:768px){.album,.photo{--size:calc((100vw - 5px) / 5);width:calc(var(--size) - 5px);height:calc(var(--size) - 5px);margin:5px 0 0 5px}.album .thumbimg,.photo .thumbimg{width:calc(var(--size) - 7px);height:calc(var(--size) - 7px)}.album .overlay,.photo .overlay{width:calc(var(--size) - 7px)}.album .overlay h1,.photo .overlay h1{min-height:14px;width:calc(var(--size) - 21px);margin:10px 0 3px 8px;font-size:12px}.album .overlay a,.photo .overlay a{display:none}.album .badge,.photo .badge{padding:6px 4px 4px;width:16px}.album .badge .iconic,.photo .badge .iconic{width:16px;height:16px}.album .album_counters{-webkit-filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));font:bold 9px sans-serif;gap:4px 4px;right:6px;top:6px}.album .album_counters .layers{position:relative;padding:3px 2px}.album .album_counters .layers .iconic{fill:#fff;width:11px;height:11px}.album .album_counters .folders .iconic,.album .album_counters .photos .iconic{width:15px;height:15px}.album .album_counters .folders span{line-height:1}.album .album_counters .photos span{right:3px;min-width:10px;padding-top:2px}.divider{margin:28px 0 0}.divider:first-child{margin-top:0}.divider h1{margin:0 0 6px 10px}}.no_content{position:absolute;top:50%;left:50%;padding-top:20px;color:rgba(255,255,255,.35);text-align:center;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.no_content .iconic{fill:rgba(255,255,255,.3);margin:0 0 10px;width:50px;height:50px}.no_content p{font-size:16px;font-weight:700}body.mode-gallery #lychee_frame_container,body.mode-none #lychee_frame_container,body.mode-view #lychee_frame_container{display:none}#lychee_frame_bg_canvas{width:100%;height:100%;position:absolute}#lychee_frame_bg_image{position:absolute;display:none}#lychee_frame_noise_layer{position:absolute;top:0;left:0;width:100%;height:100%;background-image:url(../img/noise.png);background-repeat:repeat;background-position:44px 44px}#lychee_frame_image_container{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-line-pack:center;align-content:center}#lychee_frame_image_container img{height:95%;width:95%;-o-object-fit:contain;object-fit:contain;-webkit-filter:drop-shadow(0 0 1px rgba(0, 0, 0, .3)) drop-shadow(0 0 10px rgba(0, 0, 0, .3));filter:drop-shadow(0 0 1px rgba(0, 0, 0, .3)) drop-shadow(0 0 10px rgba(0, 0, 0, .3))}#lychee_frame_shutter{position:absolute;width:100%;height:100%;top:0;left:0;padding:0;margin:0;background-color:#1d1d1d;opacity:1;-webkit-transition:opacity 1s ease-in-out;transition:opacity 1s ease-in-out}#lychee_frame_shutter.opened{opacity:0}#lychee_left_menu_container{width:0;background-color:#111;padding-top:16px;-webkit-transition:width .5s;transition:width .5s;height:100%;z-index:998}#lychee_left_menu,#lychee_left_menu_container.visible{width:250px}#lychee_left_menu a{padding:8px 8px 8px 32px;text-decoration:none;font-size:18px;color:#818181;display:block;cursor:pointer}#lychee_left_menu a.linkMenu{white-space:nowrap}#lychee_left_menu .iconic{display:inline-block;margin:0 10px 0 1px;width:15px;height:14px;fill:#818181}#lychee_left_menu .iconic.ionicons{margin:0 8px -2px 0;width:18px;height:18px}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){#lychee_left_menu,#lychee_left_menu_container{position:absolute;left:0}#lychee_left_menu_container.visible{width:100%}}@media (hover:hover){.album:hover .thumbimg,.photo:hover .thumbimg{border-color:#2293ec}.album .livephoto:hover::before,.album .video:hover::before,.photo .livephoto:hover::before,.photo .video:hover::before{opacity:.75}.album:hover .thumbimg:nth-child(1),.album:hover .thumbimg:nth-child(2),.album__dragover .thumbimg:nth-child(1),.album__dragover .thumbimg:nth-child(2){opacity:1;will-change:transform}.album:hover .thumbimg:nth-child(1),.album__dragover .thumbimg:nth-child(1){-webkit-transform:rotate(-2deg) translateY(10px) translateX(-12px);-ms-transform:rotate(-2deg) translateY(10px) translateX(-12px);transform:rotate(-2deg) translateY(10px) translateX(-12px)}.album:hover .thumbimg:nth-child(2),.album__dragover .thumbimg:nth-child(2){-webkit-transform:rotate(5deg) translateY(-8px) translateX(12px);-ms-transform:rotate(5deg) translateY(-8px) translateX(12px);transform:rotate(5deg) translateY(-8px) translateX(12px)}.photo:hover .overlay{opacity:1}#lychee_left_menu a:hover{color:#f1f1f1}}.basicContext{padding:5px 0 6px;background:-webkit-gradient(linear,left top,left bottom,from(#333),to(#252525));background:linear-gradient(to bottom,#333,#252525);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 4px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.05);border-radius:5px;border:1px solid rgba(0,0,0,.7);border-bottom:1px solid rgba(0,0,0,.8);-webkit-transition:none;transition:none;max-width:240px}.basicContext__item{margin-bottom:2px;font-size:14px;color:#ccc}.basicContext__item--separator{margin:4px 0;height:2px;background:rgba(0,0,0,.2);border-bottom:1px solid rgba(255,255,255,.06)}.basicContext__item--disabled{cursor:default;opacity:.5}.basicContext__item:last-child{margin-bottom:0}.basicContext__data{min-width:auto;padding:6px 25px 7px 12px;white-space:normal;overflow-wrap:normal;-webkit-transition:none;transition:none;cursor:default}@media (hover:none) and (pointer:coarse){.basicContext__data{padding:12px 25px 12px 12px}}.basicContext__item:not(.basicContext__item--disabled):active .basicContext__data{background:-webkit-gradient(linear,left top,left bottom,from(#1178ca),to(#0f6ab2));background:linear-gradient(to bottom,#1178ca,#0f6ab2)}.basicContext__icon{margin-right:10px;width:12px;text-align:center}@media (hover:hover){.basicContext__item:not(.basicContext__item--disabled):hover .basicContext__data{background:-webkit-gradient(linear,left top,left bottom,from(#2293ec),to(#1386e1));background:linear-gradient(to bottom,#2293ec,#1386e1)}.basicContext__item:hover{color:#fff;-webkit-transition:.3s;transition:.3s;-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}.basicContext__item:hover .iconic{fill:#fff}.basicContext__item--noHover:hover .basicContext__data{background:0 0!important}}#addMenu{top:48px!important;left:unset!important;right:4px}.basicContext__data{padding-left:40px}.basicContext__data .cover{position:absolute;background-color:#222;border-radius:2px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.5);box-shadow:0 0 0 1px rgba(0,0,0,.5)}.basicContext__data .title{display:inline-block;margin:0 0 3px 26px}.basicContext__data .iconic{display:inline-block;margin:0 10px 0 -22px;width:11px;height:10px;fill:#fff}.basicContext__data .iconic.active{fill:#f90}.basicContext__data .iconic.ionicons{margin:0 8px -2px 0;width:14px;height:14px}.basicContext__data input#link{margin:-2px 0;padding:5px 7px 6px;width:100%;background:#333;color:#fff;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05);border:1px solid rgba(0,0,0,.4);border-radius:3px;outline:0}.basicContext__item--noHover .basicContext__data{padding-right:12px}div.basicModalContainer{background-color:rgba(0,0,0,.85);z-index:999}div.basicModalContainer--error{-webkit-transform:translateY(40px);-ms-transform:translateY(40px);transform:translateY(40px)}div.basicModal{background:-webkit-gradient(linear,left top,left bottom,from(#444),to(#333));background:linear-gradient(to bottom,#444,#333);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 4px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.05);font-size:14px;line-height:17px}div.basicModal--error{-webkit-transform:translateY(-40px);-ms-transform:translateY(-40px);transform:translateY(-40px)}div.basicModal__buttons{-webkit-box-shadow:none;box-shadow:none}.basicModal__button{padding:13px 0 15px;background:0 0;color:#999;border-top:1px solid rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02);box-shadow:inset 0 1px 0 rgba(255,255,255,.02);cursor:default}.basicModal__button--busy,.basicModal__button:active{-webkit-transition:none;transition:none;background:rgba(0,0,0,.1);cursor:wait}.basicModal__button#basicModal__action{color:#2293ec;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2)}.basicModal__button#basicModal__action.red,.basicModal__button#basicModal__cancel.red{color:#d92c34}.basicModal__button.hidden{display:none}div.basicModal__content{padding:36px;color:#ececec;text-align:left}div.basicModal__content>*{display:block;width:100%;margin:24px 0;padding:0}div.basicModal__content>.force-first-child,div.basicModal__content>:first-child{margin-top:0}div.basicModal__content>.force-last-child,div.basicModal__content>:last-child{margin-bottom:0}div.basicModal__content .disabled{color:#999}div.basicModal__content b{font-weight:700;color:#fff}div.basicModal__content a{color:inherit;text-decoration:none;border-bottom:1px dashed #ececec}div.basicModal__content a.button{display:inline-block;margin:0 6px;padding:3px 12px;color:#2293ec;text-align:center;border-radius:5px;border:none;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2)}div.basicModal__content a.button .iconic{fill:#2293ec}div.basicModal__content>hr{border:none;border-top:1px solid rgba(0,0,0,.3)}#lychee_toolbar_container{-webkit-transition:height .3s ease-out;transition:height .3s ease-out}#lychee_toolbar_container.hidden{height:0}#lychee_toolbar_container,.toolbar{height:49px}.toolbar{background:-webkit-gradient(linear,left top,left bottom,from(#222),to(#1a1a1a));background:linear-gradient(to bottom,#222,#1a1a1a);border-bottom:1px solid #0f0f0f;display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.toolbar.visible{display:-webkit-box;display:-ms-flexbox;display:flex}#lychee_toolbar_config .toolbar .button .iconic{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}#lychee_toolbar_config .toolbar .header__title{padding-right:80px}.toolbar .header__title{width:100%;padding:16px 0;color:#fff;font-size:16px;font-weight:700;text-align:center;cursor:default;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;-webkit-transition:margin-left .5s;transition:margin-left .5s}.toolbar .header__title .iconic{display:none;margin:0 0 0 5px;width:10px;height:10px;fill:rgba(255,255,255,.5);-webkit-transition:fill .2s ease-out;transition:fill .2s ease-out}.toolbar .header__title:active .iconic{-webkit-transition:none;transition:none;fill:rgba(255,255,255,.8)}.toolbar .header__title--editable .iconic{display:inline-block}.toolbar .button{-ms-flex-negative:0;flex-shrink:0;padding:16px 8px;height:15px}.toolbar .button .iconic{width:15px;height:15px;fill:rgba(255,255,255,.5);-webkit-transition:fill .2s ease-out;transition:fill .2s ease-out}.toolbar .button:active .iconic{-webkit-transition:none;transition:none;fill:rgba(255,255,255,.8)}.toolbar .button--star.active .iconic{fill:#f0ef77}.toolbar .button--eye.active .iconic{fill:#d92c34}.toolbar .button--eye.active--not-hidden .iconic{fill:#0a0}.toolbar .button--eye.active--hidden .iconic{fill:#f90}.toolbar .button--share .iconic.ionicons{margin:-2px 0;width:18px;height:18px}.toolbar .button--nsfw.active .iconic{fill:#ff82ee}.toolbar .button--info.active .iconic{fill:#2293ec}.toolbar #button_back,.toolbar #button_back_home,.toolbar #button_close_config,.toolbar #button_settings,.toolbar #button_signin{padding:16px 12px 16px 18px}.toolbar .button_add{padding:16px 18px 16px 12px}.toolbar .header__divider{-ms-flex-negative:0;flex-shrink:0;width:14px}.toolbar .header__search__field{position:relative}.toolbar input[type=text].header__search{-ms-flex-negative:0;flex-shrink:0;width:80px;margin:0;padding:5px 12px 6px;background-color:#1d1d1d;color:#fff;border:1px solid rgba(0,0,0,.9);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.04);box-shadow:0 1px 0 rgba(255,255,255,.04);outline:0;border-radius:50px;opacity:.6;-webkit-transition:opacity .3s ease-out,width .2s ease-out,-webkit-box-shadow .3s ease-out;transition:opacity .3s ease-out,box-shadow .3s ease-out,width .2s ease-out,-webkit-box-shadow .3s ease-out}.toolbar input[type=text].header__search:focus{width:140px;border-color:#2293ec;-webkit-box-shadow:0 1px 0 rgba(255,255,255,0);box-shadow:0 1px 0 rgba(255,255,255,0);opacity:1}.toolbar input[type=text].header__search:focus~.header__clear{opacity:1}.toolbar input[type=text].header__search::-ms-clear{display:none}.toolbar .header__clear{position:absolute;top:50%;-ms-transform:translateY(-50%);-webkit-transform:translateY(-50%);transform:translateY(-50%);right:8px;padding:0;color:rgba(255,255,255,.5);font-size:24px;opacity:0;-webkit-transition:color .2s ease-out;transition:color .2s ease-out;cursor:default}.toolbar .header__clear_nomap{right:60px}.toolbar .header__hostedwith{-ms-flex-negative:0;flex-shrink:0;padding:5px 10px;margin:11px 0;color:#888;font-size:13px;border-radius:100px;cursor:default}@media only screen and (max-width:640px){#button_move,#button_move_album,#button_nsfw_album,#button_trash,#button_trash_album,#button_visibility,#button_visibility_album{display:none!important}}@media only screen and (max-width:640px) and (max-width:567px){#button_rotate_ccwise,#button_rotate_cwise{display:none!important}.header__divider{width:0}}#imageview #image,#imageview #livephoto{position:absolute;top:30px;right:30px;bottom:30px;left:30px;margin:auto;max-width:calc(100% - 60px);max-height:calc(100% - 60px);width:auto;height:auto;-webkit-transition:top .3s,right .3s,bottom .3s,left .3s,max-width .3s,max-height .3s;transition:top .3s,right .3s,bottom .3s,left .3s,max-width .3s,max-height .3s;-webkit-animation-name:zoomIn;animation-name:zoomIn;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1.15);animation-timing-function:cubic-bezier(.51,.92,.24,1.15);background-size:contain;background-position:center;background-repeat:no-repeat}#imageview.full #image,#imageview.full #livephoto{top:0;right:0;bottom:0;left:0;max-width:100%;max-height:100%}#imageview #image_overlay{position:absolute;bottom:30px;left:30px;color:#fff;text-shadow:1px 1px 2px #000;z-index:3}#imageview #image_overlay h1{font-size:28px;font-weight:500;-webkit-transition:visibility .3s linear,opacity .3s linear;transition:visibility .3s linear,opacity .3s linear}#imageview #image_overlay p{margin-top:5px;font-size:20px;line-height:24px}#imageview #image_overlay a .iconic{fill:#fff;margin:0 5px 0 0;width:14px;height:14px}#imageview .arrow_wrapper{position:absolute;width:15%;height:calc(100% - 60px);top:60px}#imageview .arrow_wrapper--previous{left:0}#imageview .arrow_wrapper--next{right:0}#imageview .arrow_wrapper a{position:absolute;top:50%;margin:-19px 0 0;padding:8px 12px;width:16px;height:22px;background-size:100% 100%;border:1px solid rgba(255,255,255,.8);opacity:.6;z-index:2;-webkit-transition:opacity .2s ease-out,-webkit-transform .2s ease-out;transition:transform .2s ease-out,opacity .2s ease-out,-webkit-transform .2s ease-out;will-change:transform}#imageview .arrow_wrapper a#previous{left:-1px;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}#imageview .arrow_wrapper a#next{right:-1px;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}#imageview .arrow_wrapper .iconic{fill:rgba(255,255,255,.8)}#imageview video{z-index:1}@media (hover:hover){.basicModal__button:hover{background:rgba(255,255,255,.02)}div.basicModal__content a.button:hover{color:#fff;background:#2293ec}.toolbar .button:hover .iconic,.toolbar .header__title:hover .iconic,div.basicModal__content a.button:hover .iconic{fill:#fff}.toolbar .header__clear:hover{color:#fff}.toolbar .header__hostedwith:hover{background-color:rgba(0,0,0,.3)}#imageview .arrow_wrapper:hover a#next,#imageview .arrow_wrapper:hover a#previous{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}#imageview .arrow_wrapper a:hover{opacity:1}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){#imageview #image,#imageview #livephoto{top:0;right:0;bottom:0;left:0;max-width:100%;max-height:100%}#imageview #image_overlay h1{font-size:14px}#imageview #image_overlay p{margin-top:2px;font-size:11px;line-height:13px}#imageview #image_overlay a .iconic{width:9px;height:9px}}@media only screen and (min-width:568px) and (max-width:768px),only screen and (min-width:568px) and (max-width:640px) and (orientation:landscape){#imageview #image,#imageview #livephoto{top:0;right:0;bottom:0;left:0;max-width:100%;max-height:100%}#imageview #image_overlay h1{font-size:18px}#imageview #image_overlay p{margin-top:4px;font-size:14px;line-height:16px}#imageview #image_overlay a .iconic{width:12px;height:12px}}.leaflet-marker-photo img{width:100%;height:100%}.image-leaflet-popup{width:100%}.leaflet-popup-content div{pointer-events:none;position:absolute;bottom:19px;left:22px;right:22px;padding-bottom:10px;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(rgba(0,0,0,.6)));background:linear-gradient(to bottom,rgba(0,0,0,0),rgba(0,0,0,.6))}.leaflet-popup-content h1{top:0;position:relative;margin:12px 0 5px 15px;font-size:16px;font-weight:700;text-shadow:0 1px 3px rgba(255,255,255,.4);color:#fff;white-space:nowrap;text-overflow:ellipsis}.leaflet-popup-content span{margin-left:12px}.leaflet-popup-content svg{fill:#fff;vertical-align:middle}.leaflet-popup-content p{display:inline;font-size:11px;color:#fff}.leaflet-popup-content .iconic{width:20px;height:15px}#lychee_sidebar_container{width:0;-webkit-transition:width .3s cubic-bezier(.51,.92,.24,1);transition:width .3s cubic-bezier(.51,.92,.24,1)}#lychee_sidebar,#lychee_sidebar_container.active{width:350px}#lychee_sidebar{height:100%;background-color:rgba(25,25,25,.98);border-left:1px solid rgba(0,0,0,.2)}#lychee_sidebar_header{height:49px;background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,.02)),to(rgba(0,0,0,0)));background:linear-gradient(to bottom,rgba(255,255,255,.02),rgba(0,0,0,0));border-top:1px solid #2293ec}#lychee_sidebar_header h1{margin:15px 0;color:#fff;font-size:16px;font-weight:700;text-align:center;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content{overflow:clip auto;-webkit-overflow-scrolling:touch}#lychee_sidebar_content .sidebar__divider{padding:12px 0 8px;width:100%;border-top:1px solid rgba(255,255,255,.02);-webkit-box-shadow:0 -1px 0 rgba(0,0,0,.2);box-shadow:0 -1px 0 rgba(0,0,0,.2)}#lychee_sidebar_content .sidebar__divider:first-child{border-top:0;-webkit-box-shadow:none;box-shadow:none}#lychee_sidebar_content .sidebar__divider h1{margin:0 0 0 20px;color:rgba(255,255,255,.6);font-size:14px;font-weight:700;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content .edit{display:inline-block;margin-left:3px;width:10px}#lychee_sidebar_content .edit .iconic{width:10px;height:10px;fill:rgba(255,255,255,.5);-webkit-transition:fill .2s ease-out;transition:fill .2s ease-out}#lychee_sidebar_content .edit:active .iconic{-webkit-transition:none;transition:none;fill:rgba(255,255,255,.8)}#lychee_sidebar_content table{margin:10px 0 15px 20px;width:calc(100% - 20px)}#lychee_sidebar_content table tr td{padding:5px 0;color:#fff;font-size:14px;line-height:19px;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content table tr td:first-child{width:110px}#lychee_sidebar_content table tr td:last-child{padding-right:10px}#lychee_sidebar_content table tr td span{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content #tags{width:calc(100% - 40px);margin:16px 20px 12px;color:#fff;display:inline-block}#lychee_sidebar_content #tags>div{display:inline-block}#lychee_sidebar_content #tags .empty{font-size:14px;margin:0 2px 8px 0;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content #tags .edit{margin-top:6px}#lychee_sidebar_content #tags .empty .edit{margin-top:0}#lychee_sidebar_content #tags .tag{cursor:default;display:inline-block;padding:6px 10px;margin:0 6px 8px 0;background-color:rgba(0,0,0,.5);border-radius:100px;font-size:12px;-webkit-transition:background-color .2s;transition:background-color .2s;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content #tags .tag span{display:inline-block;padding:0;margin:0 0 -2px;width:0;overflow:hidden;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:width .2s,margin .2s,fill .2s ease-out,-webkit-transform .2s;transition:width .2s,margin .2s,transform .2s,fill .2s ease-out,-webkit-transform .2s}#lychee_sidebar_content #tags .tag span .iconic{fill:#d92c34;width:8px;height:8px}#lychee_sidebar_content #tags .tag span:active .iconic{-webkit-transition:none;transition:none;fill:#b22027}#lychee_sidebar_content #leaflet_map_single_photo{margin:10px 0 0 20px;height:180px;width:calc(100% - 40px)}#lychee_sidebar_content .attr_location.search{cursor:pointer}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){#lychee_sidebar_container{position:absolute;right:0}#lychee_sidebar{background-color:rgba(0,0,0,.6)}#lychee_sidebar,#lychee_sidebar_container.active{width:240px}#lychee_sidebar_header{height:22px}#lychee_sidebar_header h1{margin:6px 0;font-size:13px}#lychee_sidebar_content{padding-bottom:10px}#lychee_sidebar_content .sidebar__divider{padding:6px 0 2px}#lychee_sidebar_content .sidebar__divider h1{margin:0 0 0 10px;font-size:12px}#lychee_sidebar_content #tags,#lychee_sidebar_content table{margin:4px 0 6px 10px;width:calc(100% - 16px)}#lychee_sidebar_content table tr td{padding:2px 0;font-size:11px;line-height:12px}#lychee_sidebar_content table tr td:first-child{width:80px}#lychee_sidebar_content #tags .empty{margin:0;font-size:11px}}@media only screen and (min-width:568px) and (max-width:768px),only screen and (min-width:568px) and (max-width:640px) and (orientation:landscape){#lychee_sidebar,#lychee_sidebar_container.active{width:280px}#lychee_sidebar_header{height:28px}#lychee_sidebar_header h1{margin:8px 0;font-size:15px}#lychee_sidebar_content{padding-bottom:10px}#lychee_sidebar_content .sidebar__divider{padding:8px 0 4px}#lychee_sidebar_content .sidebar__divider h1{margin:0 0 0 10px;font-size:13px}#lychee_sidebar_content #tags,#lychee_sidebar_content table{margin:4px 0 6px 10px;width:calc(100% - 16px)}#lychee_sidebar_content table tr td{padding:2px 0;font-size:12px;line-height:13px}#lychee_sidebar_content table tr td:first-child{width:90px}#lychee_sidebar_content #tags .empty{margin:0;font-size:12px}}#lychee_loading{height:0;-webkit-transition:height .3s;transition:height .3s;background-size:100px 3px;background-repeat:repeat-x;-webkit-animation-name:moveBackground;animation-name:moveBackground;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}#lychee_loading.loading{height:3px;background-image:-webkit-gradient(linear,left top,right top,from(#153674),color-stop(47%,#153674),color-stop(53%,#2651ae),to(#2651ae));background-image:linear-gradient(to right,#153674 0,#153674 47%,#2651ae 53%,#2651ae 100%)}#lychee_loading.error{height:40px;background-color:#2f0d0e;background-image:-webkit-gradient(linear,left top,right top,from(#451317),color-stop(47%,#451317),color-stop(53%,#aa3039),to(#aa3039));background-image:linear-gradient(to right,#451317 0,#451317 47%,#aa3039 53%,#aa3039 100%)}#lychee_loading.success{height:40px;background-color:#070;background-image:-webkit-gradient(linear,left top,right top,from(#070),color-stop(47%,#090),color-stop(53%,#0a0),to(#0c0));background-image:linear-gradient(to right,#070 0,#090 47%,#0a0 53%,#0c0 100%)}#lychee_loading h1{margin:13px 13px 0;color:#ddd;font-size:14px;font-weight:700;text-shadow:0 1px 0 #000;text-transform:capitalize}#lychee_loading h1 span{margin-left:10px;font-weight:400;text-transform:none}div.select,input,output,select,textarea{display:inline-block;position:relative}div.select>select{display:block;width:100%}div.select,input,output,select,select option,textarea{color:#fff;background-color:#2c2c2c;margin:0;font-size:inherit;line-height:inherit;padding:0;border:none;-webkit-box-shadow:none;box-shadow:none;outline:0}input[type=password],input[type=text],select{padding-top:3px;padding-bottom:3px}input[type=password],input[type=text]{padding-left:2px;padding-right:2px;background-color:transparent;border-bottom:1px solid #222;border-radius:0;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05)}input[type=password]:focus,input[type=text]:focus{border-bottom-color:#2293ec}input[type=password].error,input[type=text].error{border-bottom-color:#d92c34}input[type=checkbox]{top:2px;height:16px;width:16px;-webkit-appearance:none;-moz-appearance:none;appearance:none;color:#2293ec;border:none;border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}input[type=checkbox]::before{content:"✔";position:absolute;text-align:center;font-size:16px;line-height:16px;top:0;bottom:0;left:0;right:0;width:auto;height:auto;visibility:hidden}input[type=checkbox]:checked::before{visibility:visible}input[type=checkbox].slider{top:5px;height:22px;width:42px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);border-radius:11px;background:#2c2c2c}input[type=checkbox].slider::before{content:"";background-color:#2293ec;height:14px;width:14px;left:3px;top:3px;border:none;border-radius:7px;visibility:visible}input[type=checkbox].slider:checked{background-color:#2293ec}input[type=checkbox].slider:checked::before{left:auto;right:3px;background-color:#fff}div.select{font-size:12px;background:#2c2c2c;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02)}div.select::after{position:absolute;content:"≡";right:8px;top:3px;color:#2293ec;font-size:16px;font-weight:700;pointer-events:none}select{padding-left:8px;padding-right:8px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:0 0}select option{padding:2px 0;-webkit-transition:none;transition:none}form div.input-group{position:relative;margin:18px 0}form div.input-group:first-child{margin-top:0}form div.input-group:last-child{margin-bottom:0}form div.input-group.hidden{display:none}form div.input-group label{font-weight:700}form div.input-group p{display:block;margin:6px 0;font-size:13px;line-height:16px}form div.input-group p:last-child{margin-bottom:0}form div.input-group.stacked>label{display:block;margin-bottom:6px}form div.input-group.stacked>label>input[type=password],form div.input-group.stacked>label>input[type=text]{margin-top:12px}form div.input-group.stacked>div.select,form div.input-group.stacked>input,form div.input-group.stacked>output,form div.input-group.stacked>textarea{width:100%;display:block}form div.input-group.compact{padding-left:120px}form div.input-group.compact>label{display:block;position:absolute;margin:0;left:0;width:108px;height:auto;top:3px;bottom:0;overflow-y:hidden}form div.input-group.compact>div.select,form div.input-group.compact>input,form div.input-group.compact>output,form div.input-group.compact>textarea{display:block;width:100%}form div.input-group.compact-inverse{padding-left:36px}form div.input-group.compact-inverse label{display:block}form div.input-group.compact-inverse>div.select,form div.input-group.compact-inverse>input,form div.input-group.compact-inverse>output,form div.input-group.compact-inverse>textarea{display:block;position:absolute;width:16px;height:16px;top:2px;left:0}form div.input-group.compact-no-indent>label{display:inline}form div.input-group.compact-no-indent>div.select,form div.input-group.compact-no-indent>input,form div.input-group.compact-no-indent>output,form div.input-group.compact-no-indent>textarea{display:inline-block;margin-left:.3em;margin-right:.3em}div.basicModal.about-dialog div.basicModal__content h1{font-size:120%;font-weight:700;text-align:center;color:#fff}div.basicModal.about-dialog div.basicModal__content h2{font-weight:700;color:#fff}div.basicModal.about-dialog div.basicModal__content p.update-status.up-to-date-git,div.basicModal.about-dialog div.basicModal__content p.update-status.up-to-date-release{display:none}div.basicModal.about-dialog div.basicModal__content p.about-desc{line-height:1.4em}div.basicModal.downloads div.basicModal__content a.button{display:block;margin:12px 0;padding:12px;font-weight:700;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02);box-shadow:inset 0 1px 0 rgba(255,255,255,.02);border:1px solid rgba(0,0,0,.2)}div.basicModal.downloads div.basicModal__content a.button .iconic{width:12px;height:12px;margin-right:12px}div.basicModal.qr-code{width:300px}div.basicModal.qr-code div.basicModal__content{padding:12px}.basicModal.import div.basicModal__content{padding:12px 8px}.basicModal.import div.basicModal__content h1{margin-bottom:12px;color:#fff;font-size:16px;line-height:19px;font-weight:700;text-align:center}.basicModal.import div.basicModal__content ol{margin-top:12px;height:300px;background-color:#2c2c2c;overflow:hidden;overflow-y:auto;border-radius:3px;-webkit-box-shadow:inset 0 0 3px rgba(0,0,0,.4);box-shadow:inset 0 0 3px rgba(0,0,0,.4)}.basicModal.import div.basicModal__content ol li{float:left;padding:8px 0;width:100%;background-color:rgba(255,255,255,.02)}.basicModal.import div.basicModal__content ol li:nth-child(2n){background-color:rgba(255,255,255,0)}.basicModal.import div.basicModal__content ol li h2{float:left;padding:5px 10px;width:70%;color:#fff;font-size:14px;white-space:nowrap;overflow:hidden}.basicModal.import div.basicModal__content ol li p.status{float:left;padding:5px 10px;width:30%;color:#999;font-size:14px;text-align:right;-webkit-animation-name:pulse;animation-name:pulse;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.basicModal.import div.basicModal__content ol li p.status.error,.basicModal.import div.basicModal__content ol li p.status.success,.basicModal.import div.basicModal__content ol li p.status.warning{-webkit-animation:none;animation:none}.basicModal.import div.basicModal__content ol li p.status.error{color:#d92c34}.basicModal.import div.basicModal__content ol li p.status.warning{color:#fc0}.basicModal.import div.basicModal__content ol li p.status.success{color:#0a0}.basicModal.import div.basicModal__content ol li p.notice{float:left;padding:2px 10px 5px;width:100%;color:#999;font-size:12px;overflow:hidden;line-height:16px}.basicModal.import div.basicModal__content ol li p.notice:empty{display:none}div.basicModal.login div.basicModal__content a.button#signInKeyLess{position:absolute;display:block;color:#999;top:8px;left:8px;width:30px;height:30px;margin:0;padding:5px;cursor:pointer;-webkit-box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);border:1px solid rgba(0,0,0,.2)}div.basicModal.login div.basicModal__content a.button#signInKeyLess .iconic{width:100%;height:100%;fill:#999}div.basicModal.login div.basicModal__content p.version{font-size:12px;text-align:right}div.basicModal.login div.basicModal__content p.version span.update-status.up-to-date-git,div.basicModal.login div.basicModal__content p.version span.update-status.up-to-date-release{display:none}@media (hover:hover){#lychee_sidebar .edit:hover .iconic{fill:#fff}#lychee_sidebar #tags .tag:hover{background-color:rgba(0,0,0,.3)}#lychee_sidebar #tags .tag:hover.search{cursor:pointer}#lychee_sidebar #tags .tag:hover span{width:9px;margin:0 0 -2px 5px;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}#lychee_sidebar #tags .tag span:hover .iconic{fill:#e1575e}div.basicModal.login div.basicModal__content a.button#signInKeyLess:hover{color:#fff;background:inherit}div.basicModal.login div.basicModal__content a.button#signInKeyLess:hover .iconic{fill:#fff}}form.photo-links div.input-group{padding-right:30px}form.photo-links div.input-group a.button{display:block;position:absolute;margin:0;padding:4px;right:0;bottom:0;width:26px;height:26px;cursor:pointer;-webkit-box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);border:1px solid rgba(0,0,0,.2)}form.photo-links div.input-group a.button .iconic{width:100%;height:100%}form.token div.input-group{padding-right:82px}form.token div.input-group input.disabled,form.token div.input-group input[disabled]{color:#999}form.token div.input-group div.button-group{display:block;position:absolute;margin:0;padding:0;right:0;bottom:0;width:78px}form.token div.input-group div.button-group a.button{display:block;float:right;margin:0;padding:4px;bottom:4px;width:26px;height:26px;cursor:pointer;-webkit-box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);border:1px solid rgba(0,0,0,.2)}form.token div.input-group div.button-group a.button .iconic{width:100%;height:100%}#sensitive_warning{background:rgba(100,0,0,.95);text-align:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#fff}#sensitive_warning.active{display:-webkit-box;display:-ms-flexbox;display:flex}#sensitive_warning h1{font-size:36px;font-weight:700;border-bottom:2px solid #fff;margin-bottom:15px}#sensitive_warning p{font-size:20px;max-width:40%;margin-top:15px}.settings_view{width:90%;max-width:700px;margin-left:auto;margin-right:auto}.settings_view input.text{padding:9px 2px;width:calc(50% - 4px);background-color:transparent;color:#fff;border:none;border-bottom:1px solid #222;border-radius:0;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05);outline:0}.settings_view input.text:focus{border-bottom-color:#2293ec}.settings_view input.text .error{border-bottom-color:#d92c34}.settings_view .basicModal__button{color:#2293ec;display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);border-radius:5px}.settings_view .basicModal__button_MORE,.settings_view .basicModal__button_SAVE{color:#b22027;border-radius:5px}.settings_view>div{font-size:14px;width:100%;padding:12px 0}.settings_view>div p{margin:0 0 5%;width:100%;color:#ccc;line-height:16px}.settings_view>div p a{color:rgba(255,255,255,.9);text-decoration:none;border-bottom:1px dashed #888}.settings_view>div p:last-of-type{margin:0}.settings_view>div input.text{width:100%}.settings_view>div textarea{padding:9px;width:calc(100% - 18px);height:100px;background-color:transparent;color:#fff;border:1px solid #666;border-radius:0;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05);outline:0;resize:vertical}.settings_view>div textarea:focus{border-color:#2293ec}.settings_view>div .choice{padding:0 30px 15px;width:100%;color:#fff}.settings_view>div .choice:last-child{padding-bottom:40px}.settings_view>div .choice label{float:left;color:#fff;font-size:14px;font-weight:700}.settings_view>div .choice label input{position:absolute;margin:0;opacity:0}.settings_view>div .choice label .checkbox{float:left;display:block;width:16px;height:16px;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.settings_view>div .choice label .checkbox .iconic{-webkit-box-sizing:border-box;box-sizing:border-box;fill:#2293ec;padding:2px;opacity:0;-ms-transform:scale(0);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1)}.settings_view>div .select{position:relative;margin:1px 5px;padding:0;width:110px;color:#fff;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);font-size:11px;line-height:16px;overflow:hidden;outline:0;vertical-align:middle;background:rgba(0,0,0,.3);display:inline-block}.settings_view>div .select select{margin:0;padding:4px 8px;width:120%;color:#fff;font-size:11px;line-height:16px;border:0;outline:0;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background-color:transparent;background-image:none;-moz-appearance:none;-webkit-appearance:none;appearance:none}.settings_view>div .select select option{margin:0;padding:0;background:#fff;color:#333;-webkit-transition:none;transition:none}.settings_view>div .select select:disabled{color:#000;cursor:not-allowed}.settings_view>div .select::after{position:absolute;content:"≡";right:8px;top:4px;color:#2293ec;font-size:16px;line-height:16px;font-weight:700;pointer-events:none}.settings_view>div .switch{position:relative;display:inline-block;width:42px;height:22px;bottom:-2px;line-height:24px}.settings_view>div .switch input{opacity:0;width:0;height:0}.settings_view>div .slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);background:rgba(0,0,0,.3);-webkit-transition:.4s;transition:.4s}.settings_view>div .slider:before{position:absolute;content:"";height:14px;width:14px;left:3px;bottom:3px;background-color:#2293ec}.settings_view>div input:checked+.slider{background-color:#2293ec}.settings_view>div input:checked+.slider:before{-ms-transform:translateX(20px);-webkit-transform:translateX(20px);transform:translateX(20px);background-color:#fff}.settings_view>div .slider.round{border-radius:20px}.settings_view>div .slider.round:before{border-radius:50%}.settings_view .setting_category{font-size:20px;width:100%;padding-top:10px;padding-left:4px;border-bottom:1px dotted #222;margin-top:20px;color:#fff;font-weight:700;text-transform:capitalize}.settings_view .setting_line{font-size:14px;width:100%}.settings_view .setting_line:first-child,.settings_view .setting_line:last-child{padding-top:50px}.settings_view .setting_line p{min-width:550px;margin:0;color:#ccc;display:inline-block;width:100%;overflow-wrap:break-word}.settings_view .setting_line p a{color:rgba(255,255,255,.9);text-decoration:none;border-bottom:1px dashed #888}.settings_view .setting_line p:last-of-type{margin:0}.settings_view .setting_line p .warning{margin-bottom:30px;color:#d92c34;font-weight:700;font-size:18px;text-align:justify;line-height:22px}.settings_view .setting_line span.text{display:inline-block;padding:9px 4px;width:calc(50% - 12px);background-color:transparent;color:#fff;border:none}.settings_view .setting_line span.text_icon{width:5%}.settings_view .setting_line span.text_icon .iconic{width:15px;height:14px;margin:0 10px 0 1px;fill:#fff}.settings_view .setting_line input.text{width:calc(50% - 4px)}@media (hover:hover){.settings_view .basicModal__button:hover{background:#2293ec;color:#fff;cursor:pointer}.settings_view .basicModal__button_MORE:hover,.settings_view .basicModal__button_SAVE:hover{background:#b22027;color:#fff}.settings_view input:hover{border-bottom:1px solid #2293ec}}@media (hover:none){#lychee_left_menu a{padding:14px 8px 14px 32px}.settings_view input.text{border-bottom:1px solid #2293ec;margin:6px 0}.settings_view>div{padding:16px 0}.settings_view .basicModal__button{background:#2293ec;color:#fff;max-width:320px;margin-top:20px}.settings_view .basicModal__button_MORE,.settings_view .basicModal__button_SAVE{background:#b22027}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.settings_view{max-width:100%}.settings_view .setting_category{font-size:14px;padding-left:0;margin-bottom:4px}.settings_view .setting_line{font-size:12px}.settings_view .setting_line:first-child{padding-top:20px}.settings_view .setting_line p{min-width:unset;line-height:20px}.settings_view .setting_line p.warning{font-size:14px;line-height:16px;margin-bottom:0}.settings_view .setting_line p input,.settings_view .setting_line p span{padding:0}.settings_view .basicModal__button_SAVE{margin-top:20px}}.users_view{width:90%;max-width:700px;margin-left:auto;margin-right:auto}.users_view_line{font-size:14px;width:100%}.users_view_line:first-child,.users_view_line:last-child{padding-top:50px}.users_view_line p{width:550px;margin:0 0 5%;color:#ccc;display:inline-block}.users_view_line p a{color:rgba(255,255,255,.9);text-decoration:none;border-bottom:1px dashed #888}.users_view_line p.line,.users_view_line p:last-of-type{margin:0}.users_view_line span.text{display:inline-block;padding:9px 6px 9px 0;width:40%;background-color:transparent;color:#fff;border:none}.users_view_line span.text_icon{width:5%;min-width:32px}.users_view_line span.text_icon .iconic{width:15px;height:14px;margin:0 8px;fill:#fff}.users_view_line input.text{padding:9px 6px 9px 0;width:40%;background-color:transparent;color:#fff;border:none;border-bottom:1px solid #222;border-radius:0;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05);outline:0;margin:0 0 10px}.users_view_line input.text:focus{border-bottom-color:#2293ec}.users_view_line input.text.error{border-bottom-color:#d92c34}.users_view_line .choice label input:checked~.checkbox .iconic{opacity:1;-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}.users_view_line .choice{display:inline-block;width:5%;min-width:32px;color:#fff}.users_view_line .choice input{position:absolute;margin:0;opacity:0}.users_view_line .choice .checkbox{display:inline-block;width:16px;height:16px;margin:10px 8px 0;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.users_view_line .choice .checkbox .iconic{-webkit-box-sizing:border-box;box-sizing:border-box;fill:#2293ec;padding:2px;opacity:0;-ms-transform:scale(0);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1)}.users_view_line .basicModal__button{display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);width:10%;min-width:72px;border-radius:0}.users_view_line .basicModal__button_OK{color:#2293ec;border-radius:5px 0 0 5px;margin-right:-4px}.users_view_line .basicModal__button_OK_no_DEL{border-radius:5px;min-width:144px;width:20%}.users_view_line .basicModal__button_DEL{color:#b22027;border-radius:0 5px 5px 0}.users_view_line .basicModal__button_CREATE{width:20%;color:#090;border-radius:5px;min-width:144px}.users_view_line .select{position:relative;margin:1px 5px;padding:0;width:110px;color:#fff;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);font-size:11px;line-height:16px;overflow:hidden;outline:0;vertical-align:middle;background:rgba(0,0,0,.3);display:inline-block}.users_view_line .select select{margin:0;padding:4px 8px;width:120%;color:#fff;font-size:11px;line-height:16px;border:0;outline:0;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background:0 0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.users_view_line .select select option{margin:0;padding:0;background:#fff;color:#333;-webkit-transition:none;transition:none}.users_view_line .select::after{position:absolute;content:"≡";right:8px;top:4px;color:#2293ec;font-size:16px;line-height:16px;font-weight:700;pointer-events:none}@media (hover:hover){.users_view_line .basicModal__button:hover{cursor:pointer;color:#fff}.users_view_line .basicModal__button_OK:hover{background:#2293ec}.users_view_line .basicModal__button_DEL:hover{background:#b22027}.users_view_line .basicModal__button_CREATE:hover{background:#090}.users_view_line input:hover{border-bottom:1px solid #2293ec}}@media (hover:none){.users_view_line .basicModal__button{color:#fff}.users_view_line .basicModal__button_OK{background:#2293ec}.users_view_line .basicModal__button_DEL{background:#b22027}.users_view_line .basicModal__button_CREATE{background:#090}.users_view_line input{border-bottom:1px solid #2293ec}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.users_view{width:100%;max-width:100%;padding:20px}.users_view_line p{width:100%}.users_view_line p .text,.users_view_line p input.text{width:36%;font-size:smaller}.users_view_line .choice{margin-left:-8px;margin-right:3px}}.u2f_view{width:90%;max-width:700px;margin-left:auto;margin-right:auto}.u2f_view_line{font-size:14px;width:100%}.u2f_view_line:first-child,.u2f_view_line:last-child{padding-top:50px}.u2f_view_line p{width:550px;margin:0 0 5%;color:#ccc;display:inline-block}.u2f_view_line p a{color:rgba(255,255,255,.9);text-decoration:none;border-bottom:1px dashed #888}.u2f_view_line p.line,.u2f_view_line p:last-of-type{margin:0}.u2f_view_line p.single{text-align:center}.u2f_view_line span.text{display:inline-block;padding:9px 4px;width:80%;background-color:transparent;color:#fff;border:none}.u2f_view_line span.text_icon{width:5%}.u2f_view_line span.text_icon .iconic{width:15px;height:14px;margin:0 15px 0 1px;fill:#fff}.u2f_view_line .choice label input:checked~.checkbox .iconic{opacity:1;-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}.u2f_view_line .choice{display:inline-block;width:5%;color:#fff}.u2f_view_line .choice input{position:absolute;margin:0;opacity:0}.u2f_view_line .choice .checkbox{display:inline-block;width:16px;height:16px;margin-top:10px;margin-left:2px;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.u2f_view_line .choice .checkbox .iconic{-webkit-box-sizing:border-box;box-sizing:border-box;fill:#2293ec;padding:2px;opacity:0;-ms-transform:scale(0);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1)}.u2f_view_line .basicModal__button{display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);width:20%;min-width:50px;border-radius:0}.u2f_view_line .basicModal__button_OK{color:#2293ec;border-radius:5px 0 0 5px}.u2f_view_line .basicModal__button_DEL{color:#b22027;border-radius:0 5px 5px 0}.u2f_view_line .basicModal__button_CREATE{width:100%;color:#090;border-radius:5px}.u2f_view_line .select{position:relative;margin:1px 5px;padding:0;width:110px;color:#fff;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);font-size:11px;line-height:16px;overflow:hidden;outline:0;vertical-align:middle;background:rgba(0,0,0,.3);display:inline-block}.u2f_view_line .select select{margin:0;padding:4px 8px;width:120%;color:#fff;font-size:11px;line-height:16px;border:0;outline:0;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background:0 0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.u2f_view_line .select select option{margin:0;padding:0;background:#fff;color:#333;-webkit-transition:none;transition:none}.u2f_view_line .select::after{position:absolute;content:"≡";right:8px;top:4px;color:#2293ec;font-size:16px;line-height:16px;font-weight:700;pointer-events:none}@media (hover:hover){.u2f_view_line .basicModal__button:hover{cursor:pointer}.u2f_view_line .basicModal__button_OK:hover{background:#2293ec;color:#fff}.u2f_view_line .basicModal__button_DEL:hover{background:#b22027;color:#fff}.u2f_view_line .basicModal__button_CREATE:hover{background:#090;color:#fff}.u2f_view_line input:hover{border-bottom:1px solid #2293ec}}@media (hover:none){.u2f_view_line .basicModal__button{color:#fff}.u2f_view_line .basicModal__button_OK{background:#2293ec}.u2f_view_line .basicModal__button_DEL{background:#b22027}.u2f_view_line .basicModal__button_CREATE{background:#090}.u2f_view_line input{border-bottom:1px solid #2293ec}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.u2f_view{width:100%;max-width:100%;padding:20px}.u2f_view_line p{width:100%}.u2f_view_line .basicModal__button_CREATE{width:80%;margin:0 10%}}.logs_diagnostics_view{width:90%;margin-left:auto;margin-right:auto;color:#ccc;font-size:12px;line-height:14px}.logs_diagnostics_view pre{font-family:monospace;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;padding-right:30px}.clear_logs_update{padding-left:30px;margin:20px auto}.clear_logs_update .basicModal__button,.logs_diagnostics_view .basicModal__button{color:#2293ec;display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);border-radius:5px}.clear_logs_update .iconic,.logs_diagnostics_view .iconic{display:inline-block;margin:0 10px 0 1px;width:13px;height:12px;fill:#2293ec}.clear_logs_update .button_left,.logs_diagnostics_view .button_left{margin-left:24px;width:400px}@media (hover:none){.clear_logs_update .basicModal__button,.logs_diagnostics_view .basicModal__button{background:#2293ec;color:#fff;max-width:320px;margin-top:20px}.clear_logs_update .iconic,.logs_diagnostics_view .iconic{fill:#fff}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.clear_logs_update,.logs_diagnostics_view{width:100%;max-width:100%;font-size:11px;line-height:12px}.clear_logs_update .basicModal__button,.clear_logs_update .button_left,.logs_diagnostics_view .basicModal__button,.logs_diagnostics_view .button_left{width:80%;margin:0 10%}.logs_diagnostics_view{padding:10px 10px 0 0}.clear_logs_update{padding:10px 10px 0;margin:0}}.sharing_view{width:90%;max-width:700px;margin-left:auto;margin-right:auto;margin-top:20px}.sharing_view .sharing_view_line{width:100%;display:block;clear:left}.sharing_view .col-xs-1,.sharing_view .col-xs-10,.sharing_view .col-xs-11,.sharing_view .col-xs-12,.sharing_view .col-xs-2,.sharing_view .col-xs-3,.sharing_view .col-xs-4,.sharing_view .col-xs-5,.sharing_view .col-xs-6,.sharing_view .col-xs-7,.sharing_view .col-xs-8,.sharing_view .col-xs-9{float:left;position:relative;min-height:1px}.sharing_view .col-xs-2{width:10%;padding-right:3%;padding-left:3%}.sharing_view .col-xs-5{width:42%}.sharing_view .btn-block+.btn-block{margin-top:5px}.sharing_view .btn-block{display:block;width:100%}.sharing_view .btn-default{color:#2293ec;border-color:#2293ec;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.sharing_view .btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.sharing_view select[multiple],.sharing_view select[size]{height:150px}.sharing_view .form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}.sharing_view .iconic{display:inline-block;width:15px;height:14px;fill:#2293ec}.sharing_view .iconic .iconic.ionicons{margin:0 8px -2px 0;width:18px;height:18px}.sharing_view .blue .iconic{fill:#2293ec}.sharing_view .grey .iconic{fill:#b4b4b4}.sharing_view p{width:100%;color:#ccc;text-align:center;font-size:14px;display:block}.sharing_view p.with{padding:15px 0}.sharing_view span.text{display:inline-block;padding:0 2px;width:40%;background-color:transparent;color:#fff;border:none}.sharing_view span.text:last-of-type{width:5%}.sharing_view span.text .iconic{width:15px;height:14px;margin:0 10px 0 1px;fill:#fff}.sharing_view .basicModal__button{margin-top:10px;color:#2293ec;display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);border-radius:5px}.sharing_view .choice label input:checked~.checkbox .iconic{opacity:1;-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}.sharing_view .choice{display:inline-block;width:5%;margin:0 10px;color:#fff}.sharing_view .choice input{position:absolute;margin:0;opacity:0}.sharing_view .choice .checkbox{display:inline-block;width:16px;height:16px;margin-top:10px;margin-left:2px;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.sharing_view .choice .checkbox .iconic{-webkit-box-sizing:border-box;box-sizing:border-box;fill:#2293ec;padding:2px;opacity:0;-ms-transform:scale(0);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1)}.sharing_view .select{position:relative;padding:0;color:#fff;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);font-size:14px;line-height:16px;outline:0;vertical-align:middle;background:rgba(0,0,0,.3);display:inline-block}.sharing_view .borderBlue{border:1px solid #2293ec}@media (hover:none){.sharing_view .basicModal__button{background:#2293ec;color:#fff}.sharing_view input{border-bottom:1px solid #2293ec}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.sharing_view{width:100%;max-width:100%;padding:10px}.sharing_view .select{font-size:12px}.sharing_view .iconic{margin-left:-4px}.sharing_view_line p{width:100%}.sharing_view_line .basicModal__button{width:80%;margin:0 10%}}#multiselect{position:absolute;background-color:rgba(0,94,204,.3);border:1px solid #005ecc;border-radius:3px;z-index:5}.justified-layout,.unjustified-layout{margin:30px;width:100%;position:relative}.justified-layout.laying-out,.unjustified-layout.laying-out{display:none}.justified-layout>.photo{position:absolute;--lychee-default-height:320px;margin:0}.unjustified-layout>.photo{float:left;max-height:240px;margin:5px}.justified-layout>.photo>.thumbimg,.justified-layout>.photo>.thumbimg>img,.unjustified-layout>.photo>.thumbimg,.unjustified-layout>.photo>.thumbimg>img{width:100%;height:100%;border:none;-o-object-fit:cover;object-fit:cover}.justified-layout>.photo>.overlay,.unjustified-layout>.photo>.overlay{width:100%;bottom:0;margin:0}.justified-layout>.photo>.overlay>h1,.unjustified-layout>.photo>.overlay>h1{width:auto;margin-right:15px}@media only screen and (min-width:320px) and (max-width:567px){.justified-layout{margin:8px}.justified-layout .photo{--lychee-default-height:160px}}@media only screen and (min-width:568px) and (max-width:639px){.justified-layout{margin:9px}.justified-layout .photo{--lychee-default-height:200px}}@media only screen and (min-width:640px) and (max-width:768px){.justified-layout{margin:10px}.justified-layout .photo{--lychee-default-height:240px}}#lychee_footer{text-align:center;padding:5px 0;background:#1d1d1d;-webkit-transition:color .3s,opacity .3s ease-out,margin-left .5s,-webkit-transform .3s ease-out,-webkit-box-shadow .3s;transition:color .3s,opacity .3s ease-out,transform .3s ease-out,box-shadow .3s,margin-left .5s,-webkit-transform .3s ease-out,-webkit-box-shadow .3s}#lychee_footer p{color:#ccc;font-size:.75em;font-weight:400;line-height:26px}#lychee_footer p a,#lychee_footer p a:visited{color:#ccc}#lychee_footer p.home_copyright,#lychee_footer p.hosted_by{text-transform:uppercase}#lychee_footer #home_socials a[href=""],#lychee_footer p:empty,.hide_footer,body.mode-frame div#footer,body.mode-none div#footer{display:none}@font-face{font-family:socials;src:url(fonts/socials.eot?egvu10);src:url(fonts/socials.eot?egvu10#iefix) format("embedded-opentype"),url(fonts/socials.ttf?egvu10) format("truetype"),url(fonts/socials.woff?egvu10) format("woff"),url(fonts/socials.svg?egvu10#socials) format("svg");font-weight:400;font-style:normal}#socials_footer{padding:0;text-align:center;left:0;right:0}.socialicons{display:inline-block;font-size:18px;font-family:socials!important;speak:none;color:#ccc;text-decoration:none;margin:15px 15px 5px;transition:.3s;-webkit-transition:.3s;-moz-transition:.3s;-o-transition:.3s}#twitter:before{content:"\ea96"}#instagram:before{content:"\ea92"}#youtube:before{content:"\ea9d"}#flickr:before{content:"\eaa4"}#facebook:before{content:"\ea91"}@media (hover:hover){.sharing_view .basicModal__button:hover{background:#2293ec;color:#fff;cursor:pointer}.sharing_view input:hover{border-bottom:1px solid #2293ec}.socialicons:hover{color:#b5b5b5;-ms-transform:scale(1.3);transform:scale(1.3);-webkit-transform:scale(1.3)}}@media tv{.basicModal__button:focus{background:#2293ec;color:#fff;cursor:pointer;outline-style:none}.basicModal__button#basicModal__action:focus{color:#fff}.photo:focus{outline:#fff solid 10px}.album:focus{outline-width:0}.toolbar .button:focus{outline-width:0;background-color:#fff}.header__title:focus{outline-width:0;background-color:#fff;color:#000}.toolbar .button:focus .iconic{fill:#000}#imageview{background-color:#000}#imageview #image,#imageview #livephoto{outline-width:0}}#lychee_view_container{position:absolute;top:0;left:0;height:100%;width:100%;overflow:clip auto}.leaflet-image-layer,.leaflet-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane,.leaflet-pane>canvas,.leaflet-pane>svg,.leaflet-tile,.leaflet-tile-container,.leaflet-zoom-box{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden;-webkit-tap-highlight-color:transparent;background:#ddd;outline-offset:1px;font-family:"Helvetica Neue",Arial,Helvetica,sans-serif;font-size:.75rem;line-height:1.5}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::-moz-selection{background:0 0}.leaflet-tile::selection{background:0 0}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer{max-width:none!important;max-height:none!important;width:auto;padding:0}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4);color:#0078a8}.leaflet-tile{-webkit-filter:inherit;filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;-webkit-box-sizing:border-box;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto;float:left;clear:both}.leaflet-bottom,.leaflet-top{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-right .leaflet-control{float:right;margin-right:10px}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1),-webkit-transform .25s cubic-bezier(0,0,.25,1)}.leaflet-pan-anim .leaflet-tile,.leaflet-zoom-anim .leaflet-tile{-webkit-transition:none;transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-control,.leaflet-popup-pane{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:grabbing}.leaflet-image-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-image-layer.leaflet-interactive,.leaflet-marker-icon.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-zoom-box{border:2px dotted #38f;background:rgba(255,255,255,.5)}.leaflet-bar{-webkit-box-shadow:0 1px 5px rgba(0,0,0,.65);box-shadow:0 1px 5px rgba(0,0,0,.65);border-radius:4px}.leaflet-bar a{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:focus,.leaflet-bar a:hover{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:bold 18px "Lucida Console",Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{-webkit-box-shadow:0 1px 5px rgba(0,0,0,.4);box-shadow:0 1px 5px rgba(0,0,0,.4);background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url(images/layers.png);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(images/layers-2x.png);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block;font-size:1.08333em}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(images/marker-icon.png)}.leaflet-container .leaflet-control-attribution{background:rgba(255,255,255,.8);margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:focus,.leaflet-control-attribution a:hover{text-decoration:underline}.leaflet-attribution-flag{display:inline!important;vertical-align:baseline!important;width:1em;height:.6669em}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;white-space:nowrap;-webkit-box-sizing:border-box;box-sizing:border-box;background:rgba(255,255,255,.8);text-shadow:1px 1px #fff}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-bar,.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers{-webkit-box-shadow:none;box-shadow:none}.leaflet-touch .leaflet-bar,.leaflet-touch .leaflet-control-layers{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 24px 13px 20px;line-height:1.3;font-size:1.08333em;min-height:1px}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-top:-1px;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;pointer-events:auto;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;-webkit-box-shadow:0 3px 14px rgba(0,0,0,.4);box-shadow:0 3px 14px rgba(0,0,0,.4)}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;border:none;text-align:center;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;color:#757575;text-decoration:none;background:0 0}.leaflet-container a.leaflet-popup-close-button:focus,.leaflet-container a.leaflet-popup-close-button:hover{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto}.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.4);box-shadow:0 1px 3px rgba(0,0,0,.4)}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before,.leaflet-tooltip-top:before{position:absolute;pointer-events:none;border:6px solid transparent;background:0 0;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.leaflet-cluster-anim .leaflet-marker-icon,.leaflet-cluster-anim .leaflet-marker-shadow{-webkit-transition:opacity .3s ease-in,-webkit-transform .3s ease-out;transition:transform .3s ease-out,opacity .3s ease-in,-webkit-transform .3s ease-out}.leaflet-cluster-spider-leg{-webkit-transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in;transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in}.leaflet-marker-photo{border:2px solid #fff;-webkit-box-shadow:3px 3px 10px #888;box-shadow:3px 3px 10px #888}.leaflet-marker-photo div{width:100%;height:100%;background-size:cover;background-position:center center;background-repeat:no-repeat}.leaflet-marker-photo b{position:absolute;top:-7px;right:-11px;color:#555;background-color:#fff;border-radius:8px;height:12px;min-width:12px;line-height:12px;text-align:center;padding:3px;-webkit-box-shadow:0 3px 14px rgba(0,0,0,.4);box-shadow:0 3px 14px rgba(0,0,0,.4)} \ No newline at end of file +@charset "UTF-8";@-webkit-keyframes basicModal__fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes basicModal__fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes basicModal__fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes basicModal__fadeOut{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes basicModal__moveUpFade{0%{-webkit-transform:translateY(80px);transform:translateY(80px)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes basicModal__moveUpFade{0%{-webkit-transform:translateY(80px);transform:translateY(80px)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes basicModal__shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}20%,60%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes basicModal__shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}20%,60%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}.basicModalContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:fixed;width:100%;height:100%;top:0;left:0;background-color:rgba(0,0,0,.4);z-index:1000;-webkit-box-sizing:border-box;box-sizing:border-box}.basicModalContainer *,.basicModalContainer :after,.basicModalContainer :before{-webkit-box-sizing:border-box;box-sizing:border-box}.basicModalContainer--fadeIn{-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__fadeIn;animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__fadeIn}.basicModalContainer--fadeOut{-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__fadeOut;animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__fadeOut}.basicModalContainer--fadeIn .basicModal--fadeIn{-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__moveUpFade;animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__moveUpFade}.basicModalContainer--fadeIn .basicModal--shake{-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__shake;animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__shake}.basicModal{position:relative;width:500px;background-color:#fff;border-radius:5px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.2);box-shadow:0 1px 2px rgba(0,0,0,.2)}.basicModal__content{padding:7%;max-height:70vh;overflow:auto;-webkit-overflow-scrolling:touch}.basicModal__buttons{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;-webkit-box-shadow:0 -1px 0 rgba(0,0,0,.1);box-shadow:0 -1px 0 rgba(0,0,0,.1)}.basicModal__button{display:inline-block;width:100%;font-weight:700;text-align:center;-webkit-transition:background-color .2s;-o-transition:background-color .2s;transition:background-color .2s;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.basicModal__button:hover{background-color:rgba(0,0,0,.02)}.basicModal__button#basicModal__cancel{-ms-flex-negative:2;flex-shrink:2}.basicModal__button#basicModal__action{-ms-flex-negative:1;flex-shrink:1;-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.1);box-shadow:inset 1px 0 0 rgba(0,0,0,.1)}.basicModal__button#basicModal__action:first-child{-webkit-box-shadow:none;box-shadow:none}.basicModal__button:first-child{border-radius:0 0 0 5px}.basicModal__button:last-child{border-radius:0 0 5px}.basicModal__small{max-width:340px;text-align:center}.basicModal__small .basicModal__content{padding:10% 5%}.basicModal__xclose#basicModal__cancel{position:absolute;top:-8px;right:-8px;margin:0;padding:0;width:40px;height:40px;background-color:#fff;border-radius:100%;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.2);box-shadow:0 1px 2px rgba(0,0,0,.2)}.basicModal__xclose#basicModal__cancel:after{content:"";position:absolute;left:-3px;top:8px;width:35px;height:34px;background:#fff}.basicModal__xclose#basicModal__cancel svg{position:relative;width:20px;height:39px;fill:#888;z-index:1;-webkit-transition:fill .2s;-o-transition:fill .2s;transition:fill .2s}.basicModal__xclose#basicModal__cancel:after:hover svg,.basicModal__xclose#basicModal__cancel:hover svg{fill:#2875ed}.basicModal__xclose#basicModal__cancel:active svg,.basicModal__xclose#basicModal__cancel:after:active svg{fill:#1364e3}.basicContextContainer{position:fixed;width:100%;height:100%;top:0;left:0;z-index:1000;-webkit-tap-highlight-color:transparent}.basicContext{position:absolute;opacity:0;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.2) basicContext__popIn;animation:.3s cubic-bezier(.51,.92,.24,1.2) basicContext__popIn}.basicContext *{-webkit-box-sizing:border-box;box-sizing:border-box}.basicContext__item{cursor:pointer}.basicContext__item--separator{float:left;width:100%;cursor:default}.basicContext__data{min-width:140px;text-align:left}.basicContext__icon{display:inline-block}.basicContext--scrollable{height:100%;-webkit-overflow-scrolling:touch;overflow-x:hidden;overflow-y:auto}.basicContext--scrollable .basicContext__data{min-width:160px}@-webkit-keyframes basicContext__popIn{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes basicContext__popIn{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1;background-color:#1d1d1d;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;-webkit-font-smoothing:antialiased;-moz-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}table{border-collapse:collapse;border-spacing:0}em,i{font-style:italic}b,strong{font-weight:700}*{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:color .3s,opacity .3s ease-out,-webkit-transform .3s ease-out,-webkit-box-shadow .3s;transition:color .3s,opacity .3s ease-out,transform .3s ease-out,box-shadow .3s,-webkit-transform .3s ease-out,-webkit-box-shadow .3s;-o-transition:color .3s,opacity .3s ease-out,transform .3s ease-out,box-shadow .3s}body,html{width:100%;height:100%;position:relative;overflow:clip}body.mode-frame div#container,body.mode-none div#container{display:none}input,textarea{-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;user-select:text!important}.svgsprite{display:none}.iconic{width:100%;height:100%}#upload{display:none}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1);animation-timing-function:cubic-bezier(.51,.92,.24,1)}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1);animation-timing-function:cubic-bezier(.51,.92,.24,1)}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes moveBackground{0%{background-position-x:0}100%{background-position-x:-100px}}@keyframes moveBackground{0%{background-position-x:0}100%{background-position-x:-100px}}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes zoomOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}}@keyframes zoomOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}}@-webkit-keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}body.mode-frame #lychee_application_container,body.mode-none #lychee_application_container{display:none}.hflex-container,.hflex-item-rigid,.hflex-item-stretch,.vflex-container,.vflex-item-rigid,.vflex-item-stretch{position:relative;overflow:clip}.hflex-container,.vflex-container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:stretch;align-content:stretch;gap:0 0}.vflex-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.hflex-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.hflex-item-stretch,.vflex-item-stretch{-webkit-box-flex:1;-ms-flex:auto;flex:auto}.hflex-item-stretch{width:0;height:100%}.vflex-item-stretch{width:100%;height:0}.hflex-item-rigid,.vflex-item-rigid{-webkit-box-flex:0;-ms-flex:none;flex:none}.hflex-item-rigid{width:auto;height:100%}.vflex-item-rigid{width:100%;height:auto}.overlay-container{position:absolute;display:none;top:0;left:0;width:100%;height:100%;background-color:#000;-webkit-transition:background-color .3s;-o-transition:background-color .3s;transition:background-color .3s}.overlay-container.full{cursor:none}.overlay-container.active{display:unset}#lychee_view_content{height:auto;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-line-pack:start;align-content:flex-start;padding-bottom:16px;-webkit-overflow-scrolling:touch}#lychee_view_content.contentZoomIn .album,#lychee_view_content.contentZoomIn .photo{-webkit-animation-name:zoomIn;animation-name:zoomIn}#lychee_view_content.contentZoomIn .divider{-webkit-animation-name:fadeIn;animation-name:fadeIn}#lychee_view_content.contentZoomOut .album,#lychee_view_content.contentZoomOut .photo{-webkit-animation-name:zoomOut;animation-name:zoomOut}#lychee_view_content.contentZoomOut .divider{-webkit-animation-name:fadeOut;animation-name:fadeOut}.album,.photo{position:relative;width:202px;height:202px;margin:30px 0 0 30px;cursor:default;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1);animation-timing-function:cubic-bezier(.51,.92,.24,1)}.album .thumbimg,.photo .thumbimg{position:absolute;width:200px;height:200px;background:#222;color:#222;-webkit-box-shadow:0 2px 5px rgba(0,0,0,.5);box-shadow:0 2px 5px rgba(0,0,0,.5);border:1px solid rgba(255,255,255,.5);-webkit-transition:opacity .3s ease-out,border-color .3s ease-out,-webkit-transform .3s ease-out;transition:opacity .3s ease-out,transform .3s ease-out,border-color .3s ease-out,-webkit-transform .3s ease-out;-o-transition:opacity .3s ease-out,transform .3s ease-out,border-color .3s ease-out}.album .thumbimg>img,.photo .thumbimg>img{width:100%;height:100%}.album.active .thumbimg,.album:focus .thumbimg,.photo.active .thumbimg,.photo:focus .thumbimg{border-color:#2293ec}.album:active .thumbimg,.photo:active .thumbimg{-webkit-transition:none;-o-transition:none;transition:none;border-color:#0f6ab2}.album.selected img,.photo.selected img{outline:#2293ec solid 1px}.album .video::before,.photo .video::before{content:"";position:absolute;display:block;height:100%;width:100%;background:url(../img/play-icon.png) 46% 50% no-repeat;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;will-change:opacity,height}.album .video:focus::before,.photo .video:focus::before{opacity:.75}.album .livephoto::before,.photo .livephoto::before{content:"";position:absolute;display:block;height:100%;width:100%;background:url(../img/live-photo-icon.png) 2% 2% no-repeat;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;will-change:opacity,height}.album .livephoto:focus::before,.photo .livephoto:focus::before{opacity:.75}.album .thumbimg:first-child,.album .thumbimg:nth-child(2){-webkit-transform:rotate(0) translateY(0) translateX(0);-ms-transform:rotate(0) translateY(0) translateX(0);transform:rotate(0) translateY(0) translateX(0);opacity:0}.album:focus .thumbimg:nth-child(1),.album:focus .thumbimg:nth-child(2){opacity:1;will-change:transform}.album:focus .thumbimg:nth-child(1){-webkit-transform:rotate(-2deg) translateY(10px) translateX(-12px);-ms-transform:rotate(-2deg) translateY(10px) translateX(-12px);transform:rotate(-2deg) translateY(10px) translateX(-12px)}.album:focus .thumbimg:nth-child(2){-webkit-transform:rotate(5deg) translateY(-8px) translateX(12px);-ms-transform:rotate(5deg) translateY(-8px) translateX(12px);transform:rotate(5deg) translateY(-8px) translateX(12px)}.blurred span{overflow:hidden}.blurred img{-webkit-filter:blur(5px);filter:blur(5px)}.album .album_counters{position:absolute;right:8px;top:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:4px 4px;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right;font:bold 10px sans-serif;-webkit-filter:drop-shadow(0 0 4px rgba(0, 0, 0, .75));filter:drop-shadow(0 0 4px rgba(0, 0, 0, .75))}.album .album_counters .layers{position:relative;padding:6px 4px}.album .album_counters .layers .iconic{fill:#fff;width:12px;height:12px}.album .album_counters .folders,.album .album_counters .photos{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:distribute;justify-content:space-around;text-align:end}.album .album_counters .folders .iconic,.album .album_counters .photos .iconic{fill:#fff;width:15px;height:15px}.album .album_counters .folders span,.album .album_counters .photos span{position:absolute;bottom:0;color:#222;padding-right:1px;padding-left:1px}.album .album_counters .folders span{right:0;line-height:.9}.album .album_counters .photos span{right:4px;min-width:10px;background-color:#fff;padding-top:1px;line-height:1}.album .overlay,.photo .overlay{position:absolute;margin:0 1px;width:200px;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(rgba(0,0,0,.6)));background:-o-linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,.6));background:linear-gradient(to bottom,rgba(0,0,0,0),rgba(0,0,0,.6));bottom:1px}.album .thumbimg[data-overlay=false]+.overlay{background:0 0}.photo .overlay{opacity:0}.photo.active .overlay,.photo:focus .overlay{opacity:1}.album .overlay h1,.photo .overlay h1{min-height:19px;width:180px;margin:12px 0 5px 15px;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.4);font-size:16px;font-weight:700;overflow:hidden;white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis}.album .overlay a,.photo .overlay a{display:block;margin:0 0 12px 15px;font-size:11px;color:#ccc;text-shadow:0 1px 3px rgba(0,0,0,.4)}.album .overlay a .iconic,.photo .overlay a .iconic{fill:#ccc;margin:0 5px 0 0;width:8px;height:8px}.album .thumbimg[data-overlay=false]+.overlay a,.album .thumbimg[data-overlay=false]+.overlay h1{text-shadow:none}.album .badges,.photo .badges{position:absolute;margin:-1px 0 0 6px}.album .subalbum_badge{position:absolute;right:0;top:0}.album .badge,.photo .badge{display:none;margin:0 0 0 6px;padding:12px 8px 6px;width:18px;background:#d92c34;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);border-radius:0 0 5px 5px;border:1px solid #fff;border-top:none;color:#fff;text-align:center;text-shadow:0 1px 0 rgba(0,0,0,.4);opacity:.9}.album .badge--visible,.photo .badge--visible{display:inline-block}.album .badge--not--hidden,.photo .badge--not--hidden{background:#0a0}.album .badge--hidden,.photo .badge--hidden{background:#f90}.album .badge--cover,.photo .badge--cover{display:inline-block;background:#f90}.album .badge--star,.photo .badge--star{display:inline-block;background:#fc0}.album .badge--nsfw,.photo .badge--nsfw{display:inline-block;background:#ff82ee}.album .badge--list,.photo .badge--list{background:#2293ec}.album .badge--tag,.photo .badge--tag{display:inline-block;background:#0a0}.album .badge .iconic,.photo .badge .iconic{fill:#fff;width:16px;height:16px}.divider{margin:50px 0 0;padding:10px 0 0;width:100%;opacity:0;border-top:1px solid rgba(255,255,255,.02);-webkit-box-shadow:0 -1px 0 rgba(0,0,0,.2);box-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1);animation-timing-function:cubic-bezier(.51,.92,.24,1)}.divider:first-child{margin-top:10px;border-top:0;-webkit-box-shadow:none;box-shadow:none}.divider h1{margin:0 0 0 30px;color:rgba(255,255,255,.6);font-size:14px;font-weight:700}@media only screen and (min-width:320px) and (max-width:567px){.album,.photo{--size:calc((100vw - 3px) / 3);width:calc(var(--size) - 3px);height:calc(var(--size) - 3px);margin:3px 0 0 3px}.album .thumbimg,.photo .thumbimg{width:calc(var(--size) - 5px);height:calc(var(--size) - 5px)}.album .overlay,.photo .overlay{width:calc(var(--size) - 5px)}.album .overlay h1,.photo .overlay h1{min-height:14px;width:calc(var(--size) - 19px);margin:8px 0 2px 6px;font-size:12px}.album .overlay a,.photo .overlay a{display:none}.album .badge,.photo .badge{padding:4px 3px 3px;width:12px}.album .badge .iconic,.photo .badge .iconic{width:12px;height:12px}.album .album_counters{-webkit-filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));font:bold 7px sans-serif;gap:2px 2px;right:3px;top:3px}.album .album_counters .layers{position:relative;padding:3px 2px}.album .album_counters .layers .iconic{fill:#fff;width:8px;height:8px}.album .album_counters .folders .iconic,.album .album_counters .photos .iconic{width:11px;height:11px}.album .album_counters .photos span{right:3px;min-width:5px;line-height:.9;padding-top:2px}.divider{margin:20px 0 0}.divider:first-child{margin-top:0}.divider h1{margin:0 0 6px 8px;font-size:12px}}@media only screen and (min-width:568px) and (max-width:639px){.album,.photo{--size:calc((100vw - 3px) / 4);width:calc(var(--size) - 3px);height:calc(var(--size) - 3px);margin:3px 0 0 3px}.album .thumbimg,.photo .thumbimg{width:calc(var(--size) - 5px);height:calc(var(--size) - 5px)}.album .overlay,.photo .overlay{width:calc(var(--size) - 5px)}.album .overlay h1,.photo .overlay h1{min-height:14px;width:calc(var(--size) - 19px);margin:8px 0 2px 6px;font-size:12px}.album .overlay a,.photo .overlay a{display:none}.album .badge,.photo .badge{padding:4px 3px 3px;width:14px}.album .badge .iconic,.photo .badge .iconic{width:14px;height:14px}.album .album_counters{-webkit-filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));font:bold 8px sans-serif;gap:3px 3px;right:4px;top:4px}.album .album_counters .layers{position:relative;padding:3px 2px}.album .album_counters .layers .iconic{fill:#fff;width:9px;height:9px}.album .album_counters .folders .iconic,.album .album_counters .photos .iconic{width:13px;height:13px}.album .album_counters .photos span{right:3px;min-width:8px;padding-top:2px}.divider{margin:24px 0 0}.divider:first-child{margin-top:0}.divider h1{margin:0 0 6px 10px}}@media only screen and (min-width:640px) and (max-width:768px){.album,.photo{--size:calc((100vw - 5px) / 5);width:calc(var(--size) - 5px);height:calc(var(--size) - 5px);margin:5px 0 0 5px}.album .thumbimg,.photo .thumbimg{width:calc(var(--size) - 7px);height:calc(var(--size) - 7px)}.album .overlay,.photo .overlay{width:calc(var(--size) - 7px)}.album .overlay h1,.photo .overlay h1{min-height:14px;width:calc(var(--size) - 21px);margin:10px 0 3px 8px;font-size:12px}.album .overlay a,.photo .overlay a{display:none}.album .badge,.photo .badge{padding:6px 4px 4px;width:16px}.album .badge .iconic,.photo .badge .iconic{width:16px;height:16px}.album .album_counters{-webkit-filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));font:bold 9px sans-serif;gap:4px 4px;right:6px;top:6px}.album .album_counters .layers{position:relative;padding:3px 2px}.album .album_counters .layers .iconic{fill:#fff;width:11px;height:11px}.album .album_counters .folders .iconic,.album .album_counters .photos .iconic{width:15px;height:15px}.album .album_counters .folders span{line-height:1}.album .album_counters .photos span{right:3px;min-width:10px;padding-top:2px}.divider{margin:28px 0 0}.divider:first-child{margin-top:0}.divider h1{margin:0 0 6px 10px}}.no_content{position:absolute;top:50%;left:50%;padding-top:20px;color:rgba(255,255,255,.35);text-align:center;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.no_content .iconic{fill:rgba(255,255,255,.3);margin:0 0 10px;width:50px;height:50px}.no_content p{font-size:16px;font-weight:700}body.mode-gallery #lychee_frame_container,body.mode-none #lychee_frame_container,body.mode-view #lychee_frame_container{display:none}#lychee_frame_bg_canvas{width:100%;height:100%;position:absolute}#lychee_frame_bg_image{position:absolute;display:none}#lychee_frame_noise_layer{position:absolute;top:0;left:0;width:100%;height:100%;background-image:url(../img/noise.png);background-repeat:repeat;background-position:44px 44px}#lychee_frame_image_container{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-line-pack:center;align-content:center}#lychee_frame_image_container img{height:95%;width:95%;-o-object-fit:contain;object-fit:contain;-webkit-filter:drop-shadow(0 0 1px rgba(0, 0, 0, .3)) drop-shadow(0 0 10px rgba(0, 0, 0, .3));filter:drop-shadow(0 0 1px rgba(0, 0, 0, .3)) drop-shadow(0 0 10px rgba(0, 0, 0, .3))}#lychee_frame_shutter{position:absolute;width:100%;height:100%;top:0;left:0;padding:0;margin:0;background-color:#1d1d1d;opacity:1;-webkit-transition:opacity 1s ease-in-out;-o-transition:opacity 1s ease-in-out;transition:opacity 1s ease-in-out}#lychee_frame_shutter.opened{opacity:0}#lychee_left_menu_container{width:0;background-color:#111;padding-top:16px;-webkit-transition:width .5s;-o-transition:width .5s;transition:width .5s;height:100%;z-index:998}#lychee_left_menu,#lychee_left_menu_container.visible{width:250px}#lychee_left_menu a{padding:8px 8px 8px 32px;text-decoration:none;font-size:18px;color:#818181;display:block;cursor:pointer}#lychee_left_menu a.linkMenu{white-space:nowrap}#lychee_left_menu .iconic{display:inline-block;margin:0 10px 0 1px;width:15px;height:14px;fill:#818181}#lychee_left_menu .iconic.ionicons{margin:0 8px -2px 0;width:18px;height:18px}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){#lychee_left_menu,#lychee_left_menu_container{position:absolute;left:0}#lychee_left_menu_container.visible{width:100%}}@media (hover:hover){.album:hover .thumbimg,.photo:hover .thumbimg{border-color:#2293ec}.album .livephoto:hover::before,.album .video:hover::before,.photo .livephoto:hover::before,.photo .video:hover::before{opacity:.75}.album:hover .thumbimg:nth-child(1),.album:hover .thumbimg:nth-child(2),.album__dragover .thumbimg:nth-child(1),.album__dragover .thumbimg:nth-child(2){opacity:1;will-change:transform}.album:hover .thumbimg:nth-child(1),.album__dragover .thumbimg:nth-child(1){-webkit-transform:rotate(-2deg) translateY(10px) translateX(-12px);-ms-transform:rotate(-2deg) translateY(10px) translateX(-12px);transform:rotate(-2deg) translateY(10px) translateX(-12px)}.album:hover .thumbimg:nth-child(2),.album__dragover .thumbimg:nth-child(2){-webkit-transform:rotate(5deg) translateY(-8px) translateX(12px);-ms-transform:rotate(5deg) translateY(-8px) translateX(12px);transform:rotate(5deg) translateY(-8px) translateX(12px)}.photo:hover .overlay{opacity:1}#lychee_left_menu a:hover{color:#f1f1f1}}.basicContext{padding:5px 0 6px;background:-webkit-gradient(linear,left top,left bottom,from(#333),to(#252525));background:-o-linear-gradient(top,#333,#252525);background:linear-gradient(to bottom,#333,#252525);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 4px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.05);border-radius:5px;border:1px solid rgba(0,0,0,.7);border-bottom:1px solid rgba(0,0,0,.8);-webkit-transition:none;-o-transition:none;transition:none;max-width:240px}.basicContext__item{margin-bottom:2px;font-size:14px;color:#ccc}.basicContext__item--separator{margin:4px 0;height:2px;background:rgba(0,0,0,.2);border-bottom:1px solid rgba(255,255,255,.06)}.basicContext__item--disabled{cursor:default;opacity:.5}.basicContext__item:last-child{margin-bottom:0}.basicContext__data{min-width:auto;padding:6px 25px 7px 12px;white-space:normal;overflow-wrap:normal;-webkit-transition:none;-o-transition:none;transition:none;cursor:default}@media (hover:none) and (pointer:coarse){.basicContext__data{padding:12px 25px 12px 12px}}.basicContext__item:not(.basicContext__item--disabled):active .basicContext__data{background:-webkit-gradient(linear,left top,left bottom,from(#1178ca),to(#0f6ab2));background:-o-linear-gradient(top,#1178ca,#0f6ab2);background:linear-gradient(to bottom,#1178ca,#0f6ab2)}.basicContext__icon{margin-right:10px;width:12px;text-align:center}@media (hover:hover){.basicContext__item:not(.basicContext__item--disabled):hover .basicContext__data{background:-webkit-gradient(linear,left top,left bottom,from(#2293ec),to(#1386e1));background:-o-linear-gradient(top,#2293ec,#1386e1);background:linear-gradient(to bottom,#2293ec,#1386e1)}.basicContext__item:hover{color:#fff;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}.basicContext__item:hover .iconic{fill:#fff}.basicContext__item--noHover:hover .basicContext__data{background:0 0!important}}#addMenu{top:48px!important;left:unset!important;right:4px}.basicContext__data{padding-left:40px}.basicContext__data .cover{position:absolute;background-color:#222;border-radius:2px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.5);box-shadow:0 0 0 1px rgba(0,0,0,.5)}.basicContext__data .title{display:inline-block;margin:0 0 3px 26px}.basicContext__data .iconic{display:inline-block;margin:0 10px 0 -22px;width:11px;height:10px;fill:#fff}.basicContext__data .iconic.active{fill:#f90}.basicContext__data .iconic.ionicons{margin:0 8px -2px 0;width:14px;height:14px}.basicContext__data input#link{margin:-2px 0;padding:5px 7px 6px;width:100%;background:#333;color:#fff;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05);border:1px solid rgba(0,0,0,.4);border-radius:3px;outline:0}.basicContext__item--noHover .basicContext__data{padding-right:12px}div.basicModalContainer{background-color:rgba(0,0,0,.85);z-index:999}div.basicModalContainer--error{-webkit-transform:translateY(40px);-ms-transform:translateY(40px);transform:translateY(40px)}div.basicModal{background:-webkit-gradient(linear,left top,left bottom,from(#444),to(#333));background:-o-linear-gradient(top,#444,#333);background:linear-gradient(to bottom,#444,#333);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 4px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.05);font-size:14px;line-height:17px}div.basicModal--error{-webkit-transform:translateY(-40px);-ms-transform:translateY(-40px);transform:translateY(-40px)}div.basicModal__buttons{-webkit-box-shadow:none;box-shadow:none}.basicModal__button{padding:13px 0 15px;background:0 0;color:#999;border-top:1px solid rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02);box-shadow:inset 0 1px 0 rgba(255,255,255,.02);cursor:default}.basicModal__button--busy,.basicModal__button:active{-webkit-transition:none;-o-transition:none;transition:none;background:rgba(0,0,0,.1);cursor:wait}.basicModal__button#basicModal__action{color:#2293ec;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2)}.basicModal__button#basicModal__action.red,.basicModal__button#basicModal__cancel.red{color:#d92c34}.basicModal__button.hidden{display:none}div.basicModal__content{padding:36px;color:#ececec;text-align:left}div.basicModal__content>*{display:block;width:100%;margin:24px 0;padding:0}div.basicModal__content>.force-first-child,div.basicModal__content>:first-child{margin-top:0}div.basicModal__content>.force-last-child,div.basicModal__content>:last-child{margin-bottom:0}div.basicModal__content .disabled{color:#999}div.basicModal__content b{font-weight:700;color:#fff}div.basicModal__content a{color:inherit;text-decoration:none;border-bottom:1px dashed #ececec}div.basicModal__content a.button{display:inline-block;margin:0 6px;padding:3px 12px;color:#2293ec;text-align:center;border-radius:5px;border:none;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2)}div.basicModal__content a.button .iconic{fill:#2293ec}div.basicModal__content>hr{border:none;border-top:1px solid rgba(0,0,0,.3)}#lychee_toolbar_container{-webkit-transition:height .3s ease-out;-o-transition:height .3s ease-out;transition:height .3s ease-out}#lychee_toolbar_container.hidden{height:0}#lychee_toolbar_container,.toolbar{height:49px}.toolbar{background:-webkit-gradient(linear,left top,left bottom,from(#222),to(#1a1a1a));background:-o-linear-gradient(top,#222,#1a1a1a);background:linear-gradient(to bottom,#222,#1a1a1a);border-bottom:1px solid #0f0f0f;display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.toolbar.visible{display:-webkit-box;display:-ms-flexbox;display:flex}#lychee_toolbar_config .toolbar .button .iconic{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}#lychee_toolbar_config .toolbar .header__title{padding-right:80px}.toolbar .header__title{width:100%;padding:16px 0;color:#fff;font-size:16px;font-weight:700;text-align:center;cursor:default;overflow:hidden;white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis;-webkit-transition:margin-left .5s;-o-transition:margin-left .5s;transition:margin-left .5s}.toolbar .header__title .iconic{display:none;margin:0 0 0 5px;width:10px;height:10px;fill:rgba(255,255,255,.5);-webkit-transition:fill .2s ease-out;-o-transition:fill .2s ease-out;transition:fill .2s ease-out}.toolbar .header__title:active .iconic{-webkit-transition:none;-o-transition:none;transition:none;fill:rgba(255,255,255,.8)}.toolbar .header__title--editable .iconic{display:inline-block}.toolbar .button{-ms-flex-negative:0;flex-shrink:0;padding:16px 8px;height:15px}.toolbar .button .iconic{width:15px;height:15px;fill:rgba(255,255,255,.5);-webkit-transition:fill .2s ease-out;-o-transition:fill .2s ease-out;transition:fill .2s ease-out}.toolbar .button:active .iconic{-webkit-transition:none;-o-transition:none;transition:none;fill:rgba(255,255,255,.8)}.toolbar .button--star.active .iconic{fill:#f0ef77}.toolbar .button--eye.active .iconic{fill:#d92c34}.toolbar .button--eye.active--not-hidden .iconic{fill:#0a0}.toolbar .button--eye.active--hidden .iconic{fill:#f90}.toolbar .button--share .iconic.ionicons{margin:-2px 0;width:18px;height:18px}.toolbar .button--nsfw.active .iconic{fill:#ff82ee}.toolbar .button--info.active .iconic{fill:#2293ec}.toolbar #button_back,.toolbar #button_back_home,.toolbar #button_close_config,.toolbar #button_settings,.toolbar #button_signin{padding:16px 12px 16px 18px}.toolbar .button_add{padding:16px 18px 16px 12px}.toolbar .header__divider{-ms-flex-negative:0;flex-shrink:0;width:14px}.toolbar .header__search__field{position:relative}.toolbar input[type=text].header__search{-ms-flex-negative:0;flex-shrink:0;width:80px;margin:0;padding:5px 12px 6px;background-color:#1d1d1d;color:#fff;border:1px solid rgba(0,0,0,.9);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.04);box-shadow:0 1px 0 rgba(255,255,255,.04);outline:0;border-radius:50px;opacity:.6;-webkit-transition:opacity .3s ease-out,width .2s ease-out,-webkit-box-shadow .3s ease-out;transition:opacity .3s ease-out,box-shadow .3s ease-out,width .2s ease-out,-webkit-box-shadow .3s ease-out;-o-transition:opacity .3s ease-out,box-shadow .3s ease-out,width .2s ease-out}.toolbar input[type=text].header__search:focus{width:140px;border-color:#2293ec;-webkit-box-shadow:0 1px 0 rgba(255,255,255,0);box-shadow:0 1px 0 rgba(255,255,255,0);opacity:1}.toolbar input[type=text].header__search:focus~.header__clear{opacity:1}.toolbar input[type=text].header__search::-ms-clear{display:none}.toolbar .header__clear{position:absolute;top:50%;-ms-transform:translateY(-50%);-webkit-transform:translateY(-50%);transform:translateY(-50%);right:8px;padding:0;color:rgba(255,255,255,.5);font-size:24px;opacity:0;-webkit-transition:color .2s ease-out;-o-transition:color .2s ease-out;transition:color .2s ease-out;cursor:default}.toolbar .header__clear_nomap{right:60px}.toolbar .header__hostedwith{-ms-flex-negative:0;flex-shrink:0;padding:5px 10px;margin:11px 0;color:#888;font-size:13px;border-radius:100px;cursor:default}@media only screen and (max-width:640px){#button_move,#button_move_album,#button_nsfw_album,#button_trash,#button_trash_album,#button_visibility,#button_visibility_album{display:none!important}}@media only screen and (max-width:640px) and (max-width:567px){#button_rotate_ccwise,#button_rotate_cwise{display:none!important}.header__divider{width:0}}#imageview #image,#imageview #livephoto{position:absolute;top:30px;right:30px;bottom:30px;left:30px;margin:auto;max-width:calc(100% - 60px);max-height:calc(100% - 60px);width:auto;height:auto;-webkit-transition:top .3s,right .3s,bottom .3s,left .3s,max-width .3s,max-height .3s;-o-transition:top .3s,right .3s,bottom .3s,left .3s,max-width .3s,max-height .3s;transition:top .3s,right .3s,bottom .3s,left .3s,max-width .3s,max-height .3s;-webkit-animation-name:zoomIn;animation-name:zoomIn;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1.15);animation-timing-function:cubic-bezier(.51,.92,.24,1.15);background-size:contain;background-position:center;background-repeat:no-repeat}#imageview.full #image,#imageview.full #livephoto{top:0;right:0;bottom:0;left:0;max-width:100%;max-height:100%}#imageview #image_overlay{position:absolute;bottom:30px;left:30px;color:#fff;text-shadow:1px 1px 2px #000;z-index:3}#imageview #image_overlay h1{font-size:28px;font-weight:500;-webkit-transition:visibility .3s linear,opacity .3s linear;-o-transition:visibility .3s linear,opacity .3s linear;transition:visibility .3s linear,opacity .3s linear}#imageview #image_overlay p{margin-top:5px;font-size:20px;line-height:24px}#imageview #image_overlay a .iconic{fill:#fff;margin:0 5px 0 0;width:14px;height:14px}#imageview .arrow_wrapper{position:absolute;width:15%;height:calc(100% - 60px);top:60px}#imageview .arrow_wrapper--previous{left:0}#imageview .arrow_wrapper--next{right:0}#imageview .arrow_wrapper a{position:absolute;top:50%;margin:-19px 0 0;padding:8px 12px;width:16px;height:22px;background-size:100% 100%;border:1px solid rgba(255,255,255,.8);opacity:.6;z-index:2;-webkit-transition:opacity .2s ease-out,-webkit-transform .2s ease-out;transition:transform .2s ease-out,opacity .2s ease-out,-webkit-transform .2s ease-out;-o-transition:transform .2s ease-out,opacity .2s ease-out;will-change:transform}#imageview .arrow_wrapper a#previous{left:-1px;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}#imageview .arrow_wrapper a#next{right:-1px;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}#imageview .arrow_wrapper .iconic{fill:rgba(255,255,255,.8)}#imageview video{z-index:1}@media (hover:hover){.basicModal__button:hover{background:rgba(255,255,255,.02)}div.basicModal__content a.button:hover{color:#fff;background:#2293ec}.toolbar .button:hover .iconic,.toolbar .header__title:hover .iconic,div.basicModal__content a.button:hover .iconic{fill:#fff}.toolbar .header__clear:hover{color:#fff}.toolbar .header__hostedwith:hover{background-color:rgba(0,0,0,.3)}#imageview .arrow_wrapper:hover a#next,#imageview .arrow_wrapper:hover a#previous{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}#imageview .arrow_wrapper a:hover{opacity:1}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){#imageview #image,#imageview #livephoto{top:0;right:0;bottom:0;left:0;max-width:100%;max-height:100%}#imageview #image_overlay h1{font-size:14px}#imageview #image_overlay p{margin-top:2px;font-size:11px;line-height:13px}#imageview #image_overlay a .iconic{width:9px;height:9px}}@media only screen and (min-width:568px) and (max-width:768px),only screen and (min-width:568px) and (max-width:640px) and (orientation:landscape){#imageview #image,#imageview #livephoto{top:0;right:0;bottom:0;left:0;max-width:100%;max-height:100%}#imageview #image_overlay h1{font-size:18px}#imageview #image_overlay p{margin-top:4px;font-size:14px;line-height:16px}#imageview #image_overlay a .iconic{width:12px;height:12px}}.leaflet-marker-photo img{width:100%;height:100%}.image-leaflet-popup{width:100%}.leaflet-popup-content div{pointer-events:none;position:absolute;bottom:19px;left:22px;right:22px;padding-bottom:10px;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(rgba(0,0,0,.6)));background:-o-linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,.6));background:linear-gradient(to bottom,rgba(0,0,0,0),rgba(0,0,0,.6))}.leaflet-popup-content h1{top:0;position:relative;margin:12px 0 5px 15px;font-size:16px;font-weight:700;text-shadow:0 1px 3px rgba(255,255,255,.4);color:#fff;white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis}.leaflet-popup-content span{margin-left:12px}.leaflet-popup-content svg{fill:#fff;vertical-align:middle}.leaflet-popup-content p{display:inline;font-size:11px;color:#fff}.leaflet-popup-content .iconic{width:20px;height:15px}#lychee_sidebar_container{width:0;-webkit-transition:width .3s cubic-bezier(.51,.92,.24,1);-o-transition:width .3s cubic-bezier(.51,.92,.24,1);transition:width .3s cubic-bezier(.51,.92,.24,1)}#lychee_sidebar,#lychee_sidebar_container.active{width:350px}#lychee_sidebar{height:100%;background-color:rgba(25,25,25,.98);border-left:1px solid rgba(0,0,0,.2)}#lychee_sidebar_header{height:49px;background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,.02)),to(rgba(0,0,0,0)));background:-o-linear-gradient(top,rgba(255,255,255,.02),rgba(0,0,0,0));background:linear-gradient(to bottom,rgba(255,255,255,.02),rgba(0,0,0,0));border-top:1px solid #2293ec}#lychee_sidebar_header h1{margin:15px 0;color:#fff;font-size:16px;font-weight:700;text-align:center;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content{overflow:clip auto;-webkit-overflow-scrolling:touch}#lychee_sidebar_content .sidebar__divider{padding:12px 0 8px;width:100%;border-top:1px solid rgba(255,255,255,.02);-webkit-box-shadow:0 -1px 0 rgba(0,0,0,.2);box-shadow:0 -1px 0 rgba(0,0,0,.2)}#lychee_sidebar_content .sidebar__divider:first-child{border-top:0;-webkit-box-shadow:none;box-shadow:none}#lychee_sidebar_content .sidebar__divider h1{margin:0 0 0 20px;color:rgba(255,255,255,.6);font-size:14px;font-weight:700;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content .edit{display:inline-block;margin-left:3px;width:10px}#lychee_sidebar_content .edit .iconic{width:10px;height:10px;fill:rgba(255,255,255,.5);-webkit-transition:fill .2s ease-out;-o-transition:fill .2s ease-out;transition:fill .2s ease-out}#lychee_sidebar_content .edit:active .iconic{-webkit-transition:none;-o-transition:none;transition:none;fill:rgba(255,255,255,.8)}#lychee_sidebar_content table{margin:10px 0 15px 20px;width:calc(100% - 20px)}#lychee_sidebar_content table tr td{padding:5px 0;color:#fff;font-size:14px;line-height:19px;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content table tr td:first-child{width:110px}#lychee_sidebar_content table tr td:last-child{padding-right:10px}#lychee_sidebar_content table tr td span{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content #tags{width:calc(100% - 40px);margin:16px 20px 12px;color:#fff;display:inline-block}#lychee_sidebar_content #tags>div{display:inline-block}#lychee_sidebar_content #tags .empty{font-size:14px;margin:0 2px 8px 0;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content #tags .edit{margin-top:6px}#lychee_sidebar_content #tags .empty .edit{margin-top:0}#lychee_sidebar_content #tags .tag{cursor:default;display:inline-block;padding:6px 10px;margin:0 6px 8px 0;background-color:rgba(0,0,0,.5);border-radius:100px;font-size:12px;-webkit-transition:background-color .2s;-o-transition:background-color .2s;transition:background-color .2s;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content #tags .tag span{display:inline-block;padding:0;margin:0 0 -2px;width:0;overflow:hidden;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:width .2s,margin .2s,fill .2s ease-out,-webkit-transform .2s;transition:width .2s,margin .2s,transform .2s,fill .2s ease-out,-webkit-transform .2s;-o-transition:width .2s,margin .2s,transform .2s,fill .2s ease-out}#lychee_sidebar_content #tags .tag span .iconic{fill:#d92c34;width:8px;height:8px}#lychee_sidebar_content #tags .tag span:active .iconic{-webkit-transition:none;-o-transition:none;transition:none;fill:#b22027}#lychee_sidebar_content #leaflet_map_single_photo{margin:10px 0 0 20px;height:180px;width:calc(100% - 40px)}#lychee_sidebar_content .attr_location.search{cursor:pointer}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){#lychee_sidebar_container{position:absolute;right:0}#lychee_sidebar{background-color:rgba(0,0,0,.6)}#lychee_sidebar,#lychee_sidebar_container.active{width:240px}#lychee_sidebar_header{height:22px}#lychee_sidebar_header h1{margin:6px 0;font-size:13px}#lychee_sidebar_content{padding-bottom:10px}#lychee_sidebar_content .sidebar__divider{padding:6px 0 2px}#lychee_sidebar_content .sidebar__divider h1{margin:0 0 0 10px;font-size:12px}#lychee_sidebar_content #tags,#lychee_sidebar_content table{margin:4px 0 6px 10px;width:calc(100% - 16px)}#lychee_sidebar_content table tr td{padding:2px 0;font-size:11px;line-height:12px}#lychee_sidebar_content table tr td:first-child{width:80px}#lychee_sidebar_content #tags .empty{margin:0;font-size:11px}}@media only screen and (min-width:568px) and (max-width:768px),only screen and (min-width:568px) and (max-width:640px) and (orientation:landscape){#lychee_sidebar,#lychee_sidebar_container.active{width:280px}#lychee_sidebar_header{height:28px}#lychee_sidebar_header h1{margin:8px 0;font-size:15px}#lychee_sidebar_content{padding-bottom:10px}#lychee_sidebar_content .sidebar__divider{padding:8px 0 4px}#lychee_sidebar_content .sidebar__divider h1{margin:0 0 0 10px;font-size:13px}#lychee_sidebar_content #tags,#lychee_sidebar_content table{margin:4px 0 6px 10px;width:calc(100% - 16px)}#lychee_sidebar_content table tr td{padding:2px 0;font-size:12px;line-height:13px}#lychee_sidebar_content table tr td:first-child{width:90px}#lychee_sidebar_content #tags .empty{margin:0;font-size:12px}}#lychee_loading{height:0;-webkit-transition:height .3s;-o-transition:height .3s;transition:height .3s;background-size:100px 3px;background-repeat:repeat-x;-webkit-animation-name:moveBackground;animation-name:moveBackground;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}#lychee_loading.loading{height:3px;background-image:-webkit-gradient(linear,left top,right top,from(#153674),color-stop(47%,#153674),color-stop(53%,#2651ae),to(#2651ae));background-image:-o-linear-gradient(left,#153674 0,#153674 47%,#2651ae 53%,#2651ae 100%);background-image:linear-gradient(to right,#153674 0,#153674 47%,#2651ae 53%,#2651ae 100%)}#lychee_loading.error{height:40px;background-color:#2f0d0e;background-image:-webkit-gradient(linear,left top,right top,from(#451317),color-stop(47%,#451317),color-stop(53%,#aa3039),to(#aa3039));background-image:-o-linear-gradient(left,#451317 0,#451317 47%,#aa3039 53%,#aa3039 100%);background-image:linear-gradient(to right,#451317 0,#451317 47%,#aa3039 53%,#aa3039 100%)}#lychee_loading.success{height:40px;background-color:#070;background-image:-webkit-gradient(linear,left top,right top,from(#070),color-stop(47%,#090),color-stop(53%,#0a0),to(#0c0));background-image:-o-linear-gradient(left,#070 0,#090 47%,#0a0 53%,#0c0 100%);background-image:linear-gradient(to right,#070 0,#090 47%,#0a0 53%,#0c0 100%)}#lychee_loading h1{margin:13px 13px 0;color:#ddd;font-size:14px;font-weight:700;text-shadow:0 1px 0 #000;text-transform:capitalize}#lychee_loading h1 span{margin-left:10px;font-weight:400;text-transform:none}div.select,input,output,select,textarea{display:inline-block;position:relative}div.select>select{display:block;width:100%}div.select,input,output,select,select option,textarea{color:#fff;background-color:#2c2c2c;margin:0;font-size:inherit;line-height:inherit;padding:0;border:none;-webkit-box-shadow:none;box-shadow:none;outline:0}input[type=password],input[type=text],select{padding-top:3px;padding-bottom:3px}input[type=password],input[type=text]{padding-left:2px;padding-right:2px;background-color:transparent;border-bottom:1px solid #222;border-radius:0;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05)}input[type=password]:focus,input[type=text]:focus{border-bottom-color:#2293ec}input[type=password].error,input[type=text].error{border-bottom-color:#d92c34}input[type=checkbox]{top:2px;height:16px;width:16px;-webkit-appearance:none;-moz-appearance:none;appearance:none;color:#2293ec;border:none;border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}input[type=checkbox]::before{content:"✔";position:absolute;text-align:center;font-size:16px;line-height:16px;top:0;bottom:0;left:0;right:0;width:auto;height:auto;visibility:hidden}input[type=checkbox]:checked::before{visibility:visible}input[type=checkbox].slider{top:5px;height:22px;width:42px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);border-radius:11px;background:#2c2c2c}input[type=checkbox].slider::before{content:"";background-color:#2293ec;height:14px;width:14px;left:3px;top:3px;border:none;border-radius:7px;visibility:visible}input[type=checkbox].slider:checked{background-color:#2293ec}input[type=checkbox].slider:checked::before{left:auto;right:3px;background-color:#fff}div.select{font-size:12px;background:#2c2c2c;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02)}div.select::after{position:absolute;content:"≡";right:8px;top:3px;color:#2293ec;font-size:16px;font-weight:700;pointer-events:none}select{padding-left:8px;padding-right:8px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:0 0}select option{padding:2px 0;-webkit-transition:none;-o-transition:none;transition:none}form div.input-group{position:relative;margin:18px 0}form div.input-group:first-child{margin-top:0}form div.input-group:last-child{margin-bottom:0}form div.input-group.hidden{display:none}form div.input-group label{font-weight:700}form div.input-group p{display:block;margin:6px 0;font-size:13px;line-height:16px}form div.input-group p:last-child{margin-bottom:0}form div.input-group.stacked>label{display:block;margin-bottom:6px}form div.input-group.stacked>label>input[type=password],form div.input-group.stacked>label>input[type=text]{margin-top:12px}form div.input-group.stacked>div.select,form div.input-group.stacked>input,form div.input-group.stacked>output,form div.input-group.stacked>textarea{width:100%;display:block}form div.input-group.compact{padding-left:120px}form div.input-group.compact>label{display:block;position:absolute;margin:0;left:0;width:108px;height:auto;top:3px;bottom:0;overflow-y:hidden}form div.input-group.compact>div.select,form div.input-group.compact>input,form div.input-group.compact>output,form div.input-group.compact>textarea{display:block;width:100%}form div.input-group.compact-inverse{padding-left:36px}form div.input-group.compact-inverse label{display:block}form div.input-group.compact-inverse>div.select,form div.input-group.compact-inverse>input,form div.input-group.compact-inverse>output,form div.input-group.compact-inverse>textarea{display:block;position:absolute;width:16px;height:16px;top:2px;left:0}form div.input-group.compact-no-indent>label{display:inline}form div.input-group.compact-no-indent>div.select,form div.input-group.compact-no-indent>input,form div.input-group.compact-no-indent>output,form div.input-group.compact-no-indent>textarea{display:inline-block;margin-left:.3em;margin-right:.3em}div.basicModal.about-dialog div.basicModal__content h1{font-size:120%;font-weight:700;text-align:center;color:#fff}div.basicModal.about-dialog div.basicModal__content h2{font-weight:700;color:#fff}div.basicModal.about-dialog div.basicModal__content p.update-status.up-to-date-git,div.basicModal.about-dialog div.basicModal__content p.update-status.up-to-date-release{display:none}div.basicModal.about-dialog div.basicModal__content p.about-desc{line-height:1.4em}div.basicModal.downloads div.basicModal__content a.button{display:block;margin:12px 0;padding:12px;font-weight:700;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02);box-shadow:inset 0 1px 0 rgba(255,255,255,.02);border:1px solid rgba(0,0,0,.2)}div.basicModal.downloads div.basicModal__content a.button .iconic{width:12px;height:12px;margin-right:12px}div.basicModal.qr-code{width:300px}div.basicModal.qr-code div.basicModal__content{padding:12px}.basicModal.import div.basicModal__content{padding:12px 8px}.basicModal.import div.basicModal__content h1{margin-bottom:12px;color:#fff;font-size:16px;line-height:19px;font-weight:700;text-align:center}.basicModal.import div.basicModal__content ol{margin-top:12px;height:300px;background-color:#2c2c2c;overflow:hidden;overflow-y:auto;border-radius:3px;-webkit-box-shadow:inset 0 0 3px rgba(0,0,0,.4);box-shadow:inset 0 0 3px rgba(0,0,0,.4)}.basicModal.import div.basicModal__content ol li{float:left;padding:8px 0;width:100%;background-color:rgba(255,255,255,.02)}.basicModal.import div.basicModal__content ol li:nth-child(2n){background-color:rgba(255,255,255,0)}.basicModal.import div.basicModal__content ol li h2{float:left;padding:5px 10px;width:70%;color:#fff;font-size:14px;white-space:nowrap;overflow:hidden}.basicModal.import div.basicModal__content ol li p.status{float:left;padding:5px 10px;width:30%;color:#999;font-size:14px;text-align:right;-webkit-animation-name:pulse;animation-name:pulse;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.basicModal.import div.basicModal__content ol li p.status.error,.basicModal.import div.basicModal__content ol li p.status.success,.basicModal.import div.basicModal__content ol li p.status.warning{-webkit-animation:none;animation:none}.basicModal.import div.basicModal__content ol li p.status.error{color:#d92c34}.basicModal.import div.basicModal__content ol li p.status.warning{color:#fc0}.basicModal.import div.basicModal__content ol li p.status.success{color:#0a0}.basicModal.import div.basicModal__content ol li p.notice{float:left;padding:2px 10px 5px;width:100%;color:#999;font-size:12px;overflow:hidden;line-height:16px}.basicModal.import div.basicModal__content ol li p.notice:empty{display:none}div.basicModal.login div.basicModal__content a.button#signInKeyLess{position:absolute;display:block;color:#999;top:8px;left:8px;width:30px;height:30px;margin:0;padding:5px;cursor:pointer;-webkit-box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);border:1px solid rgba(0,0,0,.2)}div.basicModal.login div.basicModal__content a.button#signInKeyLess .iconic{width:100%;height:100%;fill:#999}div.basicModal.login div.basicModal__content p.version{font-size:12px;text-align:right}div.basicModal.login div.basicModal__content p.version span.update-status.up-to-date-git,div.basicModal.login div.basicModal__content p.version span.update-status.up-to-date-release{display:none}@media (hover:hover){#lychee_sidebar .edit:hover .iconic{fill:#fff}#lychee_sidebar #tags .tag:hover{background-color:rgba(0,0,0,.3)}#lychee_sidebar #tags .tag:hover.search{cursor:pointer}#lychee_sidebar #tags .tag:hover span{width:9px;margin:0 0 -2px 5px;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}#lychee_sidebar #tags .tag span:hover .iconic{fill:#e1575e}div.basicModal.login div.basicModal__content a.button#signInKeyLess:hover{color:#fff;background:inherit}div.basicModal.login div.basicModal__content a.button#signInKeyLess:hover .iconic{fill:#fff}}form.photo-links div.input-group{padding-right:30px}form.photo-links div.input-group a.button{display:block;position:absolute;margin:0;padding:4px;right:0;bottom:0;width:26px;height:26px;cursor:pointer;-webkit-box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);border:1px solid rgba(0,0,0,.2)}form.photo-links div.input-group a.button .iconic{width:100%;height:100%}form.token div.input-group{padding-right:82px}form.token div.input-group input.disabled,form.token div.input-group input[disabled]{color:#999}form.token div.input-group div.button-group{display:block;position:absolute;margin:0;padding:0;right:0;bottom:0;width:78px}form.token div.input-group div.button-group a.button{display:block;float:right;margin:0;padding:4px;bottom:4px;width:26px;height:26px;cursor:pointer;-webkit-box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);border:1px solid rgba(0,0,0,.2)}form.token div.input-group div.button-group a.button .iconic{width:100%;height:100%}#sensitive_warning{background:rgba(100,0,0,.95);text-align:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#fff}#sensitive_warning.active{display:-webkit-box;display:-ms-flexbox;display:flex}#sensitive_warning h1{font-size:36px;font-weight:700;border-bottom:2px solid #fff;margin-bottom:15px}#sensitive_warning p{font-size:20px;max-width:40%;margin-top:15px}.settings_view{width:90%;max-width:700px;margin-left:auto;margin-right:auto}.settings_view input.text{padding:9px 2px;width:calc(50% - 4px);background-color:transparent;color:#fff;border:none;border-bottom:1px solid #222;border-radius:0;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05);outline:0}.settings_view input.text:focus{border-bottom-color:#2293ec}.settings_view input.text .error{border-bottom-color:#d92c34}.settings_view .basicModal__button{color:#2293ec;display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);border-radius:5px}.settings_view .basicModal__button_MORE,.settings_view .basicModal__button_SAVE{color:#b22027;border-radius:5px}.settings_view>div{font-size:14px;width:100%;padding:12px 0}.settings_view>div p{margin:0 0 5%;width:100%;color:#ccc;line-height:16px}.settings_view>div p a{color:rgba(255,255,255,.9);text-decoration:none;border-bottom:1px dashed #888}.settings_view>div p:last-of-type{margin:0}.settings_view>div input.text{width:100%}.settings_view>div textarea{padding:9px;width:calc(100% - 18px);height:100px;background-color:transparent;color:#fff;border:1px solid #666;border-radius:0;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05);outline:0;resize:vertical}.settings_view>div textarea:focus{border-color:#2293ec}.settings_view>div .choice{padding:0 30px 15px;width:100%;color:#fff}.settings_view>div .choice:last-child{padding-bottom:40px}.settings_view>div .choice label{float:left;color:#fff;font-size:14px;font-weight:700}.settings_view>div .choice label input{position:absolute;margin:0;opacity:0}.settings_view>div .choice label .checkbox{float:left;display:block;width:16px;height:16px;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.settings_view>div .choice label .checkbox .iconic{-webkit-box-sizing:border-box;box-sizing:border-box;fill:#2293ec;padding:2px;opacity:0;-ms-transform:scale(0);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);-o-transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1)}.settings_view>div .select{position:relative;margin:1px 5px;padding:0;width:110px;color:#fff;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);font-size:11px;line-height:16px;overflow:hidden;outline:0;vertical-align:middle;background:rgba(0,0,0,.3);display:inline-block}.settings_view>div .select select{margin:0;padding:4px 8px;width:120%;color:#fff;font-size:11px;line-height:16px;border:0;outline:0;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background-color:transparent;background-image:none;-moz-appearance:none;-webkit-appearance:none;appearance:none}.settings_view>div .select select option{margin:0;padding:0;background:#fff;color:#333;-webkit-transition:none;-o-transition:none;transition:none}.settings_view>div .select select:disabled{color:#000;cursor:not-allowed}.settings_view>div .select::after{position:absolute;content:"≡";right:8px;top:4px;color:#2293ec;font-size:16px;line-height:16px;font-weight:700;pointer-events:none}.settings_view>div .switch{position:relative;display:inline-block;width:42px;height:22px;bottom:-2px;line-height:24px}.settings_view>div .switch input{opacity:0;width:0;height:0}.settings_view>div .slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);background:rgba(0,0,0,.3);-webkit-transition:.4s;-o-transition:.4s;transition:.4s}.settings_view>div .slider:before{position:absolute;content:"";height:14px;width:14px;left:3px;bottom:3px;background-color:#2293ec}.settings_view>div input:checked+.slider{background-color:#2293ec}.settings_view>div input:checked+.slider:before{-ms-transform:translateX(20px);-webkit-transform:translateX(20px);transform:translateX(20px);background-color:#fff}.settings_view>div .slider.round{border-radius:20px}.settings_view>div .slider.round:before{border-radius:50%}.settings_view .setting_category{font-size:20px;width:100%;padding-top:10px;padding-left:4px;border-bottom:1px dotted #222;margin-top:20px;color:#fff;font-weight:700;text-transform:capitalize}.settings_view .setting_line{font-size:14px;width:100%}.settings_view .setting_line:first-child,.settings_view .setting_line:last-child{padding-top:50px}.settings_view .setting_line p{min-width:550px;margin:0;color:#ccc;display:inline-block;width:100%;overflow-wrap:break-word}.settings_view .setting_line p a{color:rgba(255,255,255,.9);text-decoration:none;border-bottom:1px dashed #888}.settings_view .setting_line p:last-of-type{margin:0}.settings_view .setting_line p .warning{margin-bottom:30px;color:#d92c34;font-weight:700;font-size:18px;text-align:justify;line-height:22px}.settings_view .setting_line span.text{display:inline-block;padding:9px 4px;width:calc(50% - 12px);background-color:transparent;color:#fff;border:none}.settings_view .setting_line span.text_icon{width:5%}.settings_view .setting_line span.text_icon .iconic{width:15px;height:14px;margin:0 10px 0 1px;fill:#fff}.settings_view .setting_line input.text{width:calc(50% - 4px)}@media (hover:hover){.settings_view .basicModal__button:hover{background:#2293ec;color:#fff;cursor:pointer}.settings_view .basicModal__button_MORE:hover,.settings_view .basicModal__button_SAVE:hover{background:#b22027;color:#fff}.settings_view input:hover{border-bottom:1px solid #2293ec}}@media (hover:none){#lychee_left_menu a{padding:14px 8px 14px 32px}.settings_view input.text{border-bottom:1px solid #2293ec;margin:6px 0}.settings_view>div{padding:16px 0}.settings_view .basicModal__button{background:#2293ec;color:#fff;max-width:320px;margin-top:20px}.settings_view .basicModal__button_MORE,.settings_view .basicModal__button_SAVE{background:#b22027}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.settings_view{max-width:100%}.settings_view .setting_category{font-size:14px;padding-left:0;margin-bottom:4px}.settings_view .setting_line{font-size:12px}.settings_view .setting_line:first-child{padding-top:20px}.settings_view .setting_line p{min-width:unset;line-height:20px}.settings_view .setting_line p.warning{font-size:14px;line-height:16px;margin-bottom:0}.settings_view .setting_line p input,.settings_view .setting_line p span{padding:0}.settings_view .basicModal__button_SAVE{margin-top:20px}}.users_view{width:90%;max-width:700px;margin-left:auto;margin-right:auto}.users_view_line{font-size:14px;width:100%}.users_view_line:first-child,.users_view_line:last-child{padding-top:50px}.users_view_line p{width:550px;margin:0 0 5%;color:#ccc;display:inline-block}.users_view_line p a{color:rgba(255,255,255,.9);text-decoration:none;border-bottom:1px dashed #888}.users_view_line p.line,.users_view_line p:last-of-type{margin:0}.users_view_line span.text{display:inline-block;padding:9px 6px 9px 0;width:40%;background-color:transparent;color:#fff;border:none}.users_view_line span.text_icon{width:5%;min-width:32px}.users_view_line span.text_icon .iconic{width:15px;height:14px;margin:0 8px;fill:#fff}.users_view_line input.text{padding:9px 6px 9px 0;width:40%;background-color:transparent;color:#fff;border:none;border-bottom:1px solid #222;border-radius:0;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05);outline:0;margin:0 0 10px}.users_view_line input.text:focus{border-bottom-color:#2293ec}.users_view_line input.text.error{border-bottom-color:#d92c34}.users_view_line .choice label input:checked~.checkbox .iconic{opacity:1;-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}.users_view_line .choice{display:inline-block;width:5%;min-width:32px;color:#fff}.users_view_line .choice input{position:absolute;margin:0;opacity:0}.users_view_line .choice .checkbox{display:inline-block;width:16px;height:16px;margin:10px 8px 0;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.users_view_line .choice .checkbox .iconic{-webkit-box-sizing:border-box;box-sizing:border-box;fill:#2293ec;padding:2px;opacity:0;-ms-transform:scale(0);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);-o-transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1)}.users_view_line .basicModal__button{display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);width:10%;min-width:72px;border-radius:0}.users_view_line .basicModal__button_OK{color:#2293ec;border-radius:5px 0 0 5px;margin-right:-4px}.users_view_line .basicModal__button_OK_no_DEL{border-radius:5px;min-width:144px;width:20%}.users_view_line .basicModal__button_DEL{color:#b22027;border-radius:0 5px 5px 0}.users_view_line .basicModal__button_CREATE{width:20%;color:#090;border-radius:5px;min-width:144px}.users_view_line .select{position:relative;margin:1px 5px;padding:0;width:110px;color:#fff;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);font-size:11px;line-height:16px;overflow:hidden;outline:0;vertical-align:middle;background:rgba(0,0,0,.3);display:inline-block}.users_view_line .select select{margin:0;padding:4px 8px;width:120%;color:#fff;font-size:11px;line-height:16px;border:0;outline:0;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background:0 0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.users_view_line .select select option{margin:0;padding:0;background:#fff;color:#333;-webkit-transition:none;-o-transition:none;transition:none}.users_view_line .select::after{position:absolute;content:"≡";right:8px;top:4px;color:#2293ec;font-size:16px;line-height:16px;font-weight:700;pointer-events:none}@media (hover:hover){.users_view_line .basicModal__button:hover{cursor:pointer;color:#fff}.users_view_line .basicModal__button_OK:hover{background:#2293ec}.users_view_line .basicModal__button_DEL:hover{background:#b22027}.users_view_line .basicModal__button_CREATE:hover{background:#090}.users_view_line input:hover{border-bottom:1px solid #2293ec}}@media (hover:none){.users_view_line .basicModal__button{color:#fff}.users_view_line .basicModal__button_OK{background:#2293ec}.users_view_line .basicModal__button_DEL{background:#b22027}.users_view_line .basicModal__button_CREATE{background:#090}.users_view_line input{border-bottom:1px solid #2293ec}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.users_view{width:100%;max-width:100%;padding:20px}.users_view_line p{width:100%}.users_view_line p .text,.users_view_line p input.text{width:36%;font-size:smaller}.users_view_line .choice{margin-left:-8px;margin-right:3px}}.u2f_view{width:90%;max-width:700px;margin-left:auto;margin-right:auto}.u2f_view_line{font-size:14px;width:100%}.u2f_view_line:first-child,.u2f_view_line:last-child{padding-top:50px}.u2f_view_line p{width:550px;margin:0 0 5%;color:#ccc;display:inline-block}.u2f_view_line p a{color:rgba(255,255,255,.9);text-decoration:none;border-bottom:1px dashed #888}.u2f_view_line p.line,.u2f_view_line p:last-of-type{margin:0}.u2f_view_line p.single{text-align:center}.u2f_view_line span.text{display:inline-block;padding:9px 4px;width:80%;background-color:transparent;color:#fff;border:none}.u2f_view_line span.text_icon{width:5%}.u2f_view_line span.text_icon .iconic{width:15px;height:14px;margin:0 15px 0 1px;fill:#fff}.u2f_view_line .choice label input:checked~.checkbox .iconic{opacity:1;-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}.u2f_view_line .choice{display:inline-block;width:5%;color:#fff}.u2f_view_line .choice input{position:absolute;margin:0;opacity:0}.u2f_view_line .choice .checkbox{display:inline-block;width:16px;height:16px;margin-top:10px;margin-left:2px;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.u2f_view_line .choice .checkbox .iconic{-webkit-box-sizing:border-box;box-sizing:border-box;fill:#2293ec;padding:2px;opacity:0;-ms-transform:scale(0);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);-o-transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1)}.u2f_view_line .basicModal__button{display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);width:20%;min-width:50px;border-radius:0}.u2f_view_line .basicModal__button_OK{color:#2293ec;border-radius:5px 0 0 5px}.u2f_view_line .basicModal__button_DEL{color:#b22027;border-radius:0 5px 5px 0}.u2f_view_line .basicModal__button_CREATE{width:100%;color:#090;border-radius:5px}.u2f_view_line .select{position:relative;margin:1px 5px;padding:0;width:110px;color:#fff;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);font-size:11px;line-height:16px;overflow:hidden;outline:0;vertical-align:middle;background:rgba(0,0,0,.3);display:inline-block}.u2f_view_line .select select{margin:0;padding:4px 8px;width:120%;color:#fff;font-size:11px;line-height:16px;border:0;outline:0;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background:0 0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.u2f_view_line .select select option{margin:0;padding:0;background:#fff;color:#333;-webkit-transition:none;-o-transition:none;transition:none}.u2f_view_line .select::after{position:absolute;content:"≡";right:8px;top:4px;color:#2293ec;font-size:16px;line-height:16px;font-weight:700;pointer-events:none}@media (hover:hover){.u2f_view_line .basicModal__button:hover{cursor:pointer}.u2f_view_line .basicModal__button_OK:hover{background:#2293ec;color:#fff}.u2f_view_line .basicModal__button_DEL:hover{background:#b22027;color:#fff}.u2f_view_line .basicModal__button_CREATE:hover{background:#090;color:#fff}.u2f_view_line input:hover{border-bottom:1px solid #2293ec}}@media (hover:none){.u2f_view_line .basicModal__button{color:#fff}.u2f_view_line .basicModal__button_OK{background:#2293ec}.u2f_view_line .basicModal__button_DEL{background:#b22027}.u2f_view_line .basicModal__button_CREATE{background:#090}.u2f_view_line input{border-bottom:1px solid #2293ec}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.u2f_view{width:100%;max-width:100%;padding:20px}.u2f_view_line p{width:100%}.u2f_view_line .basicModal__button_CREATE{width:80%;margin:0 10%}}.logs_diagnostics_view{width:90%;margin-left:auto;margin-right:auto;color:#ccc;font-size:12px;line-height:14px}.logs_diagnostics_view pre{font-family:monospace;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;padding-right:30px}.clear_logs_update{padding-left:30px;margin:20px auto}.clear_logs_update .basicModal__button,.logs_diagnostics_view .basicModal__button{color:#2293ec;display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);border-radius:5px}.clear_logs_update .iconic,.logs_diagnostics_view .iconic{display:inline-block;margin:0 10px 0 1px;width:13px;height:12px;fill:#2293ec}.clear_logs_update .button_left,.logs_diagnostics_view .button_left{margin-left:24px;width:400px}@media (hover:none){.clear_logs_update .basicModal__button,.logs_diagnostics_view .basicModal__button{background:#2293ec;color:#fff;max-width:320px;margin-top:20px}.clear_logs_update .iconic,.logs_diagnostics_view .iconic{fill:#fff}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.clear_logs_update,.logs_diagnostics_view{width:100%;max-width:100%;font-size:11px;line-height:12px}.clear_logs_update .basicModal__button,.clear_logs_update .button_left,.logs_diagnostics_view .basicModal__button,.logs_diagnostics_view .button_left{width:80%;margin:0 10%}.logs_diagnostics_view{padding:10px 10px 0 0}.clear_logs_update{padding:10px 10px 0;margin:0}}.sharing_view{width:90%;max-width:700px;margin-left:auto;margin-right:auto;margin-top:20px}.sharing_view .sharing_view_line{width:100%;display:block;clear:left}.sharing_view .col-xs-1,.sharing_view .col-xs-10,.sharing_view .col-xs-11,.sharing_view .col-xs-12,.sharing_view .col-xs-2,.sharing_view .col-xs-3,.sharing_view .col-xs-4,.sharing_view .col-xs-5,.sharing_view .col-xs-6,.sharing_view .col-xs-7,.sharing_view .col-xs-8,.sharing_view .col-xs-9{float:left;position:relative;min-height:1px}.sharing_view .col-xs-2{width:10%;padding-right:3%;padding-left:3%}.sharing_view .col-xs-5{width:42%}.sharing_view .btn-block+.btn-block{margin-top:5px}.sharing_view .btn-block{display:block;width:100%}.sharing_view .btn-default{color:#2293ec;border-color:#2293ec;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.sharing_view .btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.sharing_view select[multiple],.sharing_view select[size]{height:150px}.sharing_view .form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}.sharing_view .iconic{display:inline-block;width:15px;height:14px;fill:#2293ec}.sharing_view .iconic .iconic.ionicons{margin:0 8px -2px 0;width:18px;height:18px}.sharing_view .blue .iconic{fill:#2293ec}.sharing_view .grey .iconic{fill:#b4b4b4}.sharing_view p{width:100%;color:#ccc;text-align:center;font-size:14px;display:block}.sharing_view p.with{padding:15px 0}.sharing_view span.text{display:inline-block;padding:0 2px;width:40%;background-color:transparent;color:#fff;border:none}.sharing_view span.text:last-of-type{width:5%}.sharing_view span.text .iconic{width:15px;height:14px;margin:0 10px 0 1px;fill:#fff}.sharing_view .basicModal__button{margin-top:10px;color:#2293ec;display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);border-radius:5px}.sharing_view .choice label input:checked~.checkbox .iconic{opacity:1;-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}.sharing_view .choice{display:inline-block;width:5%;margin:0 10px;color:#fff}.sharing_view .choice input{position:absolute;margin:0;opacity:0}.sharing_view .choice .checkbox{display:inline-block;width:16px;height:16px;margin-top:10px;margin-left:2px;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.sharing_view .choice .checkbox .iconic{-webkit-box-sizing:border-box;box-sizing:border-box;fill:#2293ec;padding:2px;opacity:0;-ms-transform:scale(0);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);-o-transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1)}.sharing_view .select{position:relative;padding:0;color:#fff;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);font-size:14px;line-height:16px;outline:0;vertical-align:middle;background:rgba(0,0,0,.3);display:inline-block}.sharing_view .borderBlue{border:1px solid #2293ec}@media (hover:none){.sharing_view .basicModal__button{background:#2293ec;color:#fff}.sharing_view input{border-bottom:1px solid #2293ec}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.sharing_view{width:100%;max-width:100%;padding:10px}.sharing_view .select{font-size:12px}.sharing_view .iconic{margin-left:-4px}.sharing_view_line p{width:100%}.sharing_view_line .basicModal__button{width:80%;margin:0 10%}}#multiselect{position:absolute;background-color:rgba(0,94,204,.3);border:1px solid #005ecc;border-radius:3px;z-index:5}.justified-layout,.unjustified-layout{margin:30px;width:100%;position:relative}.justified-layout.laying-out,.unjustified-layout.laying-out{display:none}.justified-layout>.photo{position:absolute;--lychee-default-height:320px;margin:0}.unjustified-layout>.photo{float:left;max-height:240px;margin:5px}.justified-layout>.photo>.thumbimg,.justified-layout>.photo>.thumbimg>img,.unjustified-layout>.photo>.thumbimg,.unjustified-layout>.photo>.thumbimg>img{width:100%;height:100%;border:none;-o-object-fit:cover;object-fit:cover}.justified-layout>.photo>.overlay,.unjustified-layout>.photo>.overlay{width:100%;bottom:0;margin:0}.justified-layout>.photo>.overlay>h1,.unjustified-layout>.photo>.overlay>h1{width:auto;margin-right:15px}@media only screen and (min-width:320px) and (max-width:567px){.justified-layout{margin:8px}.justified-layout .photo{--lychee-default-height:160px}}@media only screen and (min-width:568px) and (max-width:639px){.justified-layout{margin:9px}.justified-layout .photo{--lychee-default-height:200px}}@media only screen and (min-width:640px) and (max-width:768px){.justified-layout{margin:10px}.justified-layout .photo{--lychee-default-height:240px}}#lychee_footer{text-align:center;padding:5px 0;background:#1d1d1d;-webkit-transition:color .3s,opacity .3s ease-out,margin-left .5s,-webkit-transform .3s ease-out,-webkit-box-shadow .3s;transition:color .3s,opacity .3s ease-out,transform .3s ease-out,box-shadow .3s,margin-left .5s,-webkit-transform .3s ease-out,-webkit-box-shadow .3s;-o-transition:color .3s,opacity .3s ease-out,transform .3s ease-out,box-shadow .3s,margin-left .5s}#lychee_footer p{color:#ccc;font-size:.75em;font-weight:400;line-height:26px}#lychee_footer p a,#lychee_footer p a:visited{color:#ccc}#lychee_footer p.home_copyright,#lychee_footer p.hosted_by{text-transform:uppercase}#lychee_footer #home_socials a[href=""],#lychee_footer p:empty,.hide_footer,body.mode-frame div#footer,body.mode-none div#footer{display:none}@font-face{font-family:socials;src:url(fonts/socials.eot?egvu10);src:url(fonts/socials.eot?egvu10#iefix) format("embedded-opentype"),url(fonts/socials.ttf?egvu10) format("truetype"),url(fonts/socials.woff?egvu10) format("woff"),url(fonts/socials.svg?egvu10#socials) format("svg");font-weight:400;font-style:normal}#socials_footer{padding:0;text-align:center;left:0;right:0}.socialicons{display:inline-block;font-size:18px;font-family:socials!important;speak:none;color:#ccc;text-decoration:none;margin:15px 15px 5px;transition:.3s;-webkit-transition:.3s;-moz-transition:.3s;-o-transition:.3s}#twitter:before{content:"\ea96"}#instagram:before{content:"\ea92"}#youtube:before{content:"\ea9d"}#flickr:before{content:"\eaa4"}#facebook:before{content:"\ea91"}@media (hover:hover){.sharing_view .basicModal__button:hover{background:#2293ec;color:#fff;cursor:pointer}.sharing_view input:hover{border-bottom:1px solid #2293ec}.socialicons:hover{color:#b5b5b5;-ms-transform:scale(1.3);transform:scale(1.3);-webkit-transform:scale(1.3)}}@media tv{.basicModal__button:focus{background:#2293ec;color:#fff;cursor:pointer;outline-style:none}.basicModal__button#basicModal__action:focus{color:#fff}.photo:focus{outline:#fff solid 10px}.album:focus{outline-width:0}.toolbar .button:focus{outline-width:0;background-color:#fff}.header__title:focus{outline-width:0;background-color:#fff;color:#000}.toolbar .button:focus .iconic{fill:#000}#imageview{background-color:#000}#imageview #image,#imageview #livephoto{outline-width:0}}#lychee_view_container{position:absolute;top:0;left:0;height:100%;width:100%;overflow:clip auto}.leaflet-image-layer,.leaflet-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane,.leaflet-pane>canvas,.leaflet-pane>svg,.leaflet-tile,.leaflet-tile-container,.leaflet-zoom-box{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden;-webkit-tap-highlight-color:transparent;background:#ddd;outline-offset:1px;font-family:"Helvetica Neue",Arial,Helvetica,sans-serif;font-size:.75rem;line-height:1.5}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::-moz-selection{background:0 0}.leaflet-tile::selection{background:0 0}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer{max-width:none!important;max-height:none!important;width:auto;padding:0}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4);color:#0078a8}.leaflet-tile{-webkit-filter:inherit;filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;-webkit-box-sizing:border-box;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto;float:left;clear:both}.leaflet-bottom,.leaflet-top{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-right .leaflet-control{float:right;margin-right:10px}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity .2s linear;-o-transition:opacity .2s linear;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1);-o-transition:transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1),-webkit-transform .25s cubic-bezier(0,0,.25,1)}.leaflet-pan-anim .leaflet-tile,.leaflet-zoom-anim .leaflet-tile{-webkit-transition:none;-o-transition:none;transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-control,.leaflet-popup-pane{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:grabbing}.leaflet-image-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-image-layer.leaflet-interactive,.leaflet-marker-icon.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-zoom-box{border:2px dotted #38f;background:rgba(255,255,255,.5)}.leaflet-bar{-webkit-box-shadow:0 1px 5px rgba(0,0,0,.65);box-shadow:0 1px 5px rgba(0,0,0,.65);border-radius:4px}.leaflet-bar a{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:focus,.leaflet-bar a:hover{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:bold 18px "Lucida Console",Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{-webkit-box-shadow:0 1px 5px rgba(0,0,0,.4);box-shadow:0 1px 5px rgba(0,0,0,.4);background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url(images/layers.png);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(images/layers-2x.png);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block;font-size:1.08333em}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(images/marker-icon.png)}.leaflet-container .leaflet-control-attribution{background:rgba(255,255,255,.8);margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:focus,.leaflet-control-attribution a:hover{text-decoration:underline}.leaflet-attribution-flag{display:inline!important;vertical-align:baseline!important;width:1em;height:.6669em}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;white-space:nowrap;-webkit-box-sizing:border-box;box-sizing:border-box;background:rgba(255,255,255,.8);text-shadow:1px 1px #fff}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-bar,.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers{-webkit-box-shadow:none;box-shadow:none}.leaflet-touch .leaflet-bar,.leaflet-touch .leaflet-control-layers{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 24px 13px 20px;line-height:1.3;font-size:1.08333em;min-height:1px}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-top:-1px;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;pointer-events:auto;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;-webkit-box-shadow:0 3px 14px rgba(0,0,0,.4);box-shadow:0 3px 14px rgba(0,0,0,.4)}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;border:none;text-align:center;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;color:#757575;text-decoration:none;background:0 0}.leaflet-container a.leaflet-popup-close-button:focus,.leaflet-container a.leaflet-popup-close-button:hover{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto}.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.4);box-shadow:0 1px 3px rgba(0,0,0,.4)}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before,.leaflet-tooltip-top:before{position:absolute;pointer-events:none;border:6px solid transparent;background:0 0;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.leaflet-cluster-anim .leaflet-marker-icon,.leaflet-cluster-anim .leaflet-marker-shadow{-webkit-transition:opacity .3s ease-in,-webkit-transform .3s ease-out;-o-transition:transform .3s ease-out,opacity .3s ease-in;transition:transform .3s ease-out,opacity .3s ease-in,-webkit-transform .3s ease-out}.leaflet-cluster-spider-leg{-webkit-transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in;-o-transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in;transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in}.leaflet-marker-photo{border:2px solid #fff;-webkit-box-shadow:3px 3px 10px #888;box-shadow:3px 3px 10px #888}.leaflet-marker-photo div{width:100%;height:100%;background-size:cover;background-position:center center;background-repeat:no-repeat}.leaflet-marker-photo b{position:absolute;top:-7px;right:-11px;color:#555;background-color:#fff;border-radius:8px;height:12px;min-width:12px;line-height:12px;text-align:center;padding:3px;-webkit-box-shadow:0 3px 14px rgba(0,0,0,.4);box-shadow:0 3px 14px rgba(0,0,0,.4)} \ No newline at end of file diff --git a/public/dist/frontend.js b/public/dist/frontend.js index 0d9a0905ba9..7c19b86e016 100644 --- a/public/dist/frontend.js +++ b/public/dist/frontend.js @@ -1,5 +1,5 @@ -/*! jQuery v3.7.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.0",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},R=function(){V()},M=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&z(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function X(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&M(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function U(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function z(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",R),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Me(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return R(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return R(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,S)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=E)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{if(d.cssSupportsSelector&&!CSS.supports("selector(:is("+c+"))"))throw new Error;return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===E&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[E]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,S=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.cssSupportsSelector=ce(function(){return CSS.supports("selector(*)")&&C.querySelectorAll(":is(:jqfake)")&&!CSS.supports("selector(:is(*,:jqfake))")}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=E,!C.getElementsByName||!C.getElementsByName(E).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&S){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&S){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&S)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+E+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+E+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),d.cssSupportsSelector||y.push(":has"),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType&&e.documentElement||e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&S&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:S,!0)),N.test(r[1])&&E.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=S.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)}).prototype=E.fn,D=E(S);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=S.createDocumentFragment().appendChild(S.createElement("div")),(fe=S.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?E.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),S.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;E.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||E.expando+"_"+Ct.guid++;return this[e]=!0,e}}),E.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||E.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?E(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=S.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=S.implementation.createHTMLDocument("")).createElement("base")).href=S.location.href,t.head.appendChild(r)):t=S),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&E(o).remove(),E.merge([],i.childNodes)));var r,i,o},E.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(E.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},E.expr.pseudos.animated=function(t){return E.grep(E.timers,function(e){return t===e.elem}).length},E.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=E.css(e,"position"),c=E(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=E.css(e,"top"),u=E.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),i.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-E.css(r,"marginTop",!0),left:t.left-i.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===E.css(e,"position"))e=e.offsetParent;return e||re})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;E.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(a,s){E.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){E.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?E.css(e,t,i):E.style(e,t,n,i)},s,n?e:void 0,n)}})}),E.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){E.fn[t]=function(e){return this.on(t,e)}}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0=layoutConfig.maxNumRows){currentRow=null;return true}currentRow=createNewRow(layoutConfig,layoutData);if(!itemAdded){itemAdded=currentRow.addItem(itemData);if(currentRow.isLayoutComplete()){laidOutItems=laidOutItems.concat(addRow(layoutConfig,layoutData,currentRow));if(layoutData._rows.length>=layoutConfig.maxNumRows){currentRow=null;return true}currentRow=createNewRow(layoutConfig,layoutData)}}}});if(currentRow&¤tRow.getItems().length&&layoutConfig.showWidows){if(layoutData._rows.length){if(layoutData._rows[layoutData._rows.length-1].isBreakoutRow){nextToLastRowHeight=layoutData._rows[layoutData._rows.length-1].targetRowHeight}else{nextToLastRowHeight=layoutData._rows[layoutData._rows.length-1].height}currentRow.forceComplete(false,nextToLastRowHeight)}else{currentRow.forceComplete(false)}laidOutItems=laidOutItems.concat(addRow(layoutConfig,layoutData,currentRow));layoutConfig._widowCount=currentRow.getItems().length}layoutData._containerHeight=layoutData._containerHeight-layoutConfig.boxSpacing.vertical;layoutData._containerHeight=layoutData._containerHeight+layoutConfig.containerPadding.bottom;return{containerHeight:layoutData._containerHeight,widowCount:layoutConfig._widowCount,boxes:layoutData._layoutItems}}module.exports=function(input,config){var layoutConfig={};var layoutData={};var defaults={containerWidth:1060,containerPadding:10,boxSpacing:10,targetRowHeight:320,targetRowHeightTolerance:.25,maxNumRows:Number.POSITIVE_INFINITY,forceAspectRatio:false,showWidows:true,fullWidthBreakoutRowCadence:false,widowLayoutStyle:"left"};var containerPadding={};var boxSpacing={};config=config||{};layoutConfig=Object.assign(defaults,config);containerPadding.top=!isNaN(parseFloat(layoutConfig.containerPadding.top))?layoutConfig.containerPadding.top:layoutConfig.containerPadding;containerPadding.right=!isNaN(parseFloat(layoutConfig.containerPadding.right))?layoutConfig.containerPadding.right:layoutConfig.containerPadding;containerPadding.bottom=!isNaN(parseFloat(layoutConfig.containerPadding.bottom))?layoutConfig.containerPadding.bottom:layoutConfig.containerPadding;containerPadding.left=!isNaN(parseFloat(layoutConfig.containerPadding.left))?layoutConfig.containerPadding.left:layoutConfig.containerPadding;boxSpacing.horizontal=!isNaN(parseFloat(layoutConfig.boxSpacing.horizontal))?layoutConfig.boxSpacing.horizontal:layoutConfig.boxSpacing;boxSpacing.vertical=!isNaN(parseFloat(layoutConfig.boxSpacing.vertical))?layoutConfig.boxSpacing.vertical:layoutConfig.boxSpacing;layoutConfig.containerPadding=containerPadding;layoutConfig.boxSpacing=boxSpacing;layoutData._layoutItems=[];layoutData._awakeItems=[];layoutData._inViewportItems=[];layoutData._leadingOrphans=[];layoutData._trailingOrphans=[];layoutData._containerHeight=layoutConfig.containerPadding.top;layoutData._rows=[];layoutData._orphans=[];layoutConfig._widowCount=0;return computeLayout(layoutConfig,layoutData,input.map(function(item){if(item.width&&item.height){return{aspectRatio:item.width/item.height}}else{return{aspectRatio:item}}}))}},{"./row":1}]},{},[]); /* @preserve - * Leaflet 1.9.4, a JS library for interactive maps. https://leafletjs.com - * (c) 2010-2023 Vladimir Agafonkin, (c) 2010-2011 CloudMade + * Leaflet 1.9.3, a JS library for interactive maps. https://leafletjs.com + * (c) 2010-2022 Vladimir Agafonkin, (c) 2010-2011 CloudMade */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).leaflet={})}(this,function(t){"use strict";function l(t){for(var e,i,n=1,o=arguments.length;n=this.min.x&&i.x<=this.max.x&&e.y>=this.min.y&&i.y<=this.max.y},intersects:function(t){t=_(t);var e=this.min,i=this.max,n=t.min,t=t.max,o=t.x>=e.x&&n.x<=i.x,t=t.y>=e.y&&n.y<=i.y;return o&&t},overlaps:function(t){t=_(t);var e=this.min,i=this.max,n=t.min,t=t.max,o=t.x>e.x&&n.xe.y&&n.y=n.lat&&i.lat<=o.lat&&e.lng>=n.lng&&i.lng<=o.lng},intersects:function(t){t=g(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),t=t.getNorthEast(),o=t.lat>=e.lat&&n.lat<=i.lat,t=t.lng>=e.lng&&n.lng<=i.lng;return o&&t},overlaps:function(t){t=g(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),t=t.getNorthEast(),o=t.lat>e.lat&&n.late.lng&&n.lng","http://www.w3.org/2000/svg"===(Wt.firstChild&&Wt.firstChild.namespaceURI));function y(t){return 0<=navigator.userAgent.toLowerCase().indexOf(t)}var b={ie:pt,ielt9:mt,edge:n,webkit:ft,android:gt,android23:vt,androidStock:yt,opera:xt,chrome:wt,gecko:bt,safari:Pt,phantom:Lt,opera12:o,win:Tt,ie3d:Mt,webkit3d:zt,gecko3d:_t,any3d:Ct,mobile:Zt,mobileWebkit:St,mobileWebkit3d:Et,msPointer:kt,pointer:Ot,touch:Bt,touchNative:At,mobileOpera:It,mobileGecko:Rt,retina:Nt,passiveEvents:Dt,canvas:jt,svg:Ht,vml:!Ht&&function(){try{var t=document.createElement("div"),e=(t.innerHTML='',t.firstChild);return e.style.behavior="url(#default#VML)",e&&"object"==typeof e.adj}catch(t){return!1}}(),inlineSvg:Wt,mac:0===navigator.platform.indexOf("Mac"),linux:0===navigator.platform.indexOf("Linux")},Ft=b.msPointer?"MSPointerDown":"pointerdown",Ut=b.msPointer?"MSPointerMove":"pointermove",Vt=b.msPointer?"MSPointerUp":"pointerup",qt=b.msPointer?"MSPointerCancel":"pointercancel",Gt={touchstart:Ft,touchmove:Ut,touchend:Vt,touchcancel:qt},Kt={touchstart:function(t,e){e.MSPOINTER_TYPE_TOUCH&&e.pointerType===e.MSPOINTER_TYPE_TOUCH&&O(e);ee(t,e)},touchmove:ee,touchend:ee,touchcancel:ee},Yt={},Xt=!1;function Jt(t,e,i){return"touchstart"!==e||Xt||(document.addEventListener(Ft,$t,!0),document.addEventListener(Ut,Qt,!0),document.addEventListener(Vt,te,!0),document.addEventListener(qt,te,!0),Xt=!0),Kt[e]?(i=Kt[e].bind(this,i),t.addEventListener(Gt[e],i,!1),i):(console.warn("wrong event specified:",e),u)}function $t(t){Yt[t.pointerId]=t}function Qt(t){Yt[t.pointerId]&&(Yt[t.pointerId]=t)}function te(t){delete Yt[t.pointerId]}function ee(t,e){if(e.pointerType!==(e.MSPOINTER_TYPE_MOUSE||"mouse")){for(var i in e.touches=[],Yt)e.touches.push(Yt[i]);e.changedTouches=[e],t(e)}}var ie=200;function ne(t,i){t.addEventListener("dblclick",i);var n,o=0;function e(t){var e;1!==t.detail?n=t.detail:"mouse"===t.pointerType||t.sourceCapabilities&&!t.sourceCapabilities.firesTouchEvents||((e=Ne(t)).some(function(t){return t instanceof HTMLLabelElement&&t.attributes.for})&&!e.some(function(t){return t instanceof HTMLInputElement||t instanceof HTMLSelectElement})||((e=Date.now())-o<=ie?2===++n&&i(function(t){var e,i,n={};for(i in t)e=t[i],n[i]=e&&e.bind?e.bind(t):e;return(t=n).type="dblclick",n.detail=2,n.isTrusted=!1,n._simulated=!0,n}(t)):n=1,o=e))}return t.addEventListener("click",e),{dblclick:i,simDblclick:e}}var oe,se,re,ae,he,le,ue=we(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),ce=we(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),de="webkitTransition"===ce||"OTransition"===ce?ce+"End":"transitionend";function _e(t){return"string"==typeof t?document.getElementById(t):t}function pe(t,e){var i=t.style[e]||t.currentStyle&&t.currentStyle[e];return"auto"===(i=i&&"auto"!==i||!document.defaultView?i:(t=document.defaultView.getComputedStyle(t,null))?t[e]:null)?null:i}function P(t,e,i){t=document.createElement(t);return t.className=e||"",i&&i.appendChild(t),t}function T(t){var e=t.parentNode;e&&e.removeChild(t)}function me(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function fe(t){var e=t.parentNode;e&&e.lastChild!==t&&e.appendChild(t)}function ge(t){var e=t.parentNode;e&&e.firstChild!==t&&e.insertBefore(t,e.firstChild)}function ve(t,e){return void 0!==t.classList?t.classList.contains(e):0<(t=xe(t)).length&&new RegExp("(^|\\s)"+e+"(\\s|$)").test(t)}function M(t,e){var i;if(void 0!==t.classList)for(var n=F(e),o=0,s=n.length;othis.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,e){this._enforcingBounds=!0;var i=this.getCenter(),t=this._limitCenter(i,this._zoom,g(t));return i.equals(t)||this.panTo(t,e),this._enforcingBounds=!1,this},panInside:function(t,e){var i=m((e=e||{}).paddingTopLeft||e.padding||[0,0]),n=m(e.paddingBottomRight||e.padding||[0,0]),o=this.project(this.getCenter()),t=this.project(t),s=this.getPixelBounds(),i=_([s.min.add(i),s.max.subtract(n)]),s=i.getSize();return i.contains(t)||(this._enforcingBounds=!0,n=t.subtract(i.getCenter()),i=i.extend(t).getSize().subtract(s),o.x+=n.x<0?-i.x:i.x,o.y+=n.y<0?-i.y:i.y,this.panTo(this.unproject(o),e),this._enforcingBounds=!1),this},invalidateSize:function(t){if(!this._loaded)return this;t=l({animate:!1,pan:!0},!0===t?{animate:!0}:t);var e=this.getSize(),i=(this._sizeChanged=!0,this._lastCenter=null,this.getSize()),n=e.divideBy(2).round(),o=i.divideBy(2).round(),n=n.subtract(o);return n.x||n.y?(t.animate&&t.pan?this.panBy(n):(t.pan&&this._rawPanBy(n),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(a(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:e,newSize:i})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){var e,i;return t=this._locateOptions=l({timeout:1e4,watch:!1},t),"geolocation"in navigator?(e=a(this._handleGeolocationResponse,this),i=a(this._handleGeolocationError,this),t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,i,t):navigator.geolocation.getCurrentPosition(e,i,t)):this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var e;this._container._leaflet_id&&(e=t.code,t=t.message||(1===e?"permission denied":2===e?"position unavailable":"timeout"),this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:e,message:"Geolocation error: "+t+"."}))},_handleGeolocationResponse:function(t){if(this._container._leaflet_id){var e,i,n=new v(t.coords.latitude,t.coords.longitude),o=n.toBounds(2*t.coords.accuracy),s=this._locateOptions,r=(s.setView&&(e=this.getBoundsZoom(o),this.setView(n,s.maxZoom?Math.min(e,s.maxZoom):e)),{latlng:n,bounds:o,timestamp:t.timestamp});for(i in t.coords)"number"==typeof t.coords[i]&&(r[i]=t.coords[i]);this.fire("locationfound",r)}},addHandler:function(t,e){return e&&(e=this[t]=new e(this),this._handlers.push(e),this.options[t]&&e.enable()),this},remove:function(){if(this._initEvents(!0),this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}for(var t in void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),T(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(r(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload"),this._layers)this._layers[t].remove();for(t in this._panes)T(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,e){e=P("div","leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),e||this._mapPane);return t&&(this._panes[t]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter.clone():this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new s(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,e,i){t=g(t),i=m(i||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),t=t.getSouthEast(),i=this.getSize().subtract(i),t=_(this.project(t,n),this.project(r,n)).getSize(),r=b.any3d?this.options.zoomSnap:1,a=i.x/t.x,i=i.y/t.y,t=e?Math.max(a,i):Math.min(a,i),n=this.getScaleZoom(t,n);return r&&(n=Math.round(n/(r/100))*(r/100),n=e?Math.ceil(n/r)*r:Math.floor(n/r)*r),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new p(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,e){t=this._getTopLeftPoint(t,e);return new f(t,t.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return"string"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,e){var i=this.options.crs;return e=void 0===e?this._zoom:e,i.scale(t)/i.scale(e)},getScaleZoom:function(t,e){var i=this.options.crs,t=(e=void 0===e?this._zoom:e,i.zoom(t*i.scale(e)));return isNaN(t)?1/0:t},project:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.latLngToPoint(w(t),e)},unproject:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.pointToLatLng(m(t),e)},layerPointToLatLng:function(t){t=m(t).add(this.getPixelOrigin());return this.unproject(t)},latLngToLayerPoint:function(t){return this.project(w(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(w(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(g(t))},distance:function(t,e){return this.options.crs.distance(w(t),w(e))},containerPointToLayerPoint:function(t){return m(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return m(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){t=this.containerPointToLayerPoint(m(t));return this.layerPointToLatLng(t)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(w(t)))},mouseEventToContainerPoint:function(t){return De(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){t=this._container=_e(t);if(!t)throw new Error("Map container not found.");if(t._leaflet_id)throw new Error("Map container is already initialized.");S(t,"scroll",this._onScroll,this),this._containerId=h(t)},_initLayout:function(){var t=this._container,e=(this._fadeAnimated=this.options.fadeAnimation&&b.any3d,M(t,"leaflet-container"+(b.touch?" leaflet-touch":"")+(b.retina?" leaflet-retina":"")+(b.ielt9?" leaflet-oldie":"")+(b.safari?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":"")),pe(t,"position"));"absolute"!==e&&"relative"!==e&&"fixed"!==e&&"sticky"!==e&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),Z(this._mapPane,new p(0,0)),this.createPane("tilePane"),this.createPane("overlayPane"),this.createPane("shadowPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(M(t.markerPane,"leaflet-zoom-hide"),M(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,e,i){Z(this._mapPane,new p(0,0));var n=!this._loaded,o=(this._loaded=!0,e=this._limitZoom(e),this.fire("viewprereset"),this._zoom!==e);this._moveStart(o,i)._move(t,e)._moveEnd(o),this.fire("viewreset"),n&&this.fire("load")},_moveStart:function(t,e){return t&&this.fire("zoomstart"),e||this.fire("movestart"),this},_move:function(t,e,i,n){void 0===e&&(e=this._zoom);var o=this._zoom!==e;return this._zoom=e,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),n?i&&i.pinch&&this.fire("zoom",i):((o||i&&i.pinch)&&this.fire("zoom",i),this.fire("move",i)),this},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return r(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){Z(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={};var e=t?k:S;e((this._targets[h(this._container)]=this)._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",this._handleDOMEvent,this),this.options.trackResize&&e(window,"resize",this._onResize,this),b.any3d&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){r(this._resizeRequest),this._resizeRequest=x(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,e){for(var i,n=[],o="mouseout"===e||"mouseover"===e,s=t.target||t.srcElement,r=!1;s;){if((i=this._targets[h(s)])&&("click"===e||"preclick"===e)&&this._draggableMoved(i)){r=!0;break}if(i&&i.listens(e,!0)){if(o&&!We(s,t))break;if(n.push(i),o)break}if(s===this._container)break;s=s.parentNode}return n=n.length||r||o||!this.listens(e,!0)?n:[this]},_isClickDisabled:function(t){for(;t&&t!==this._container;){if(t._leaflet_disable_click)return!0;t=t.parentNode}},_handleDOMEvent:function(t){var e,i=t.target||t.srcElement;!this._loaded||i._leaflet_disable_events||"click"===t.type&&this._isClickDisabled(i)||("mousedown"===(e=t.type)&&Me(i),this._fireDOMEvent(t,e))},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,e,i){"click"===t.type&&((a=l({},t)).type="preclick",this._fireDOMEvent(a,a.type,i));var n=this._findEventTargets(t,e);if(i){for(var o=[],s=0;sthis.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(e),n=this._getCenterOffset(t)._divideBy(1-1/n);if(!0!==i.animate&&!this.getSize().contains(n))return!1;x(function(){this._moveStart(!0,i.noMoveStart||!1)._animateZoom(t,e,!0)},this)}return!0},_animateZoom:function(t,e,i,n){this._mapPane&&(i&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=e,M(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:e,noUpdate:n}),this._tempFireZoomEvent||(this._tempFireZoomEvent=this._zoom!==this._animateToZoom),this._move(this._animateToCenter,this._animateToZoom,void 0,!0),setTimeout(a(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&z(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom,void 0,!0),this._tempFireZoomEvent&&this.fire("zoom"),delete this._tempFireZoomEvent,this.fire("move"),this._moveEnd(!0))}});function Ue(t){return new B(t)}var B=et.extend({options:{position:"topright"},initialize:function(t){c(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var e=this._map;return e&&e.removeControl(this),this.options.position=t,e&&e.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var e=this._container=this.onAdd(t),i=this.getPosition(),t=t._controlCorners[i];return M(e,"leaflet-control"),-1!==i.indexOf("bottom")?t.insertBefore(e,t.firstChild):t.appendChild(e),this._map.on("unload",this.remove,this),this},remove:function(){return this._map&&(T(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null),this},_refocusOnMap:function(t){this._map&&t&&0",e=document.createElement("div");return e.innerHTML=t,e.firstChild},_addItem:function(t){var e,i=document.createElement("label"),n=this._map.hasLayer(t.layer),n=(t.overlay?((e=document.createElement("input")).type="checkbox",e.className="leaflet-control-layers-selector",e.defaultChecked=n):e=this._createRadioElement("leaflet-base-layers_"+h(this),n),this._layerControlInputs.push(e),e.layerId=h(t.layer),S(e,"click",this._onInputClick,this),document.createElement("span")),o=(n.innerHTML=" "+t.name,document.createElement("span"));return i.appendChild(o),o.appendChild(e),o.appendChild(n),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(i),this._checkDisabledLayers(),i},_onInputClick:function(){if(!this._preventClick){var t,e,i=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=i.length-1;0<=s;s--)t=i[s],e=this._getLayer(t.layerId).layer,t.checked?n.push(e):t.checked||o.push(e);for(s=0;se.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expandSafely:function(){var t=this._section,e=(this._preventClick=!0,S(t,"click",O),this.expand(),this);setTimeout(function(){k(t,"click",O),e._preventClick=!1})}})),qe=B.extend({options:{position:"topleft",zoomInText:'',zoomInTitle:"Zoom in",zoomOutText:'',zoomOutTitle:"Zoom out"},onAdd:function(t){var e="leaflet-control-zoom",i=P("div",e+" leaflet-bar"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,e+"-in",i,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,e+"-out",i,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),i},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoomthis._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,e,i,n,o){i=P("a",i,n);return i.innerHTML=t,i.href="#",i.title=e,i.setAttribute("role","button"),i.setAttribute("aria-label",e),Ie(i),S(i,"click",Re),S(i,"click",o,this),S(i,"click",this._refocusOnMap,this),i},_updateDisabled:function(){var t=this._map,e="leaflet-disabled";z(this._zoomInButton,e),z(this._zoomOutButton,e),this._zoomInButton.setAttribute("aria-disabled","false"),this._zoomOutButton.setAttribute("aria-disabled","false"),!this._disabled&&t._zoom!==t.getMinZoom()||(M(this._zoomOutButton,e),this._zoomOutButton.setAttribute("aria-disabled","true")),!this._disabled&&t._zoom!==t.getMaxZoom()||(M(this._zoomInButton,e),this._zoomInButton.setAttribute("aria-disabled","true"))}}),Ge=(A.mergeOptions({zoomControl:!0}),A.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new qe,this.addControl(this.zoomControl))}),B.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var e="leaflet-control-scale",i=P("div",e),n=this.options;return this._addScales(n,e+"-line",i),t.on(n.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,e,i){t.metric&&(this._mScale=P("div",e,i)),t.imperial&&(this._iScale=P("div",e,i))},_update:function(){var t=this._map,e=t.getSize().y/2,t=t.distance(t.containerPointToLatLng([0,e]),t.containerPointToLatLng([this.options.maxWidth,e]));this._updateScales(t)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var e=this._getRoundNum(t);this._updateScale(this._mScale,e<1e3?e+" m":e/1e3+" km",e/t)},_updateImperial:function(t){var e,i,t=3.2808399*t;5280'+(b.inlineSvg?' ':"")+"Leaflet"},initialize:function(t){c(this,t),this._attributions={}},onAdd:function(t){for(var e in(t.attributionControl=this)._container=P("div","leaflet-control-attribution"),Ie(this._container),t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return this._update(),t.on("layeradd",this._addAttribution,this),this._container},onRemove:function(t){t.off("layeradd",this._addAttribution,this)},_addAttribution:function(t){t.layer.getAttribution&&(this.addAttribution(t.layer.getAttribution()),t.layer.once("remove",function(){this.removeAttribution(t.layer.getAttribution())},this))},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t&&(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update()),this},removeAttribution:function(t){return t&&this._attributions[t]&&(this._attributions[t]--,this._update()),this},_update:function(){if(this._map){var t,e=[];for(t in this._attributions)this._attributions[t]&&e.push(t);var i=[];this.options.prefix&&i.push(this.options.prefix),e.length&&i.push(e.join(", ")),this._container.innerHTML=i.join(' ')}}}),n=(A.mergeOptions({attributionControl:!0}),A.addInitHook(function(){this.options.attributionControl&&(new Ke).addTo(this)}),B.Layers=Ve,B.Zoom=qe,B.Scale=Ge,B.Attribution=Ke,Ue.layers=function(t,e,i){return new Ve(t,e,i)},Ue.zoom=function(t){return new qe(t)},Ue.scale=function(t){return new Ge(t)},Ue.attribution=function(t){return new Ke(t)},et.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled||(this._enabled=!0,this.addHooks()),this},disable:function(){return this._enabled&&(this._enabled=!1,this.removeHooks()),this},enabled:function(){return!!this._enabled}})),ft=(n.addTo=function(t,e){return t.addHandler(e,this),this},{Events:e}),Ye=b.touch?"touchstart mousedown":"mousedown",Xe=it.extend({options:{clickTolerance:3},initialize:function(t,e,i,n){c(this,n),this._element=t,this._dragStartTarget=e||t,this._preventOutline=i},enable:function(){this._enabled||(S(this._dragStartTarget,Ye,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Xe._dragging===this&&this.finishDrag(!0),k(this._dragStartTarget,Ye,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){var e,i;this._enabled&&(this._moved=!1,ve(this._element,"leaflet-zoom-anim")||(t.touches&&1!==t.touches.length?Xe._dragging===this&&this.finishDrag():Xe._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||((Xe._dragging=this)._preventOutline&&Me(this._element),Le(),re(),this._moving||(this.fire("down"),i=t.touches?t.touches[0]:t,e=Ce(this._element),this._startPoint=new p(i.clientX,i.clientY),this._startPos=Pe(this._element),this._parentScale=Ze(e),i="mousedown"===t.type,S(document,i?"mousemove":"touchmove",this._onMove,this),S(document,i?"mouseup":"touchend touchcancel",this._onUp,this)))))},_onMove:function(t){var e;this._enabled&&(t.touches&&1e&&(i.push(t[n]),o=n);oe.max.x&&(i|=2),t.ye.max.y&&(i|=8),i}function ri(t,e,i,n){var o=e.x,e=e.y,s=i.x-o,r=i.y-e,a=s*s+r*r;return 0this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()t.y!=n.y>t.y&&t.x<(n.x-i.x)*(t.y-i.y)/(n.y-i.y)+i.x&&(l=!l);return l||yi.prototype._containsPoint.call(this,t,!0)}});var wi=ci.extend({initialize:function(t,e){c(this,e),this._layers={},t&&this.addData(t)},addData:function(t){var e,i,n,o=d(t)?t:t.features;if(o){for(e=0,i=o.length;es.x&&(r=i.x+a-s.x+o.x),i.x-r-n.x<(a=0)&&(r=i.x-n.x),i.y+e+o.y>s.y&&(a=i.y+e-s.y+o.y),i.y-a-n.y<0&&(a=i.y-n.y),(r||a)&&(this.options.keepInView&&(this._autopanning=!0),t.fire("autopanstart").panBy([r,a]))))},_getAnchor:function(){return m(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}})),Ii=(A.mergeOptions({closePopupOnClick:!0}),A.include({openPopup:function(t,e,i){return this._initOverlay(Bi,t,e,i).openOn(this),this},closePopup:function(t){return(t=arguments.length?t:this._popup)&&t.close(),this}}),o.include({bindPopup:function(t,e){return this._popup=this._initOverlay(Bi,this._popup,t,e),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t){return this._popup&&(this instanceof ci||(this._popup._source=this),this._popup._prepareOpen(t||this._latlng)&&this._popup.openOn(this._map)),this},closePopup:function(){return this._popup&&this._popup.close(),this},togglePopup:function(){return this._popup&&this._popup.toggle(this),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var e;this._popup&&this._map&&(Re(t),e=t.layer||t.target,this._popup._source!==e||e instanceof fi?(this._popup._source=e,this.openPopup(t.latlng)):this._map.hasLayer(this._popup)?this.closePopup():this.openPopup(t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}}),Ai.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,opacity:.9},onAdd:function(t){Ai.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&(this.addEventParent(this._source),this._source.fire("tooltipopen",{tooltip:this},!0))},onRemove:function(t){Ai.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&(this.removeEventParent(this._source),this._source.fire("tooltipclose",{tooltip:this},!0))},getEvents:function(){var t=Ai.prototype.getEvents.call(this);return this.options.permanent||(t.preclick=this.close),t},_initLayout:function(){var t="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=P("div",t),this._container.setAttribute("role","tooltip"),this._container.setAttribute("id","leaflet-tooltip-"+h(this))},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var e,i=this._map,n=this._container,o=i.latLngToContainerPoint(i.getCenter()),i=i.layerPointToContainerPoint(t),s=this.options.direction,r=n.offsetWidth,a=n.offsetHeight,h=m(this.options.offset),l=this._getAnchor(),i="top"===s?(e=r/2,a):"bottom"===s?(e=r/2,0):(e="center"===s?r/2:"right"===s?0:"left"===s?r:i.xthis.options.maxZoom||nthis.options.maxZoom||void 0!==this.options.minZoom&&oi.max.x)||!e.wrapLat&&(t.yi.max.y))return!1}return!this.options.bounds||(e=this._tileCoordsToBounds(t),g(this.options.bounds).overlaps(e))},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var e=this._map,i=this.getTileSize(),n=t.scaleBy(i),i=n.add(i);return[e.unproject(n,t.z),e.unproject(i,t.z)]},_tileCoordsToBounds:function(t){t=this._tileCoordsToNwSe(t),t=new s(t[0],t[1]);return t=this.options.noWrap?t:this._map.wrapLatLngBounds(t)},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var t=t.split(":"),e=new p(+t[0],+t[1]);return e.z=+t[2],e},_removeTile:function(t){var e=this._tiles[t];e&&(T(e.el),delete this._tiles[t],this.fire("tileunload",{tile:e.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){M(t,"leaflet-tile");var e=this.getTileSize();t.style.width=e.x+"px",t.style.height=e.y+"px",t.onselectstart=u,t.onmousemove=u,b.ielt9&&this.options.opacity<1&&C(t,this.options.opacity)},_addTile:function(t,e){var i=this._getTilePos(t),n=this._tileCoordsToKey(t),o=this.createTile(this._wrapCoords(t),a(this._tileReady,this,t));this._initTile(o),this.createTile.length<2&&x(a(this._tileReady,this,t,null,o)),Z(o,i),this._tiles[n]={el:o,coords:t,current:!0},e.appendChild(o),this.fire("tileloadstart",{tile:o,coords:t})},_tileReady:function(t,e,i){e&&this.fire("tileerror",{error:e,tile:i,coords:t});var n=this._tileCoordsToKey(t);(i=this._tiles[n])&&(i.loaded=+new Date,this._map._fadeAnimated?(C(i.el,0),r(this._fadeFrame),this._fadeFrame=x(this._updateOpacity,this)):(i.active=!0,this._pruneTiles()),e||(M(i.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:i.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),b.ielt9||!this._map._fadeAnimated?x(this._pruneTiles,this):setTimeout(a(this._pruneTiles,this),250)))},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var e=new p(this._wrapX?H(t.x,this._wrapX):t.x,this._wrapY?H(t.y,this._wrapY):t.y);return e.z=t.z,e},_pxBoundsToTileRange:function(t){var e=this.getTileSize();return new f(t.min.unscaleBy(e).floor(),t.max.unscaleBy(e).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}});var Di=Ni.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1,referrerPolicy:!1},initialize:function(t,e){this._url=t,(e=c(this,e)).detectRetina&&b.retina&&0')}}catch(t){}return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}(),zt={_initContainer:function(){this._container=P("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(Wi.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var e=t._container=Vi("shape");M(e,"leaflet-vml-shape "+(this.options.className||"")),e.coordsize="1 1",t._path=Vi("path"),e.appendChild(t._path),this._updateStyle(t),this._layers[h(t)]=t},_addPath:function(t){var e=t._container;this._container.appendChild(e),t.options.interactive&&t.addInteractiveTarget(e)},_removePath:function(t){var e=t._container;T(e),t.removeInteractiveTarget(e),delete this._layers[h(t)]},_updateStyle:function(t){var e=t._stroke,i=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(e=e||(t._stroke=Vi("stroke")),o.appendChild(e),e.weight=n.weight+"px",e.color=n.color,e.opacity=n.opacity,n.dashArray?e.dashStyle=d(n.dashArray)?n.dashArray.join(" "):n.dashArray.replace(/( *, *)/g," "):e.dashStyle="",e.endcap=n.lineCap.replace("butt","flat"),e.joinstyle=n.lineJoin):e&&(o.removeChild(e),t._stroke=null),n.fill?(i=i||(t._fill=Vi("fill")),o.appendChild(i),i.color=n.fillColor||n.color,i.opacity=n.fillOpacity):i&&(o.removeChild(i),t._fill=null)},_updateCircle:function(t){var e=t._point.round(),i=Math.round(t._radius),n=Math.round(t._radiusY||i);this._setPath(t,t._empty()?"M0 0":"AL "+e.x+","+e.y+" "+i+","+n+" 0,23592600")},_setPath:function(t,e){t._path.v=e},_bringToFront:function(t){fe(t._container)},_bringToBack:function(t){ge(t._container)}},qi=b.vml?Vi:ct,Gi=Wi.extend({_initContainer:function(){this._container=qi("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=qi("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){T(this._container),k(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_update:function(){var t,e,i;this._map._animatingZoom&&this._bounds||(Wi.prototype._update.call(this),e=(t=this._bounds).getSize(),i=this._container,this._svgSize&&this._svgSize.equals(e)||(this._svgSize=e,i.setAttribute("width",e.x),i.setAttribute("height",e.y)),Z(i,t.min),i.setAttribute("viewBox",[t.min.x,t.min.y,e.x,e.y].join(" ")),this.fire("update"))},_initPath:function(t){var e=t._path=qi("path");t.options.className&&M(e,t.options.className),t.options.interactive&&M(e,"leaflet-interactive"),this._updateStyle(t),this._layers[h(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){T(t._path),t.removeInteractiveTarget(t._path),delete this._layers[h(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var e=t._path,t=t.options;e&&(t.stroke?(e.setAttribute("stroke",t.color),e.setAttribute("stroke-opacity",t.opacity),e.setAttribute("stroke-width",t.weight),e.setAttribute("stroke-linecap",t.lineCap),e.setAttribute("stroke-linejoin",t.lineJoin),t.dashArray?e.setAttribute("stroke-dasharray",t.dashArray):e.removeAttribute("stroke-dasharray"),t.dashOffset?e.setAttribute("stroke-dashoffset",t.dashOffset):e.removeAttribute("stroke-dashoffset")):e.setAttribute("stroke","none"),t.fill?(e.setAttribute("fill",t.fillColor||t.color),e.setAttribute("fill-opacity",t.fillOpacity),e.setAttribute("fill-rule",t.fillRule||"evenodd")):e.setAttribute("fill","none"))},_updatePoly:function(t,e){this._setPath(t,dt(t._parts,e))},_updateCircle:function(t){var e=t._point,i=Math.max(Math.round(t._radius),1),n="a"+i+","+(Math.max(Math.round(t._radiusY),1)||i)+" 0 1,0 ",e=t._empty()?"M0 0":"M"+(e.x-i)+","+e.y+n+2*i+",0 "+n+2*-i+",0 ";this._setPath(t,e)},_setPath:function(t,e){t._path.setAttribute("d",e)},_bringToFront:function(t){fe(t._path)},_bringToBack:function(t){ge(t._path)}});function Ki(t){return b.svg||b.vml?new Gi(t):null}b.vml&&Gi.include(zt),A.include({getRenderer:function(t){t=(t=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer)||(this._renderer=this._createRenderer());return this.hasLayer(t)||this.addLayer(t),t},_getPaneRenderer:function(t){var e;return"overlayPane"!==t&&void 0!==t&&(void 0===(e=this._paneRenderers[t])&&(e=this._createRenderer({pane:t}),this._paneRenderers[t]=e),e)},_createRenderer:function(t){return this.options.preferCanvas&&Ui(t)||Ki(t)}});var Yi=xi.extend({initialize:function(t,e){xi.prototype.initialize.call(this,this._boundsToLatLngs(t),e)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return[(t=g(t)).getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});Gi.create=qi,Gi.pointsToPath=dt,wi.geometryToLayer=bi,wi.coordsToLatLng=Li,wi.coordsToLatLngs=Ti,wi.latLngToCoords=Mi,wi.latLngsToCoords=zi,wi.getFeature=Ci,wi.asFeature=Zi,A.mergeOptions({boxZoom:!0});var _t=n.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){S(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){k(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){T(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),re(),Le(),this._startPoint=this._map.mouseEventToContainerPoint(t),S(document,{contextmenu:Re,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=P("div","leaflet-zoom-box",this._container),M(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var t=new f(this._point,this._startPoint),e=t.getSize();Z(this._box,t.min),this._box.style.width=e.x+"px",this._box.style.height=e.y+"px"},_finish:function(){this._moved&&(T(this._box),z(this._container,"leaflet-crosshair")),ae(),Te(),k(document,{contextmenu:Re,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){1!==t.which&&1!==t.button||(this._finish(),this._moved&&(this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(a(this._resetState,this),0),t=new s(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point)),this._map.fitBounds(t).fire("boxzoomend",{boxZoomBounds:t})))},_onKeyDown:function(t){27===t.keyCode&&(this._finish(),this._clearDeferredResetState(),this._resetState())}}),Ct=(A.addInitHook("addHandler","boxZoom",_t),A.mergeOptions({doubleClickZoom:!0}),n.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var e=this._map,i=e.getZoom(),n=e.options.zoomDelta,i=t.originalEvent.shiftKey?i-n:i+n;"center"===e.options.doubleClickZoom?e.setZoom(i):e.setZoomAround(t.containerPoint,i)}})),Zt=(A.addInitHook("addHandler","doubleClickZoom",Ct),A.mergeOptions({dragging:!0,inertia:!0,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0}),n.extend({addHooks:function(){var t;this._draggable||(t=this._map,this._draggable=new Xe(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))),M(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){z(this._map._container,"leaflet-grab"),z(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t,e=this._map;e._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity?(t=g(this._map.options.maxBounds),this._offsetLimit=_(this._map.latLngToContainerPoint(t.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(t.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))):this._offsetLimit=null,e.fire("movestart").fire("dragstart"),e.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){var e,i;this._map.options.inertia&&(e=this._lastTime=+new Date,i=this._lastPos=this._draggable._absPos||this._draggable._newPos,this._positions.push(i),this._times.push(e),this._prunePositions(e)),this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;1e.max.x&&(t.x=this._viscousLimit(t.x,e.max.x)),t.y>e.max.y&&(t.y=this._viscousLimit(t.y,e.max.y)),this._draggable._newPos=this._draggable._startPos.add(t))},_onPreDragWrap:function(){var t=this._worldWidth,e=Math.round(t/2),i=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-e+i)%t+e-i,n=(n+e+i)%t-e-i,t=Math.abs(o+i)e.getMaxZoom()&&1=this.min.x&&i.x<=this.max.x&&e.y>=this.min.y&&i.y<=this.max.y},intersects:function(t){t=_(t);var e=this.min,i=this.max,n=t.min,t=t.max,o=t.x>=e.x&&n.x<=i.x,t=t.y>=e.y&&n.y<=i.y;return o&&t},overlaps:function(t){t=_(t);var e=this.min,i=this.max,n=t.min,t=t.max,o=t.x>e.x&&n.xe.y&&n.y=n.lat&&i.lat<=o.lat&&e.lng>=n.lng&&i.lng<=o.lng},intersects:function(t){t=g(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),t=t.getNorthEast(),o=t.lat>=e.lat&&n.lat<=i.lat,t=t.lng>=e.lng&&n.lng<=i.lng;return o&&t},overlaps:function(t){t=g(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),t=t.getNorthEast(),o=t.lat>e.lat&&n.late.lng&&n.lng","http://www.w3.org/2000/svg"===(Ft.firstChild&&Ft.firstChild.namespaceURI));function y(t){return 0<=navigator.userAgent.toLowerCase().indexOf(t)}var b={ie:pt,ielt9:mt,edge:n,webkit:ft,android:gt,android23:vt,androidStock:yt,opera:xt,chrome:wt,gecko:bt,safari:Pt,phantom:Lt,opera12:o,win:Tt,ie3d:Mt,webkit3d:zt,gecko3d:_t,any3d:Ct,mobile:Zt,mobileWebkit:St,mobileWebkit3d:Et,msPointer:kt,pointer:Ot,touch:Bt,touchNative:At,mobileOpera:It,mobileGecko:Rt,retina:Nt,passiveEvents:Dt,canvas:jt,svg:Ht,vml:!Ht&&function(){try{var t=document.createElement("div"),e=(t.innerHTML='',t.firstChild);return e.style.behavior="url(#default#VML)",e&&"object"==typeof e.adj}catch(t){return!1}}(),inlineSvg:Ft,mac:0===navigator.platform.indexOf("Mac"),linux:0===navigator.platform.indexOf("Linux")},Wt=b.msPointer?"MSPointerDown":"pointerdown",Ut=b.msPointer?"MSPointerMove":"pointermove",Vt=b.msPointer?"MSPointerUp":"pointerup",qt=b.msPointer?"MSPointerCancel":"pointercancel",Gt={touchstart:Wt,touchmove:Ut,touchend:Vt,touchcancel:qt},Kt={touchstart:function(t,e){e.MSPOINTER_TYPE_TOUCH&&e.pointerType===e.MSPOINTER_TYPE_TOUCH&&O(e);ee(t,e)},touchmove:ee,touchend:ee,touchcancel:ee},Yt={},Xt=!1;function Jt(t,e,i){return"touchstart"!==e||Xt||(document.addEventListener(Wt,$t,!0),document.addEventListener(Ut,Qt,!0),document.addEventListener(Vt,te,!0),document.addEventListener(qt,te,!0),Xt=!0),Kt[e]?(i=Kt[e].bind(this,i),t.addEventListener(Gt[e],i,!1),i):(console.warn("wrong event specified:",e),u)}function $t(t){Yt[t.pointerId]=t}function Qt(t){Yt[t.pointerId]&&(Yt[t.pointerId]=t)}function te(t){delete Yt[t.pointerId]}function ee(t,e){if(e.pointerType!==(e.MSPOINTER_TYPE_MOUSE||"mouse")){for(var i in e.touches=[],Yt)e.touches.push(Yt[i]);e.changedTouches=[e],t(e)}}var ie=200;function ne(t,i){t.addEventListener("dblclick",i);var n,o=0;function e(t){var e;1!==t.detail?n=t.detail:"mouse"===t.pointerType||t.sourceCapabilities&&!t.sourceCapabilities.firesTouchEvents||((e=Ne(t)).some(function(t){return t instanceof HTMLLabelElement&&t.attributes.for})&&!e.some(function(t){return t instanceof HTMLInputElement||t instanceof HTMLSelectElement})||((e=Date.now())-o<=ie?2===++n&&i(function(t){var e,i,n={};for(i in t)e=t[i],n[i]=e&&e.bind?e.bind(t):e;return(t=n).type="dblclick",n.detail=2,n.isTrusted=!1,n._simulated=!0,n}(t)):n=1,o=e))}return t.addEventListener("click",e),{dblclick:i,simDblclick:e}}var oe,se,re,ae,he,le,ue=we(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),ce=we(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),de="webkitTransition"===ce||"OTransition"===ce?ce+"End":"transitionend";function _e(t){return"string"==typeof t?document.getElementById(t):t}function pe(t,e){var i=t.style[e]||t.currentStyle&&t.currentStyle[e];return"auto"===(i=i&&"auto"!==i||!document.defaultView?i:(t=document.defaultView.getComputedStyle(t,null))?t[e]:null)?null:i}function P(t,e,i){t=document.createElement(t);return t.className=e||"",i&&i.appendChild(t),t}function T(t){var e=t.parentNode;e&&e.removeChild(t)}function me(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function fe(t){var e=t.parentNode;e&&e.lastChild!==t&&e.appendChild(t)}function ge(t){var e=t.parentNode;e&&e.firstChild!==t&&e.insertBefore(t,e.firstChild)}function ve(t,e){return void 0!==t.classList?t.classList.contains(e):0<(t=xe(t)).length&&new RegExp("(^|\\s)"+e+"(\\s|$)").test(t)}function M(t,e){var i;if(void 0!==t.classList)for(var n=W(e),o=0,s=n.length;othis.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,e){this._enforcingBounds=!0;var i=this.getCenter(),t=this._limitCenter(i,this._zoom,g(t));return i.equals(t)||this.panTo(t,e),this._enforcingBounds=!1,this},panInside:function(t,e){var i=m((e=e||{}).paddingTopLeft||e.padding||[0,0]),n=m(e.paddingBottomRight||e.padding||[0,0]),o=this.project(this.getCenter()),t=this.project(t),s=this.getPixelBounds(),i=_([s.min.add(i),s.max.subtract(n)]),s=i.getSize();return i.contains(t)||(this._enforcingBounds=!0,n=t.subtract(i.getCenter()),i=i.extend(t).getSize().subtract(s),o.x+=n.x<0?-i.x:i.x,o.y+=n.y<0?-i.y:i.y,this.panTo(this.unproject(o),e),this._enforcingBounds=!1),this},invalidateSize:function(t){if(!this._loaded)return this;t=l({animate:!1,pan:!0},!0===t?{animate:!0}:t);var e=this.getSize(),i=(this._sizeChanged=!0,this._lastCenter=null,this.getSize()),n=e.divideBy(2).round(),o=i.divideBy(2).round(),n=n.subtract(o);return n.x||n.y?(t.animate&&t.pan?this.panBy(n):(t.pan&&this._rawPanBy(n),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(a(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:e,newSize:i})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){var e,i;return t=this._locateOptions=l({timeout:1e4,watch:!1},t),"geolocation"in navigator?(e=a(this._handleGeolocationResponse,this),i=a(this._handleGeolocationError,this),t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,i,t):navigator.geolocation.getCurrentPosition(e,i,t)):this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var e;this._container._leaflet_id&&(e=t.code,t=t.message||(1===e?"permission denied":2===e?"position unavailable":"timeout"),this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:e,message:"Geolocation error: "+t+"."}))},_handleGeolocationResponse:function(t){if(this._container._leaflet_id){var e,i,n=new v(t.coords.latitude,t.coords.longitude),o=n.toBounds(2*t.coords.accuracy),s=this._locateOptions,r=(s.setView&&(e=this.getBoundsZoom(o),this.setView(n,s.maxZoom?Math.min(e,s.maxZoom):e)),{latlng:n,bounds:o,timestamp:t.timestamp});for(i in t.coords)"number"==typeof t.coords[i]&&(r[i]=t.coords[i]);this.fire("locationfound",r)}},addHandler:function(t,e){return e&&(e=this[t]=new e(this),this._handlers.push(e),this.options[t]&&e.enable()),this},remove:function(){if(this._initEvents(!0),this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}for(var t in void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),T(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(r(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload"),this._layers)this._layers[t].remove();for(t in this._panes)T(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,e){e=P("div","leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),e||this._mapPane);return t&&(this._panes[t]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter.clone():this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new s(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,e,i){t=g(t),i=m(i||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),t=t.getSouthEast(),i=this.getSize().subtract(i),t=_(this.project(t,n),this.project(r,n)).getSize(),r=b.any3d?this.options.zoomSnap:1,a=i.x/t.x,i=i.y/t.y,t=e?Math.max(a,i):Math.min(a,i),n=this.getScaleZoom(t,n);return r&&(n=Math.round(n/(r/100))*(r/100),n=e?Math.ceil(n/r)*r:Math.floor(n/r)*r),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new p(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,e){t=this._getTopLeftPoint(t,e);return new f(t,t.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return"string"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,e){var i=this.options.crs;return e=void 0===e?this._zoom:e,i.scale(t)/i.scale(e)},getScaleZoom:function(t,e){var i=this.options.crs,t=(e=void 0===e?this._zoom:e,i.zoom(t*i.scale(e)));return isNaN(t)?1/0:t},project:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.latLngToPoint(w(t),e)},unproject:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.pointToLatLng(m(t),e)},layerPointToLatLng:function(t){t=m(t).add(this.getPixelOrigin());return this.unproject(t)},latLngToLayerPoint:function(t){return this.project(w(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(w(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(g(t))},distance:function(t,e){return this.options.crs.distance(w(t),w(e))},containerPointToLayerPoint:function(t){return m(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return m(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){t=this.containerPointToLayerPoint(m(t));return this.layerPointToLatLng(t)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(w(t)))},mouseEventToContainerPoint:function(t){return De(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){t=this._container=_e(t);if(!t)throw new Error("Map container not found.");if(t._leaflet_id)throw new Error("Map container is already initialized.");S(t,"scroll",this._onScroll,this),this._containerId=h(t)},_initLayout:function(){var t=this._container,e=(this._fadeAnimated=this.options.fadeAnimation&&b.any3d,M(t,"leaflet-container"+(b.touch?" leaflet-touch":"")+(b.retina?" leaflet-retina":"")+(b.ielt9?" leaflet-oldie":"")+(b.safari?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":"")),pe(t,"position"));"absolute"!==e&&"relative"!==e&&"fixed"!==e&&"sticky"!==e&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),Z(this._mapPane,new p(0,0)),this.createPane("tilePane"),this.createPane("overlayPane"),this.createPane("shadowPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(M(t.markerPane,"leaflet-zoom-hide"),M(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,e,i){Z(this._mapPane,new p(0,0));var n=!this._loaded,o=(this._loaded=!0,e=this._limitZoom(e),this.fire("viewprereset"),this._zoom!==e);this._moveStart(o,i)._move(t,e)._moveEnd(o),this.fire("viewreset"),n&&this.fire("load")},_moveStart:function(t,e){return t&&this.fire("zoomstart"),e||this.fire("movestart"),this},_move:function(t,e,i,n){void 0===e&&(e=this._zoom);var o=this._zoom!==e;return this._zoom=e,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),n?i&&i.pinch&&this.fire("zoom",i):((o||i&&i.pinch)&&this.fire("zoom",i),this.fire("move",i)),this},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return r(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){Z(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={};var e=t?k:S;e((this._targets[h(this._container)]=this)._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",this._handleDOMEvent,this),this.options.trackResize&&e(window,"resize",this._onResize,this),b.any3d&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){r(this._resizeRequest),this._resizeRequest=x(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,e){for(var i,n=[],o="mouseout"===e||"mouseover"===e,s=t.target||t.srcElement,r=!1;s;){if((i=this._targets[h(s)])&&("click"===e||"preclick"===e)&&this._draggableMoved(i)){r=!0;break}if(i&&i.listens(e,!0)){if(o&&!Fe(s,t))break;if(n.push(i),o)break}if(s===this._container)break;s=s.parentNode}return n=n.length||r||o||!this.listens(e,!0)?n:[this]},_isClickDisabled:function(t){for(;t&&t!==this._container;){if(t._leaflet_disable_click)return!0;t=t.parentNode}},_handleDOMEvent:function(t){var e,i=t.target||t.srcElement;!this._loaded||i._leaflet_disable_events||"click"===t.type&&this._isClickDisabled(i)||("mousedown"===(e=t.type)&&Me(i),this._fireDOMEvent(t,e))},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,e,i){"click"===t.type&&((a=l({},t)).type="preclick",this._fireDOMEvent(a,a.type,i));var n=this._findEventTargets(t,e);if(i){for(var o=[],s=0;sthis.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(e),n=this._getCenterOffset(t)._divideBy(1-1/n);if(!0!==i.animate&&!this.getSize().contains(n))return!1;x(function(){this._moveStart(!0,!1)._animateZoom(t,e,!0)},this)}return!0},_animateZoom:function(t,e,i,n){this._mapPane&&(i&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=e,M(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:e,noUpdate:n}),this._tempFireZoomEvent||(this._tempFireZoomEvent=this._zoom!==this._animateToZoom),this._move(this._animateToCenter,this._animateToZoom,void 0,!0),setTimeout(a(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&z(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom,void 0,!0),this._tempFireZoomEvent&&this.fire("zoom"),delete this._tempFireZoomEvent,this.fire("move"),this._moveEnd(!0))}});function Ue(t){return new B(t)}var Ve,B=et.extend({options:{position:"topright"},initialize:function(t){c(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var e=this._map;return e&&e.removeControl(this),this.options.position=t,e&&e.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var e=this._container=this.onAdd(t),i=this.getPosition(),t=t._controlCorners[i];return M(e,"leaflet-control"),-1!==i.indexOf("bottom")?t.insertBefore(e,t.firstChild):t.appendChild(e),this._map.on("unload",this.remove,this),this},remove:function(){return this._map&&(T(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null),this},_refocusOnMap:function(t){this._map&&t&&0",e=document.createElement("div");return e.innerHTML=t,e.firstChild},_addItem:function(t){var e,i=document.createElement("label"),n=this._map.hasLayer(t.layer),n=(t.overlay?((e=document.createElement("input")).type="checkbox",e.className="leaflet-control-layers-selector",e.defaultChecked=n):e=this._createRadioElement("leaflet-base-layers_"+h(this),n),this._layerControlInputs.push(e),e.layerId=h(t.layer),S(e,"click",this._onInputClick,this),document.createElement("span")),o=(n.innerHTML=" "+t.name,document.createElement("span"));return i.appendChild(o),o.appendChild(e),o.appendChild(n),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(i),this._checkDisabledLayers(),i},_onInputClick:function(){var t,e,i=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=i.length-1;0<=s;s--)t=i[s],e=this._getLayer(t.layerId).layer,t.checked?n.push(e):t.checked||o.push(e);for(s=0;se.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expandSafely:function(){var t=this._section;S(t,"click",O),this.expand(),setTimeout(function(){k(t,"click",O)})}})),Ge=B.extend({options:{position:"topleft",zoomInText:'',zoomInTitle:"Zoom in",zoomOutText:'',zoomOutTitle:"Zoom out"},onAdd:function(t){var e="leaflet-control-zoom",i=P("div",e+" leaflet-bar"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,e+"-in",i,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,e+"-out",i,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),i},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoomthis._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,e,i,n,o){i=P("a",i,n);return i.innerHTML=t,i.href="#",i.title=e,i.setAttribute("role","button"),i.setAttribute("aria-label",e),Ie(i),S(i,"click",Re),S(i,"click",o,this),S(i,"click",this._refocusOnMap,this),i},_updateDisabled:function(){var t=this._map,e="leaflet-disabled";z(this._zoomInButton,e),z(this._zoomOutButton,e),this._zoomInButton.setAttribute("aria-disabled","false"),this._zoomOutButton.setAttribute("aria-disabled","false"),!this._disabled&&t._zoom!==t.getMinZoom()||(M(this._zoomOutButton,e),this._zoomOutButton.setAttribute("aria-disabled","true")),!this._disabled&&t._zoom!==t.getMaxZoom()||(M(this._zoomInButton,e),this._zoomInButton.setAttribute("aria-disabled","true"))}}),Ke=(A.mergeOptions({zoomControl:!0}),A.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new Ge,this.addControl(this.zoomControl))}),B.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var e="leaflet-control-scale",i=P("div",e),n=this.options;return this._addScales(n,e+"-line",i),t.on(n.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,e,i){t.metric&&(this._mScale=P("div",e,i)),t.imperial&&(this._iScale=P("div",e,i))},_update:function(){var t=this._map,e=t.getSize().y/2,t=t.distance(t.containerPointToLatLng([0,e]),t.containerPointToLatLng([this.options.maxWidth,e]));this._updateScales(t)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var e=this._getRoundNum(t);this._updateScale(this._mScale,e<1e3?e+" m":e/1e3+" km",e/t)},_updateImperial:function(t){var e,i,t=3.2808399*t;5280'+(b.inlineSvg?' ':"")+"Leaflet"},initialize:function(t){c(this,t),this._attributions={}},onAdd:function(t){for(var e in(t.attributionControl=this)._container=P("div","leaflet-control-attribution"),Ie(this._container),t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return this._update(),t.on("layeradd",this._addAttribution,this),this._container},onRemove:function(t){t.off("layeradd",this._addAttribution,this)},_addAttribution:function(t){t.layer.getAttribution&&(this.addAttribution(t.layer.getAttribution()),t.layer.once("remove",function(){this.removeAttribution(t.layer.getAttribution())},this))},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t&&(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update()),this},removeAttribution:function(t){return t&&this._attributions[t]&&(this._attributions[t]--,this._update()),this},_update:function(){if(this._map){var t,e=[];for(t in this._attributions)this._attributions[t]&&e.push(t);var i=[];this.options.prefix&&i.push(this.options.prefix),e.length&&i.push(e.join(", ")),this._container.innerHTML=i.join(' ')}}}),n=(A.mergeOptions({attributionControl:!0}),A.addInitHook(function(){this.options.attributionControl&&(new Ye).addTo(this)}),B.Layers=qe,B.Zoom=Ge,B.Scale=Ke,B.Attribution=Ye,Ue.layers=function(t,e,i){return new qe(t,e,i)},Ue.zoom=function(t){return new Ge(t)},Ue.scale=function(t){return new Ke(t)},Ue.attribution=function(t){return new Ye(t)},et.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled||(this._enabled=!0,this.addHooks()),this},disable:function(){return this._enabled&&(this._enabled=!1,this.removeHooks()),this},enabled:function(){return!!this._enabled}})),ft=(n.addTo=function(t,e){return t.addHandler(e,this),this},{Events:e}),Xe=b.touch?"touchstart mousedown":"mousedown",Je=it.extend({options:{clickTolerance:3},initialize:function(t,e,i,n){c(this,n),this._element=t,this._dragStartTarget=e||t,this._preventOutline=i},enable:function(){this._enabled||(S(this._dragStartTarget,Xe,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Je._dragging===this&&this.finishDrag(!0),k(this._dragStartTarget,Xe,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){var e,i;this._enabled&&(this._moved=!1,ve(this._element,"leaflet-zoom-anim")||(t.touches&&1!==t.touches.length?Je._dragging===this&&this.finishDrag():Je._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||((Je._dragging=this)._preventOutline&&Me(this._element),Le(),re(),this._moving||(this.fire("down"),i=t.touches?t.touches[0]:t,e=Ce(this._element),this._startPoint=new p(i.clientX,i.clientY),this._startPos=Pe(this._element),this._parentScale=Ze(e),i="mousedown"===t.type,S(document,i?"mousemove":"touchmove",this._onMove,this),S(document,i?"mouseup":"touchend touchcancel",this._onUp,this)))))},_onMove:function(t){var e;this._enabled&&(t.touches&&1e&&(i.push(t[n]),o=n);oe.max.x&&(i|=2),t.ye.max.y&&(i|=8),i}function ni(t,e,i,n){var o=e.x,e=e.y,s=i.x-o,r=i.y-e,a=s*s+r*r;return 0this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()t.y!=n.y>t.y&&t.x<(n.x-i.x)*(t.y-i.y)/(n.y-i.y)+i.x&&(l=!l);return l||vi.prototype._containsPoint.call(this,t,!0)}});var xi=ui.extend({initialize:function(t,e){c(this,e),this._layers={},t&&this.addData(t)},addData:function(t){var e,i,n,o=d(t)?t:t.features;if(o){for(e=0,i=o.length;es.x&&(r=i.x+a-s.x+o.x),i.x-r-n.x<(a=0)&&(r=i.x-n.x),i.y+e+o.y>s.y&&(a=i.y+e-s.y+o.y),i.y-a-n.y<0&&(a=i.y-n.y),(r||a)&&(this.options.keepInView&&(this._autopanning=!0),t.fire("autopanstart").panBy([r,a]))))},_getAnchor:function(){return m(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}})),Bi=(A.mergeOptions({closePopupOnClick:!0}),A.include({openPopup:function(t,e,i){return this._initOverlay(Ai,t,e,i).openOn(this),this},closePopup:function(t){return(t=arguments.length?t:this._popup)&&t.close(),this}}),o.include({bindPopup:function(t,e){return this._popup=this._initOverlay(Ai,this._popup,t,e),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t){return this._popup&&(this instanceof ui||(this._popup._source=this),this._popup._prepareOpen(t||this._latlng)&&this._popup.openOn(this._map)),this},closePopup:function(){return this._popup&&this._popup.close(),this},togglePopup:function(){return this._popup&&this._popup.toggle(this),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var e;this._popup&&this._map&&(Re(t),e=t.layer||t.target,this._popup._source!==e||e instanceof mi?(this._popup._source=e,this.openPopup(t.latlng)):this._map.hasLayer(this._popup)?this.closePopup():this.openPopup(t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}}),Oi.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,opacity:.9},onAdd:function(t){Oi.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&(this.addEventParent(this._source),this._source.fire("tooltipopen",{tooltip:this},!0))},onRemove:function(t){Oi.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&(this.removeEventParent(this._source),this._source.fire("tooltipclose",{tooltip:this},!0))},getEvents:function(){var t=Oi.prototype.getEvents.call(this);return this.options.permanent||(t.preclick=this.close),t},_initLayout:function(){var t="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=P("div",t),this._container.setAttribute("role","tooltip"),this._container.setAttribute("id","leaflet-tooltip-"+h(this))},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var e,i=this._map,n=this._container,o=i.latLngToContainerPoint(i.getCenter()),i=i.layerPointToContainerPoint(t),s=this.options.direction,r=n.offsetWidth,a=n.offsetHeight,h=m(this.options.offset),l=this._getAnchor(),i="top"===s?(e=r/2,a):"bottom"===s?(e=r/2,0):(e="center"===s?r/2:"right"===s?0:"left"===s?r:i.xthis.options.maxZoom||nthis.options.maxZoom||void 0!==this.options.minZoom&&oi.max.x)||!e.wrapLat&&(t.yi.max.y))return!1}return!this.options.bounds||(e=this._tileCoordsToBounds(t),g(this.options.bounds).overlaps(e))},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var e=this._map,i=this.getTileSize(),n=t.scaleBy(i),i=n.add(i);return[e.unproject(n,t.z),e.unproject(i,t.z)]},_tileCoordsToBounds:function(t){t=this._tileCoordsToNwSe(t),t=new s(t[0],t[1]);return t=this.options.noWrap?t:this._map.wrapLatLngBounds(t)},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var t=t.split(":"),e=new p(+t[0],+t[1]);return e.z=+t[2],e},_removeTile:function(t){var e=this._tiles[t];e&&(T(e.el),delete this._tiles[t],this.fire("tileunload",{tile:e.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){M(t,"leaflet-tile");var e=this.getTileSize();t.style.width=e.x+"px",t.style.height=e.y+"px",t.onselectstart=u,t.onmousemove=u,b.ielt9&&this.options.opacity<1&&C(t,this.options.opacity)},_addTile:function(t,e){var i=this._getTilePos(t),n=this._tileCoordsToKey(t),o=this.createTile(this._wrapCoords(t),a(this._tileReady,this,t));this._initTile(o),this.createTile.length<2&&x(a(this._tileReady,this,t,null,o)),Z(o,i),this._tiles[n]={el:o,coords:t,current:!0},e.appendChild(o),this.fire("tileloadstart",{tile:o,coords:t})},_tileReady:function(t,e,i){e&&this.fire("tileerror",{error:e,tile:i,coords:t});var n=this._tileCoordsToKey(t);(i=this._tiles[n])&&(i.loaded=+new Date,this._map._fadeAnimated?(C(i.el,0),r(this._fadeFrame),this._fadeFrame=x(this._updateOpacity,this)):(i.active=!0,this._pruneTiles()),e||(M(i.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:i.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),b.ielt9||!this._map._fadeAnimated?x(this._pruneTiles,this):setTimeout(a(this._pruneTiles,this),250)))},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var e=new p(this._wrapX?H(t.x,this._wrapX):t.x,this._wrapY?H(t.y,this._wrapY):t.y);return e.z=t.z,e},_pxBoundsToTileRange:function(t){var e=this.getTileSize();return new f(t.min.unscaleBy(e).floor(),t.max.unscaleBy(e).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}});var Ni=Ri.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1,referrerPolicy:!1},initialize:function(t,e){this._url=t,(e=c(this,e)).detectRetina&&b.retina&&0')}}catch(t){}return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}(),zt={_initContainer:function(){this._container=P("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(Hi.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var e=t._container=Ui("shape");M(e,"leaflet-vml-shape "+(this.options.className||"")),e.coordsize="1 1",t._path=Ui("path"),e.appendChild(t._path),this._updateStyle(t),this._layers[h(t)]=t},_addPath:function(t){var e=t._container;this._container.appendChild(e),t.options.interactive&&t.addInteractiveTarget(e)},_removePath:function(t){var e=t._container;T(e),t.removeInteractiveTarget(e),delete this._layers[h(t)]},_updateStyle:function(t){var e=t._stroke,i=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(e=e||(t._stroke=Ui("stroke")),o.appendChild(e),e.weight=n.weight+"px",e.color=n.color,e.opacity=n.opacity,n.dashArray?e.dashStyle=d(n.dashArray)?n.dashArray.join(" "):n.dashArray.replace(/( *, *)/g," "):e.dashStyle="",e.endcap=n.lineCap.replace("butt","flat"),e.joinstyle=n.lineJoin):e&&(o.removeChild(e),t._stroke=null),n.fill?(i=i||(t._fill=Ui("fill")),o.appendChild(i),i.color=n.fillColor||n.color,i.opacity=n.fillOpacity):i&&(o.removeChild(i),t._fill=null)},_updateCircle:function(t){var e=t._point.round(),i=Math.round(t._radius),n=Math.round(t._radiusY||i);this._setPath(t,t._empty()?"M0 0":"AL "+e.x+","+e.y+" "+i+","+n+" 0,23592600")},_setPath:function(t,e){t._path.v=e},_bringToFront:function(t){fe(t._container)},_bringToBack:function(t){ge(t._container)}},Vi=b.vml?Ui:ct,qi=Hi.extend({_initContainer:function(){this._container=Vi("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=Vi("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){T(this._container),k(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_update:function(){var t,e,i;this._map._animatingZoom&&this._bounds||(Hi.prototype._update.call(this),e=(t=this._bounds).getSize(),i=this._container,this._svgSize&&this._svgSize.equals(e)||(this._svgSize=e,i.setAttribute("width",e.x),i.setAttribute("height",e.y)),Z(i,t.min),i.setAttribute("viewBox",[t.min.x,t.min.y,e.x,e.y].join(" ")),this.fire("update"))},_initPath:function(t){var e=t._path=Vi("path");t.options.className&&M(e,t.options.className),t.options.interactive&&M(e,"leaflet-interactive"),this._updateStyle(t),this._layers[h(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){T(t._path),t.removeInteractiveTarget(t._path),delete this._layers[h(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var e=t._path,t=t.options;e&&(t.stroke?(e.setAttribute("stroke",t.color),e.setAttribute("stroke-opacity",t.opacity),e.setAttribute("stroke-width",t.weight),e.setAttribute("stroke-linecap",t.lineCap),e.setAttribute("stroke-linejoin",t.lineJoin),t.dashArray?e.setAttribute("stroke-dasharray",t.dashArray):e.removeAttribute("stroke-dasharray"),t.dashOffset?e.setAttribute("stroke-dashoffset",t.dashOffset):e.removeAttribute("stroke-dashoffset")):e.setAttribute("stroke","none"),t.fill?(e.setAttribute("fill",t.fillColor||t.color),e.setAttribute("fill-opacity",t.fillOpacity),e.setAttribute("fill-rule",t.fillRule||"evenodd")):e.setAttribute("fill","none"))},_updatePoly:function(t,e){this._setPath(t,dt(t._parts,e))},_updateCircle:function(t){var e=t._point,i=Math.max(Math.round(t._radius),1),n="a"+i+","+(Math.max(Math.round(t._radiusY),1)||i)+" 0 1,0 ",e=t._empty()?"M0 0":"M"+(e.x-i)+","+e.y+n+2*i+",0 "+n+2*-i+",0 ";this._setPath(t,e)},_setPath:function(t,e){t._path.setAttribute("d",e)},_bringToFront:function(t){fe(t._path)},_bringToBack:function(t){ge(t._path)}});function Gi(t){return b.svg||b.vml?new qi(t):null}b.vml&&qi.include(zt),A.include({getRenderer:function(t){t=(t=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer)||(this._renderer=this._createRenderer());return this.hasLayer(t)||this.addLayer(t),t},_getPaneRenderer:function(t){var e;return"overlayPane"!==t&&void 0!==t&&(void 0===(e=this._paneRenderers[t])&&(e=this._createRenderer({pane:t}),this._paneRenderers[t]=e),e)},_createRenderer:function(t){return this.options.preferCanvas&&Wi(t)||Gi(t)}});var Ki=yi.extend({initialize:function(t,e){yi.prototype.initialize.call(this,this._boundsToLatLngs(t),e)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return[(t=g(t)).getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});qi.create=Vi,qi.pointsToPath=dt,xi.geometryToLayer=wi,xi.coordsToLatLng=Pi,xi.coordsToLatLngs=Li,xi.latLngToCoords=Ti,xi.latLngsToCoords=Mi,xi.getFeature=zi,xi.asFeature=Ci,A.mergeOptions({boxZoom:!0});var _t=n.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){S(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){k(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){T(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),re(),Le(),this._startPoint=this._map.mouseEventToContainerPoint(t),S(document,{contextmenu:Re,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=P("div","leaflet-zoom-box",this._container),M(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var t=new f(this._point,this._startPoint),e=t.getSize();Z(this._box,t.min),this._box.style.width=e.x+"px",this._box.style.height=e.y+"px"},_finish:function(){this._moved&&(T(this._box),z(this._container,"leaflet-crosshair")),ae(),Te(),k(document,{contextmenu:Re,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){1!==t.which&&1!==t.button||(this._finish(),this._moved&&(this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(a(this._resetState,this),0),t=new s(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point)),this._map.fitBounds(t).fire("boxzoomend",{boxZoomBounds:t})))},_onKeyDown:function(t){27===t.keyCode&&(this._finish(),this._clearDeferredResetState(),this._resetState())}}),Ct=(A.addInitHook("addHandler","boxZoom",_t),A.mergeOptions({doubleClickZoom:!0}),n.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var e=this._map,i=e.getZoom(),n=e.options.zoomDelta,i=t.originalEvent.shiftKey?i-n:i+n;"center"===e.options.doubleClickZoom?e.setZoom(i):e.setZoomAround(t.containerPoint,i)}})),Zt=(A.addInitHook("addHandler","doubleClickZoom",Ct),A.mergeOptions({dragging:!0,inertia:!0,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0}),n.extend({addHooks:function(){var t;this._draggable||(t=this._map,this._draggable=new Je(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))),M(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){z(this._map._container,"leaflet-grab"),z(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t,e=this._map;e._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity?(t=g(this._map.options.maxBounds),this._offsetLimit=_(this._map.latLngToContainerPoint(t.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(t.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))):this._offsetLimit=null,e.fire("movestart").fire("dragstart"),e.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){var e,i;this._map.options.inertia&&(e=this._lastTime=+new Date,i=this._lastPos=this._draggable._absPos||this._draggable._newPos,this._positions.push(i),this._times.push(e),this._prunePositions(e)),this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;1e.max.x&&(t.x=this._viscousLimit(t.x,e.max.x)),t.y>e.max.y&&(t.y=this._viscousLimit(t.y,e.max.y)),this._draggable._newPos=this._draggable._startPos.add(t))},_onPreDragWrap:function(){var t=this._worldWidth,e=Math.round(t/2),i=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-e+i)%t+e-i,n=(n+e+i)%t-e-i,t=Math.abs(o+i)e.getMaxZoom()&&1","$",""])),lychee.locale["CAMERA_DATE"],build.iconic("camera-slr"),subtitle);break;}// fall through case"creation":break;case"oldstyle":default:if(lychee.sorting_albums&&data.min_taken_at&&data.max_taken_at){if(lychee.sorting_albums.column==="max_taken_at"||lychee.sorting_albums.column==="min_taken_at"){if(formattedMinTs!==""&&formattedMaxTs!==""){subtitle=formattedMinTs===formattedMaxTs?formattedMaxTs:formattedMinTs+" - "+formattedMaxTs;}else if(formattedMinTs!==""&&lychee.sorting_albums.column==="min_taken_at"){subtitle=formattedMinTs;}else if(formattedMaxTs!==""&&lychee.sorting_albums.column==="max_taken_at"){subtitle=formattedMaxTs;}}}}var html=lychee.html(_templateObject6||(_templateObject6=_taggedTemplateLiteral(["\n\t\t\t
\n\t\t\t\t ","\n\t\t\t\t ","\n\t\t\t\t ","\n\t\t\t\t
\n\t\t\t\t\t

$","

\n\t\t\t\t\t","\n\t\t\t\t
\n\t\t\t"])),disabled?"disabled":"",data.policy.is_nsfw&&lychee.nsfw_blur?"blurred":"",data.id,data.policy.is_nsfw?"1":"0",tabindex.get_next_tab_index(),disableDragDrop?"false":"true",disableDragDrop?"":"ondragstart='lychee.startDrag(event)'\n\t\t\t\tondragover='lychee.overDrag(event)'\n\t\t\t\tondragleave='lychee.leaveDrag(event)'\n\t\t\t\tondragend='lychee.endDrag(event)'\n\t\t\t\tondrop='lychee.finishDrag(event)'",build.getAlbumThumb(data),build.getAlbumThumb(data),build.getAlbumThumb(data),data.title,data.title,subtitle);if(data.rights.can_edit&&!disabled){var isCover=album.json&&album.json.cover_id&&data.thumb.id===album.json.cover_id;html+=lychee.html(_templateObject7||(_templateObject7=_taggedTemplateLiteral(["\n\t\t\t\t
\n\t\t\t\t\t","\n\t\t\t\t\t","\n\t\t\t\t\t","\n\t\t\t\t\t","\n\t\t\t\t\t","\n\t\t\t\t\t","\n\t\t\t\t\t","\n\t\t\t\t\t","\n\t\t\t\t\t","\n\t\t\t\t
\n\t\t\t\t"])),data.policy&&data.policy.is_nsfw?"badge--nsfw":"",build.iconic("warning"),data.id===SmartAlbumID.STARRED?"badge--star":"",build.iconic("star"),data.id===SmartAlbumID.RECENT?"badge--visible badge--list":"",build.iconic("clock"),data.id===SmartAlbumID.ON_THIS_DAY?"badge--tag badge--list":"",build.iconic("calendar"),data.id===SmartAlbumID.PUBLIC||data.policy&&data.policy.is_public?"badge--visible":"",data.policy&&data.policy.is_link_required?"badge--hidden":"badge--not--hidden",build.iconic("eye"),data.id===SmartAlbumID.UNSORTED?"badge--visible":"",build.iconic("list"),data.policy&&data.policy.is_password_required?"badge--visible":"",build.iconic("lock-unlocked"),data.is_tag_album?"badge--tag":"",build.iconic("tag"),isCover?"badge--cover":"",build.iconic("folder-cover"));}var albumcount=data.num_subalbums;switch(lychee.album_decoration){case"none":// no decorations break;case"photo":// photos only -html+=lychee.html(_templateObject8||(_templateObject8=_taggedTemplateLiteral(["\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t","\n\t\t\t\t\t\t","\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
"])),build.iconic("puzzle-piece"),data.num_photos);break;case"layers":// sub-albums only and only marker without count (as in old v4 behaviour) +if(data.num_photos>0){html+=lychee.html(_templateObject8||(_templateObject8=_taggedTemplateLiteral(["\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t","\n\t\t\t\t\t\t\t","\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
"])),build.iconic("puzzle-piece"),data.num_photos);}break;case"layers":// sub-albums only and only marker without count (as in old v4 behaviour) if(albumcount>0){html+=lychee.html(_templateObject9||(_templateObject9=_taggedTemplateLiteral(["\n\t\t\t\t\t
\n\t\t\t\t\t\t","\n\t\t\t\t\t
"])),build.iconic("layers"));}break;case"album":// sub-albums only if(albumcount>0){html+=lychee.html(_templateObject10||(_templateObject10=_taggedTemplateLiteral(["\n\t\t\t\t\t"])));}break;case"all":// sub-albums and photos if(albumcount>0||data.num_photos>0){html+=lychee.html(_templateObject13||(_templateObject13=_taggedTemplateLiteral(["\n\t\t\t\t\t
"])),lychee.album_decoration_orientation);if(data.num_photos>0){html+=lychee.html(_templateObject14||(_templateObject14=_taggedTemplateLiteral(["\n\t\t\t\t\t\t\t","\n\t\t\t\t\t\t\t\t","\n\t\t\t\t\t\t\t"])),build.iconic("puzzle-piece"),data.num_photos);}if(albumcount>0){html+=lychee.html(_templateObject15||(_templateObject15=_taggedTemplateLiteral(["\n\t\t\t\t\t\t",""])),build.iconic("folder"));if(albumcount>1)html+=lychee.html(_templateObject16||(_templateObject16=_taggedTemplateLiteral(["\n\t\t\t\t\t\t\t",""])),albumcount);html+=lychee.html(_templateObject17||(_templateObject17=_taggedTemplateLiteral(["\n\t\t\t\t\t\t"])));}html+=lychee.html(_templateObject18||(_templateObject18=_taggedTemplateLiteral(["\n\t\t\t\t\t
"])));}}html+="
";// close 'album' @@ -5503,44 +5503,27 @@ $(".u2f_view").append(build.u2f(credential));settings.bind("#CredentialDelete"+c * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */var _routes=/*#__PURE__*/new WeakMap();var _headers=/*#__PURE__*/new WeakMap();var _includeCredentials=/*#__PURE__*/new WeakMap();var _fetch=/*#__PURE__*/new WeakSet();var _parseIncomingServerOptions=/*#__PURE__*/new WeakSet();var _parseOutgoingCredentials=/*#__PURE__*/new WeakSet();var WebAuthn=/*#__PURE__*/function(){/** - * Create a new WebAuthn instance. - * - * @param routes {{registerOptions: string, register: string, loginOptions: string, login: string}} - * @param headers {{string}} - * @param includeCredentials {boolean} - * @param xcsrfToken {string|null} Either a csrf token (40 chars) or xsrfToken (224 chars) - */function WebAuthn(){var routes=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var _headers2=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var includeCredentials=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var xcsrfToken=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;_classCallCheck(this,WebAuthn);/** - * Parses the outgoing credentials from the browser to the server. - * - * @param credentials {Credential|PublicKeyCredential} - * @return {{response: {string}, rawId: string, id: string, type: string}} - */_classPrivateMethodInitSpec(this,_parseOutgoingCredentials);/** - * Parses the Public Key Options received from the Server for the browser. - * - * @param publicKey {Object} - * @returns {Object} - */_classPrivateMethodInitSpec(this,_parseIncomingServerOptions);/** - * Returns a fetch promise to resolve later. - * - * @param data {Object} - * @param route {string} - * @param headers {{string}} - * @returns {Promise} - */_classPrivateMethodInitSpec(this,_fetch);/** * Routes for WebAuthn assertion (login) and attestation (register). * * @type {{registerOptions: string, register: string, loginOptions: string, login: string, }} - */_classPrivateFieldInitSpec(this,_routes,{writable:true,value:{registerOptions:"webauthn/register/options",register:"webauthn/register",loginOptions:"webauthn/login/options",login:"webauthn/login"}});/** + */ /** * Headers to use in ALL requests done. * * @type {{Accept: string, "Content-Type": string, "X-Requested-With": string}} - */_classPrivateFieldInitSpec(this,_headers,{writable:true,value:{Accept:"application/json","Content-Type":"application/json","X-Requested-With":"XMLHttpRequest"}});/** + */ /** * If set to true, the credentials option will be set to 'include' on all fetch calls, * or else it will use the default 'same-origin'. Use this if the backend is not the * same origin as the client or the XSRF protection will break without the session. * * @type {boolean} - */_classPrivateFieldInitSpec(this,_includeCredentials,{writable:true,value:false});Object.assign(_classPrivateFieldGet(this,_routes),routes);Object.assign(_classPrivateFieldGet(this,_headers),_headers2);_classPrivateFieldSet(this,_includeCredentials,includeCredentials);var xsrfToken;var csrfToken;if(xcsrfToken===null){// If the developer didn't issue an XSRF token, we will find it ourselves. + */ /** + * Create a new WebAuthn instance. + * + * @param routes {{registerOptions: string, register: string, loginOptions: string, login: string}} + * @param headers {{string}} + * @param includeCredentials {boolean} + * @param xcsrfToken {string|null} Either a csrf token (40 chars) or xsrfToken (224 chars) + */function WebAuthn(){var routes=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var _headers2=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var includeCredentials=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var xcsrfToken=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;_classCallCheck(this,WebAuthn);_classPrivateMethodInitSpec(this,_parseOutgoingCredentials);_classPrivateMethodInitSpec(this,_parseIncomingServerOptions);_classPrivateMethodInitSpec(this,_fetch);_classPrivateFieldInitSpec(this,_routes,{writable:true,value:{registerOptions:"webauthn/register/options",register:"webauthn/register",loginOptions:"webauthn/login/options",login:"webauthn/login"}});_classPrivateFieldInitSpec(this,_headers,{writable:true,value:{Accept:"application/json","Content-Type":"application/json","X-Requested-With":"XMLHttpRequest"}});_classPrivateFieldInitSpec(this,_includeCredentials,{writable:true,value:false});Object.assign(_classPrivateFieldGet(this,_routes),routes);Object.assign(_classPrivateFieldGet(this,_headers),_headers2);_classPrivateFieldSet(this,_includeCredentials,includeCredentials);var xsrfToken;var csrfToken;if(xcsrfToken===null){// If the developer didn't issue an XSRF token, we will find it ourselves. xsrfToken=_classStaticPrivateFieldSpecGet(WebAuthn,WebAuthn,_XsrfToken);csrfToken=_classStaticPrivateFieldSpecGet(WebAuthn,WebAuthn,_firstInputWithCsrfToken);}else{// Check if it is a CSRF or XSRF token if(xcsrfToken.length===40){csrfToken=xcsrfToken;}else if(xcsrfToken.length===224){xsrfToken=xcsrfToken;}else{throw new TypeError("CSRF token or XSRF token provided does not match requirements. Must be 40 or 224 characters.");}}if(xsrfToken!==null){var _classPrivateFieldGet2,_XXSRFTOKEN,_classPrivateFieldGet3;(_classPrivateFieldGet3=(_classPrivateFieldGet2=_classPrivateFieldGet(this,_headers))[_XXSRFTOKEN="X-XSRF-TOKEN"])!==null&&_classPrivateFieldGet3!==void 0?_classPrivateFieldGet3:_classPrivateFieldGet2[_XXSRFTOKEN]=xsrfToken;}else if(csrfToken!==null){var _classPrivateFieldGet4,_XCSRFTOKEN,_classPrivateFieldGet5;(_classPrivateFieldGet5=(_classPrivateFieldGet4=_classPrivateFieldGet(this,_headers))[_XCSRFTOKEN="X-CSRF-TOKEN"])!==null&&_classPrivateFieldGet5!==void 0?_classPrivateFieldGet5:_classPrivateFieldGet4[_XCSRFTOKEN]=csrfToken;}else{// We didn't find it, and since is required, we will bail out. throw new TypeError('Ensure a CSRF/XSRF token is manually set, or provided in a cookie "XSRF-TOKEN" or or there is meta tag named "csrf-token".');}}/** @@ -5574,13 +5557,7 @@ throw new TypeError('Ensure a CSRF/XSRF token is manually set, or provided in a * @returns {boolean} */},{key:"doesntSupportWebAuthn",value:function doesntSupportWebAuthn(){return!this.supportsWebAuthn();}}]);return WebAuthn;}();function _get_firstInputWithCsrfToken(){// First, try finding an CSRF Token in the head. var token=Array.from(document.head.getElementsByTagName("meta")).find(function(element){return element.name==="csrf-token";});if(token){return token.content;}// Then, try to find a hidden input containing the CSRF token. -token=Array.from(document.getElementsByTagName("input")).find(function(input){return input.name==="_token"&&input.type==="hidden";});if(token){return token.value;}return null;}/** - * Returns the value of the XSRF token if it exists in a cookie. - * - * Inspired by https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie#example_2_get_a_sample_cookie_named_test2 - * - * @returns {?string} - */function _get_XsrfToken(){var cookie=document.cookie.split(";").find(function(row){return /^\s*(X-)?[XC]SRF-TOKEN\s*=/.test(row);});// We must remove all '%3D' from the end of the string. +token=Array.from(document.getElementsByTagName("input")).find(function(input){return input.name==="_token"&&input.type==="hidden";});if(token){return token.value;}return null;}function _get_XsrfToken(){var cookie=document.cookie.split(";").find(function(row){return /^\s*(X-)?[XC]SRF-TOKEN\s*=/.test(row);});// We must remove all '%3D' from the end of the string. // Background: // The actual binary value of the CSFR value is encoded in Base64. // If the length of original, binary value is not a multiple of 3 bytes, @@ -5592,31 +5569,7 @@ token=Array.from(document.getElementsByTagName("input")).find(function(input){re // When we send back the value to the server as part of an AJAX request, // Laravel expects an unpadded value. // Hence, we must remove the `%3D`. -return cookie?cookie.split("=")[1].trim().replaceAll("%3D",""):null;}function _fetch2(data,route){var headers=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var url=new URL(route,window.location.origin).href;return fetch(url,{method:"POST",credentials:_classPrivateFieldGet(this,_includeCredentials)?"include":"same-origin",redirect:"error",headers:_objectSpread(_objectSpread({},_classPrivateFieldGet(this,_headers)),headers),body:JSON.stringify(data)});}/** - * Decodes a BASE64 URL string into a normal string. - * - * @param input {string} - * @returns {string|Iterable} - */function _base64UrlDecode(input){input=input.replace(/-/g,"+").replace(/_/g,"/");var pad=input.length%4;if(pad){if(pad===1){throw new Error("InvalidLengthError: Input base64url string is the wrong length to determine padding");}input+=new Array(5-pad).join("=");}return atob(input);}/** - * Transform a string into Uint8Array instance. - * - * @param input {string} - * @param useAtob {boolean} - * @returns {Uint8Array} - */function _uint8Array(input){var useAtob=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;return Uint8Array.from(useAtob?atob(input):_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_base64UrlDecode).call(WebAuthn,input),function(c){return c.charCodeAt(0);});}/** - * Encodes an array of bytes to a BASE64 URL string - * - * @param arrayBuffer {ArrayBuffer|Uint8Array} - * @returns {string} - */function _arrayToBase64String(arrayBuffer){return btoa(String.fromCharCode.apply(String,_toConsumableArray(new Uint8Array(arrayBuffer))));}function _parseIncomingServerOptions2(publicKey){console.debug(publicKey);publicKey.challenge=_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_uint8Array).call(WebAuthn,publicKey.challenge);if("user"in publicKey){publicKey.user=_objectSpread(_objectSpread({},publicKey.user),{},{id:_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_uint8Array).call(WebAuthn,publicKey.user.id)});}["excludeCredentials","allowCredentials"].filter(function(key){return key in publicKey;}).forEach(function(key){publicKey[key]=publicKey[key].map(function(data){return _objectSpread(_objectSpread({},data),{},{id:_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_uint8Array).call(WebAuthn,data.id)});});});console.log(publicKey);return publicKey;}function _parseOutgoingCredentials2(credentials){var parseCredentials={id:credentials.id,type:credentials.type,rawId:_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_arrayToBase64String).call(WebAuthn,credentials.rawId),response:{}};["clientDataJSON","attestationObject","authenticatorData","signature","userHandle"].filter(function(key){return key in credentials.response;}).forEach(function(key){return parseCredentials.response[key]=_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_arrayToBase64String).call(WebAuthn,credentials.response[key]);});return parseCredentials;}/** - * Handles the response from the Server. - * - * Throws the entire response if is not OK (HTTP 2XX). - * - * @param response {Response} - * @returns Promise - * @throws Response - */function _handleResponse(response){if(!response.ok){throw response;}// Here we will do a small trick. Since most of the responses from the server +return cookie?cookie.split("=")[1].trim().replaceAll("%3D",""):null;}function _fetch2(data,route){var headers=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var url=new URL(route,window.location.origin).href;return fetch(url,{method:"POST",credentials:_classPrivateFieldGet(this,_includeCredentials)?"include":"same-origin",redirect:"error",headers:_objectSpread(_objectSpread({},_classPrivateFieldGet(this,_headers)),headers),body:JSON.stringify(data)});}function _base64UrlDecode(input){input=input.replace(/-/g,"+").replace(/_/g,"/");var pad=input.length%4;if(pad){if(pad===1){throw new Error("InvalidLengthError: Input base64url string is the wrong length to determine padding");}input+=new Array(5-pad).join("=");}return atob(input);}function _uint8Array(input){var useAtob=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;return Uint8Array.from(useAtob?atob(input):_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_base64UrlDecode).call(WebAuthn,input),function(c){return c.charCodeAt(0);});}function _arrayToBase64String(arrayBuffer){return btoa(String.fromCharCode.apply(String,_toConsumableArray(new Uint8Array(arrayBuffer))));}function _parseIncomingServerOptions2(publicKey){console.debug(publicKey);publicKey.challenge=_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_uint8Array).call(WebAuthn,publicKey.challenge);if("user"in publicKey){publicKey.user=_objectSpread(_objectSpread({},publicKey.user),{},{id:_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_uint8Array).call(WebAuthn,publicKey.user.id)});}["excludeCredentials","allowCredentials"].filter(function(key){return key in publicKey;}).forEach(function(key){publicKey[key]=publicKey[key].map(function(data){return _objectSpread(_objectSpread({},data),{},{id:_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_uint8Array).call(WebAuthn,data.id)});});});console.log(publicKey);return publicKey;}function _parseOutgoingCredentials2(credentials){var parseCredentials={id:credentials.id,type:credentials.type,rawId:_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_arrayToBase64String).call(WebAuthn,credentials.rawId),response:{}};["clientDataJSON","attestationObject","authenticatorData","signature","userHandle"].filter(function(key){return key in credentials.response;}).forEach(function(key){return parseCredentials.response[key]=_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_arrayToBase64String).call(WebAuthn,credentials.response[key]);});return parseCredentials;}function _handleResponse(response){if(!response.ok){throw response;}// Here we will do a small trick. Since most of the responses from the server // are JSON, we will automatically parse the JSON body from the response. If // it's not JSON, we will push the body verbatim and let the dev handle it. return new Promise(function(resolve){response.json().then(function(json){return resolve(json);})["catch"](function(){return resolve(response.body);});});}var _XsrfToken={get:_get_XsrfToken,set:void 0};var _firstInputWithCsrfToken={get:_get_firstInputWithCsrfToken,set:void 0}; \ No newline at end of file diff --git a/public/dist/landing.css b/public/dist/landing.css index 6eef016d8f6..64086f6cd7a 100644 --- a/public/dist/landing.css +++ b/public/dist/landing.css @@ -166,6 +166,7 @@ b { user-select: none; -webkit-transition: color 0.3s, opacity 0.3s ease-out, -webkit-transform 0.3s ease-out, -webkit-box-shadow 0.3s; transition: color 0.3s, opacity 0.3s ease-out, -webkit-transform 0.3s ease-out, -webkit-box-shadow 0.3s; + -o-transition: color 0.3s, opacity 0.3s ease-out, transform 0.3s ease-out, box-shadow 0.3s; transition: color 0.3s, opacity 0.3s ease-out, transform 0.3s ease-out, box-shadow 0.3s; transition: color 0.3s, opacity 0.3s ease-out, transform 0.3s ease-out, box-shadow 0.3s, -webkit-transform 0.3s ease-out, -webkit-box-shadow 0.3s; } @@ -3771,6 +3772,7 @@ a { padding: 5px 0 5px 0; -webkit-transition: color 0.3s, opacity 0.3s ease-out, margin-left 0.5s, -webkit-transform 0.3s ease-out, -webkit-box-shadow 0.3s; transition: color 0.3s, opacity 0.3s ease-out, margin-left 0.5s, -webkit-transform 0.3s ease-out, -webkit-box-shadow 0.3s; + -o-transition: color 0.3s, opacity 0.3s ease-out, transform 0.3s ease-out, box-shadow 0.3s, margin-left 0.5s; transition: color 0.3s, opacity 0.3s ease-out, transform 0.3s ease-out, box-shadow 0.3s, margin-left 0.5s; transition: color 0.3s, opacity 0.3s ease-out, transform 0.3s ease-out, box-shadow 0.3s, margin-left 0.5s, -webkit-transform 0.3s ease-out, -webkit-box-shadow 0.3s; } diff --git a/public/dist/landing.js b/public/dist/landing.js index be17a259f01..d38af676466 100644 --- a/public/dist/landing.js +++ b/public/dist/landing.js @@ -1,5 +1,5 @@ -/*! jQuery v3.7.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.0",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},R=function(){V()},M=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&z(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function X(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&M(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function U(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function z(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",R),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Me(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return R(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return R(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,S)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=E)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{if(d.cssSupportsSelector&&!CSS.supports("selector(:is("+c+"))"))throw new Error;return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===E&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[E]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,S=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.cssSupportsSelector=ce(function(){return CSS.supports("selector(*)")&&C.querySelectorAll(":is(:jqfake)")&&!CSS.supports("selector(:is(*,:jqfake))")}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=E,!C.getElementsByName||!C.getElementsByName(E).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&S){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&S){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&S)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+E+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+E+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),d.cssSupportsSelector||y.push(":has"),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType&&e.documentElement||e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&S&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:S,!0)),N.test(r[1])&&E.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=S.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)}).prototype=E.fn,D=E(S);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=S.createDocumentFragment().appendChild(S.createElement("div")),(fe=S.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?E.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),S.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;E.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||E.expando+"_"+Ct.guid++;return this[e]=!0,e}}),E.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||E.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?E(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=S.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=S.implementation.createHTMLDocument("")).createElement("base")).href=S.location.href,t.head.appendChild(r)):t=S),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&E(o).remove(),E.merge([],i.childNodes)));var r,i,o},E.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(E.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},E.expr.pseudos.animated=function(t){return E.grep(E.timers,function(e){return t===e.elem}).length},E.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=E.css(e,"position"),c=E(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=E.css(e,"top"),u=E.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),i.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-E.css(r,"marginTop",!0),left:t.left-i.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===E.css(e,"position"))e=e.offsetParent;return e||re})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;E.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(a,s){E.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){E.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?E.css(e,t,i):E.style(e,t,n,i)},s,n?e:void 0,n)}})}),E.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){E.fn[t]=function(e){return this.on(t,e)}}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0 Date: Thu, 14 Sep 2023 21:51:01 +0200 Subject: [PATCH 042/209] Minor changes & code refactoring (#2010) --- .github/workflows/php-cs-fixer.yml | 59 ------------ .../Pipes/Checks/IniSettingsCheck.php | 9 ++ app/Assets/ArrayToTextTable.php | 48 ---------- app/Assets/Helpers.php | 18 ++++ app/Enum/ColumnSortingAlbumType.php | 17 ++++ app/Enum/ColumnSortingPhotoType.php | 23 +++++ app/Enum/OrderSortingType.php | 14 +++ app/Enum/SizeVariantType.php | 18 ++++ app/Enum/SmartAlbumType.php | 2 +- app/Facades/Helpers.php | 1 + .../Administration/JobController.php | 2 +- .../Administration/UserController.php | 1 - app/Http/Controllers/IndexController.php | 2 + app/Models/Configs.php | 13 +-- app/Models/Extensions/SizeVariants.php | 43 ++++++++- app/Models/Extensions/Thumb.php | 8 +- app/Models/JobHistory.php | 2 - app/Models/User.php | 4 - app/Rules/CurrentPasswordRule.php | 33 +++++++ config/markdown.php | 96 +++++++++---------- .../{jobs/list.blade.php => jobs.blade.php} | 0 routes/api.php | 2 + webpack.mix.js | 16 ---- 23 files changed, 239 insertions(+), 192 deletions(-) delete mode 100644 .github/workflows/php-cs-fixer.yml create mode 100644 app/Rules/CurrentPasswordRule.php rename resources/views/{jobs/list.blade.php => jobs.blade.php} (100%) delete mode 100644 webpack.mix.js diff --git a/.github/workflows/php-cs-fixer.yml b/.github/workflows/php-cs-fixer.yml deleted file mode 100644 index f96ee5e723a..00000000000 --- a/.github/workflows/php-cs-fixer.yml +++ /dev/null @@ -1,59 +0,0 @@ -name: php-cs-fixer -on: - push: - branches-ignore: - - master - pull_request: - paths-ignore: - - '**.md' - - '**.js' - -env: - PR_NUMBER: "${{ github.event.number }}" - SOURCE_BRANCH: "$GITHUB_HEAD_REF" - FIXER_BRANCH: "auto-fixed/$GITHUB_HEAD_REF" - TITLE: "Apply fixes from PHP-CS-Fixer" - DESCRIPTION: "This merge request applies PHP code style fixes from an analysis carried out through GitHub Actions." -jobs: - php-cs-fixer: - if: github.event_name == 'pull_request' && ! startsWith(github.ref, 'refs/heads/auto-fixed/') - runs-on: ubuntu-latest - name: Run PHP CS Fixer - steps: - - name: Checkout Code - uses: actions/checkout@v3 - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: 8.1 - extensions: json, dom, curl, libxml, mbstring - coverage: none - - name: Install PHP-CS-Fixer - run: | - curl -L https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v3.22.0/php-cs-fixer.phar -o .github/build/php-cs-fixer - chmod a+x .github/build/php-cs-fixer - - name: Prepare Git User - run: | - git config --global user.name "github-actions[bot]" - git config --global user.email "action@github.com" - git checkout -B "${{ env.FIXER_BRANCH }}" - - name: Apply auto-fixers - run: php .github/build/php-cs-fixer fix --config=.php-cs-fixer.php - - name: Create Fixer PR - run: | - if [[ -z $(git status --porcelain) ]]; then - echo "Nothing to fix.. Exiting." - exit 0 - fi - OPEN_PRS=`curl --silent -H "Accept: application/vnd.github.v3+json" -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" "https://api.github.com/repos/$GITHUB_REPOSITORY/pulls?state=open"` - OPEN_FIXER_PRS=`echo ${OPEN_PRS} | grep -o "\"ref\": \"${{ env.FIXER_BRANCH }}\"" | wc -l` - git commit -am "${{ env.TITLE }}" - git push origin "${{ env.FIXER_BRANCH }}" --force - if [ ${OPEN_FIXER_PRS} -eq "0" ]; then - curl -X POST \ - -H "Accept: application/vnd.github.v3+json" \ - -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ - "https://api.github.com/repos/$GITHUB_REPOSITORY/pulls" \ - -d "{ \"head\":\"${{ env.FIXER_BRANCH }}\", \"base\":\"${{ env.SOURCE_BRANCH }}\", \"title\":\"${{ env.TITLE }}\", \"body\":\"${{ env.DESCRIPTION }}\n\nTriggered by #${{ env.PR_NUMBER }}\" }" - fi - exit 1 diff --git a/app/Actions/Diagnostics/Pipes/Checks/IniSettingsCheck.php b/app/Actions/Diagnostics/Pipes/Checks/IniSettingsCheck.php index cda251d2a09..efcfc473b4a 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/IniSettingsCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/IniSettingsCheck.php @@ -66,6 +66,15 @@ public function handle(array &$data, \Closure $next): array // @codeCoverageIgnoreEnd } + if (extension_loaded('xdebug')) { + // @codeCoverageIgnoreStart + $msg = config('app.debug') !== true + ? 'Errror: xdebug is enabled although Lychee is not in debug mode. Outside of debugging, xdebug may generate significant slowdown on your application.' + : 'Warning: xdebug is enabled. This may generate significant slowdown on your application.'; + $data[] = $msg; + // @codeCoverageIgnoreEnd + } + if (ini_get('assert.exception') !== '1') { // @codeCoverageIgnoreStart $data[] = 'Warning: assert.exception is set to false. Lychee assumes that failing assertions throw proper exceptions.'; diff --git a/app/Assets/ArrayToTextTable.php b/app/Assets/ArrayToTextTable.php index f2fce113814..1fd7947ab21 100644 --- a/app/Assets/ArrayToTextTable.php +++ b/app/Assets/ArrayToTextTable.php @@ -120,54 +120,6 @@ public function getTable(?array $rawData = null): string return $table; } - /** - * @return array - */ - public function getData(): array - { - return $this->data; - } - - public function getDecorator(): DecoratorInterface - { - return $this->decorator; - } - - public function getIndentation(): string - { - return $this->indentation; - } - - public function getDisplayKeys(): bool|string - { - return $this->displayKeys; - } - - public function getUpperKeys(): bool - { - return $this->upperKeys; - } - - public function getKeysAlignment(): int - { - return $this->keysAlignment; - } - - public function getValuesAlignment(): int - { - return $this->valuesAlignment; - } - - public function getFormatter(): ?\Closure - { - return $this->formatter; - } - - public function getIgnoredKeys(): array - { - return $this->ignoredKeys; - } - /** * @param array|null $data * diff --git a/app/Assets/Helpers.php b/app/Assets/Helpers.php index ef96076da12..1a8db018d64 100644 --- a/app/Assets/Helpers.php +++ b/app/Assets/Helpers.php @@ -256,4 +256,22 @@ public function isExecAvailable(): bool return function_exists('exec') && !in_array('exec', $disabledFunctions, true); } + + /** + * Given a duration convert it into hms. + * + * @param int|float $d length in seconds + * + * @return string equivalent time string formatted + */ + public function secondsToHMS(int|float $d): string + { + $h = (int) floor($d / 3600); + $m = (int) floor(($d % 3600) / 60); + $s = (int) floor($d % 60); + + return ($h > 0 ? $h . 'h' : '') + . ($m > 0 ? $m . 'm' : '') + . ($s > 0 || ($h === 0 && $m === 0) ? $s . 's' : ''); + } } diff --git a/app/Enum/ColumnSortingAlbumType.php b/app/Enum/ColumnSortingAlbumType.php index 8a313b88ebd..f863ae8ee71 100644 --- a/app/Enum/ColumnSortingAlbumType.php +++ b/app/Enum/ColumnSortingAlbumType.php @@ -26,4 +26,21 @@ public function toColumnSortingType(): ColumnSortingType { return ColumnSortingType::from($this->value); } + + /** + * Convert the enum into it's translated format. + * Note that it is missing owner. + * + * @return array + */ + public static function localized(): array + { + return [ + self::CREATED_AT->value => __('lychee.SORT_ALBUM_SELECT_1'), + self::TITLE->value => __('lychee.SORT_ALBUM_SELECT_2'), + self::DESCRIPTION->value => __('lychee.SORT_ALBUM_SELECT_3'), + self::MIN_TAKEN_AT->value => __('lychee.SORT_ALBUM_SELECT_5'), + self::MAX_TAKEN_AT->value => __('lychee.SORT_ALBUM_SELECT_6'), + ]; + } } diff --git a/app/Enum/ColumnSortingPhotoType.php b/app/Enum/ColumnSortingPhotoType.php index 471c5c2fe1b..8cb61401f93 100644 --- a/app/Enum/ColumnSortingPhotoType.php +++ b/app/Enum/ColumnSortingPhotoType.php @@ -2,6 +2,8 @@ namespace App\Enum; +use App\Enum\Traits\DecorateBackedEnum; + /** * Enum ColumnSortingPhotoType. * @@ -9,6 +11,8 @@ */ enum ColumnSortingPhotoType: string { + use DecorateBackedEnum; + case OWNER_ID = 'owner_id'; case CREATED_AT = 'created_at'; case TITLE = 'title'; @@ -28,4 +32,23 @@ public function toColumnSortingType(): ColumnSortingType { return ColumnSortingType::from($this->value); } + + /** + * Convert the enum into it's translated format. + * Note that it is missing owner. + * + * @return array + */ + public static function localized(): array + { + return [ + self::CREATED_AT->value => __('lychee.SORT_PHOTO_SELECT_1'), + self::TAKEN_AT->value => __('lychee.SORT_PHOTO_SELECT_2'), + self::TITLE->value => __('lychee.SORT_PHOTO_SELECT_3'), + self::DESCRIPTION->value => __('lychee.SORT_PHOTO_SELECT_4'), + self::IS_PUBLIC->value => __('lychee.SORT_PHOTO_SELECT_5'), + self::IS_STARRED->value => __('lychee.SORT_PHOTO_SELECT_6'), + self::TYPE->value => __('lychee.SORT_PHOTO_SELECT_7'), + ]; + } } diff --git a/app/Enum/OrderSortingType.php b/app/Enum/OrderSortingType.php index fdc5bd81f0f..4829924f398 100644 --- a/app/Enum/OrderSortingType.php +++ b/app/Enum/OrderSortingType.php @@ -9,5 +9,19 @@ enum OrderSortingType: string { case ASC = 'ASC'; case DESC = 'DESC'; + + /** + * Convert the enum into it's translated format. + * Note that it is missing owner. + * + * @return array + */ + public static function localized(): array + { + return [ + self::ASC->value => __('lychee.SORT_ASCENDING'), + self::DESC->value => __('lychee.SORT_DESCENDING'), + ]; + } } diff --git a/app/Enum/SizeVariantType.php b/app/Enum/SizeVariantType.php index 61b9db5f01c..bb02f2557a7 100644 --- a/app/Enum/SizeVariantType.php +++ b/app/Enum/SizeVariantType.php @@ -34,4 +34,22 @@ public function name(): string self::ORIGINAL => 'original', }; } + + /** + * Given a sizeVariantType return the localized name. + * + * @return string + */ + public function localized(): string + { + return match ($this) { + self::THUMB => __('lychee.PHOTO_THUMB'), + self::THUMB2X => __('lychee.PHOTO_THUMB_HIDPI'), + self::SMALL => __('lychee.PHOTO_SMALL'), + self::SMALL2X => __('lychee.PHOTO_SMALL_HIDPI'), + self::MEDIUM => __('lychee.PHOTO_MEDIUM'), + self::MEDIUM2X => __('lychee.PHOTO_MEDIUM_HIDPI'), + self::ORIGINAL => __('lychee.PHOTO_ORIGINAL'), + }; + } } \ No newline at end of file diff --git a/app/Enum/SmartAlbumType.php b/app/Enum/SmartAlbumType.php index 469061b6239..db68bad4799 100644 --- a/app/Enum/SmartAlbumType.php +++ b/app/Enum/SmartAlbumType.php @@ -12,8 +12,8 @@ enum SmartAlbumType: string use DecorateBackedEnum; case UNSORTED = 'unsorted'; + case PUBLIC = 'public'; case STARRED = 'starred'; case RECENT = 'recent'; - case PUBLIC = 'public'; case ON_THIS_DAY = 'on_this_day'; } \ No newline at end of file diff --git a/app/Facades/Helpers.php b/app/Facades/Helpers.php index e6523e63fd8..30c627c77d4 100644 --- a/app/Facades/Helpers.php +++ b/app/Facades/Helpers.php @@ -22,6 +22,7 @@ * @method static void data_index_set(int $idx = 0) * @method static array get_all_licenses() * @method static bool isExecAvailable() + * @method static string secondsToHMS(int|float $d) */ class Helpers extends Facade { diff --git a/app/Http/Controllers/Administration/JobController.php b/app/Http/Controllers/Administration/JobController.php index ac846f9eec4..e36bfe6bfe5 100644 --- a/app/Http/Controllers/Administration/JobController.php +++ b/app/Http/Controllers/Administration/JobController.php @@ -38,6 +38,6 @@ public function list(ShowJobsRequest $request, string $order = 'desc'): Collecti */ public function view(ShowJobsRequest $request): View { - return view('jobs.list', ['jobs' => $this->list($request)]); + return view('jobs', ['jobs' => $this->list($request)]); } } diff --git a/app/Http/Controllers/Administration/UserController.php b/app/Http/Controllers/Administration/UserController.php index 659819b3826..1f6c75df6c1 100644 --- a/app/Http/Controllers/Administration/UserController.php +++ b/app/Http/Controllers/Administration/UserController.php @@ -35,7 +35,6 @@ public function updateLogin(ChangeLoginRequest $request, UpdateLogin $updateLogi $request->oldPassword(), $request->ip() ); - // Update the session with the new credentials of the user. // Otherwise, the session is out-of-sync and falsely assumes the user // to be unauthenticated upon the next request. diff --git a/app/Http/Controllers/IndexController.php b/app/Http/Controllers/IndexController.php index a5b6d1f9f42..ab24f635a39 100644 --- a/app/Http/Controllers/IndexController.php +++ b/app/Http/Controllers/IndexController.php @@ -214,6 +214,8 @@ protected function frontend(?string $title = null, ?string $description = null, /** * Returns user.css url with cache busting if file has been updated. * + * @param string $fileName + * * @return string */ public static function getUserCustomFiles(string $fileName): string diff --git a/app/Models/Configs.php b/app/Models/Configs.php index bdfdd814550..7fc1e15d442 100644 --- a/app/Models/Configs.php +++ b/app/Models/Configs.php @@ -95,10 +95,11 @@ public function newEloquentBuilder($query): ConfigsBuilder * Sanity check. * * @param string|null $candidateValue + * @param string|null $message_template * * @return string */ - public function sanity(?string $candidateValue): string + public function sanity(?string $candidateValue, ?string $message_template = null): string { $message = ''; $val_range = [ @@ -106,7 +107,7 @@ public function sanity(?string $candidateValue): string self::TERNARY => explode('|', self::TERNARY), ]; - $message_template_got = 'Error: Wrong property for ' . $this->key . ', expected %s, got ' . ($candidateValue ?? 'NULL') . '.'; + $message_template ??= 'Error: Wrong property for ' . $this->key . ', expected %s, got ' . ($candidateValue ?? 'NULL') . '.'; switch ($this->type_range) { case self::STRING: case self::DISABLED: @@ -119,24 +120,24 @@ public function sanity(?string $candidateValue): string case self::INT: // we make sure that we only have digits in the chosen value. if (!ctype_digit(strval($candidateValue))) { - $message = sprintf($message_template_got, 'positive integer'); + $message = sprintf($message_template, 'positive integer'); } break; case self::BOOL: case self::TERNARY: if (!in_array($candidateValue, $val_range[$this->type_range], true)) { // BOOL or TERNARY - $message = sprintf($message_template_got, implode(' or ', $val_range[$this->type_range])); + $message = sprintf($message_template, implode(' or ', $val_range[$this->type_range])); } break; case self::LICENSE: if (!in_array($candidateValue, Helpers::get_all_licenses(), true)) { - $message = sprintf($message_template_got, 'a valid license'); + $message = sprintf($message_template, 'a valid license'); } break; default: $values = explode('|', $this->type_range); if (!in_array($candidateValue, $values, true)) { - $message = sprintf($message_template_got, implode(' or ', $values)); + $message = sprintf($message_template, implode(' or ', $values)); } break; } diff --git a/app/Models/Extensions/SizeVariants.php b/app/Models/Extensions/SizeVariants.php index 1c94833a822..07c111869d6 100644 --- a/app/Models/Extensions/SizeVariants.php +++ b/app/Models/Extensions/SizeVariants.php @@ -131,11 +131,41 @@ public function getOriginal(): ?SizeVariant return $this->original; } + /** + * Get Medium2x or fallback to Medium. + * + * @return SizeVariant|null + */ + public function getMedium2x(): ?SizeVariant + { + return $this->medium2x; + } + + /** + * get Medium or fallback to Original. + * + * @return SizeVariant|null + */ public function getMedium(): ?SizeVariant { return $this->medium; } + /** + * Get Small2x or fallback to Small. + * + * @return SizeVariant|null + */ + public function getSmall2x(): ?SizeVariant + { + return $this->small2x; + } + + public function getSmall(): ?SizeVariant + { + return $this->small; + } + public function getThumb2x(): ?SizeVariant { return $this->thumb2x; @@ -258,6 +288,17 @@ private static function replicateSizeVariant(SizeVariants $duplicate, ?SizeVaria */ public function hasMedium(): bool { - return $this->medium2x !== null || $this->medium !== null; + return $this->medium !== null || $this->medium2x !== null; + } + + /** + * We don't need to check if small2x or medium2x exists. + * small2x implies small, and same for medium2x, but the opposite is not true! + * + * @return bool + */ + public function hasMediumOrSmall(): bool + { + return $this->small !== null || $this->medium !== null; } } diff --git a/app/Models/Extensions/Thumb.php b/app/Models/Extensions/Thumb.php index 130fe55cdc2..408942873a0 100644 --- a/app/Models/Extensions/Thumb.php +++ b/app/Models/Extensions/Thumb.php @@ -15,10 +15,10 @@ class Thumb extends AbstractDTO { - protected string $id; - protected string $type; - protected string $thumbUrl; - protected ?string $thumb2xUrl; + public string $id; + public string $type; + public ?string $thumbUrl; + public ?string $thumb2xUrl; protected function __construct(string $id, string $type, string $thumbUrl, ?string $thumb2xUrl = null) { diff --git a/app/Models/JobHistory.php b/app/Models/JobHistory.php index e6103ddc55c..3846e18be81 100644 --- a/app/Models/JobHistory.php +++ b/app/Models/JobHistory.php @@ -9,8 +9,6 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; /** - * App\Models\JobHistory. - * * @property int $id * @property int $owner_id * @property User $owner diff --git a/app/Models/User.php b/app/Models/User.php index 30c62e84425..eb2691e43d4 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -37,15 +37,11 @@ * @property bool $may_administrate * @property bool $may_upload * @property bool $may_edit_own_settings - * @property string $name * @property string|null $token * @property string|null $remember_token * @property Collection $albums - * @property int|null $albums_count * @property DatabaseNotificationCollection|DatabaseNotification[] $notifications - * @property int|null $notifications_count * @property Collection $shared - * @property int|null $shared_count * @property Collection $photos * @property int|null $photos_count * @property Collection $webAuthnCredentials diff --git a/app/Rules/CurrentPasswordRule.php b/app/Rules/CurrentPasswordRule.php new file mode 100644 index 00000000000..717300e7c03 --- /dev/null +++ b/app/Rules/CurrentPasswordRule.php @@ -0,0 +1,33 @@ +password); + } + + /** + * {@inheritDoc} + */ + public function message(): string + { + return ':attribute is invalid.'; + } +} diff --git a/config/markdown.php b/config/markdown.php index 48257c88511..a2f2a5de05f 100644 --- a/config/markdown.php +++ b/config/markdown.php @@ -5,7 +5,7 @@ /* * This file is part of Laravel Markdown. * - * (c) Graham Campbell + * (c) Graham Campbell * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -37,11 +37,17 @@ | This option specifies what extensions will be automatically enabled. | Simply provide your extension class names here. | - | Default: [] + | Default: [ + | League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension::class, + | League\CommonMark\Extension\Table\TableExtension::class, + | ] | */ - 'extensions' => [], + 'extensions' => [ + League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension::class, + League\CommonMark\Extension\Table\TableExtension::class, + ], /* |-------------------------------------------------------------------------- @@ -66,55 +72,28 @@ /* |-------------------------------------------------------------------------- - | Enable Em Tag Parsing - |-------------------------------------------------------------------------- - | - | This option specifies if `` parsing is enabled. - | - | Default: true - | - */ - - 'enable_em' => true, - - /* - |-------------------------------------------------------------------------- - | Enable Strong Tag Parsing + | Commonmark Configuration |-------------------------------------------------------------------------- | - | This option specifies if `` parsing is enabled. - | - | Default: true - | - */ - - 'enable_strong' => true, - - /* - |-------------------------------------------------------------------------- - | Enable Asterisk Parsing - |-------------------------------------------------------------------------- - | - | This option specifies if `*` should be parsed for emphasis. - | - | Default: true + | This option specifies an array of options for commonmark. | - */ - - 'use_asterisk' => true, - - /* - |-------------------------------------------------------------------------- - | Enable Underscore Parsing - |-------------------------------------------------------------------------- - | - | This option specifies if `_` should be parsed for emphasis. - | - | Default: true + | Default: [ + | 'enable_em' => true, + | 'enable_strong' => true, + | 'use_asterisk' => true, + | 'use_underscore' => true, + | 'unordered_list_markers' => ['-', '+', '*'], + | ] | */ - 'use_underscore' => true, + 'commonmark' => [ + 'enable_em' => true, + 'enable_strong' => true, + 'use_asterisk' => true, + 'use_underscore' => true, + 'unordered_list_markers' => ['-', '+', '*'], + ], /* |-------------------------------------------------------------------------- @@ -149,10 +128,29 @@ | | This option specifies the maximum permitted block nesting level. | - | Default: INF + | Default: PHP_INT_MAX | */ - 'max_nesting_level' => INF, + 'max_nesting_level' => PHP_INT_MAX, + + /* + |-------------------------------------------------------------------------- + | Slug Normalizer + |-------------------------------------------------------------------------- + | + | This option specifies an array of options for slug normalization. + | + | Default: [ + | 'max_length' => 255, + | 'unique' => 'document', + | ] + | + */ + + 'slug_normalizer' => [ + 'max_length' => 255, + 'unique' => 'document', + ], -]; +]; \ No newline at end of file diff --git a/resources/views/jobs/list.blade.php b/resources/views/jobs.blade.php similarity index 100% rename from resources/views/jobs/list.blade.php rename to resources/views/jobs.blade.php diff --git a/routes/api.php b/routes/api.php index 433760831e8..fb3f92b5876 100644 --- a/routes/api.php +++ b/routes/api.php @@ -47,6 +47,7 @@ Route::post('/Album::setLicense', [AlbumController::class, 'setLicense']); Route::post('/Album::setSorting', [AlbumController::class, 'setSorting']); Route::get('/Album::getArchive', [AlbumController::class, 'getArchive']) + ->name('download') ->withoutMiddleware(['content_type:json', 'accept_content_type:json']) ->middleware(['local_storage', 'accept_content_type:any']); Route::post('/Album::setTrack', [AlbumController::class, 'setTrack']) @@ -87,6 +88,7 @@ ->withoutMiddleware(['content_type:json']) ->middleware(['content_type:multipart']); Route::get('/Photo::getArchive', [PhotoController::class, 'getArchive']) + ->name('photo_download') ->withoutMiddleware(['content_type:json', 'accept_content_type:json']) ->middleware(['local_storage', 'accept_content_type:any']); diff --git a/webpack.mix.js b/webpack.mix.js deleted file mode 100644 index 0dc2605a745..00000000000 --- a/webpack.mix.js +++ /dev/null @@ -1,16 +0,0 @@ -let mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel application. By default, we are compiling the Sass - | file for the application as well as bundling up all the JS files. - | - */ - -mix.js('resources/assets/js/app.js', 'public/js') - .sass('resources/assets/scss/app.scss', 'public/css') - .options({ processCssUrls: false }); From f852b94dbe3ac76c0820b3acc88c0865a53ab5f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sat, 16 Sep 2023 10:12:17 +0200 Subject: [PATCH 043/209] Better support for future policies. (#2012) --- app/Policies/AlbumPolicy.php | 238 ++++++++++++++++++-------------- app/Policies/PhotoPolicy.php | 140 ++++++++++++------- app/Policies/SettingsPolicy.php | 14 ++ phpstan.neon | 1 + 4 files changed, 245 insertions(+), 148 deletions(-) diff --git a/app/Policies/AlbumPolicy.php b/app/Policies/AlbumPolicy.php index 30f6b06b9b2..57881cb1c24 100644 --- a/app/Policies/AlbumPolicy.php +++ b/app/Policies/AlbumPolicy.php @@ -2,12 +2,13 @@ namespace App\Policies; +use App\Constants\AccessPermissionConstants as APC; use App\Contracts\Models\AbstractAlbum; use App\Enum\SmartAlbumType; use App\Exceptions\ConfigurationKeyMissingException; -use App\Exceptions\Internal\LycheeAssertionError; use App\Exceptions\Internal\QueryBuilderException; use App\Models\AccessPermission; +use App\Models\Album; use App\Models\BaseAlbumImpl; use App\Models\Configs; use App\Models\Extensions\BaseAlbum; @@ -19,6 +20,7 @@ class AlbumPolicy extends BasePolicy { public const UNLOCKED_ALBUMS_SESSION_KEY = 'unlocked_albums'; + public const IS_OWNER = 'isOwner'; public const CAN_SEE = 'canSee'; public const CAN_ACCESS = 'canAccess'; public const CAN_DOWNLOAD = 'canDownload'; @@ -26,6 +28,7 @@ class AlbumPolicy extends BasePolicy public const CAN_UPLOAD = 'canUpload'; public const CAN_EDIT = 'canEdit'; public const CAN_EDIT_ID = 'canEditById'; + public const CAN_DELETE_ID = 'canDeleteById'; public const CAN_SHARE_WITH_USERS = 'canShareWithUsers'; public const CAN_IMPORT_FROM_SERVER = 'canImportFromServer'; public const CAN_SHARE_ID = 'canShareById'; @@ -38,7 +41,7 @@ class AlbumPolicy extends BasePolicy * * @return bool */ - private function isOwner(?User $user, BaseAlbum $album): bool + public function isOwner(?User $user, BaseAlbum $album): bool { return $user !== null && $album->owner_id === $user->id; } @@ -86,8 +89,6 @@ public function canSee(?User $user, BaseSmartAlbum $smartAlbum): bool * @param AbstractAlbum|null $album * * @return bool - * - * @throws LycheeAssertionError */ public function canAccess(?User $user, ?AbstractAlbum $album): bool { @@ -95,35 +96,27 @@ public function canAccess(?User $user, ?AbstractAlbum $album): bool return true; } - if ($album instanceof BaseSmartAlbum) { + if (!$album instanceof BaseAlbum) { + /** @var BaseSmartAlbum $album */ return $this->canSee($user, $album); } - if ($album instanceof BaseAlbum) { - try { - if ($this->isOwner($user, $album)) { - return true; - } - - if ($album->current_user_permissions() !== null) { - return true; - } - - if ( - $album->public_permissions() !== null && - ($album->public_permissions()->password === null || - $this->isUnlocked($album)) - ) { - return true; - } - - return false; - } catch (\InvalidArgumentException $e) { - throw LycheeAssertionError::createFromUnexpectedException($e); - } + if ($this->isOwner($user, $album)) { + return true; + } + + if ($album->current_user_permissions() !== null) { + return true; + } + + if ( + $album->public_permissions() !== null && + ($album->public_permissions()->password === null || + $this->isUnlocked($album)) + ) { + return true; } - // Should never happen return false; } @@ -139,27 +132,20 @@ public function canAccess(?User $user, ?AbstractAlbum $album): bool */ public function canDownload(?User $user, ?AbstractAlbum $abstractAlbum): bool { - $default = Configs::getValueAsBool('grants_download'); - // The root album always uses the global setting - // TODO: Is this really required ?? if ($abstractAlbum === null) { - return $default; + return Configs::getValueAsBool('grants_download'); } // User is logged in // Or User can download. - if ($abstractAlbum instanceof BaseSmartAlbum) { + if (!$abstractAlbum instanceof BaseAlbum) { return $user !== null || $abstractAlbum->public_permissions()?->grants_download === true; } - if ($abstractAlbum instanceof BaseAlbum) { - return $this->isOwner($user, $abstractAlbum) || - $abstractAlbum->current_user_permissions()?->grants_download === true || - $abstractAlbum->public_permissions()?->grants_download === true; - } - - return false; + return $this->isOwner($user, $abstractAlbum) || + $abstractAlbum->current_user_permissions()?->grants_download === true || + $abstractAlbum->public_permissions()?->grants_download === true; } /** @@ -174,26 +160,14 @@ public function canDownload(?User $user, ?AbstractAlbum $abstractAlbum): bool */ public function canUpload(User $user, ?AbstractAlbum $abstractAlbum = null): bool { - if (!$user->may_upload) { - return false; - } - // The upload right on the root album is directly determined by the user's capabilities. - if ($abstractAlbum === null) { - return true; + if ($abstractAlbum === null || !$abstractAlbum instanceof BaseAlbum) { + return $user->may_upload; } - if ($abstractAlbum instanceof BaseSmartAlbum) { - return true; - } - - if ($abstractAlbum instanceof BaseAlbum) { - return $this->isOwner($user, $abstractAlbum) || - $abstractAlbum->current_user_permissions()?->grants_upload === true || - $abstractAlbum->public_permissions()?->grants_upload === true; - } - - return false; + return $this->isOwner($user, $abstractAlbum) || + $abstractAlbum->current_user_permissions()?->grants_upload === true || + $abstractAlbum->public_permissions()?->grants_upload === true; } /** @@ -222,17 +196,9 @@ public function canUpload(User $user, ?AbstractAlbum $abstractAlbum = null): boo */ public function canEdit(User $user, AbstractAlbum|null $album): bool { - if (!$user->may_upload) { - return false; - } - // The root album and smart albums get a pass - if ($album === null) { - return true; - } - - if ($album instanceof BaseSmartAlbum) { - return true; + if ($album === null || $album instanceof BaseSmartAlbum) { + return $user->may_upload; } if ($album instanceof BaseAlbum) { @@ -245,7 +211,7 @@ public function canEdit(User $user, AbstractAlbum|null $album): bool } /** - * Check if user is allowed to delete in current albumn. + * Check if user is allowed to USE delete in current albumn. * * @param User $user * @param AbstractAlbum|null $abstractAlbum @@ -256,15 +222,30 @@ public function canEdit(User $user, AbstractAlbum|null $album): bool */ public function canDelete(User $user, ?AbstractAlbum $abstractAlbum = null): bool { - if (!$user->may_upload) { - return false; + if ($abstractAlbum instanceof BaseSmartAlbum) { + return $user->may_upload; } - if (!$abstractAlbum instanceof BaseAlbum) { - return false; + if (!$abstractAlbum instanceof Album) { + return $user->may_upload; } - return $this->isOwner($user, $abstractAlbum); + if ($this->isOwner($user, $abstractAlbum)) { + return true; + } + + /** @var Album $abstractAlbum */ + if ( + AccessPermission::query() + ->where(APC::BASE_ALBUM_ID, '=', $abstractAlbum->parent_id) + ->where(APC::USER_ID, '=', $user->id) + ->where(APC::GRANTS_DELETE, '=', true) + ->count() === 1 + ) { + return true; + } + + return false; } /** @@ -289,36 +270,78 @@ public function canDelete(User $user, ?AbstractAlbum $abstractAlbum = null): boo */ public function canEditById(User $user, array $albumIDs): bool { - if (!$user->may_upload) { - return false; + $albumIDs = $this->uniquify($albumIDs); + $num_albums = count($albumIDs); + + if ($num_albums === 0) { + return $user->may_upload; } - // Remove root and smart albums, as they get a pass. - // Make IDs unique as otherwise count will fail. - $albumIDs = array_diff( - array_unique($albumIDs), - array_keys(SmartAlbumType::values()), - [null] - ); + if ( + BaseAlbumImpl::query() + ->whereIn('id', $albumIDs) + ->where('owner_id', '=', $user->id) + ->count() === $num_albums + ) { + return $user->may_upload; + } + + if ( + AccessPermission::query() + ->whereIn(APC::BASE_ALBUM_ID, $albumIDs) + ->where(APC::USER_ID, '=', $user->id) + ->where(APC::GRANTS_EDIT, '=', true) + ->count() === $num_albums + ) { + return true; + } + + return false; + } + /** + * Checks whether the designated albums are editable by the current user. + * + * See {@link AlbumQueryPolicy::isEditable()} for the definition + * when an album is editable. + * + * This method is mostly only useful during deletion of albums, when no + * album models are loaded for efficiency reasons. + * If an album model is required anyway (because it shall be edited), + * then first load the album once and use + * {@link AlbumQueryPolicy::isEditable()} + * instead in order to avoid several DB requests. + * + * @param User $user + * @param array $albumIDs + * + * @return bool + * + * @throws QueryBuilderException + */ + public function canDeleteById(User $user, array $albumIDs): bool + { + $albumIDs = $this->uniquify($albumIDs); $num_albums = count($albumIDs); if ($num_albums === 0) { - return true; + return $user->may_upload; } - if (BaseAlbumImpl::query() + if ( + BaseAlbumImpl::query() ->whereIn('id', $albumIDs) ->where('owner_id', '=', $user->id) ->count() === $num_albums ) { - return true; + return $user->may_upload; } - if (AccessPermission::query() - ->whereIn('base_album_id', $albumIDs) - ->where('user_id', '=', $user->id) - ->where('grants_edit', '=', true) + if ( + AccessPermission::query() + ->whereIn(APC::BASE_ALBUM_ID, $albumIDs) + ->where(APC::USER_ID, '=', $user->id) + ->where(APC::GRANTS_DELETE, '=', true) ->count() === $num_albums ) { return true; @@ -348,15 +371,16 @@ public function canShareWithUsers(?User $user, ?AbstractAlbum $abstractAlbum): b return true; } - if (SmartAlbumType::tryFrom($abstractAlbum->id) !== null) { + if (!$abstractAlbum instanceof BaseAlbum) { return false; } - return $abstractAlbum instanceof BaseAlbum && $this->isOwner($user, $abstractAlbum); + return $this->isOwner($user, $abstractAlbum); } /** * Check if user can share selected albums with other users. + * Only owner can share. * * @param User $user * @param array $albumIDs @@ -371,21 +395,15 @@ public function canShareById(User $user, array $albumIDs): bool return false; } - // Remove root and smart albums, as they get a pass. - // Make IDs unique as otherwise count will fail. - $albumIDs = array_diff( - array_unique($albumIDs), - array_keys(SmartAlbumType::values()), - [null] - ); - + $albumIDs = $this->uniquify($albumIDs); $num_albums = count($albumIDs); if ($num_albums === 0) { - return true; + return false; } - if (BaseAlbumImpl::query() + if ( + BaseAlbumImpl::query() ->whereIn('id', $albumIDs) ->where('owner_id', '=', $user->id) ->count() === $num_albums @@ -398,6 +416,7 @@ public function canShareById(User $user, array $albumIDs): bool /** * Check whether user can import from server. + * Only Admin can do that. * * @param User|null $user * @@ -439,4 +458,21 @@ public static function getUnlockedAlbumIDs(): array { return Session::get(self::UNLOCKED_ALBUMS_SESSION_KEY, []); } + + /** + * Remove root and smart albums, as they get a pass. + * Make IDs unique as otherwise count will fail. + * + * @param array $albumIDs + * + * @return array + */ + private function uniquify(array $albumIDs): array + { + return array_diff( + array_unique($albumIDs), + array_keys(SmartAlbumType::values()), + [null] + ); + } } diff --git a/app/Policies/PhotoPolicy.php b/app/Policies/PhotoPolicy.php index ff1f6833986..0143393c537 100644 --- a/app/Policies/PhotoPolicy.php +++ b/app/Policies/PhotoPolicy.php @@ -16,6 +16,7 @@ class PhotoPolicy extends BasePolicy public const CAN_SEE = 'canSee'; public const CAN_DOWNLOAD = 'canDownload'; + public const CAN_DELETE = 'canDelete'; public const CAN_EDIT = 'canEdit'; public const CAN_EDIT_ID = 'canEditById'; public const CAN_ACCESS_FULL_PHOTO = 'canAccessFullPhoto'; @@ -55,32 +56,21 @@ private function isOwner(?User $user, Photo $photo): bool */ public function canSee(?User $user, Photo $photo): bool { - return $this->isOwner($user, $photo) || - $photo->is_public || - ( - $photo->album !== null && - $this->albumPolicy->canAccess($user, $photo->album) - ); + if ($this->isOwner($user, $photo)) { + return true; + } + + // TODO: to be removed once migrated to v5. + if ($photo->is_public) { + return true; + } + + return $photo->album !== null && $this->albumPolicy->canAccess($user, $photo->album); } /** * Checks whether the photo may be downloaded by the current user. * - * Previously, this code was part of {@link Archive::extractFileInfo()}. - * In particular, the method threw to {@link UnauthorizedException} with - * custom error messages: - * - * - `'User is not allowed to download the image'`, if the user was not - * the owner, the user was allowed to see the photo (i.e. the album - * is shared with the user), but the album does not allow to download - * photos - * - `'Permission to download is disabled by configuration'`, if the - * user was not the owner, the photo was not part of any album (i.e. - * unsorted), the photo was public and downloading was disabled by - * configuration. - * - * TODO: Check if these custom error messages are still needed. If yes, consider not to return a boolean value but rename the method to `assert...` and throw exceptions with custom error messages. - * * @param User|null $user * @param Photo $photo * @@ -92,11 +82,7 @@ public function canDownload(?User $user, Photo $photo): bool return true; } - if (!$this->canSee($user, $photo)) { - return false; - } - - return $this->albumPolicy->canDownload($user, $photo->album); + return $this->canSee($user, $photo) && $this->albumPolicy->canDownload($user, $photo->album); } /** @@ -116,22 +102,16 @@ public function canDownload(?User $user, Photo $photo): bool */ public function canEdit(User $user, Photo $photo) { - return $this->isOwner($user, $photo); + if ($this->isOwner($user, $photo)) { + return true; + } + + return $this->canSee($user, $photo) && $this->albumPolicy->canEdit($user, $photo->album); } /** * Checks whether the designated photos are editable by the current user. * - * See {@link PhotoQueryPolicy::isEditable()} for the definition - * when a photo is editable. - * - * This method is mostly only useful during deletion of photos, when no - * photo models are loaded for efficiency reasons. - * If a photo model is required anyway (because it shall be edited), - * then first load the photo once and use - * {@link PhotoQueryPolicy::isEditable()} - * instead in order to avoid several DB requests. - * * @param User $user * @param string[] $photoIDs * @@ -141,19 +121,26 @@ public function canEdit(User $user, Photo $photo) */ public function canEditById(User $user, array $photoIDs): bool { - if (!$user->may_upload) { - return false; - } - // Make IDs unique as otherwise count will fail. $photoIDs = array_unique($photoIDs); - return - count($photoIDs) === 0 || + if ( + $user->may_upload && Photo::query() - ->whereIn('id', $photoIDs) - ->where('owner_id', $user->id) - ->count() === count($photoIDs); + ->whereIn('id', $photoIDs) + ->where('owner_id', $user->id) + ->count() === count($photoIDs) + ) { + return true; + } + + $parents_id = Photo::query() + ->select('album_id') + ->whereIn('id', $photoIDs) + ->groupBy('album_id') + ->pluck('album_id')->all(); + + return $this->albumPolicy->canEditById($user, $parents_id); } /** @@ -181,6 +168,65 @@ public function canAccessFullPhoto(?User $user, Photo $photo): bool } return $photo->album->public_permissions()?->grants_full_photo_access === true || - $photo->album->current_user_permissions()?->grants_full_photo_access === true; + $photo->album->current_user_permissions()?->grants_full_photo_access === true; + } + + /** + * Checks whether the photo is deletable le by the current user. + * + * @param Photo $photo + * + * @return bool + */ + public function canDelete(User $user, Photo $photo) + { + if ($this->isOwner($user, $photo)) { + return true; + } + + return $this->canSee($user, $photo) && $this->albumPolicy->canDelete($user, $photo->album); + } + + /** + * Checks whether the designated photos are deletable by the current user. + * + * @param User $user + * @param string[] $photoIDs + * + * @return bool + * + * @throws QueryBuilderException + */ + public function canDeleteById(User $user, array $photoIDs): bool + { + // Make IDs unique as otherwise count will fail. + $photoIDs = array_unique($photoIDs); + + if ( + $user->may_upload && + Photo::query() + ->whereIn('id', $photoIDs) + ->where('owner_id', $user->id) + ->count() === count($photoIDs) + ) { + return true; + } + + // If there are any photos which are not in albums at this point, we fail. + if (Photo::query() + ->whereNull('album_id') + ->whereIn('id', $photoIDs) + ->count() > 0 + ) { + return false; + } + + $parentIDs = Photo::query() + ->select('album_id') + ->whereIn('id', $photoIDs) + ->groupBy('album_id') + ->pluck('album_id')->all(); + + return $this->albumPolicy->canDeleteById($user, $parentIDs); } } diff --git a/app/Policies/SettingsPolicy.php b/app/Policies/SettingsPolicy.php index 457c4e9c383..38efd770109 100644 --- a/app/Policies/SettingsPolicy.php +++ b/app/Policies/SettingsPolicy.php @@ -15,6 +15,7 @@ class SettingsPolicy extends BasePolicy public const CAN_CLEAR_LOGS = 'canClearLogs'; public const CAN_SEE_DIAGNOSTICS = 'canSeeDiagnostics'; public const CAN_UPDATE = 'canUpdate'; + public const CAN_ACCESS_DEV_TOOLS = 'canAccessDevTools'; /** * This function returns false as it is bypassed by the before() @@ -79,4 +80,17 @@ public function canUpdate(User $user): bool { return $user->id === 0; // Edge case of migration not applied yet. } + + /** + * This function returns false as it is bypassed by the before() + * which directly checks for admin rights. + * + * @param User $user + * + * @return bool + */ + public function canAccessDevTools(User $user): bool + { + return false; + } } diff --git a/phpstan.neon b/phpstan.neon index 2966c786216..0460cb8ccd1 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -35,6 +35,7 @@ parameters: - '#Dynamic call to static method (Illuminate\\Database\\Query\\Builder|Illuminate\\Database\\Eloquent\\(Builder|Relations\\.*)|App\\Models\\Builders\\.*|App\\Eloquent\\FixedQueryBuilder)(<.*>)?::without\(\)#' - '#Dynamic call to static method (Illuminate\\Database\\Query\\Builder|Illuminate\\Database\\Eloquent\\(Builder|Relations\\.*)|App\\Models\\Builders\\.*|App\\Eloquent\\FixedQueryBuilder)(<.*>)?::count\(\).#' - '#Dynamic call to static method (Illuminate\\Database\\Query\\Builder|Illuminate\\Database\\Eloquent\\(Builder|Relations\\.*)|App\\Models\\Builders\\.*|App\\Eloquent\\FixedQueryBuilder)(<.*>)?::update\(\).#' + - '#Dynamic call to static method (Illuminate\\Database\\Query\\Builder|Illuminate\\Database\\Eloquent\\(Builder|Relations\\.*)|App\\Models\\Builders\\.*|App\\Eloquent\\FixedQueryBuilder)(<.*>)?::groupBy\(\).#' - '#Dynamic call to static method App\\Models\\Builders\\.*::orderByDesc\(\).#' - '#Call to an undefined method Illuminate\\Database\\Eloquent\\.*::update\(\)#' - '#Call to an undefined method Illuminate\\Database\\Eloquent\\.*::with(Only)?\(\)#' From 8eb6310cf6f69af14dd82fcaf08c25985bb8ae2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sat, 16 Sep 2023 10:31:52 +0200 Subject: [PATCH 044/209] replace layout and overlay to proper Enum types (#2015) * replace layout and overlay to proper Enum types * sync Lychee-front --- app/Enum/AlbumLayoutType.php | 15 +++ app/Enum/ImageOverlayType.php | 16 +++ .../Settings/AbstractSettingRequest.php | 4 +- .../SetImageOverlaySettingRequest.php | 12 +- .../Settings/SetLayoutSettingRequest.php | 7 +- app/Http/Resources/ConfigurationResource.php | 6 +- ...2023_09_16_070405_refactor_type_layout.php | 70 +++++++++++ public/Lychee-front | 2 +- public/dist/frontend.css | 2 +- public/dist/frontend.js | 111 +++++++++++++----- public/dist/landing.css | 2 - public/dist/landing.js | 4 +- tests/Feature/SettingsTest.php | 3 +- 13 files changed, 201 insertions(+), 53 deletions(-) create mode 100644 app/Enum/AlbumLayoutType.php create mode 100644 app/Enum/ImageOverlayType.php create mode 100644 database/migrations/2023_09_16_070405_refactor_type_layout.php diff --git a/app/Enum/AlbumLayoutType.php b/app/Enum/AlbumLayoutType.php new file mode 100644 index 00000000000..cfe890ee812 --- /dev/null +++ b/app/Enum/AlbumLayoutType.php @@ -0,0 +1,15 @@ +name; } - public function getSettingValue(): string|int|bool + public function getSettingValue(): string|int|bool|\BackedEnum { return $this->value; } diff --git a/app/Http/Requests/Settings/SetImageOverlaySettingRequest.php b/app/Http/Requests/Settings/SetImageOverlaySettingRequest.php index 4440f7d4a33..8a67270eece 100644 --- a/app/Http/Requests/Settings/SetImageOverlaySettingRequest.php +++ b/app/Http/Requests/Settings/SetImageOverlaySettingRequest.php @@ -2,7 +2,8 @@ namespace App\Http\Requests\Settings; -use Illuminate\Validation\Rule; +use App\Enum\ImageOverlayType; +use Illuminate\Validation\Rules\Enum; class SetImageOverlaySettingRequest extends AbstractSettingRequest { @@ -10,17 +11,14 @@ class SetImageOverlaySettingRequest extends AbstractSettingRequest public function rules(): array { - return [self::ATTRIBUTE => [ - 'required', - 'string', - Rule::in(['none', 'desc', 'date', 'exif']), - ], + return [ + self::ATTRIBUTE => ['required', new Enum(ImageOverlayType::class)], ]; } protected function processValidatedValues(array $values, array $files): void { $this->name = self::ATTRIBUTE; - $this->value = $values[self::ATTRIBUTE]; + $this->value = ImageOverlayType::from($values[self::ATTRIBUTE]); } } diff --git a/app/Http/Requests/Settings/SetLayoutSettingRequest.php b/app/Http/Requests/Settings/SetLayoutSettingRequest.php index 3ccfb7ab6dd..c75354b105a 100644 --- a/app/Http/Requests/Settings/SetLayoutSettingRequest.php +++ b/app/Http/Requests/Settings/SetLayoutSettingRequest.php @@ -2,7 +2,8 @@ namespace App\Http\Requests\Settings; -use Illuminate\Validation\Rule; +use App\Enum\AlbumLayoutType; +use Illuminate\Validation\Rules\Enum; class SetLayoutSettingRequest extends AbstractSettingRequest { @@ -11,13 +12,13 @@ class SetLayoutSettingRequest extends AbstractSettingRequest public function rules(): array { return [ - self::ATTRIBUTE => ['required', Rule::in([0, 1, 2])], + self::ATTRIBUTE => ['required', new Enum(AlbumLayoutType::class)], ]; } protected function processValidatedValues(array $values, array $files): void { $this->name = self::ATTRIBUTE; - $this->value = (int) $values[self::ATTRIBUTE]; + $this->value = AlbumLayoutType::from($values[self::ATTRIBUTE]); } } diff --git a/app/Http/Resources/ConfigurationResource.php b/app/Http/Resources/ConfigurationResource.php index 611ba009e82..2fdc76960e7 100644 --- a/app/Http/Resources/ConfigurationResource.php +++ b/app/Http/Resources/ConfigurationResource.php @@ -6,7 +6,9 @@ use App\DTO\PhotoSortingCriterion; use App\Enum\AlbumDecorationOrientation; use App\Enum\AlbumDecorationType; +use App\Enum\AlbumLayoutType; use App\Enum\DefaultAlbumProtectionType; +use App\Enum\ImageOverlayType; use App\Enum\ThumbAlbumSubtitleType; use App\Exceptions\Handler; use App\Metadata\Versions\InstalledVersion; @@ -131,10 +133,10 @@ public function toArray($request): array 'footer_show_social_media' => Configs::getValueAsBool('footer_show_social_media'), 'grants_download' => Configs::getValueAsBool('grants_download'), 'grants_full_photo_access' => Configs::getValueAsBool('grants_full_photo_access'), - 'image_overlay_type' => Configs::getValueAsString('image_overlay_type'), + 'image_overlay_type' => Configs::getValueAsEnum('image_overlay_type', ImageOverlayType::class), 'landing_page_enable' => Configs::getValueAsBool('landing_page_enable'), 'lang' => Configs::getValueAsString('lang'), - 'layout' => Configs::getValueAsString('layout'), + 'layout' => Configs::getValueAsEnum('layout', AlbumLayoutType::class), 'legacy_id_redirection' => Configs::getValueAsBool('legacy_id_redirection'), 'location_decoding' => Configs::getValueAsBool('location_decoding'), 'location_decoding_timeout' => Configs::getValueAsInt('location_decoding_timeout'), diff --git a/database/migrations/2023_09_16_070405_refactor_type_layout.php b/database/migrations/2023_09_16_070405_refactor_type_layout.php new file mode 100644 index 00000000000..a56bfc550c0 --- /dev/null +++ b/database/migrations/2023_09_16_070405_refactor_type_layout.php @@ -0,0 +1,70 @@ +select('value')->where('key', '=', 'layout')->first()->value; + DB::table('configs')->where('key', '=', 'layout')->delete(); + DB::table('configs')->insert([ + [ + 'key' => 'layout', + 'value' => $this->toEnum($layout), + 'confidentiality' => 0, + 'cat' => 'Gallery', + 'type_range' => self::SQUARE . '|' . self::JUSTIFIED . '|' . self::UNJUSTIFIED, + 'description' => 'Layout for pictures', + ], + ]); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + /** @var string $layout */ + $layout = DB::table('configs')->select('value')->where('key', '=', 'layout')->first()->value; + DB::table('configs')->where('key', '=', 'layout')->delete(); + DB::table('configs')->insert([ + [ + 'key' => 'layout', + 'value' => $this->fromEnum($layout), + 'confidentiality' => 0, + 'cat' => 'Gallery', + 'type_range' => '0|1|2', + 'description' => 'Layout for pictures', + ], + ]); + } + + private function toEnum(int $layout): string + { + return match ($layout) { + 0 => self::SQUARE, + 1 => self::JUSTIFIED, + 2 => self::UNJUSTIFIED, + default => self::JUSTIFIED, + }; + } + + private function fromEnum(string $layout): int + { + return match ($layout) { + self::SQUARE => 0, + self::JUSTIFIED => 1, + self::UNJUSTIFIED => 2, + default => 1, + }; + } +}; diff --git a/public/Lychee-front b/public/Lychee-front index 3398bbe13cf..603ba2a37e7 160000 --- a/public/Lychee-front +++ b/public/Lychee-front @@ -1 +1 @@ -Subproject commit 3398bbe13cfb1c1d6cce46a003d43ac23c4272fb +Subproject commit 603ba2a37e7e34e7fa13eec09eab16c5a807f732 diff --git a/public/dist/frontend.css b/public/dist/frontend.css index 1f5978703c7..0682b7086a2 100644 --- a/public/dist/frontend.css +++ b/public/dist/frontend.css @@ -1 +1 @@ -@charset "UTF-8";@-webkit-keyframes basicModal__fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes basicModal__fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes basicModal__fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes basicModal__fadeOut{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes basicModal__moveUpFade{0%{-webkit-transform:translateY(80px);transform:translateY(80px)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes basicModal__moveUpFade{0%{-webkit-transform:translateY(80px);transform:translateY(80px)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes basicModal__shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}20%,60%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes basicModal__shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}20%,60%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}.basicModalContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:fixed;width:100%;height:100%;top:0;left:0;background-color:rgba(0,0,0,.4);z-index:1000;-webkit-box-sizing:border-box;box-sizing:border-box}.basicModalContainer *,.basicModalContainer :after,.basicModalContainer :before{-webkit-box-sizing:border-box;box-sizing:border-box}.basicModalContainer--fadeIn{-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__fadeIn;animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__fadeIn}.basicModalContainer--fadeOut{-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__fadeOut;animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__fadeOut}.basicModalContainer--fadeIn .basicModal--fadeIn{-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__moveUpFade;animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__moveUpFade}.basicModalContainer--fadeIn .basicModal--shake{-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__shake;animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__shake}.basicModal{position:relative;width:500px;background-color:#fff;border-radius:5px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.2);box-shadow:0 1px 2px rgba(0,0,0,.2)}.basicModal__content{padding:7%;max-height:70vh;overflow:auto;-webkit-overflow-scrolling:touch}.basicModal__buttons{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;-webkit-box-shadow:0 -1px 0 rgba(0,0,0,.1);box-shadow:0 -1px 0 rgba(0,0,0,.1)}.basicModal__button{display:inline-block;width:100%;font-weight:700;text-align:center;-webkit-transition:background-color .2s;-o-transition:background-color .2s;transition:background-color .2s;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.basicModal__button:hover{background-color:rgba(0,0,0,.02)}.basicModal__button#basicModal__cancel{-ms-flex-negative:2;flex-shrink:2}.basicModal__button#basicModal__action{-ms-flex-negative:1;flex-shrink:1;-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.1);box-shadow:inset 1px 0 0 rgba(0,0,0,.1)}.basicModal__button#basicModal__action:first-child{-webkit-box-shadow:none;box-shadow:none}.basicModal__button:first-child{border-radius:0 0 0 5px}.basicModal__button:last-child{border-radius:0 0 5px}.basicModal__small{max-width:340px;text-align:center}.basicModal__small .basicModal__content{padding:10% 5%}.basicModal__xclose#basicModal__cancel{position:absolute;top:-8px;right:-8px;margin:0;padding:0;width:40px;height:40px;background-color:#fff;border-radius:100%;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.2);box-shadow:0 1px 2px rgba(0,0,0,.2)}.basicModal__xclose#basicModal__cancel:after{content:"";position:absolute;left:-3px;top:8px;width:35px;height:34px;background:#fff}.basicModal__xclose#basicModal__cancel svg{position:relative;width:20px;height:39px;fill:#888;z-index:1;-webkit-transition:fill .2s;-o-transition:fill .2s;transition:fill .2s}.basicModal__xclose#basicModal__cancel:after:hover svg,.basicModal__xclose#basicModal__cancel:hover svg{fill:#2875ed}.basicModal__xclose#basicModal__cancel:active svg,.basicModal__xclose#basicModal__cancel:after:active svg{fill:#1364e3}.basicContextContainer{position:fixed;width:100%;height:100%;top:0;left:0;z-index:1000;-webkit-tap-highlight-color:transparent}.basicContext{position:absolute;opacity:0;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.2) basicContext__popIn;animation:.3s cubic-bezier(.51,.92,.24,1.2) basicContext__popIn}.basicContext *{-webkit-box-sizing:border-box;box-sizing:border-box}.basicContext__item{cursor:pointer}.basicContext__item--separator{float:left;width:100%;cursor:default}.basicContext__data{min-width:140px;text-align:left}.basicContext__icon{display:inline-block}.basicContext--scrollable{height:100%;-webkit-overflow-scrolling:touch;overflow-x:hidden;overflow-y:auto}.basicContext--scrollable .basicContext__data{min-width:160px}@-webkit-keyframes basicContext__popIn{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes basicContext__popIn{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1;background-color:#1d1d1d;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;-webkit-font-smoothing:antialiased;-moz-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}table{border-collapse:collapse;border-spacing:0}em,i{font-style:italic}b,strong{font-weight:700}*{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:color .3s,opacity .3s ease-out,-webkit-transform .3s ease-out,-webkit-box-shadow .3s;transition:color .3s,opacity .3s ease-out,transform .3s ease-out,box-shadow .3s,-webkit-transform .3s ease-out,-webkit-box-shadow .3s;-o-transition:color .3s,opacity .3s ease-out,transform .3s ease-out,box-shadow .3s}body,html{width:100%;height:100%;position:relative;overflow:clip}body.mode-frame div#container,body.mode-none div#container{display:none}input,textarea{-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;user-select:text!important}.svgsprite{display:none}.iconic{width:100%;height:100%}#upload{display:none}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1);animation-timing-function:cubic-bezier(.51,.92,.24,1)}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1);animation-timing-function:cubic-bezier(.51,.92,.24,1)}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes moveBackground{0%{background-position-x:0}100%{background-position-x:-100px}}@keyframes moveBackground{0%{background-position-x:0}100%{background-position-x:-100px}}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes zoomOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}}@keyframes zoomOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}}@-webkit-keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}body.mode-frame #lychee_application_container,body.mode-none #lychee_application_container{display:none}.hflex-container,.hflex-item-rigid,.hflex-item-stretch,.vflex-container,.vflex-item-rigid,.vflex-item-stretch{position:relative;overflow:clip}.hflex-container,.vflex-container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:stretch;align-content:stretch;gap:0 0}.vflex-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.hflex-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.hflex-item-stretch,.vflex-item-stretch{-webkit-box-flex:1;-ms-flex:auto;flex:auto}.hflex-item-stretch{width:0;height:100%}.vflex-item-stretch{width:100%;height:0}.hflex-item-rigid,.vflex-item-rigid{-webkit-box-flex:0;-ms-flex:none;flex:none}.hflex-item-rigid{width:auto;height:100%}.vflex-item-rigid{width:100%;height:auto}.overlay-container{position:absolute;display:none;top:0;left:0;width:100%;height:100%;background-color:#000;-webkit-transition:background-color .3s;-o-transition:background-color .3s;transition:background-color .3s}.overlay-container.full{cursor:none}.overlay-container.active{display:unset}#lychee_view_content{height:auto;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-line-pack:start;align-content:flex-start;padding-bottom:16px;-webkit-overflow-scrolling:touch}#lychee_view_content.contentZoomIn .album,#lychee_view_content.contentZoomIn .photo{-webkit-animation-name:zoomIn;animation-name:zoomIn}#lychee_view_content.contentZoomIn .divider{-webkit-animation-name:fadeIn;animation-name:fadeIn}#lychee_view_content.contentZoomOut .album,#lychee_view_content.contentZoomOut .photo{-webkit-animation-name:zoomOut;animation-name:zoomOut}#lychee_view_content.contentZoomOut .divider{-webkit-animation-name:fadeOut;animation-name:fadeOut}.album,.photo{position:relative;width:202px;height:202px;margin:30px 0 0 30px;cursor:default;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1);animation-timing-function:cubic-bezier(.51,.92,.24,1)}.album .thumbimg,.photo .thumbimg{position:absolute;width:200px;height:200px;background:#222;color:#222;-webkit-box-shadow:0 2px 5px rgba(0,0,0,.5);box-shadow:0 2px 5px rgba(0,0,0,.5);border:1px solid rgba(255,255,255,.5);-webkit-transition:opacity .3s ease-out,border-color .3s ease-out,-webkit-transform .3s ease-out;transition:opacity .3s ease-out,transform .3s ease-out,border-color .3s ease-out,-webkit-transform .3s ease-out;-o-transition:opacity .3s ease-out,transform .3s ease-out,border-color .3s ease-out}.album .thumbimg>img,.photo .thumbimg>img{width:100%;height:100%}.album.active .thumbimg,.album:focus .thumbimg,.photo.active .thumbimg,.photo:focus .thumbimg{border-color:#2293ec}.album:active .thumbimg,.photo:active .thumbimg{-webkit-transition:none;-o-transition:none;transition:none;border-color:#0f6ab2}.album.selected img,.photo.selected img{outline:#2293ec solid 1px}.album .video::before,.photo .video::before{content:"";position:absolute;display:block;height:100%;width:100%;background:url(../img/play-icon.png) 46% 50% no-repeat;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;will-change:opacity,height}.album .video:focus::before,.photo .video:focus::before{opacity:.75}.album .livephoto::before,.photo .livephoto::before{content:"";position:absolute;display:block;height:100%;width:100%;background:url(../img/live-photo-icon.png) 2% 2% no-repeat;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;will-change:opacity,height}.album .livephoto:focus::before,.photo .livephoto:focus::before{opacity:.75}.album .thumbimg:first-child,.album .thumbimg:nth-child(2){-webkit-transform:rotate(0) translateY(0) translateX(0);-ms-transform:rotate(0) translateY(0) translateX(0);transform:rotate(0) translateY(0) translateX(0);opacity:0}.album:focus .thumbimg:nth-child(1),.album:focus .thumbimg:nth-child(2){opacity:1;will-change:transform}.album:focus .thumbimg:nth-child(1){-webkit-transform:rotate(-2deg) translateY(10px) translateX(-12px);-ms-transform:rotate(-2deg) translateY(10px) translateX(-12px);transform:rotate(-2deg) translateY(10px) translateX(-12px)}.album:focus .thumbimg:nth-child(2){-webkit-transform:rotate(5deg) translateY(-8px) translateX(12px);-ms-transform:rotate(5deg) translateY(-8px) translateX(12px);transform:rotate(5deg) translateY(-8px) translateX(12px)}.blurred span{overflow:hidden}.blurred img{-webkit-filter:blur(5px);filter:blur(5px)}.album .album_counters{position:absolute;right:8px;top:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:4px 4px;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right;font:bold 10px sans-serif;-webkit-filter:drop-shadow(0 0 4px rgba(0, 0, 0, .75));filter:drop-shadow(0 0 4px rgba(0, 0, 0, .75))}.album .album_counters .layers{position:relative;padding:6px 4px}.album .album_counters .layers .iconic{fill:#fff;width:12px;height:12px}.album .album_counters .folders,.album .album_counters .photos{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:distribute;justify-content:space-around;text-align:end}.album .album_counters .folders .iconic,.album .album_counters .photos .iconic{fill:#fff;width:15px;height:15px}.album .album_counters .folders span,.album .album_counters .photos span{position:absolute;bottom:0;color:#222;padding-right:1px;padding-left:1px}.album .album_counters .folders span{right:0;line-height:.9}.album .album_counters .photos span{right:4px;min-width:10px;background-color:#fff;padding-top:1px;line-height:1}.album .overlay,.photo .overlay{position:absolute;margin:0 1px;width:200px;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(rgba(0,0,0,.6)));background:-o-linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,.6));background:linear-gradient(to bottom,rgba(0,0,0,0),rgba(0,0,0,.6));bottom:1px}.album .thumbimg[data-overlay=false]+.overlay{background:0 0}.photo .overlay{opacity:0}.photo.active .overlay,.photo:focus .overlay{opacity:1}.album .overlay h1,.photo .overlay h1{min-height:19px;width:180px;margin:12px 0 5px 15px;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.4);font-size:16px;font-weight:700;overflow:hidden;white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis}.album .overlay a,.photo .overlay a{display:block;margin:0 0 12px 15px;font-size:11px;color:#ccc;text-shadow:0 1px 3px rgba(0,0,0,.4)}.album .overlay a .iconic,.photo .overlay a .iconic{fill:#ccc;margin:0 5px 0 0;width:8px;height:8px}.album .thumbimg[data-overlay=false]+.overlay a,.album .thumbimg[data-overlay=false]+.overlay h1{text-shadow:none}.album .badges,.photo .badges{position:absolute;margin:-1px 0 0 6px}.album .subalbum_badge{position:absolute;right:0;top:0}.album .badge,.photo .badge{display:none;margin:0 0 0 6px;padding:12px 8px 6px;width:18px;background:#d92c34;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);border-radius:0 0 5px 5px;border:1px solid #fff;border-top:none;color:#fff;text-align:center;text-shadow:0 1px 0 rgba(0,0,0,.4);opacity:.9}.album .badge--visible,.photo .badge--visible{display:inline-block}.album .badge--not--hidden,.photo .badge--not--hidden{background:#0a0}.album .badge--hidden,.photo .badge--hidden{background:#f90}.album .badge--cover,.photo .badge--cover{display:inline-block;background:#f90}.album .badge--star,.photo .badge--star{display:inline-block;background:#fc0}.album .badge--nsfw,.photo .badge--nsfw{display:inline-block;background:#ff82ee}.album .badge--list,.photo .badge--list{background:#2293ec}.album .badge--tag,.photo .badge--tag{display:inline-block;background:#0a0}.album .badge .iconic,.photo .badge .iconic{fill:#fff;width:16px;height:16px}.divider{margin:50px 0 0;padding:10px 0 0;width:100%;opacity:0;border-top:1px solid rgba(255,255,255,.02);-webkit-box-shadow:0 -1px 0 rgba(0,0,0,.2);box-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1);animation-timing-function:cubic-bezier(.51,.92,.24,1)}.divider:first-child{margin-top:10px;border-top:0;-webkit-box-shadow:none;box-shadow:none}.divider h1{margin:0 0 0 30px;color:rgba(255,255,255,.6);font-size:14px;font-weight:700}@media only screen and (min-width:320px) and (max-width:567px){.album,.photo{--size:calc((100vw - 3px) / 3);width:calc(var(--size) - 3px);height:calc(var(--size) - 3px);margin:3px 0 0 3px}.album .thumbimg,.photo .thumbimg{width:calc(var(--size) - 5px);height:calc(var(--size) - 5px)}.album .overlay,.photo .overlay{width:calc(var(--size) - 5px)}.album .overlay h1,.photo .overlay h1{min-height:14px;width:calc(var(--size) - 19px);margin:8px 0 2px 6px;font-size:12px}.album .overlay a,.photo .overlay a{display:none}.album .badge,.photo .badge{padding:4px 3px 3px;width:12px}.album .badge .iconic,.photo .badge .iconic{width:12px;height:12px}.album .album_counters{-webkit-filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));font:bold 7px sans-serif;gap:2px 2px;right:3px;top:3px}.album .album_counters .layers{position:relative;padding:3px 2px}.album .album_counters .layers .iconic{fill:#fff;width:8px;height:8px}.album .album_counters .folders .iconic,.album .album_counters .photos .iconic{width:11px;height:11px}.album .album_counters .photos span{right:3px;min-width:5px;line-height:.9;padding-top:2px}.divider{margin:20px 0 0}.divider:first-child{margin-top:0}.divider h1{margin:0 0 6px 8px;font-size:12px}}@media only screen and (min-width:568px) and (max-width:639px){.album,.photo{--size:calc((100vw - 3px) / 4);width:calc(var(--size) - 3px);height:calc(var(--size) - 3px);margin:3px 0 0 3px}.album .thumbimg,.photo .thumbimg{width:calc(var(--size) - 5px);height:calc(var(--size) - 5px)}.album .overlay,.photo .overlay{width:calc(var(--size) - 5px)}.album .overlay h1,.photo .overlay h1{min-height:14px;width:calc(var(--size) - 19px);margin:8px 0 2px 6px;font-size:12px}.album .overlay a,.photo .overlay a{display:none}.album .badge,.photo .badge{padding:4px 3px 3px;width:14px}.album .badge .iconic,.photo .badge .iconic{width:14px;height:14px}.album .album_counters{-webkit-filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));font:bold 8px sans-serif;gap:3px 3px;right:4px;top:4px}.album .album_counters .layers{position:relative;padding:3px 2px}.album .album_counters .layers .iconic{fill:#fff;width:9px;height:9px}.album .album_counters .folders .iconic,.album .album_counters .photos .iconic{width:13px;height:13px}.album .album_counters .photos span{right:3px;min-width:8px;padding-top:2px}.divider{margin:24px 0 0}.divider:first-child{margin-top:0}.divider h1{margin:0 0 6px 10px}}@media only screen and (min-width:640px) and (max-width:768px){.album,.photo{--size:calc((100vw - 5px) / 5);width:calc(var(--size) - 5px);height:calc(var(--size) - 5px);margin:5px 0 0 5px}.album .thumbimg,.photo .thumbimg{width:calc(var(--size) - 7px);height:calc(var(--size) - 7px)}.album .overlay,.photo .overlay{width:calc(var(--size) - 7px)}.album .overlay h1,.photo .overlay h1{min-height:14px;width:calc(var(--size) - 21px);margin:10px 0 3px 8px;font-size:12px}.album .overlay a,.photo .overlay a{display:none}.album .badge,.photo .badge{padding:6px 4px 4px;width:16px}.album .badge .iconic,.photo .badge .iconic{width:16px;height:16px}.album .album_counters{-webkit-filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));font:bold 9px sans-serif;gap:4px 4px;right:6px;top:6px}.album .album_counters .layers{position:relative;padding:3px 2px}.album .album_counters .layers .iconic{fill:#fff;width:11px;height:11px}.album .album_counters .folders .iconic,.album .album_counters .photos .iconic{width:15px;height:15px}.album .album_counters .folders span{line-height:1}.album .album_counters .photos span{right:3px;min-width:10px;padding-top:2px}.divider{margin:28px 0 0}.divider:first-child{margin-top:0}.divider h1{margin:0 0 6px 10px}}.no_content{position:absolute;top:50%;left:50%;padding-top:20px;color:rgba(255,255,255,.35);text-align:center;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.no_content .iconic{fill:rgba(255,255,255,.3);margin:0 0 10px;width:50px;height:50px}.no_content p{font-size:16px;font-weight:700}body.mode-gallery #lychee_frame_container,body.mode-none #lychee_frame_container,body.mode-view #lychee_frame_container{display:none}#lychee_frame_bg_canvas{width:100%;height:100%;position:absolute}#lychee_frame_bg_image{position:absolute;display:none}#lychee_frame_noise_layer{position:absolute;top:0;left:0;width:100%;height:100%;background-image:url(../img/noise.png);background-repeat:repeat;background-position:44px 44px}#lychee_frame_image_container{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-line-pack:center;align-content:center}#lychee_frame_image_container img{height:95%;width:95%;-o-object-fit:contain;object-fit:contain;-webkit-filter:drop-shadow(0 0 1px rgba(0, 0, 0, .3)) drop-shadow(0 0 10px rgba(0, 0, 0, .3));filter:drop-shadow(0 0 1px rgba(0, 0, 0, .3)) drop-shadow(0 0 10px rgba(0, 0, 0, .3))}#lychee_frame_shutter{position:absolute;width:100%;height:100%;top:0;left:0;padding:0;margin:0;background-color:#1d1d1d;opacity:1;-webkit-transition:opacity 1s ease-in-out;-o-transition:opacity 1s ease-in-out;transition:opacity 1s ease-in-out}#lychee_frame_shutter.opened{opacity:0}#lychee_left_menu_container{width:0;background-color:#111;padding-top:16px;-webkit-transition:width .5s;-o-transition:width .5s;transition:width .5s;height:100%;z-index:998}#lychee_left_menu,#lychee_left_menu_container.visible{width:250px}#lychee_left_menu a{padding:8px 8px 8px 32px;text-decoration:none;font-size:18px;color:#818181;display:block;cursor:pointer}#lychee_left_menu a.linkMenu{white-space:nowrap}#lychee_left_menu .iconic{display:inline-block;margin:0 10px 0 1px;width:15px;height:14px;fill:#818181}#lychee_left_menu .iconic.ionicons{margin:0 8px -2px 0;width:18px;height:18px}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){#lychee_left_menu,#lychee_left_menu_container{position:absolute;left:0}#lychee_left_menu_container.visible{width:100%}}@media (hover:hover){.album:hover .thumbimg,.photo:hover .thumbimg{border-color:#2293ec}.album .livephoto:hover::before,.album .video:hover::before,.photo .livephoto:hover::before,.photo .video:hover::before{opacity:.75}.album:hover .thumbimg:nth-child(1),.album:hover .thumbimg:nth-child(2),.album__dragover .thumbimg:nth-child(1),.album__dragover .thumbimg:nth-child(2){opacity:1;will-change:transform}.album:hover .thumbimg:nth-child(1),.album__dragover .thumbimg:nth-child(1){-webkit-transform:rotate(-2deg) translateY(10px) translateX(-12px);-ms-transform:rotate(-2deg) translateY(10px) translateX(-12px);transform:rotate(-2deg) translateY(10px) translateX(-12px)}.album:hover .thumbimg:nth-child(2),.album__dragover .thumbimg:nth-child(2){-webkit-transform:rotate(5deg) translateY(-8px) translateX(12px);-ms-transform:rotate(5deg) translateY(-8px) translateX(12px);transform:rotate(5deg) translateY(-8px) translateX(12px)}.photo:hover .overlay{opacity:1}#lychee_left_menu a:hover{color:#f1f1f1}}.basicContext{padding:5px 0 6px;background:-webkit-gradient(linear,left top,left bottom,from(#333),to(#252525));background:-o-linear-gradient(top,#333,#252525);background:linear-gradient(to bottom,#333,#252525);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 4px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.05);border-radius:5px;border:1px solid rgba(0,0,0,.7);border-bottom:1px solid rgba(0,0,0,.8);-webkit-transition:none;-o-transition:none;transition:none;max-width:240px}.basicContext__item{margin-bottom:2px;font-size:14px;color:#ccc}.basicContext__item--separator{margin:4px 0;height:2px;background:rgba(0,0,0,.2);border-bottom:1px solid rgba(255,255,255,.06)}.basicContext__item--disabled{cursor:default;opacity:.5}.basicContext__item:last-child{margin-bottom:0}.basicContext__data{min-width:auto;padding:6px 25px 7px 12px;white-space:normal;overflow-wrap:normal;-webkit-transition:none;-o-transition:none;transition:none;cursor:default}@media (hover:none) and (pointer:coarse){.basicContext__data{padding:12px 25px 12px 12px}}.basicContext__item:not(.basicContext__item--disabled):active .basicContext__data{background:-webkit-gradient(linear,left top,left bottom,from(#1178ca),to(#0f6ab2));background:-o-linear-gradient(top,#1178ca,#0f6ab2);background:linear-gradient(to bottom,#1178ca,#0f6ab2)}.basicContext__icon{margin-right:10px;width:12px;text-align:center}@media (hover:hover){.basicContext__item:not(.basicContext__item--disabled):hover .basicContext__data{background:-webkit-gradient(linear,left top,left bottom,from(#2293ec),to(#1386e1));background:-o-linear-gradient(top,#2293ec,#1386e1);background:linear-gradient(to bottom,#2293ec,#1386e1)}.basicContext__item:hover{color:#fff;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}.basicContext__item:hover .iconic{fill:#fff}.basicContext__item--noHover:hover .basicContext__data{background:0 0!important}}#addMenu{top:48px!important;left:unset!important;right:4px}.basicContext__data{padding-left:40px}.basicContext__data .cover{position:absolute;background-color:#222;border-radius:2px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.5);box-shadow:0 0 0 1px rgba(0,0,0,.5)}.basicContext__data .title{display:inline-block;margin:0 0 3px 26px}.basicContext__data .iconic{display:inline-block;margin:0 10px 0 -22px;width:11px;height:10px;fill:#fff}.basicContext__data .iconic.active{fill:#f90}.basicContext__data .iconic.ionicons{margin:0 8px -2px 0;width:14px;height:14px}.basicContext__data input#link{margin:-2px 0;padding:5px 7px 6px;width:100%;background:#333;color:#fff;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05);border:1px solid rgba(0,0,0,.4);border-radius:3px;outline:0}.basicContext__item--noHover .basicContext__data{padding-right:12px}div.basicModalContainer{background-color:rgba(0,0,0,.85);z-index:999}div.basicModalContainer--error{-webkit-transform:translateY(40px);-ms-transform:translateY(40px);transform:translateY(40px)}div.basicModal{background:-webkit-gradient(linear,left top,left bottom,from(#444),to(#333));background:-o-linear-gradient(top,#444,#333);background:linear-gradient(to bottom,#444,#333);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 4px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.05);font-size:14px;line-height:17px}div.basicModal--error{-webkit-transform:translateY(-40px);-ms-transform:translateY(-40px);transform:translateY(-40px)}div.basicModal__buttons{-webkit-box-shadow:none;box-shadow:none}.basicModal__button{padding:13px 0 15px;background:0 0;color:#999;border-top:1px solid rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02);box-shadow:inset 0 1px 0 rgba(255,255,255,.02);cursor:default}.basicModal__button--busy,.basicModal__button:active{-webkit-transition:none;-o-transition:none;transition:none;background:rgba(0,0,0,.1);cursor:wait}.basicModal__button#basicModal__action{color:#2293ec;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2)}.basicModal__button#basicModal__action.red,.basicModal__button#basicModal__cancel.red{color:#d92c34}.basicModal__button.hidden{display:none}div.basicModal__content{padding:36px;color:#ececec;text-align:left}div.basicModal__content>*{display:block;width:100%;margin:24px 0;padding:0}div.basicModal__content>.force-first-child,div.basicModal__content>:first-child{margin-top:0}div.basicModal__content>.force-last-child,div.basicModal__content>:last-child{margin-bottom:0}div.basicModal__content .disabled{color:#999}div.basicModal__content b{font-weight:700;color:#fff}div.basicModal__content a{color:inherit;text-decoration:none;border-bottom:1px dashed #ececec}div.basicModal__content a.button{display:inline-block;margin:0 6px;padding:3px 12px;color:#2293ec;text-align:center;border-radius:5px;border:none;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2)}div.basicModal__content a.button .iconic{fill:#2293ec}div.basicModal__content>hr{border:none;border-top:1px solid rgba(0,0,0,.3)}#lychee_toolbar_container{-webkit-transition:height .3s ease-out;-o-transition:height .3s ease-out;transition:height .3s ease-out}#lychee_toolbar_container.hidden{height:0}#lychee_toolbar_container,.toolbar{height:49px}.toolbar{background:-webkit-gradient(linear,left top,left bottom,from(#222),to(#1a1a1a));background:-o-linear-gradient(top,#222,#1a1a1a);background:linear-gradient(to bottom,#222,#1a1a1a);border-bottom:1px solid #0f0f0f;display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.toolbar.visible{display:-webkit-box;display:-ms-flexbox;display:flex}#lychee_toolbar_config .toolbar .button .iconic{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}#lychee_toolbar_config .toolbar .header__title{padding-right:80px}.toolbar .header__title{width:100%;padding:16px 0;color:#fff;font-size:16px;font-weight:700;text-align:center;cursor:default;overflow:hidden;white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis;-webkit-transition:margin-left .5s;-o-transition:margin-left .5s;transition:margin-left .5s}.toolbar .header__title .iconic{display:none;margin:0 0 0 5px;width:10px;height:10px;fill:rgba(255,255,255,.5);-webkit-transition:fill .2s ease-out;-o-transition:fill .2s ease-out;transition:fill .2s ease-out}.toolbar .header__title:active .iconic{-webkit-transition:none;-o-transition:none;transition:none;fill:rgba(255,255,255,.8)}.toolbar .header__title--editable .iconic{display:inline-block}.toolbar .button{-ms-flex-negative:0;flex-shrink:0;padding:16px 8px;height:15px}.toolbar .button .iconic{width:15px;height:15px;fill:rgba(255,255,255,.5);-webkit-transition:fill .2s ease-out;-o-transition:fill .2s ease-out;transition:fill .2s ease-out}.toolbar .button:active .iconic{-webkit-transition:none;-o-transition:none;transition:none;fill:rgba(255,255,255,.8)}.toolbar .button--star.active .iconic{fill:#f0ef77}.toolbar .button--eye.active .iconic{fill:#d92c34}.toolbar .button--eye.active--not-hidden .iconic{fill:#0a0}.toolbar .button--eye.active--hidden .iconic{fill:#f90}.toolbar .button--share .iconic.ionicons{margin:-2px 0;width:18px;height:18px}.toolbar .button--nsfw.active .iconic{fill:#ff82ee}.toolbar .button--info.active .iconic{fill:#2293ec}.toolbar #button_back,.toolbar #button_back_home,.toolbar #button_close_config,.toolbar #button_settings,.toolbar #button_signin{padding:16px 12px 16px 18px}.toolbar .button_add{padding:16px 18px 16px 12px}.toolbar .header__divider{-ms-flex-negative:0;flex-shrink:0;width:14px}.toolbar .header__search__field{position:relative}.toolbar input[type=text].header__search{-ms-flex-negative:0;flex-shrink:0;width:80px;margin:0;padding:5px 12px 6px;background-color:#1d1d1d;color:#fff;border:1px solid rgba(0,0,0,.9);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.04);box-shadow:0 1px 0 rgba(255,255,255,.04);outline:0;border-radius:50px;opacity:.6;-webkit-transition:opacity .3s ease-out,width .2s ease-out,-webkit-box-shadow .3s ease-out;transition:opacity .3s ease-out,box-shadow .3s ease-out,width .2s ease-out,-webkit-box-shadow .3s ease-out;-o-transition:opacity .3s ease-out,box-shadow .3s ease-out,width .2s ease-out}.toolbar input[type=text].header__search:focus{width:140px;border-color:#2293ec;-webkit-box-shadow:0 1px 0 rgba(255,255,255,0);box-shadow:0 1px 0 rgba(255,255,255,0);opacity:1}.toolbar input[type=text].header__search:focus~.header__clear{opacity:1}.toolbar input[type=text].header__search::-ms-clear{display:none}.toolbar .header__clear{position:absolute;top:50%;-ms-transform:translateY(-50%);-webkit-transform:translateY(-50%);transform:translateY(-50%);right:8px;padding:0;color:rgba(255,255,255,.5);font-size:24px;opacity:0;-webkit-transition:color .2s ease-out;-o-transition:color .2s ease-out;transition:color .2s ease-out;cursor:default}.toolbar .header__clear_nomap{right:60px}.toolbar .header__hostedwith{-ms-flex-negative:0;flex-shrink:0;padding:5px 10px;margin:11px 0;color:#888;font-size:13px;border-radius:100px;cursor:default}@media only screen and (max-width:640px){#button_move,#button_move_album,#button_nsfw_album,#button_trash,#button_trash_album,#button_visibility,#button_visibility_album{display:none!important}}@media only screen and (max-width:640px) and (max-width:567px){#button_rotate_ccwise,#button_rotate_cwise{display:none!important}.header__divider{width:0}}#imageview #image,#imageview #livephoto{position:absolute;top:30px;right:30px;bottom:30px;left:30px;margin:auto;max-width:calc(100% - 60px);max-height:calc(100% - 60px);width:auto;height:auto;-webkit-transition:top .3s,right .3s,bottom .3s,left .3s,max-width .3s,max-height .3s;-o-transition:top .3s,right .3s,bottom .3s,left .3s,max-width .3s,max-height .3s;transition:top .3s,right .3s,bottom .3s,left .3s,max-width .3s,max-height .3s;-webkit-animation-name:zoomIn;animation-name:zoomIn;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1.15);animation-timing-function:cubic-bezier(.51,.92,.24,1.15);background-size:contain;background-position:center;background-repeat:no-repeat}#imageview.full #image,#imageview.full #livephoto{top:0;right:0;bottom:0;left:0;max-width:100%;max-height:100%}#imageview #image_overlay{position:absolute;bottom:30px;left:30px;color:#fff;text-shadow:1px 1px 2px #000;z-index:3}#imageview #image_overlay h1{font-size:28px;font-weight:500;-webkit-transition:visibility .3s linear,opacity .3s linear;-o-transition:visibility .3s linear,opacity .3s linear;transition:visibility .3s linear,opacity .3s linear}#imageview #image_overlay p{margin-top:5px;font-size:20px;line-height:24px}#imageview #image_overlay a .iconic{fill:#fff;margin:0 5px 0 0;width:14px;height:14px}#imageview .arrow_wrapper{position:absolute;width:15%;height:calc(100% - 60px);top:60px}#imageview .arrow_wrapper--previous{left:0}#imageview .arrow_wrapper--next{right:0}#imageview .arrow_wrapper a{position:absolute;top:50%;margin:-19px 0 0;padding:8px 12px;width:16px;height:22px;background-size:100% 100%;border:1px solid rgba(255,255,255,.8);opacity:.6;z-index:2;-webkit-transition:opacity .2s ease-out,-webkit-transform .2s ease-out;transition:transform .2s ease-out,opacity .2s ease-out,-webkit-transform .2s ease-out;-o-transition:transform .2s ease-out,opacity .2s ease-out;will-change:transform}#imageview .arrow_wrapper a#previous{left:-1px;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}#imageview .arrow_wrapper a#next{right:-1px;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}#imageview .arrow_wrapper .iconic{fill:rgba(255,255,255,.8)}#imageview video{z-index:1}@media (hover:hover){.basicModal__button:hover{background:rgba(255,255,255,.02)}div.basicModal__content a.button:hover{color:#fff;background:#2293ec}.toolbar .button:hover .iconic,.toolbar .header__title:hover .iconic,div.basicModal__content a.button:hover .iconic{fill:#fff}.toolbar .header__clear:hover{color:#fff}.toolbar .header__hostedwith:hover{background-color:rgba(0,0,0,.3)}#imageview .arrow_wrapper:hover a#next,#imageview .arrow_wrapper:hover a#previous{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}#imageview .arrow_wrapper a:hover{opacity:1}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){#imageview #image,#imageview #livephoto{top:0;right:0;bottom:0;left:0;max-width:100%;max-height:100%}#imageview #image_overlay h1{font-size:14px}#imageview #image_overlay p{margin-top:2px;font-size:11px;line-height:13px}#imageview #image_overlay a .iconic{width:9px;height:9px}}@media only screen and (min-width:568px) and (max-width:768px),only screen and (min-width:568px) and (max-width:640px) and (orientation:landscape){#imageview #image,#imageview #livephoto{top:0;right:0;bottom:0;left:0;max-width:100%;max-height:100%}#imageview #image_overlay h1{font-size:18px}#imageview #image_overlay p{margin-top:4px;font-size:14px;line-height:16px}#imageview #image_overlay a .iconic{width:12px;height:12px}}.leaflet-marker-photo img{width:100%;height:100%}.image-leaflet-popup{width:100%}.leaflet-popup-content div{pointer-events:none;position:absolute;bottom:19px;left:22px;right:22px;padding-bottom:10px;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(rgba(0,0,0,.6)));background:-o-linear-gradient(top,rgba(0,0,0,0),rgba(0,0,0,.6));background:linear-gradient(to bottom,rgba(0,0,0,0),rgba(0,0,0,.6))}.leaflet-popup-content h1{top:0;position:relative;margin:12px 0 5px 15px;font-size:16px;font-weight:700;text-shadow:0 1px 3px rgba(255,255,255,.4);color:#fff;white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis}.leaflet-popup-content span{margin-left:12px}.leaflet-popup-content svg{fill:#fff;vertical-align:middle}.leaflet-popup-content p{display:inline;font-size:11px;color:#fff}.leaflet-popup-content .iconic{width:20px;height:15px}#lychee_sidebar_container{width:0;-webkit-transition:width .3s cubic-bezier(.51,.92,.24,1);-o-transition:width .3s cubic-bezier(.51,.92,.24,1);transition:width .3s cubic-bezier(.51,.92,.24,1)}#lychee_sidebar,#lychee_sidebar_container.active{width:350px}#lychee_sidebar{height:100%;background-color:rgba(25,25,25,.98);border-left:1px solid rgba(0,0,0,.2)}#lychee_sidebar_header{height:49px;background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,.02)),to(rgba(0,0,0,0)));background:-o-linear-gradient(top,rgba(255,255,255,.02),rgba(0,0,0,0));background:linear-gradient(to bottom,rgba(255,255,255,.02),rgba(0,0,0,0));border-top:1px solid #2293ec}#lychee_sidebar_header h1{margin:15px 0;color:#fff;font-size:16px;font-weight:700;text-align:center;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content{overflow:clip auto;-webkit-overflow-scrolling:touch}#lychee_sidebar_content .sidebar__divider{padding:12px 0 8px;width:100%;border-top:1px solid rgba(255,255,255,.02);-webkit-box-shadow:0 -1px 0 rgba(0,0,0,.2);box-shadow:0 -1px 0 rgba(0,0,0,.2)}#lychee_sidebar_content .sidebar__divider:first-child{border-top:0;-webkit-box-shadow:none;box-shadow:none}#lychee_sidebar_content .sidebar__divider h1{margin:0 0 0 20px;color:rgba(255,255,255,.6);font-size:14px;font-weight:700;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content .edit{display:inline-block;margin-left:3px;width:10px}#lychee_sidebar_content .edit .iconic{width:10px;height:10px;fill:rgba(255,255,255,.5);-webkit-transition:fill .2s ease-out;-o-transition:fill .2s ease-out;transition:fill .2s ease-out}#lychee_sidebar_content .edit:active .iconic{-webkit-transition:none;-o-transition:none;transition:none;fill:rgba(255,255,255,.8)}#lychee_sidebar_content table{margin:10px 0 15px 20px;width:calc(100% - 20px)}#lychee_sidebar_content table tr td{padding:5px 0;color:#fff;font-size:14px;line-height:19px;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content table tr td:first-child{width:110px}#lychee_sidebar_content table tr td:last-child{padding-right:10px}#lychee_sidebar_content table tr td span{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content #tags{width:calc(100% - 40px);margin:16px 20px 12px;color:#fff;display:inline-block}#lychee_sidebar_content #tags>div{display:inline-block}#lychee_sidebar_content #tags .empty{font-size:14px;margin:0 2px 8px 0;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content #tags .edit{margin-top:6px}#lychee_sidebar_content #tags .empty .edit{margin-top:0}#lychee_sidebar_content #tags .tag{cursor:default;display:inline-block;padding:6px 10px;margin:0 6px 8px 0;background-color:rgba(0,0,0,.5);border-radius:100px;font-size:12px;-webkit-transition:background-color .2s;-o-transition:background-color .2s;transition:background-color .2s;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content #tags .tag span{display:inline-block;padding:0;margin:0 0 -2px;width:0;overflow:hidden;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:width .2s,margin .2s,fill .2s ease-out,-webkit-transform .2s;transition:width .2s,margin .2s,transform .2s,fill .2s ease-out,-webkit-transform .2s;-o-transition:width .2s,margin .2s,transform .2s,fill .2s ease-out}#lychee_sidebar_content #tags .tag span .iconic{fill:#d92c34;width:8px;height:8px}#lychee_sidebar_content #tags .tag span:active .iconic{-webkit-transition:none;-o-transition:none;transition:none;fill:#b22027}#lychee_sidebar_content #leaflet_map_single_photo{margin:10px 0 0 20px;height:180px;width:calc(100% - 40px)}#lychee_sidebar_content .attr_location.search{cursor:pointer}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){#lychee_sidebar_container{position:absolute;right:0}#lychee_sidebar{background-color:rgba(0,0,0,.6)}#lychee_sidebar,#lychee_sidebar_container.active{width:240px}#lychee_sidebar_header{height:22px}#lychee_sidebar_header h1{margin:6px 0;font-size:13px}#lychee_sidebar_content{padding-bottom:10px}#lychee_sidebar_content .sidebar__divider{padding:6px 0 2px}#lychee_sidebar_content .sidebar__divider h1{margin:0 0 0 10px;font-size:12px}#lychee_sidebar_content #tags,#lychee_sidebar_content table{margin:4px 0 6px 10px;width:calc(100% - 16px)}#lychee_sidebar_content table tr td{padding:2px 0;font-size:11px;line-height:12px}#lychee_sidebar_content table tr td:first-child{width:80px}#lychee_sidebar_content #tags .empty{margin:0;font-size:11px}}@media only screen and (min-width:568px) and (max-width:768px),only screen and (min-width:568px) and (max-width:640px) and (orientation:landscape){#lychee_sidebar,#lychee_sidebar_container.active{width:280px}#lychee_sidebar_header{height:28px}#lychee_sidebar_header h1{margin:8px 0;font-size:15px}#lychee_sidebar_content{padding-bottom:10px}#lychee_sidebar_content .sidebar__divider{padding:8px 0 4px}#lychee_sidebar_content .sidebar__divider h1{margin:0 0 0 10px;font-size:13px}#lychee_sidebar_content #tags,#lychee_sidebar_content table{margin:4px 0 6px 10px;width:calc(100% - 16px)}#lychee_sidebar_content table tr td{padding:2px 0;font-size:12px;line-height:13px}#lychee_sidebar_content table tr td:first-child{width:90px}#lychee_sidebar_content #tags .empty{margin:0;font-size:12px}}#lychee_loading{height:0;-webkit-transition:height .3s;-o-transition:height .3s;transition:height .3s;background-size:100px 3px;background-repeat:repeat-x;-webkit-animation-name:moveBackground;animation-name:moveBackground;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}#lychee_loading.loading{height:3px;background-image:-webkit-gradient(linear,left top,right top,from(#153674),color-stop(47%,#153674),color-stop(53%,#2651ae),to(#2651ae));background-image:-o-linear-gradient(left,#153674 0,#153674 47%,#2651ae 53%,#2651ae 100%);background-image:linear-gradient(to right,#153674 0,#153674 47%,#2651ae 53%,#2651ae 100%)}#lychee_loading.error{height:40px;background-color:#2f0d0e;background-image:-webkit-gradient(linear,left top,right top,from(#451317),color-stop(47%,#451317),color-stop(53%,#aa3039),to(#aa3039));background-image:-o-linear-gradient(left,#451317 0,#451317 47%,#aa3039 53%,#aa3039 100%);background-image:linear-gradient(to right,#451317 0,#451317 47%,#aa3039 53%,#aa3039 100%)}#lychee_loading.success{height:40px;background-color:#070;background-image:-webkit-gradient(linear,left top,right top,from(#070),color-stop(47%,#090),color-stop(53%,#0a0),to(#0c0));background-image:-o-linear-gradient(left,#070 0,#090 47%,#0a0 53%,#0c0 100%);background-image:linear-gradient(to right,#070 0,#090 47%,#0a0 53%,#0c0 100%)}#lychee_loading h1{margin:13px 13px 0;color:#ddd;font-size:14px;font-weight:700;text-shadow:0 1px 0 #000;text-transform:capitalize}#lychee_loading h1 span{margin-left:10px;font-weight:400;text-transform:none}div.select,input,output,select,textarea{display:inline-block;position:relative}div.select>select{display:block;width:100%}div.select,input,output,select,select option,textarea{color:#fff;background-color:#2c2c2c;margin:0;font-size:inherit;line-height:inherit;padding:0;border:none;-webkit-box-shadow:none;box-shadow:none;outline:0}input[type=password],input[type=text],select{padding-top:3px;padding-bottom:3px}input[type=password],input[type=text]{padding-left:2px;padding-right:2px;background-color:transparent;border-bottom:1px solid #222;border-radius:0;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05)}input[type=password]:focus,input[type=text]:focus{border-bottom-color:#2293ec}input[type=password].error,input[type=text].error{border-bottom-color:#d92c34}input[type=checkbox]{top:2px;height:16px;width:16px;-webkit-appearance:none;-moz-appearance:none;appearance:none;color:#2293ec;border:none;border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}input[type=checkbox]::before{content:"✔";position:absolute;text-align:center;font-size:16px;line-height:16px;top:0;bottom:0;left:0;right:0;width:auto;height:auto;visibility:hidden}input[type=checkbox]:checked::before{visibility:visible}input[type=checkbox].slider{top:5px;height:22px;width:42px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);border-radius:11px;background:#2c2c2c}input[type=checkbox].slider::before{content:"";background-color:#2293ec;height:14px;width:14px;left:3px;top:3px;border:none;border-radius:7px;visibility:visible}input[type=checkbox].slider:checked{background-color:#2293ec}input[type=checkbox].slider:checked::before{left:auto;right:3px;background-color:#fff}div.select{font-size:12px;background:#2c2c2c;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02)}div.select::after{position:absolute;content:"≡";right:8px;top:3px;color:#2293ec;font-size:16px;font-weight:700;pointer-events:none}select{padding-left:8px;padding-right:8px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:0 0}select option{padding:2px 0;-webkit-transition:none;-o-transition:none;transition:none}form div.input-group{position:relative;margin:18px 0}form div.input-group:first-child{margin-top:0}form div.input-group:last-child{margin-bottom:0}form div.input-group.hidden{display:none}form div.input-group label{font-weight:700}form div.input-group p{display:block;margin:6px 0;font-size:13px;line-height:16px}form div.input-group p:last-child{margin-bottom:0}form div.input-group.stacked>label{display:block;margin-bottom:6px}form div.input-group.stacked>label>input[type=password],form div.input-group.stacked>label>input[type=text]{margin-top:12px}form div.input-group.stacked>div.select,form div.input-group.stacked>input,form div.input-group.stacked>output,form div.input-group.stacked>textarea{width:100%;display:block}form div.input-group.compact{padding-left:120px}form div.input-group.compact>label{display:block;position:absolute;margin:0;left:0;width:108px;height:auto;top:3px;bottom:0;overflow-y:hidden}form div.input-group.compact>div.select,form div.input-group.compact>input,form div.input-group.compact>output,form div.input-group.compact>textarea{display:block;width:100%}form div.input-group.compact-inverse{padding-left:36px}form div.input-group.compact-inverse label{display:block}form div.input-group.compact-inverse>div.select,form div.input-group.compact-inverse>input,form div.input-group.compact-inverse>output,form div.input-group.compact-inverse>textarea{display:block;position:absolute;width:16px;height:16px;top:2px;left:0}form div.input-group.compact-no-indent>label{display:inline}form div.input-group.compact-no-indent>div.select,form div.input-group.compact-no-indent>input,form div.input-group.compact-no-indent>output,form div.input-group.compact-no-indent>textarea{display:inline-block;margin-left:.3em;margin-right:.3em}div.basicModal.about-dialog div.basicModal__content h1{font-size:120%;font-weight:700;text-align:center;color:#fff}div.basicModal.about-dialog div.basicModal__content h2{font-weight:700;color:#fff}div.basicModal.about-dialog div.basicModal__content p.update-status.up-to-date-git,div.basicModal.about-dialog div.basicModal__content p.update-status.up-to-date-release{display:none}div.basicModal.about-dialog div.basicModal__content p.about-desc{line-height:1.4em}div.basicModal.downloads div.basicModal__content a.button{display:block;margin:12px 0;padding:12px;font-weight:700;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02);box-shadow:inset 0 1px 0 rgba(255,255,255,.02);border:1px solid rgba(0,0,0,.2)}div.basicModal.downloads div.basicModal__content a.button .iconic{width:12px;height:12px;margin-right:12px}div.basicModal.qr-code{width:300px}div.basicModal.qr-code div.basicModal__content{padding:12px}.basicModal.import div.basicModal__content{padding:12px 8px}.basicModal.import div.basicModal__content h1{margin-bottom:12px;color:#fff;font-size:16px;line-height:19px;font-weight:700;text-align:center}.basicModal.import div.basicModal__content ol{margin-top:12px;height:300px;background-color:#2c2c2c;overflow:hidden;overflow-y:auto;border-radius:3px;-webkit-box-shadow:inset 0 0 3px rgba(0,0,0,.4);box-shadow:inset 0 0 3px rgba(0,0,0,.4)}.basicModal.import div.basicModal__content ol li{float:left;padding:8px 0;width:100%;background-color:rgba(255,255,255,.02)}.basicModal.import div.basicModal__content ol li:nth-child(2n){background-color:rgba(255,255,255,0)}.basicModal.import div.basicModal__content ol li h2{float:left;padding:5px 10px;width:70%;color:#fff;font-size:14px;white-space:nowrap;overflow:hidden}.basicModal.import div.basicModal__content ol li p.status{float:left;padding:5px 10px;width:30%;color:#999;font-size:14px;text-align:right;-webkit-animation-name:pulse;animation-name:pulse;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.basicModal.import div.basicModal__content ol li p.status.error,.basicModal.import div.basicModal__content ol li p.status.success,.basicModal.import div.basicModal__content ol li p.status.warning{-webkit-animation:none;animation:none}.basicModal.import div.basicModal__content ol li p.status.error{color:#d92c34}.basicModal.import div.basicModal__content ol li p.status.warning{color:#fc0}.basicModal.import div.basicModal__content ol li p.status.success{color:#0a0}.basicModal.import div.basicModal__content ol li p.notice{float:left;padding:2px 10px 5px;width:100%;color:#999;font-size:12px;overflow:hidden;line-height:16px}.basicModal.import div.basicModal__content ol li p.notice:empty{display:none}div.basicModal.login div.basicModal__content a.button#signInKeyLess{position:absolute;display:block;color:#999;top:8px;left:8px;width:30px;height:30px;margin:0;padding:5px;cursor:pointer;-webkit-box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);border:1px solid rgba(0,0,0,.2)}div.basicModal.login div.basicModal__content a.button#signInKeyLess .iconic{width:100%;height:100%;fill:#999}div.basicModal.login div.basicModal__content p.version{font-size:12px;text-align:right}div.basicModal.login div.basicModal__content p.version span.update-status.up-to-date-git,div.basicModal.login div.basicModal__content p.version span.update-status.up-to-date-release{display:none}@media (hover:hover){#lychee_sidebar .edit:hover .iconic{fill:#fff}#lychee_sidebar #tags .tag:hover{background-color:rgba(0,0,0,.3)}#lychee_sidebar #tags .tag:hover.search{cursor:pointer}#lychee_sidebar #tags .tag:hover span{width:9px;margin:0 0 -2px 5px;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}#lychee_sidebar #tags .tag span:hover .iconic{fill:#e1575e}div.basicModal.login div.basicModal__content a.button#signInKeyLess:hover{color:#fff;background:inherit}div.basicModal.login div.basicModal__content a.button#signInKeyLess:hover .iconic{fill:#fff}}form.photo-links div.input-group{padding-right:30px}form.photo-links div.input-group a.button{display:block;position:absolute;margin:0;padding:4px;right:0;bottom:0;width:26px;height:26px;cursor:pointer;-webkit-box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);border:1px solid rgba(0,0,0,.2)}form.photo-links div.input-group a.button .iconic{width:100%;height:100%}form.token div.input-group{padding-right:82px}form.token div.input-group input.disabled,form.token div.input-group input[disabled]{color:#999}form.token div.input-group div.button-group{display:block;position:absolute;margin:0;padding:0;right:0;bottom:0;width:78px}form.token div.input-group div.button-group a.button{display:block;float:right;margin:0;padding:4px;bottom:4px;width:26px;height:26px;cursor:pointer;-webkit-box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);border:1px solid rgba(0,0,0,.2)}form.token div.input-group div.button-group a.button .iconic{width:100%;height:100%}#sensitive_warning{background:rgba(100,0,0,.95);text-align:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#fff}#sensitive_warning.active{display:-webkit-box;display:-ms-flexbox;display:flex}#sensitive_warning h1{font-size:36px;font-weight:700;border-bottom:2px solid #fff;margin-bottom:15px}#sensitive_warning p{font-size:20px;max-width:40%;margin-top:15px}.settings_view{width:90%;max-width:700px;margin-left:auto;margin-right:auto}.settings_view input.text{padding:9px 2px;width:calc(50% - 4px);background-color:transparent;color:#fff;border:none;border-bottom:1px solid #222;border-radius:0;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05);outline:0}.settings_view input.text:focus{border-bottom-color:#2293ec}.settings_view input.text .error{border-bottom-color:#d92c34}.settings_view .basicModal__button{color:#2293ec;display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);border-radius:5px}.settings_view .basicModal__button_MORE,.settings_view .basicModal__button_SAVE{color:#b22027;border-radius:5px}.settings_view>div{font-size:14px;width:100%;padding:12px 0}.settings_view>div p{margin:0 0 5%;width:100%;color:#ccc;line-height:16px}.settings_view>div p a{color:rgba(255,255,255,.9);text-decoration:none;border-bottom:1px dashed #888}.settings_view>div p:last-of-type{margin:0}.settings_view>div input.text{width:100%}.settings_view>div textarea{padding:9px;width:calc(100% - 18px);height:100px;background-color:transparent;color:#fff;border:1px solid #666;border-radius:0;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05);outline:0;resize:vertical}.settings_view>div textarea:focus{border-color:#2293ec}.settings_view>div .choice{padding:0 30px 15px;width:100%;color:#fff}.settings_view>div .choice:last-child{padding-bottom:40px}.settings_view>div .choice label{float:left;color:#fff;font-size:14px;font-weight:700}.settings_view>div .choice label input{position:absolute;margin:0;opacity:0}.settings_view>div .choice label .checkbox{float:left;display:block;width:16px;height:16px;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.settings_view>div .choice label .checkbox .iconic{-webkit-box-sizing:border-box;box-sizing:border-box;fill:#2293ec;padding:2px;opacity:0;-ms-transform:scale(0);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);-o-transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1)}.settings_view>div .select{position:relative;margin:1px 5px;padding:0;width:110px;color:#fff;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);font-size:11px;line-height:16px;overflow:hidden;outline:0;vertical-align:middle;background:rgba(0,0,0,.3);display:inline-block}.settings_view>div .select select{margin:0;padding:4px 8px;width:120%;color:#fff;font-size:11px;line-height:16px;border:0;outline:0;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background-color:transparent;background-image:none;-moz-appearance:none;-webkit-appearance:none;appearance:none}.settings_view>div .select select option{margin:0;padding:0;background:#fff;color:#333;-webkit-transition:none;-o-transition:none;transition:none}.settings_view>div .select select:disabled{color:#000;cursor:not-allowed}.settings_view>div .select::after{position:absolute;content:"≡";right:8px;top:4px;color:#2293ec;font-size:16px;line-height:16px;font-weight:700;pointer-events:none}.settings_view>div .switch{position:relative;display:inline-block;width:42px;height:22px;bottom:-2px;line-height:24px}.settings_view>div .switch input{opacity:0;width:0;height:0}.settings_view>div .slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);background:rgba(0,0,0,.3);-webkit-transition:.4s;-o-transition:.4s;transition:.4s}.settings_view>div .slider:before{position:absolute;content:"";height:14px;width:14px;left:3px;bottom:3px;background-color:#2293ec}.settings_view>div input:checked+.slider{background-color:#2293ec}.settings_view>div input:checked+.slider:before{-ms-transform:translateX(20px);-webkit-transform:translateX(20px);transform:translateX(20px);background-color:#fff}.settings_view>div .slider.round{border-radius:20px}.settings_view>div .slider.round:before{border-radius:50%}.settings_view .setting_category{font-size:20px;width:100%;padding-top:10px;padding-left:4px;border-bottom:1px dotted #222;margin-top:20px;color:#fff;font-weight:700;text-transform:capitalize}.settings_view .setting_line{font-size:14px;width:100%}.settings_view .setting_line:first-child,.settings_view .setting_line:last-child{padding-top:50px}.settings_view .setting_line p{min-width:550px;margin:0;color:#ccc;display:inline-block;width:100%;overflow-wrap:break-word}.settings_view .setting_line p a{color:rgba(255,255,255,.9);text-decoration:none;border-bottom:1px dashed #888}.settings_view .setting_line p:last-of-type{margin:0}.settings_view .setting_line p .warning{margin-bottom:30px;color:#d92c34;font-weight:700;font-size:18px;text-align:justify;line-height:22px}.settings_view .setting_line span.text{display:inline-block;padding:9px 4px;width:calc(50% - 12px);background-color:transparent;color:#fff;border:none}.settings_view .setting_line span.text_icon{width:5%}.settings_view .setting_line span.text_icon .iconic{width:15px;height:14px;margin:0 10px 0 1px;fill:#fff}.settings_view .setting_line input.text{width:calc(50% - 4px)}@media (hover:hover){.settings_view .basicModal__button:hover{background:#2293ec;color:#fff;cursor:pointer}.settings_view .basicModal__button_MORE:hover,.settings_view .basicModal__button_SAVE:hover{background:#b22027;color:#fff}.settings_view input:hover{border-bottom:1px solid #2293ec}}@media (hover:none){#lychee_left_menu a{padding:14px 8px 14px 32px}.settings_view input.text{border-bottom:1px solid #2293ec;margin:6px 0}.settings_view>div{padding:16px 0}.settings_view .basicModal__button{background:#2293ec;color:#fff;max-width:320px;margin-top:20px}.settings_view .basicModal__button_MORE,.settings_view .basicModal__button_SAVE{background:#b22027}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.settings_view{max-width:100%}.settings_view .setting_category{font-size:14px;padding-left:0;margin-bottom:4px}.settings_view .setting_line{font-size:12px}.settings_view .setting_line:first-child{padding-top:20px}.settings_view .setting_line p{min-width:unset;line-height:20px}.settings_view .setting_line p.warning{font-size:14px;line-height:16px;margin-bottom:0}.settings_view .setting_line p input,.settings_view .setting_line p span{padding:0}.settings_view .basicModal__button_SAVE{margin-top:20px}}.users_view{width:90%;max-width:700px;margin-left:auto;margin-right:auto}.users_view_line{font-size:14px;width:100%}.users_view_line:first-child,.users_view_line:last-child{padding-top:50px}.users_view_line p{width:550px;margin:0 0 5%;color:#ccc;display:inline-block}.users_view_line p a{color:rgba(255,255,255,.9);text-decoration:none;border-bottom:1px dashed #888}.users_view_line p.line,.users_view_line p:last-of-type{margin:0}.users_view_line span.text{display:inline-block;padding:9px 6px 9px 0;width:40%;background-color:transparent;color:#fff;border:none}.users_view_line span.text_icon{width:5%;min-width:32px}.users_view_line span.text_icon .iconic{width:15px;height:14px;margin:0 8px;fill:#fff}.users_view_line input.text{padding:9px 6px 9px 0;width:40%;background-color:transparent;color:#fff;border:none;border-bottom:1px solid #222;border-radius:0;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05);outline:0;margin:0 0 10px}.users_view_line input.text:focus{border-bottom-color:#2293ec}.users_view_line input.text.error{border-bottom-color:#d92c34}.users_view_line .choice label input:checked~.checkbox .iconic{opacity:1;-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}.users_view_line .choice{display:inline-block;width:5%;min-width:32px;color:#fff}.users_view_line .choice input{position:absolute;margin:0;opacity:0}.users_view_line .choice .checkbox{display:inline-block;width:16px;height:16px;margin:10px 8px 0;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.users_view_line .choice .checkbox .iconic{-webkit-box-sizing:border-box;box-sizing:border-box;fill:#2293ec;padding:2px;opacity:0;-ms-transform:scale(0);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);-o-transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1)}.users_view_line .basicModal__button{display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);width:10%;min-width:72px;border-radius:0}.users_view_line .basicModal__button_OK{color:#2293ec;border-radius:5px 0 0 5px;margin-right:-4px}.users_view_line .basicModal__button_OK_no_DEL{border-radius:5px;min-width:144px;width:20%}.users_view_line .basicModal__button_DEL{color:#b22027;border-radius:0 5px 5px 0}.users_view_line .basicModal__button_CREATE{width:20%;color:#090;border-radius:5px;min-width:144px}.users_view_line .select{position:relative;margin:1px 5px;padding:0;width:110px;color:#fff;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);font-size:11px;line-height:16px;overflow:hidden;outline:0;vertical-align:middle;background:rgba(0,0,0,.3);display:inline-block}.users_view_line .select select{margin:0;padding:4px 8px;width:120%;color:#fff;font-size:11px;line-height:16px;border:0;outline:0;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background:0 0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.users_view_line .select select option{margin:0;padding:0;background:#fff;color:#333;-webkit-transition:none;-o-transition:none;transition:none}.users_view_line .select::after{position:absolute;content:"≡";right:8px;top:4px;color:#2293ec;font-size:16px;line-height:16px;font-weight:700;pointer-events:none}@media (hover:hover){.users_view_line .basicModal__button:hover{cursor:pointer;color:#fff}.users_view_line .basicModal__button_OK:hover{background:#2293ec}.users_view_line .basicModal__button_DEL:hover{background:#b22027}.users_view_line .basicModal__button_CREATE:hover{background:#090}.users_view_line input:hover{border-bottom:1px solid #2293ec}}@media (hover:none){.users_view_line .basicModal__button{color:#fff}.users_view_line .basicModal__button_OK{background:#2293ec}.users_view_line .basicModal__button_DEL{background:#b22027}.users_view_line .basicModal__button_CREATE{background:#090}.users_view_line input{border-bottom:1px solid #2293ec}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.users_view{width:100%;max-width:100%;padding:20px}.users_view_line p{width:100%}.users_view_line p .text,.users_view_line p input.text{width:36%;font-size:smaller}.users_view_line .choice{margin-left:-8px;margin-right:3px}}.u2f_view{width:90%;max-width:700px;margin-left:auto;margin-right:auto}.u2f_view_line{font-size:14px;width:100%}.u2f_view_line:first-child,.u2f_view_line:last-child{padding-top:50px}.u2f_view_line p{width:550px;margin:0 0 5%;color:#ccc;display:inline-block}.u2f_view_line p a{color:rgba(255,255,255,.9);text-decoration:none;border-bottom:1px dashed #888}.u2f_view_line p.line,.u2f_view_line p:last-of-type{margin:0}.u2f_view_line p.single{text-align:center}.u2f_view_line span.text{display:inline-block;padding:9px 4px;width:80%;background-color:transparent;color:#fff;border:none}.u2f_view_line span.text_icon{width:5%}.u2f_view_line span.text_icon .iconic{width:15px;height:14px;margin:0 15px 0 1px;fill:#fff}.u2f_view_line .choice label input:checked~.checkbox .iconic{opacity:1;-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}.u2f_view_line .choice{display:inline-block;width:5%;color:#fff}.u2f_view_line .choice input{position:absolute;margin:0;opacity:0}.u2f_view_line .choice .checkbox{display:inline-block;width:16px;height:16px;margin-top:10px;margin-left:2px;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.u2f_view_line .choice .checkbox .iconic{-webkit-box-sizing:border-box;box-sizing:border-box;fill:#2293ec;padding:2px;opacity:0;-ms-transform:scale(0);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);-o-transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1)}.u2f_view_line .basicModal__button{display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);width:20%;min-width:50px;border-radius:0}.u2f_view_line .basicModal__button_OK{color:#2293ec;border-radius:5px 0 0 5px}.u2f_view_line .basicModal__button_DEL{color:#b22027;border-radius:0 5px 5px 0}.u2f_view_line .basicModal__button_CREATE{width:100%;color:#090;border-radius:5px}.u2f_view_line .select{position:relative;margin:1px 5px;padding:0;width:110px;color:#fff;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);font-size:11px;line-height:16px;overflow:hidden;outline:0;vertical-align:middle;background:rgba(0,0,0,.3);display:inline-block}.u2f_view_line .select select{margin:0;padding:4px 8px;width:120%;color:#fff;font-size:11px;line-height:16px;border:0;outline:0;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background:0 0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.u2f_view_line .select select option{margin:0;padding:0;background:#fff;color:#333;-webkit-transition:none;-o-transition:none;transition:none}.u2f_view_line .select::after{position:absolute;content:"≡";right:8px;top:4px;color:#2293ec;font-size:16px;line-height:16px;font-weight:700;pointer-events:none}@media (hover:hover){.u2f_view_line .basicModal__button:hover{cursor:pointer}.u2f_view_line .basicModal__button_OK:hover{background:#2293ec;color:#fff}.u2f_view_line .basicModal__button_DEL:hover{background:#b22027;color:#fff}.u2f_view_line .basicModal__button_CREATE:hover{background:#090;color:#fff}.u2f_view_line input:hover{border-bottom:1px solid #2293ec}}@media (hover:none){.u2f_view_line .basicModal__button{color:#fff}.u2f_view_line .basicModal__button_OK{background:#2293ec}.u2f_view_line .basicModal__button_DEL{background:#b22027}.u2f_view_line .basicModal__button_CREATE{background:#090}.u2f_view_line input{border-bottom:1px solid #2293ec}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.u2f_view{width:100%;max-width:100%;padding:20px}.u2f_view_line p{width:100%}.u2f_view_line .basicModal__button_CREATE{width:80%;margin:0 10%}}.logs_diagnostics_view{width:90%;margin-left:auto;margin-right:auto;color:#ccc;font-size:12px;line-height:14px}.logs_diagnostics_view pre{font-family:monospace;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;padding-right:30px}.clear_logs_update{padding-left:30px;margin:20px auto}.clear_logs_update .basicModal__button,.logs_diagnostics_view .basicModal__button{color:#2293ec;display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);border-radius:5px}.clear_logs_update .iconic,.logs_diagnostics_view .iconic{display:inline-block;margin:0 10px 0 1px;width:13px;height:12px;fill:#2293ec}.clear_logs_update .button_left,.logs_diagnostics_view .button_left{margin-left:24px;width:400px}@media (hover:none){.clear_logs_update .basicModal__button,.logs_diagnostics_view .basicModal__button{background:#2293ec;color:#fff;max-width:320px;margin-top:20px}.clear_logs_update .iconic,.logs_diagnostics_view .iconic{fill:#fff}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.clear_logs_update,.logs_diagnostics_view{width:100%;max-width:100%;font-size:11px;line-height:12px}.clear_logs_update .basicModal__button,.clear_logs_update .button_left,.logs_diagnostics_view .basicModal__button,.logs_diagnostics_view .button_left{width:80%;margin:0 10%}.logs_diagnostics_view{padding:10px 10px 0 0}.clear_logs_update{padding:10px 10px 0;margin:0}}.sharing_view{width:90%;max-width:700px;margin-left:auto;margin-right:auto;margin-top:20px}.sharing_view .sharing_view_line{width:100%;display:block;clear:left}.sharing_view .col-xs-1,.sharing_view .col-xs-10,.sharing_view .col-xs-11,.sharing_view .col-xs-12,.sharing_view .col-xs-2,.sharing_view .col-xs-3,.sharing_view .col-xs-4,.sharing_view .col-xs-5,.sharing_view .col-xs-6,.sharing_view .col-xs-7,.sharing_view .col-xs-8,.sharing_view .col-xs-9{float:left;position:relative;min-height:1px}.sharing_view .col-xs-2{width:10%;padding-right:3%;padding-left:3%}.sharing_view .col-xs-5{width:42%}.sharing_view .btn-block+.btn-block{margin-top:5px}.sharing_view .btn-block{display:block;width:100%}.sharing_view .btn-default{color:#2293ec;border-color:#2293ec;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.sharing_view .btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.sharing_view select[multiple],.sharing_view select[size]{height:150px}.sharing_view .form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}.sharing_view .iconic{display:inline-block;width:15px;height:14px;fill:#2293ec}.sharing_view .iconic .iconic.ionicons{margin:0 8px -2px 0;width:18px;height:18px}.sharing_view .blue .iconic{fill:#2293ec}.sharing_view .grey .iconic{fill:#b4b4b4}.sharing_view p{width:100%;color:#ccc;text-align:center;font-size:14px;display:block}.sharing_view p.with{padding:15px 0}.sharing_view span.text{display:inline-block;padding:0 2px;width:40%;background-color:transparent;color:#fff;border:none}.sharing_view span.text:last-of-type{width:5%}.sharing_view span.text .iconic{width:15px;height:14px;margin:0 10px 0 1px;fill:#fff}.sharing_view .basicModal__button{margin-top:10px;color:#2293ec;display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);border-radius:5px}.sharing_view .choice label input:checked~.checkbox .iconic{opacity:1;-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}.sharing_view .choice{display:inline-block;width:5%;margin:0 10px;color:#fff}.sharing_view .choice input{position:absolute;margin:0;opacity:0}.sharing_view .choice .checkbox{display:inline-block;width:16px;height:16px;margin-top:10px;margin-left:2px;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.sharing_view .choice .checkbox .iconic{-webkit-box-sizing:border-box;box-sizing:border-box;fill:#2293ec;padding:2px;opacity:0;-ms-transform:scale(0);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);-o-transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1)}.sharing_view .select{position:relative;padding:0;color:#fff;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);font-size:14px;line-height:16px;outline:0;vertical-align:middle;background:rgba(0,0,0,.3);display:inline-block}.sharing_view .borderBlue{border:1px solid #2293ec}@media (hover:none){.sharing_view .basicModal__button{background:#2293ec;color:#fff}.sharing_view input{border-bottom:1px solid #2293ec}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.sharing_view{width:100%;max-width:100%;padding:10px}.sharing_view .select{font-size:12px}.sharing_view .iconic{margin-left:-4px}.sharing_view_line p{width:100%}.sharing_view_line .basicModal__button{width:80%;margin:0 10%}}#multiselect{position:absolute;background-color:rgba(0,94,204,.3);border:1px solid #005ecc;border-radius:3px;z-index:5}.justified-layout,.unjustified-layout{margin:30px;width:100%;position:relative}.justified-layout.laying-out,.unjustified-layout.laying-out{display:none}.justified-layout>.photo{position:absolute;--lychee-default-height:320px;margin:0}.unjustified-layout>.photo{float:left;max-height:240px;margin:5px}.justified-layout>.photo>.thumbimg,.justified-layout>.photo>.thumbimg>img,.unjustified-layout>.photo>.thumbimg,.unjustified-layout>.photo>.thumbimg>img{width:100%;height:100%;border:none;-o-object-fit:cover;object-fit:cover}.justified-layout>.photo>.overlay,.unjustified-layout>.photo>.overlay{width:100%;bottom:0;margin:0}.justified-layout>.photo>.overlay>h1,.unjustified-layout>.photo>.overlay>h1{width:auto;margin-right:15px}@media only screen and (min-width:320px) and (max-width:567px){.justified-layout{margin:8px}.justified-layout .photo{--lychee-default-height:160px}}@media only screen and (min-width:568px) and (max-width:639px){.justified-layout{margin:9px}.justified-layout .photo{--lychee-default-height:200px}}@media only screen and (min-width:640px) and (max-width:768px){.justified-layout{margin:10px}.justified-layout .photo{--lychee-default-height:240px}}#lychee_footer{text-align:center;padding:5px 0;background:#1d1d1d;-webkit-transition:color .3s,opacity .3s ease-out,margin-left .5s,-webkit-transform .3s ease-out,-webkit-box-shadow .3s;transition:color .3s,opacity .3s ease-out,transform .3s ease-out,box-shadow .3s,margin-left .5s,-webkit-transform .3s ease-out,-webkit-box-shadow .3s;-o-transition:color .3s,opacity .3s ease-out,transform .3s ease-out,box-shadow .3s,margin-left .5s}#lychee_footer p{color:#ccc;font-size:.75em;font-weight:400;line-height:26px}#lychee_footer p a,#lychee_footer p a:visited{color:#ccc}#lychee_footer p.home_copyright,#lychee_footer p.hosted_by{text-transform:uppercase}#lychee_footer #home_socials a[href=""],#lychee_footer p:empty,.hide_footer,body.mode-frame div#footer,body.mode-none div#footer{display:none}@font-face{font-family:socials;src:url(fonts/socials.eot?egvu10);src:url(fonts/socials.eot?egvu10#iefix) format("embedded-opentype"),url(fonts/socials.ttf?egvu10) format("truetype"),url(fonts/socials.woff?egvu10) format("woff"),url(fonts/socials.svg?egvu10#socials) format("svg");font-weight:400;font-style:normal}#socials_footer{padding:0;text-align:center;left:0;right:0}.socialicons{display:inline-block;font-size:18px;font-family:socials!important;speak:none;color:#ccc;text-decoration:none;margin:15px 15px 5px;transition:.3s;-webkit-transition:.3s;-moz-transition:.3s;-o-transition:.3s}#twitter:before{content:"\ea96"}#instagram:before{content:"\ea92"}#youtube:before{content:"\ea9d"}#flickr:before{content:"\eaa4"}#facebook:before{content:"\ea91"}@media (hover:hover){.sharing_view .basicModal__button:hover{background:#2293ec;color:#fff;cursor:pointer}.sharing_view input:hover{border-bottom:1px solid #2293ec}.socialicons:hover{color:#b5b5b5;-ms-transform:scale(1.3);transform:scale(1.3);-webkit-transform:scale(1.3)}}@media tv{.basicModal__button:focus{background:#2293ec;color:#fff;cursor:pointer;outline-style:none}.basicModal__button#basicModal__action:focus{color:#fff}.photo:focus{outline:#fff solid 10px}.album:focus{outline-width:0}.toolbar .button:focus{outline-width:0;background-color:#fff}.header__title:focus{outline-width:0;background-color:#fff;color:#000}.toolbar .button:focus .iconic{fill:#000}#imageview{background-color:#000}#imageview #image,#imageview #livephoto{outline-width:0}}#lychee_view_container{position:absolute;top:0;left:0;height:100%;width:100%;overflow:clip auto}.leaflet-image-layer,.leaflet-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane,.leaflet-pane>canvas,.leaflet-pane>svg,.leaflet-tile,.leaflet-tile-container,.leaflet-zoom-box{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden;-webkit-tap-highlight-color:transparent;background:#ddd;outline-offset:1px;font-family:"Helvetica Neue",Arial,Helvetica,sans-serif;font-size:.75rem;line-height:1.5}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::-moz-selection{background:0 0}.leaflet-tile::selection{background:0 0}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer{max-width:none!important;max-height:none!important;width:auto;padding:0}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4);color:#0078a8}.leaflet-tile{-webkit-filter:inherit;filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;-webkit-box-sizing:border-box;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto;float:left;clear:both}.leaflet-bottom,.leaflet-top{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-right .leaflet-control{float:right;margin-right:10px}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity .2s linear;-o-transition:opacity .2s linear;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1);-o-transition:transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1),-webkit-transform .25s cubic-bezier(0,0,.25,1)}.leaflet-pan-anim .leaflet-tile,.leaflet-zoom-anim .leaflet-tile{-webkit-transition:none;-o-transition:none;transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-control,.leaflet-popup-pane{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:grabbing}.leaflet-image-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-image-layer.leaflet-interactive,.leaflet-marker-icon.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-zoom-box{border:2px dotted #38f;background:rgba(255,255,255,.5)}.leaflet-bar{-webkit-box-shadow:0 1px 5px rgba(0,0,0,.65);box-shadow:0 1px 5px rgba(0,0,0,.65);border-radius:4px}.leaflet-bar a{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:focus,.leaflet-bar a:hover{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:bold 18px "Lucida Console",Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{-webkit-box-shadow:0 1px 5px rgba(0,0,0,.4);box-shadow:0 1px 5px rgba(0,0,0,.4);background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url(images/layers.png);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(images/layers-2x.png);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block;font-size:1.08333em}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(images/marker-icon.png)}.leaflet-container .leaflet-control-attribution{background:rgba(255,255,255,.8);margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:focus,.leaflet-control-attribution a:hover{text-decoration:underline}.leaflet-attribution-flag{display:inline!important;vertical-align:baseline!important;width:1em;height:.6669em}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;white-space:nowrap;-webkit-box-sizing:border-box;box-sizing:border-box;background:rgba(255,255,255,.8);text-shadow:1px 1px #fff}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-bar,.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers{-webkit-box-shadow:none;box-shadow:none}.leaflet-touch .leaflet-bar,.leaflet-touch .leaflet-control-layers{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 24px 13px 20px;line-height:1.3;font-size:1.08333em;min-height:1px}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-top:-1px;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;pointer-events:auto;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;-webkit-box-shadow:0 3px 14px rgba(0,0,0,.4);box-shadow:0 3px 14px rgba(0,0,0,.4)}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;border:none;text-align:center;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;color:#757575;text-decoration:none;background:0 0}.leaflet-container a.leaflet-popup-close-button:focus,.leaflet-container a.leaflet-popup-close-button:hover{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto}.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.4);box-shadow:0 1px 3px rgba(0,0,0,.4)}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before,.leaflet-tooltip-top:before{position:absolute;pointer-events:none;border:6px solid transparent;background:0 0;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.leaflet-cluster-anim .leaflet-marker-icon,.leaflet-cluster-anim .leaflet-marker-shadow{-webkit-transition:opacity .3s ease-in,-webkit-transform .3s ease-out;-o-transition:transform .3s ease-out,opacity .3s ease-in;transition:transform .3s ease-out,opacity .3s ease-in,-webkit-transform .3s ease-out}.leaflet-cluster-spider-leg{-webkit-transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in;-o-transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in;transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in}.leaflet-marker-photo{border:2px solid #fff;-webkit-box-shadow:3px 3px 10px #888;box-shadow:3px 3px 10px #888}.leaflet-marker-photo div{width:100%;height:100%;background-size:cover;background-position:center center;background-repeat:no-repeat}.leaflet-marker-photo b{position:absolute;top:-7px;right:-11px;color:#555;background-color:#fff;border-radius:8px;height:12px;min-width:12px;line-height:12px;text-align:center;padding:3px;-webkit-box-shadow:0 3px 14px rgba(0,0,0,.4);box-shadow:0 3px 14px rgba(0,0,0,.4)} \ No newline at end of file +@charset "UTF-8";@-webkit-keyframes basicModal__fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes basicModal__fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes basicModal__fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes basicModal__fadeOut{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes basicModal__moveUpFade{0%{-webkit-transform:translateY(80px);transform:translateY(80px)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes basicModal__moveUpFade{0%{-webkit-transform:translateY(80px);transform:translateY(80px)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes basicModal__shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}20%,60%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes basicModal__shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}20%,60%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}.basicModalContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:fixed;width:100%;height:100%;top:0;left:0;background-color:rgba(0,0,0,.4);z-index:1000;-webkit-box-sizing:border-box;box-sizing:border-box}.basicModalContainer *,.basicModalContainer :after,.basicModalContainer :before{-webkit-box-sizing:border-box;box-sizing:border-box}.basicModalContainer--fadeIn{-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__fadeIn;animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__fadeIn}.basicModalContainer--fadeOut{-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__fadeOut;animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__fadeOut}.basicModalContainer--fadeIn .basicModal--fadeIn{-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__moveUpFade;animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__moveUpFade}.basicModalContainer--fadeIn .basicModal--shake{-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__shake;animation:.3s cubic-bezier(.51,.92,.24,1.15) basicModal__shake}.basicModal{position:relative;width:500px;background-color:#fff;border-radius:5px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.2);box-shadow:0 1px 2px rgba(0,0,0,.2)}.basicModal__content{padding:7%;max-height:70vh;overflow:auto;-webkit-overflow-scrolling:touch}.basicModal__buttons{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;-webkit-box-shadow:0 -1px 0 rgba(0,0,0,.1);box-shadow:0 -1px 0 rgba(0,0,0,.1)}.basicModal__button{display:inline-block;width:100%;font-weight:700;text-align:center;-webkit-transition:background-color .2s;transition:background-color .2s;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.basicModal__button:hover{background-color:rgba(0,0,0,.02)}.basicModal__button#basicModal__cancel{-ms-flex-negative:2;flex-shrink:2}.basicModal__button#basicModal__action{-ms-flex-negative:1;flex-shrink:1;-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.1);box-shadow:inset 1px 0 0 rgba(0,0,0,.1)}.basicModal__button#basicModal__action:first-child{-webkit-box-shadow:none;box-shadow:none}.basicModal__button:first-child{border-radius:0 0 0 5px}.basicModal__button:last-child{border-radius:0 0 5px}.basicModal__small{max-width:340px;text-align:center}.basicModal__small .basicModal__content{padding:10% 5%}.basicModal__xclose#basicModal__cancel{position:absolute;top:-8px;right:-8px;margin:0;padding:0;width:40px;height:40px;background-color:#fff;border-radius:100%;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.2);box-shadow:0 1px 2px rgba(0,0,0,.2)}.basicModal__xclose#basicModal__cancel:after{content:"";position:absolute;left:-3px;top:8px;width:35px;height:34px;background:#fff}.basicModal__xclose#basicModal__cancel svg{position:relative;width:20px;height:39px;fill:#888;z-index:1;-webkit-transition:fill .2s;transition:fill .2s}.basicModal__xclose#basicModal__cancel:after:hover svg,.basicModal__xclose#basicModal__cancel:hover svg{fill:#2875ed}.basicModal__xclose#basicModal__cancel:active svg,.basicModal__xclose#basicModal__cancel:after:active svg{fill:#1364e3}.basicContextContainer{position:fixed;width:100%;height:100%;top:0;left:0;z-index:1000;-webkit-tap-highlight-color:transparent}.basicContext{position:absolute;opacity:0;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-animation:.3s cubic-bezier(.51,.92,.24,1.2) basicContext__popIn;animation:.3s cubic-bezier(.51,.92,.24,1.2) basicContext__popIn}.basicContext *{-webkit-box-sizing:border-box;box-sizing:border-box}.basicContext__item{cursor:pointer}.basicContext__item--separator{float:left;width:100%;cursor:default}.basicContext__data{min-width:140px;text-align:left}.basicContext__icon{display:inline-block}.basicContext--scrollable{height:100%;-webkit-overflow-scrolling:touch;overflow-x:hidden;overflow-y:auto}.basicContext--scrollable .basicContext__data{min-width:160px}@-webkit-keyframes basicContext__popIn{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes basicContext__popIn{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1;background-color:#1d1d1d;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;-webkit-font-smoothing:antialiased;-moz-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}table{border-collapse:collapse;border-spacing:0}em,i{font-style:italic}b,strong{font-weight:700}*{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:color .3s,opacity .3s ease-out,-webkit-transform .3s ease-out,-webkit-box-shadow .3s;transition:color .3s,opacity .3s ease-out,transform .3s ease-out,box-shadow .3s,-webkit-transform .3s ease-out,-webkit-box-shadow .3s}body,html{width:100%;height:100%;position:relative;overflow:clip}body.mode-frame div#container,body.mode-none div#container{display:none}input,textarea{-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;user-select:text!important}.svgsprite{display:none}.iconic{width:100%;height:100%}#upload{display:none}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1);animation-timing-function:cubic-bezier(.51,.92,.24,1)}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1);animation-timing-function:cubic-bezier(.51,.92,.24,1)}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes moveBackground{0%{background-position-x:0}100%{background-position-x:-100px}}@keyframes moveBackground{0%{background-position-x:0}100%{background-position-x:-100px}}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes zoomOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}}@keyframes zoomOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}}@-webkit-keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}body.mode-frame #lychee_application_container,body.mode-none #lychee_application_container{display:none}.hflex-container,.hflex-item-rigid,.hflex-item-stretch,.vflex-container,.vflex-item-rigid,.vflex-item-stretch{position:relative;overflow:clip}.hflex-container,.vflex-container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:stretch;align-content:stretch;gap:0 0}.vflex-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.hflex-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.hflex-item-stretch,.vflex-item-stretch{-webkit-box-flex:1;-ms-flex:auto;flex:auto}.hflex-item-stretch{width:0;height:100%}.vflex-item-stretch{width:100%;height:0}.hflex-item-rigid,.vflex-item-rigid{-webkit-box-flex:0;-ms-flex:none;flex:none}.hflex-item-rigid{width:auto;height:100%}.vflex-item-rigid{width:100%;height:auto}.overlay-container{position:absolute;display:none;top:0;left:0;width:100%;height:100%;background-color:#000;-webkit-transition:background-color .3s;transition:background-color .3s}.overlay-container.full{cursor:none}.overlay-container.active{display:unset}#lychee_view_content{height:auto;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-line-pack:start;align-content:flex-start;padding-bottom:16px;-webkit-overflow-scrolling:touch}#lychee_view_content.contentZoomIn .album,#lychee_view_content.contentZoomIn .photo{-webkit-animation-name:zoomIn;animation-name:zoomIn}#lychee_view_content.contentZoomIn .divider{-webkit-animation-name:fadeIn;animation-name:fadeIn}#lychee_view_content.contentZoomOut .album,#lychee_view_content.contentZoomOut .photo{-webkit-animation-name:zoomOut;animation-name:zoomOut}#lychee_view_content.contentZoomOut .divider{-webkit-animation-name:fadeOut;animation-name:fadeOut}.album,.photo{position:relative;width:202px;height:202px;margin:30px 0 0 30px;cursor:default;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1);animation-timing-function:cubic-bezier(.51,.92,.24,1)}.album .thumbimg,.photo .thumbimg{position:absolute;width:200px;height:200px;background:#222;color:#222;-webkit-box-shadow:0 2px 5px rgba(0,0,0,.5);box-shadow:0 2px 5px rgba(0,0,0,.5);border:1px solid rgba(255,255,255,.5);-webkit-transition:opacity .3s ease-out,border-color .3s ease-out,-webkit-transform .3s ease-out;transition:opacity .3s ease-out,transform .3s ease-out,border-color .3s ease-out,-webkit-transform .3s ease-out}.album .thumbimg>img,.photo .thumbimg>img{width:100%;height:100%}.album.active .thumbimg,.album:focus .thumbimg,.photo.active .thumbimg,.photo:focus .thumbimg{border-color:#2293ec}.album:active .thumbimg,.photo:active .thumbimg{-webkit-transition:none;transition:none;border-color:#0f6ab2}.album.selected img,.photo.selected img{outline:#2293ec solid 1px}.album .video::before,.photo .video::before{content:"";position:absolute;display:block;height:100%;width:100%;background:url(../img/play-icon.png) 46% 50% no-repeat;-webkit-transition:.3s;transition:.3s;will-change:opacity,height}.album .video:focus::before,.photo .video:focus::before{opacity:.75}.album .livephoto::before,.photo .livephoto::before{content:"";position:absolute;display:block;height:100%;width:100%;background:url(../img/live-photo-icon.png) 2% 2% no-repeat;-webkit-transition:.3s;transition:.3s;will-change:opacity,height}.album .livephoto:focus::before,.photo .livephoto:focus::before{opacity:.75}.album .thumbimg:first-child,.album .thumbimg:nth-child(2){-webkit-transform:rotate(0) translateY(0) translateX(0);-ms-transform:rotate(0) translateY(0) translateX(0);transform:rotate(0) translateY(0) translateX(0);opacity:0}.album:focus .thumbimg:nth-child(1),.album:focus .thumbimg:nth-child(2){opacity:1;will-change:transform}.album:focus .thumbimg:nth-child(1){-webkit-transform:rotate(-2deg) translateY(10px) translateX(-12px);-ms-transform:rotate(-2deg) translateY(10px) translateX(-12px);transform:rotate(-2deg) translateY(10px) translateX(-12px)}.album:focus .thumbimg:nth-child(2){-webkit-transform:rotate(5deg) translateY(-8px) translateX(12px);-ms-transform:rotate(5deg) translateY(-8px) translateX(12px);transform:rotate(5deg) translateY(-8px) translateX(12px)}.blurred span{overflow:hidden}.blurred img{-webkit-filter:blur(5px);filter:blur(5px)}.album .album_counters{position:absolute;right:8px;top:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:4px 4px;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right;font:bold 10px sans-serif;-webkit-filter:drop-shadow(0 0 4px rgba(0, 0, 0, .75));filter:drop-shadow(0 0 4px rgba(0, 0, 0, .75))}.album .album_counters .layers{position:relative;padding:6px 4px}.album .album_counters .layers .iconic{fill:#fff;width:12px;height:12px}.album .album_counters .folders,.album .album_counters .photos{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:distribute;justify-content:space-around;text-align:end}.album .album_counters .folders .iconic,.album .album_counters .photos .iconic{fill:#fff;width:15px;height:15px}.album .album_counters .folders span,.album .album_counters .photos span{position:absolute;bottom:0;color:#222;padding-right:1px;padding-left:1px}.album .album_counters .folders span{right:0;line-height:.9}.album .album_counters .photos span{right:4px;min-width:10px;background-color:#fff;padding-top:1px;line-height:1}.album .overlay,.photo .overlay{position:absolute;margin:0 1px;width:200px;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(rgba(0,0,0,.6)));background:linear-gradient(to bottom,rgba(0,0,0,0),rgba(0,0,0,.6));bottom:1px}.album .thumbimg[data-overlay=false]+.overlay{background:0 0}.photo .overlay{opacity:0}.photo.active .overlay,.photo:focus .overlay{opacity:1}.album .overlay h1,.photo .overlay h1{min-height:19px;width:180px;margin:12px 0 5px 15px;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.4);font-size:16px;font-weight:700;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.album .overlay a,.photo .overlay a{display:block;margin:0 0 12px 15px;font-size:11px;color:#ccc;text-shadow:0 1px 3px rgba(0,0,0,.4)}.album .overlay a .iconic,.photo .overlay a .iconic{fill:#ccc;margin:0 5px 0 0;width:8px;height:8px}.album .thumbimg[data-overlay=false]+.overlay a,.album .thumbimg[data-overlay=false]+.overlay h1{text-shadow:none}.album .badges,.photo .badges{position:absolute;margin:-1px 0 0 6px}.album .subalbum_badge{position:absolute;right:0;top:0}.album .badge,.photo .badge{display:none;margin:0 0 0 6px;padding:12px 8px 6px;width:18px;background:#d92c34;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);border-radius:0 0 5px 5px;border:1px solid #fff;border-top:none;color:#fff;text-align:center;text-shadow:0 1px 0 rgba(0,0,0,.4);opacity:.9}.album .badge--visible,.photo .badge--visible{display:inline-block}.album .badge--not--hidden,.photo .badge--not--hidden{background:#0a0}.album .badge--hidden,.photo .badge--hidden{background:#f90}.album .badge--cover,.photo .badge--cover{display:inline-block;background:#f90}.album .badge--star,.photo .badge--star{display:inline-block;background:#fc0}.album .badge--nsfw,.photo .badge--nsfw{display:inline-block;background:#ff82ee}.album .badge--list,.photo .badge--list{background:#2293ec}.album .badge--tag,.photo .badge--tag{display:inline-block;background:#0a0}.album .badge .iconic,.photo .badge .iconic{fill:#fff;width:16px;height:16px}.divider{margin:50px 0 0;padding:10px 0 0;width:100%;opacity:0;border-top:1px solid rgba(255,255,255,.02);-webkit-box-shadow:0 -1px 0 rgba(0,0,0,.2);box-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1);animation-timing-function:cubic-bezier(.51,.92,.24,1)}.divider:first-child{margin-top:10px;border-top:0;-webkit-box-shadow:none;box-shadow:none}.divider h1{margin:0 0 0 30px;color:rgba(255,255,255,.6);font-size:14px;font-weight:700}@media only screen and (min-width:320px) and (max-width:567px){.album,.photo{--size:calc((100vw - 3px) / 3);width:calc(var(--size) - 3px);height:calc(var(--size) - 3px);margin:3px 0 0 3px}.album .thumbimg,.photo .thumbimg{width:calc(var(--size) - 5px);height:calc(var(--size) - 5px)}.album .overlay,.photo .overlay{width:calc(var(--size) - 5px)}.album .overlay h1,.photo .overlay h1{min-height:14px;width:calc(var(--size) - 19px);margin:8px 0 2px 6px;font-size:12px}.album .overlay a,.photo .overlay a{display:none}.album .badge,.photo .badge{padding:4px 3px 3px;width:12px}.album .badge .iconic,.photo .badge .iconic{width:12px;height:12px}.album .album_counters{-webkit-filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));font:bold 7px sans-serif;gap:2px 2px;right:3px;top:3px}.album .album_counters .layers{position:relative;padding:3px 2px}.album .album_counters .layers .iconic{fill:#fff;width:8px;height:8px}.album .album_counters .folders .iconic,.album .album_counters .photos .iconic{width:11px;height:11px}.album .album_counters .photos span{right:3px;min-width:5px;line-height:.9;padding-top:2px}.divider{margin:20px 0 0}.divider:first-child{margin-top:0}.divider h1{margin:0 0 6px 8px;font-size:12px}}@media only screen and (min-width:568px) and (max-width:639px){.album,.photo{--size:calc((100vw - 3px) / 4);width:calc(var(--size) - 3px);height:calc(var(--size) - 3px);margin:3px 0 0 3px}.album .thumbimg,.photo .thumbimg{width:calc(var(--size) - 5px);height:calc(var(--size) - 5px)}.album .overlay,.photo .overlay{width:calc(var(--size) - 5px)}.album .overlay h1,.photo .overlay h1{min-height:14px;width:calc(var(--size) - 19px);margin:8px 0 2px 6px;font-size:12px}.album .overlay a,.photo .overlay a{display:none}.album .badge,.photo .badge{padding:4px 3px 3px;width:14px}.album .badge .iconic,.photo .badge .iconic{width:14px;height:14px}.album .album_counters{-webkit-filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));font:bold 8px sans-serif;gap:3px 3px;right:4px;top:4px}.album .album_counters .layers{position:relative;padding:3px 2px}.album .album_counters .layers .iconic{fill:#fff;width:9px;height:9px}.album .album_counters .folders .iconic,.album .album_counters .photos .iconic{width:13px;height:13px}.album .album_counters .photos span{right:3px;min-width:8px;padding-top:2px}.divider{margin:24px 0 0}.divider:first-child{margin-top:0}.divider h1{margin:0 0 6px 10px}}@media only screen and (min-width:640px) and (max-width:768px){.album,.photo{--size:calc((100vw - 5px) / 5);width:calc(var(--size) - 5px);height:calc(var(--size) - 5px);margin:5px 0 0 5px}.album .thumbimg,.photo .thumbimg{width:calc(var(--size) - 7px);height:calc(var(--size) - 7px)}.album .overlay,.photo .overlay{width:calc(var(--size) - 7px)}.album .overlay h1,.photo .overlay h1{min-height:14px;width:calc(var(--size) - 21px);margin:10px 0 3px 8px;font-size:12px}.album .overlay a,.photo .overlay a{display:none}.album .badge,.photo .badge{padding:6px 4px 4px;width:16px}.album .badge .iconic,.photo .badge .iconic{width:16px;height:16px}.album .album_counters{-webkit-filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));filter:drop-shadow(0 0 2px rgba(0, 0, 0, .75));font:bold 9px sans-serif;gap:4px 4px;right:6px;top:6px}.album .album_counters .layers{position:relative;padding:3px 2px}.album .album_counters .layers .iconic{fill:#fff;width:11px;height:11px}.album .album_counters .folders .iconic,.album .album_counters .photos .iconic{width:15px;height:15px}.album .album_counters .folders span{line-height:1}.album .album_counters .photos span{right:3px;min-width:10px;padding-top:2px}.divider{margin:28px 0 0}.divider:first-child{margin-top:0}.divider h1{margin:0 0 6px 10px}}.no_content{position:absolute;top:50%;left:50%;padding-top:20px;color:rgba(255,255,255,.35);text-align:center;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.no_content .iconic{fill:rgba(255,255,255,.3);margin:0 0 10px;width:50px;height:50px}.no_content p{font-size:16px;font-weight:700}body.mode-gallery #lychee_frame_container,body.mode-none #lychee_frame_container,body.mode-view #lychee_frame_container{display:none}#lychee_frame_bg_canvas{width:100%;height:100%;position:absolute}#lychee_frame_bg_image{position:absolute;display:none}#lychee_frame_noise_layer{position:absolute;top:0;left:0;width:100%;height:100%;background-image:url(../img/noise.png);background-repeat:repeat;background-position:44px 44px}#lychee_frame_image_container{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-line-pack:center;align-content:center}#lychee_frame_image_container img{height:95%;width:95%;-o-object-fit:contain;object-fit:contain;-webkit-filter:drop-shadow(0 0 1px rgba(0, 0, 0, .3)) drop-shadow(0 0 10px rgba(0, 0, 0, .3));filter:drop-shadow(0 0 1px rgba(0, 0, 0, .3)) drop-shadow(0 0 10px rgba(0, 0, 0, .3))}#lychee_frame_shutter{position:absolute;width:100%;height:100%;top:0;left:0;padding:0;margin:0;background-color:#1d1d1d;opacity:1;-webkit-transition:opacity 1s ease-in-out;transition:opacity 1s ease-in-out}#lychee_frame_shutter.opened{opacity:0}#lychee_left_menu_container{width:0;background-color:#111;padding-top:16px;-webkit-transition:width .5s;transition:width .5s;height:100%;z-index:998}#lychee_left_menu,#lychee_left_menu_container.visible{width:250px}#lychee_left_menu a{padding:8px 8px 8px 32px;text-decoration:none;font-size:18px;color:#818181;display:block;cursor:pointer}#lychee_left_menu a.linkMenu{white-space:nowrap}#lychee_left_menu .iconic{display:inline-block;margin:0 10px 0 1px;width:15px;height:14px;fill:#818181}#lychee_left_menu .iconic.ionicons{margin:0 8px -2px 0;width:18px;height:18px}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){#lychee_left_menu,#lychee_left_menu_container{position:absolute;left:0}#lychee_left_menu_container.visible{width:100%}}@media (hover:hover){.album:hover .thumbimg,.photo:hover .thumbimg{border-color:#2293ec}.album .livephoto:hover::before,.album .video:hover::before,.photo .livephoto:hover::before,.photo .video:hover::before{opacity:.75}.album:hover .thumbimg:nth-child(1),.album:hover .thumbimg:nth-child(2),.album__dragover .thumbimg:nth-child(1),.album__dragover .thumbimg:nth-child(2){opacity:1;will-change:transform}.album:hover .thumbimg:nth-child(1),.album__dragover .thumbimg:nth-child(1){-webkit-transform:rotate(-2deg) translateY(10px) translateX(-12px);-ms-transform:rotate(-2deg) translateY(10px) translateX(-12px);transform:rotate(-2deg) translateY(10px) translateX(-12px)}.album:hover .thumbimg:nth-child(2),.album__dragover .thumbimg:nth-child(2){-webkit-transform:rotate(5deg) translateY(-8px) translateX(12px);-ms-transform:rotate(5deg) translateY(-8px) translateX(12px);transform:rotate(5deg) translateY(-8px) translateX(12px)}.photo:hover .overlay{opacity:1}#lychee_left_menu a:hover{color:#f1f1f1}}.basicContext{padding:5px 0 6px;background:-webkit-gradient(linear,left top,left bottom,from(#333),to(#252525));background:linear-gradient(to bottom,#333,#252525);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 4px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.05);border-radius:5px;border:1px solid rgba(0,0,0,.7);border-bottom:1px solid rgba(0,0,0,.8);-webkit-transition:none;transition:none;max-width:240px}.basicContext__item{margin-bottom:2px;font-size:14px;color:#ccc}.basicContext__item--separator{margin:4px 0;height:2px;background:rgba(0,0,0,.2);border-bottom:1px solid rgba(255,255,255,.06)}.basicContext__item--disabled{cursor:default;opacity:.5}.basicContext__item:last-child{margin-bottom:0}.basicContext__data{min-width:auto;padding:6px 25px 7px 12px;white-space:normal;overflow-wrap:normal;-webkit-transition:none;transition:none;cursor:default}@media (hover:none) and (pointer:coarse){.basicContext__data{padding:12px 25px 12px 12px}}.basicContext__item:not(.basicContext__item--disabled):active .basicContext__data{background:-webkit-gradient(linear,left top,left bottom,from(#1178ca),to(#0f6ab2));background:linear-gradient(to bottom,#1178ca,#0f6ab2)}.basicContext__icon{margin-right:10px;width:12px;text-align:center}@media (hover:hover){.basicContext__item:not(.basicContext__item--disabled):hover .basicContext__data{background:-webkit-gradient(linear,left top,left bottom,from(#2293ec),to(#1386e1));background:linear-gradient(to bottom,#2293ec,#1386e1)}.basicContext__item:hover{color:#fff;-webkit-transition:.3s;transition:.3s;-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}.basicContext__item:hover .iconic{fill:#fff}.basicContext__item--noHover:hover .basicContext__data{background:0 0!important}}#addMenu{top:48px!important;left:unset!important;right:4px}.basicContext__data{padding-left:40px}.basicContext__data .cover{position:absolute;background-color:#222;border-radius:2px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.5);box-shadow:0 0 0 1px rgba(0,0,0,.5)}.basicContext__data .title{display:inline-block;margin:0 0 3px 26px}.basicContext__data .iconic{display:inline-block;margin:0 10px 0 -22px;width:11px;height:10px;fill:#fff}.basicContext__data .iconic.active{fill:#f90}.basicContext__data .iconic.ionicons{margin:0 8px -2px 0;width:14px;height:14px}.basicContext__data input#link{margin:-2px 0;padding:5px 7px 6px;width:100%;background:#333;color:#fff;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05);border:1px solid rgba(0,0,0,.4);border-radius:3px;outline:0}.basicContext__item--noHover .basicContext__data{padding-right:12px}div.basicModalContainer{background-color:rgba(0,0,0,.85);z-index:999}div.basicModalContainer--error{-webkit-transform:translateY(40px);-ms-transform:translateY(40px);transform:translateY(40px)}div.basicModal{background:-webkit-gradient(linear,left top,left bottom,from(#444),to(#333));background:linear-gradient(to bottom,#444,#333);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 4px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.05);font-size:14px;line-height:17px}div.basicModal--error{-webkit-transform:translateY(-40px);-ms-transform:translateY(-40px);transform:translateY(-40px)}div.basicModal__buttons{-webkit-box-shadow:none;box-shadow:none}.basicModal__button{padding:13px 0 15px;background:0 0;color:#999;border-top:1px solid rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02);box-shadow:inset 0 1px 0 rgba(255,255,255,.02);cursor:default}.basicModal__button--busy,.basicModal__button:active{-webkit-transition:none;transition:none;background:rgba(0,0,0,.1);cursor:wait}.basicModal__button#basicModal__action{color:#2293ec;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2)}.basicModal__button#basicModal__action.red,.basicModal__button#basicModal__cancel.red{color:#d92c34}.basicModal__button.hidden{display:none}div.basicModal__content{padding:36px;color:#ececec;text-align:left}div.basicModal__content>*{display:block;width:100%;margin:24px 0;padding:0}div.basicModal__content>.force-first-child,div.basicModal__content>:first-child{margin-top:0}div.basicModal__content>.force-last-child,div.basicModal__content>:last-child{margin-bottom:0}div.basicModal__content .disabled{color:#999}div.basicModal__content b{font-weight:700;color:#fff}div.basicModal__content a{color:inherit;text-decoration:none;border-bottom:1px dashed #ececec}div.basicModal__content a.button{display:inline-block;margin:0 6px;padding:3px 12px;color:#2293ec;text-align:center;border-radius:5px;border:none;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2)}div.basicModal__content a.button .iconic{fill:#2293ec}div.basicModal__content>hr{border:none;border-top:1px solid rgba(0,0,0,.3)}#lychee_toolbar_container{-webkit-transition:height .3s ease-out;transition:height .3s ease-out}#lychee_toolbar_container.hidden{height:0}#lychee_toolbar_container,.toolbar{height:49px}.toolbar{background:-webkit-gradient(linear,left top,left bottom,from(#222),to(#1a1a1a));background:linear-gradient(to bottom,#222,#1a1a1a);border-bottom:1px solid #0f0f0f;display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.toolbar.visible{display:-webkit-box;display:-ms-flexbox;display:flex}#lychee_toolbar_config .toolbar .button .iconic{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}#lychee_toolbar_config .toolbar .header__title{padding-right:80px}.toolbar .header__title{width:100%;padding:16px 0;color:#fff;font-size:16px;font-weight:700;text-align:center;cursor:default;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;-webkit-transition:margin-left .5s;transition:margin-left .5s}.toolbar .header__title .iconic{display:none;margin:0 0 0 5px;width:10px;height:10px;fill:rgba(255,255,255,.5);-webkit-transition:fill .2s ease-out;transition:fill .2s ease-out}.toolbar .header__title:active .iconic{-webkit-transition:none;transition:none;fill:rgba(255,255,255,.8)}.toolbar .header__title--editable .iconic{display:inline-block}.toolbar .button{-ms-flex-negative:0;flex-shrink:0;padding:16px 8px;height:15px}.toolbar .button .iconic{width:15px;height:15px;fill:rgba(255,255,255,.5);-webkit-transition:fill .2s ease-out;transition:fill .2s ease-out}.toolbar .button:active .iconic{-webkit-transition:none;transition:none;fill:rgba(255,255,255,.8)}.toolbar .button--star.active .iconic{fill:#f0ef77}.toolbar .button--eye.active .iconic{fill:#d92c34}.toolbar .button--eye.active--not-hidden .iconic{fill:#0a0}.toolbar .button--eye.active--hidden .iconic{fill:#f90}.toolbar .button--share .iconic.ionicons{margin:-2px 0;width:18px;height:18px}.toolbar .button--nsfw.active .iconic{fill:#ff82ee}.toolbar .button--info.active .iconic{fill:#2293ec}.toolbar #button_back,.toolbar #button_back_home,.toolbar #button_close_config,.toolbar #button_settings,.toolbar #button_signin{padding:16px 12px 16px 18px}.toolbar .button_add{padding:16px 18px 16px 12px}.toolbar .header__divider{-ms-flex-negative:0;flex-shrink:0;width:14px}.toolbar .header__search__field{position:relative}.toolbar input[type=text].header__search{-ms-flex-negative:0;flex-shrink:0;width:80px;margin:0;padding:5px 12px 6px;background-color:#1d1d1d;color:#fff;border:1px solid rgba(0,0,0,.9);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.04);box-shadow:0 1px 0 rgba(255,255,255,.04);outline:0;border-radius:50px;opacity:.6;-webkit-transition:opacity .3s ease-out,width .2s ease-out,-webkit-box-shadow .3s ease-out;transition:opacity .3s ease-out,box-shadow .3s ease-out,width .2s ease-out,-webkit-box-shadow .3s ease-out}.toolbar input[type=text].header__search:focus{width:140px;border-color:#2293ec;-webkit-box-shadow:0 1px 0 rgba(255,255,255,0);box-shadow:0 1px 0 rgba(255,255,255,0);opacity:1}.toolbar input[type=text].header__search:focus~.header__clear{opacity:1}.toolbar input[type=text].header__search::-ms-clear{display:none}.toolbar .header__clear{position:absolute;top:50%;-ms-transform:translateY(-50%);-webkit-transform:translateY(-50%);transform:translateY(-50%);right:8px;padding:0;color:rgba(255,255,255,.5);font-size:24px;opacity:0;-webkit-transition:color .2s ease-out;transition:color .2s ease-out;cursor:default}.toolbar .header__clear_nomap{right:60px}.toolbar .header__hostedwith{-ms-flex-negative:0;flex-shrink:0;padding:5px 10px;margin:11px 0;color:#888;font-size:13px;border-radius:100px;cursor:default}@media only screen and (max-width:640px){#button_move,#button_move_album,#button_nsfw_album,#button_trash,#button_trash_album,#button_visibility,#button_visibility_album{display:none!important}}@media only screen and (max-width:640px) and (max-width:567px){#button_rotate_ccwise,#button_rotate_cwise{display:none!important}.header__divider{width:0}}#imageview #image,#imageview #livephoto{position:absolute;top:30px;right:30px;bottom:30px;left:30px;margin:auto;max-width:calc(100% - 60px);max-height:calc(100% - 60px);width:auto;height:auto;-webkit-transition:top .3s,right .3s,bottom .3s,left .3s,max-width .3s,max-height .3s;transition:top .3s,right .3s,bottom .3s,left .3s,max-width .3s,max-height .3s;-webkit-animation-name:zoomIn;animation-name:zoomIn;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:cubic-bezier(.51,.92,.24,1.15);animation-timing-function:cubic-bezier(.51,.92,.24,1.15);background-size:contain;background-position:center;background-repeat:no-repeat}#imageview.full #image,#imageview.full #livephoto{top:0;right:0;bottom:0;left:0;max-width:100%;max-height:100%}#imageview #image_overlay{position:absolute;bottom:30px;left:30px;color:#fff;text-shadow:1px 1px 2px #000;z-index:3}#imageview #image_overlay h1{font-size:28px;font-weight:500;-webkit-transition:visibility .3s linear,opacity .3s linear;transition:visibility .3s linear,opacity .3s linear}#imageview #image_overlay p{margin-top:5px;font-size:20px;line-height:24px}#imageview #image_overlay a .iconic{fill:#fff;margin:0 5px 0 0;width:14px;height:14px}#imageview .arrow_wrapper{position:absolute;width:15%;height:calc(100% - 60px);top:60px}#imageview .arrow_wrapper--previous{left:0}#imageview .arrow_wrapper--next{right:0}#imageview .arrow_wrapper a{position:absolute;top:50%;margin:-19px 0 0;padding:8px 12px;width:16px;height:22px;background-size:100% 100%;border:1px solid rgba(255,255,255,.8);opacity:.6;z-index:2;-webkit-transition:opacity .2s ease-out,-webkit-transform .2s ease-out;transition:transform .2s ease-out,opacity .2s ease-out,-webkit-transform .2s ease-out;will-change:transform}#imageview .arrow_wrapper a#previous{left:-1px;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}#imageview .arrow_wrapper a#next{right:-1px;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}#imageview .arrow_wrapper .iconic{fill:rgba(255,255,255,.8)}#imageview video{z-index:1}@media (hover:hover){.basicModal__button:hover{background:rgba(255,255,255,.02)}div.basicModal__content a.button:hover{color:#fff;background:#2293ec}.toolbar .button:hover .iconic,.toolbar .header__title:hover .iconic,div.basicModal__content a.button:hover .iconic{fill:#fff}.toolbar .header__clear:hover{color:#fff}.toolbar .header__hostedwith:hover{background-color:rgba(0,0,0,.3)}#imageview .arrow_wrapper:hover a#next,#imageview .arrow_wrapper:hover a#previous{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}#imageview .arrow_wrapper a:hover{opacity:1}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){#imageview #image,#imageview #livephoto{top:0;right:0;bottom:0;left:0;max-width:100%;max-height:100%}#imageview #image_overlay h1{font-size:14px}#imageview #image_overlay p{margin-top:2px;font-size:11px;line-height:13px}#imageview #image_overlay a .iconic{width:9px;height:9px}}@media only screen and (min-width:568px) and (max-width:768px),only screen and (min-width:568px) and (max-width:640px) and (orientation:landscape){#imageview #image,#imageview #livephoto{top:0;right:0;bottom:0;left:0;max-width:100%;max-height:100%}#imageview #image_overlay h1{font-size:18px}#imageview #image_overlay p{margin-top:4px;font-size:14px;line-height:16px}#imageview #image_overlay a .iconic{width:12px;height:12px}}.leaflet-marker-photo img{width:100%;height:100%}.image-leaflet-popup{width:100%}.leaflet-popup-content div{pointer-events:none;position:absolute;bottom:19px;left:22px;right:22px;padding-bottom:10px;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(rgba(0,0,0,.6)));background:linear-gradient(to bottom,rgba(0,0,0,0),rgba(0,0,0,.6))}.leaflet-popup-content h1{top:0;position:relative;margin:12px 0 5px 15px;font-size:16px;font-weight:700;text-shadow:0 1px 3px rgba(255,255,255,.4);color:#fff;white-space:nowrap;text-overflow:ellipsis}.leaflet-popup-content span{margin-left:12px}.leaflet-popup-content svg{fill:#fff;vertical-align:middle}.leaflet-popup-content p{display:inline;font-size:11px;color:#fff}.leaflet-popup-content .iconic{width:20px;height:15px}#lychee_sidebar_container{width:0;-webkit-transition:width .3s cubic-bezier(.51,.92,.24,1);transition:width .3s cubic-bezier(.51,.92,.24,1)}#lychee_sidebar,#lychee_sidebar_container.active{width:350px}#lychee_sidebar{height:100%;background-color:rgba(25,25,25,.98);border-left:1px solid rgba(0,0,0,.2)}#lychee_sidebar_header{height:49px;background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,.02)),to(rgba(0,0,0,0)));background:linear-gradient(to bottom,rgba(255,255,255,.02),rgba(0,0,0,0));border-top:1px solid #2293ec}#lychee_sidebar_header h1{margin:15px 0;color:#fff;font-size:16px;font-weight:700;text-align:center;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content{overflow:clip auto;-webkit-overflow-scrolling:touch}#lychee_sidebar_content .sidebar__divider{padding:12px 0 8px;width:100%;border-top:1px solid rgba(255,255,255,.02);-webkit-box-shadow:0 -1px 0 rgba(0,0,0,.2);box-shadow:0 -1px 0 rgba(0,0,0,.2)}#lychee_sidebar_content .sidebar__divider:first-child{border-top:0;-webkit-box-shadow:none;box-shadow:none}#lychee_sidebar_content .sidebar__divider h1{margin:0 0 0 20px;color:rgba(255,255,255,.6);font-size:14px;font-weight:700;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content .edit{display:inline-block;margin-left:3px;width:10px}#lychee_sidebar_content .edit .iconic{width:10px;height:10px;fill:rgba(255,255,255,.5);-webkit-transition:fill .2s ease-out;transition:fill .2s ease-out}#lychee_sidebar_content .edit:active .iconic{-webkit-transition:none;transition:none;fill:rgba(255,255,255,.8)}#lychee_sidebar_content table{margin:10px 0 15px 20px;width:calc(100% - 20px)}#lychee_sidebar_content table tr td{padding:5px 0;color:#fff;font-size:14px;line-height:19px;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content table tr td:first-child{width:110px}#lychee_sidebar_content table tr td:last-child{padding-right:10px}#lychee_sidebar_content table tr td span{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content #tags{width:calc(100% - 40px);margin:16px 20px 12px;color:#fff;display:inline-block}#lychee_sidebar_content #tags>div{display:inline-block}#lychee_sidebar_content #tags .empty{font-size:14px;margin:0 2px 8px 0;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content #tags .edit{margin-top:6px}#lychee_sidebar_content #tags .empty .edit{margin-top:0}#lychee_sidebar_content #tags .tag{cursor:default;display:inline-block;padding:6px 10px;margin:0 6px 8px 0;background-color:rgba(0,0,0,.5);border-radius:100px;font-size:12px;-webkit-transition:background-color .2s;transition:background-color .2s;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#lychee_sidebar_content #tags .tag span{display:inline-block;padding:0;margin:0 0 -2px;width:0;overflow:hidden;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:width .2s,margin .2s,fill .2s ease-out,-webkit-transform .2s;transition:width .2s,margin .2s,transform .2s,fill .2s ease-out,-webkit-transform .2s}#lychee_sidebar_content #tags .tag span .iconic{fill:#d92c34;width:8px;height:8px}#lychee_sidebar_content #tags .tag span:active .iconic{-webkit-transition:none;transition:none;fill:#b22027}#lychee_sidebar_content #leaflet_map_single_photo{margin:10px 0 0 20px;height:180px;width:calc(100% - 40px)}#lychee_sidebar_content .attr_location.search{cursor:pointer}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){#lychee_sidebar_container{position:absolute;right:0}#lychee_sidebar{background-color:rgba(0,0,0,.6)}#lychee_sidebar,#lychee_sidebar_container.active{width:240px}#lychee_sidebar_header{height:22px}#lychee_sidebar_header h1{margin:6px 0;font-size:13px}#lychee_sidebar_content{padding-bottom:10px}#lychee_sidebar_content .sidebar__divider{padding:6px 0 2px}#lychee_sidebar_content .sidebar__divider h1{margin:0 0 0 10px;font-size:12px}#lychee_sidebar_content #tags,#lychee_sidebar_content table{margin:4px 0 6px 10px;width:calc(100% - 16px)}#lychee_sidebar_content table tr td{padding:2px 0;font-size:11px;line-height:12px}#lychee_sidebar_content table tr td:first-child{width:80px}#lychee_sidebar_content #tags .empty{margin:0;font-size:11px}}@media only screen and (min-width:568px) and (max-width:768px),only screen and (min-width:568px) and (max-width:640px) and (orientation:landscape){#lychee_sidebar,#lychee_sidebar_container.active{width:280px}#lychee_sidebar_header{height:28px}#lychee_sidebar_header h1{margin:8px 0;font-size:15px}#lychee_sidebar_content{padding-bottom:10px}#lychee_sidebar_content .sidebar__divider{padding:8px 0 4px}#lychee_sidebar_content .sidebar__divider h1{margin:0 0 0 10px;font-size:13px}#lychee_sidebar_content #tags,#lychee_sidebar_content table{margin:4px 0 6px 10px;width:calc(100% - 16px)}#lychee_sidebar_content table tr td{padding:2px 0;font-size:12px;line-height:13px}#lychee_sidebar_content table tr td:first-child{width:90px}#lychee_sidebar_content #tags .empty{margin:0;font-size:12px}}#lychee_loading{height:0;-webkit-transition:height .3s;transition:height .3s;background-size:100px 3px;background-repeat:repeat-x;-webkit-animation-name:moveBackground;animation-name:moveBackground;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}#lychee_loading.loading{height:3px;background-image:-webkit-gradient(linear,left top,right top,from(#153674),color-stop(47%,#153674),color-stop(53%,#2651ae),to(#2651ae));background-image:linear-gradient(to right,#153674 0,#153674 47%,#2651ae 53%,#2651ae 100%)}#lychee_loading.error{height:40px;background-color:#2f0d0e;background-image:-webkit-gradient(linear,left top,right top,from(#451317),color-stop(47%,#451317),color-stop(53%,#aa3039),to(#aa3039));background-image:linear-gradient(to right,#451317 0,#451317 47%,#aa3039 53%,#aa3039 100%)}#lychee_loading.success{height:40px;background-color:#070;background-image:-webkit-gradient(linear,left top,right top,from(#070),color-stop(47%,#090),color-stop(53%,#0a0),to(#0c0));background-image:linear-gradient(to right,#070 0,#090 47%,#0a0 53%,#0c0 100%)}#lychee_loading h1{margin:13px 13px 0;color:#ddd;font-size:14px;font-weight:700;text-shadow:0 1px 0 #000;text-transform:capitalize}#lychee_loading h1 span{margin-left:10px;font-weight:400;text-transform:none}div.select,input,output,select,textarea{display:inline-block;position:relative}div.select>select{display:block;width:100%}div.select,input,output,select,select option,textarea{color:#fff;background-color:#2c2c2c;margin:0;font-size:inherit;line-height:inherit;padding:0;border:none;-webkit-box-shadow:none;box-shadow:none;outline:0}input[type=password],input[type=text],select{padding-top:3px;padding-bottom:3px}input[type=password],input[type=text]{padding-left:2px;padding-right:2px;background-color:transparent;border-bottom:1px solid #222;border-radius:0;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05)}input[type=password]:focus,input[type=text]:focus{border-bottom-color:#2293ec}input[type=password].error,input[type=text].error{border-bottom-color:#d92c34}input[type=checkbox]{top:2px;height:16px;width:16px;-webkit-appearance:none;-moz-appearance:none;appearance:none;color:#2293ec;border:none;border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}input[type=checkbox]::before{content:"✔";position:absolute;text-align:center;font-size:16px;line-height:16px;top:0;bottom:0;left:0;right:0;width:auto;height:auto;visibility:hidden}input[type=checkbox]:checked::before{visibility:visible}input[type=checkbox].slider{top:5px;height:22px;width:42px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);border-radius:11px;background:#2c2c2c}input[type=checkbox].slider::before{content:"";background-color:#2293ec;height:14px;width:14px;left:3px;top:3px;border:none;border-radius:7px;visibility:visible}input[type=checkbox].slider:checked{background-color:#2293ec}input[type=checkbox].slider:checked::before{left:auto;right:3px;background-color:#fff}div.select{font-size:12px;background:#2c2c2c;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02)}div.select::after{position:absolute;content:"≡";right:8px;top:3px;color:#2293ec;font-size:16px;font-weight:700;pointer-events:none}select{padding-left:8px;padding-right:8px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:0 0}select option{padding:2px 0;-webkit-transition:none;transition:none}form div.input-group{position:relative;margin:18px 0}form div.input-group:first-child{margin-top:0}form div.input-group:last-child{margin-bottom:0}form div.input-group.hidden{display:none}form div.input-group label{font-weight:700}form div.input-group p{display:block;margin:6px 0;font-size:13px;line-height:16px}form div.input-group p:last-child{margin-bottom:0}form div.input-group.stacked>label{display:block;margin-bottom:6px}form div.input-group.stacked>label>input[type=password],form div.input-group.stacked>label>input[type=text]{margin-top:12px}form div.input-group.stacked>div.select,form div.input-group.stacked>input,form div.input-group.stacked>output,form div.input-group.stacked>textarea{width:100%;display:block}form div.input-group.compact{padding-left:120px}form div.input-group.compact>label{display:block;position:absolute;margin:0;left:0;width:108px;height:auto;top:3px;bottom:0;overflow-y:hidden}form div.input-group.compact>div.select,form div.input-group.compact>input,form div.input-group.compact>output,form div.input-group.compact>textarea{display:block;width:100%}form div.input-group.compact-inverse{padding-left:36px}form div.input-group.compact-inverse label{display:block}form div.input-group.compact-inverse>div.select,form div.input-group.compact-inverse>input,form div.input-group.compact-inverse>output,form div.input-group.compact-inverse>textarea{display:block;position:absolute;width:16px;height:16px;top:2px;left:0}form div.input-group.compact-no-indent>label{display:inline}form div.input-group.compact-no-indent>div.select,form div.input-group.compact-no-indent>input,form div.input-group.compact-no-indent>output,form div.input-group.compact-no-indent>textarea{display:inline-block;margin-left:.3em;margin-right:.3em}div.basicModal.about-dialog div.basicModal__content h1{font-size:120%;font-weight:700;text-align:center;color:#fff}div.basicModal.about-dialog div.basicModal__content h2{font-weight:700;color:#fff}div.basicModal.about-dialog div.basicModal__content p.update-status.up-to-date-git,div.basicModal.about-dialog div.basicModal__content p.update-status.up-to-date-release{display:none}div.basicModal.about-dialog div.basicModal__content p.about-desc{line-height:1.4em}div.basicModal.downloads div.basicModal__content a.button{display:block;margin:12px 0;padding:12px;font-weight:700;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02);box-shadow:inset 0 1px 0 rgba(255,255,255,.02);border:1px solid rgba(0,0,0,.2)}div.basicModal.downloads div.basicModal__content a.button .iconic{width:12px;height:12px;margin-right:12px}div.basicModal.qr-code{width:300px}div.basicModal.qr-code div.basicModal__content{padding:12px}.basicModal.import div.basicModal__content{padding:12px 8px}.basicModal.import div.basicModal__content h1{margin-bottom:12px;color:#fff;font-size:16px;line-height:19px;font-weight:700;text-align:center}.basicModal.import div.basicModal__content ol{margin-top:12px;height:300px;background-color:#2c2c2c;overflow:hidden;overflow-y:auto;border-radius:3px;-webkit-box-shadow:inset 0 0 3px rgba(0,0,0,.4);box-shadow:inset 0 0 3px rgba(0,0,0,.4)}.basicModal.import div.basicModal__content ol li{float:left;padding:8px 0;width:100%;background-color:rgba(255,255,255,.02)}.basicModal.import div.basicModal__content ol li:nth-child(2n){background-color:rgba(255,255,255,0)}.basicModal.import div.basicModal__content ol li h2{float:left;padding:5px 10px;width:70%;color:#fff;font-size:14px;white-space:nowrap;overflow:hidden}.basicModal.import div.basicModal__content ol li p.status{float:left;padding:5px 10px;width:30%;color:#999;font-size:14px;text-align:right;-webkit-animation-name:pulse;animation-name:pulse;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.basicModal.import div.basicModal__content ol li p.status.error,.basicModal.import div.basicModal__content ol li p.status.success,.basicModal.import div.basicModal__content ol li p.status.warning{-webkit-animation:none;animation:none}.basicModal.import div.basicModal__content ol li p.status.error{color:#d92c34}.basicModal.import div.basicModal__content ol li p.status.warning{color:#fc0}.basicModal.import div.basicModal__content ol li p.status.success{color:#0a0}.basicModal.import div.basicModal__content ol li p.notice{float:left;padding:2px 10px 5px;width:100%;color:#999;font-size:12px;overflow:hidden;line-height:16px}.basicModal.import div.basicModal__content ol li p.notice:empty{display:none}div.basicModal.login div.basicModal__content a.button#signInKeyLess{position:absolute;display:block;color:#999;top:8px;left:8px;width:30px;height:30px;margin:0;padding:5px;cursor:pointer;-webkit-box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);border:1px solid rgba(0,0,0,.2)}div.basicModal.login div.basicModal__content a.button#signInKeyLess .iconic{width:100%;height:100%;fill:#999}div.basicModal.login div.basicModal__content p.version{font-size:12px;text-align:right}div.basicModal.login div.basicModal__content p.version span.update-status.up-to-date-git,div.basicModal.login div.basicModal__content p.version span.update-status.up-to-date-release{display:none}@media (hover:hover){#lychee_sidebar .edit:hover .iconic{fill:#fff}#lychee_sidebar #tags .tag:hover{background-color:rgba(0,0,0,.3)}#lychee_sidebar #tags .tag:hover.search{cursor:pointer}#lychee_sidebar #tags .tag:hover span{width:9px;margin:0 0 -2px 5px;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}#lychee_sidebar #tags .tag span:hover .iconic{fill:#e1575e}div.basicModal.login div.basicModal__content a.button#signInKeyLess:hover{color:#fff;background:inherit}div.basicModal.login div.basicModal__content a.button#signInKeyLess:hover .iconic{fill:#fff}}form.photo-links div.input-group{padding-right:30px}form.photo-links div.input-group a.button{display:block;position:absolute;margin:0;padding:4px;right:0;bottom:0;width:26px;height:26px;cursor:pointer;-webkit-box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);border:1px solid rgba(0,0,0,.2)}form.photo-links div.input-group a.button .iconic{width:100%;height:100%}form.token div.input-group{padding-right:82px}form.token div.input-group input.disabled,form.token div.input-group input[disabled]{color:#999}form.token div.input-group div.button-group{display:block;position:absolute;margin:0;padding:0;right:0;bottom:0;width:78px}form.token div.input-group div.button-group a.button{display:block;float:right;margin:0;padding:4px;bottom:4px;width:26px;height:26px;cursor:pointer;-webkit-box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);box-shadow:inset 1px 1px 0 rgba(255,255,255,.02);border:1px solid rgba(0,0,0,.2)}form.token div.input-group div.button-group a.button .iconic{width:100%;height:100%}#sensitive_warning{background:rgba(100,0,0,.95);text-align:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#fff}#sensitive_warning.active{display:-webkit-box;display:-ms-flexbox;display:flex}#sensitive_warning h1{font-size:36px;font-weight:700;border-bottom:2px solid #fff;margin-bottom:15px}#sensitive_warning p{font-size:20px;max-width:40%;margin-top:15px}.settings_view{width:90%;max-width:700px;margin-left:auto;margin-right:auto}.settings_view input.text{padding:9px 2px;width:calc(50% - 4px);background-color:transparent;color:#fff;border:none;border-bottom:1px solid #222;border-radius:0;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05);outline:0}.settings_view input.text:focus{border-bottom-color:#2293ec}.settings_view input.text .error{border-bottom-color:#d92c34}.settings_view .basicModal__button{color:#2293ec;display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);border-radius:5px}.settings_view .basicModal__button_MORE,.settings_view .basicModal__button_SAVE{color:#b22027;border-radius:5px}.settings_view>div{font-size:14px;width:100%;padding:12px 0}.settings_view>div p{margin:0 0 5%;width:100%;color:#ccc;line-height:16px}.settings_view>div p a{color:rgba(255,255,255,.9);text-decoration:none;border-bottom:1px dashed #888}.settings_view>div p:last-of-type{margin:0}.settings_view>div input.text{width:100%}.settings_view>div textarea{padding:9px;width:calc(100% - 18px);height:100px;background-color:transparent;color:#fff;border:1px solid #666;border-radius:0;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05);outline:0;resize:vertical}.settings_view>div textarea:focus{border-color:#2293ec}.settings_view>div .choice{padding:0 30px 15px;width:100%;color:#fff}.settings_view>div .choice:last-child{padding-bottom:40px}.settings_view>div .choice label{float:left;color:#fff;font-size:14px;font-weight:700}.settings_view>div .choice label input{position:absolute;margin:0;opacity:0}.settings_view>div .choice label .checkbox{float:left;display:block;width:16px;height:16px;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.settings_view>div .choice label .checkbox .iconic{-webkit-box-sizing:border-box;box-sizing:border-box;fill:#2293ec;padding:2px;opacity:0;-ms-transform:scale(0);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1)}.settings_view>div .select{position:relative;margin:1px 5px;padding:0;width:110px;color:#fff;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);font-size:11px;line-height:16px;overflow:hidden;outline:0;vertical-align:middle;background:rgba(0,0,0,.3);display:inline-block}.settings_view>div .select select{margin:0;padding:4px 8px;width:120%;color:#fff;font-size:11px;line-height:16px;border:0;outline:0;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background-color:transparent;background-image:none;-moz-appearance:none;-webkit-appearance:none;appearance:none}.settings_view>div .select select option{margin:0;padding:0;background:#fff;color:#333;-webkit-transition:none;transition:none}.settings_view>div .select select:disabled{color:#000;cursor:not-allowed}.settings_view>div .select::after{position:absolute;content:"≡";right:8px;top:4px;color:#2293ec;font-size:16px;line-height:16px;font-weight:700;pointer-events:none}.settings_view>div .switch{position:relative;display:inline-block;width:42px;height:22px;bottom:-2px;line-height:24px}.settings_view>div .switch input{opacity:0;width:0;height:0}.settings_view>div .slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);background:rgba(0,0,0,.3);-webkit-transition:.4s;transition:.4s}.settings_view>div .slider:before{position:absolute;content:"";height:14px;width:14px;left:3px;bottom:3px;background-color:#2293ec}.settings_view>div input:checked+.slider{background-color:#2293ec}.settings_view>div input:checked+.slider:before{-ms-transform:translateX(20px);-webkit-transform:translateX(20px);transform:translateX(20px);background-color:#fff}.settings_view>div .slider.round{border-radius:20px}.settings_view>div .slider.round:before{border-radius:50%}.settings_view .setting_category{font-size:20px;width:100%;padding-top:10px;padding-left:4px;border-bottom:1px dotted #222;margin-top:20px;color:#fff;font-weight:700;text-transform:capitalize}.settings_view .setting_line{font-size:14px;width:100%}.settings_view .setting_line:first-child,.settings_view .setting_line:last-child{padding-top:50px}.settings_view .setting_line p{min-width:550px;margin:0;color:#ccc;display:inline-block;width:100%;overflow-wrap:break-word}.settings_view .setting_line p a{color:rgba(255,255,255,.9);text-decoration:none;border-bottom:1px dashed #888}.settings_view .setting_line p:last-of-type{margin:0}.settings_view .setting_line p .warning{margin-bottom:30px;color:#d92c34;font-weight:700;font-size:18px;text-align:justify;line-height:22px}.settings_view .setting_line span.text{display:inline-block;padding:9px 4px;width:calc(50% - 12px);background-color:transparent;color:#fff;border:none}.settings_view .setting_line span.text_icon{width:5%}.settings_view .setting_line span.text_icon .iconic{width:15px;height:14px;margin:0 10px 0 1px;fill:#fff}.settings_view .setting_line input.text{width:calc(50% - 4px)}@media (hover:hover){.settings_view .basicModal__button:hover{background:#2293ec;color:#fff;cursor:pointer}.settings_view .basicModal__button_MORE:hover,.settings_view .basicModal__button_SAVE:hover{background:#b22027;color:#fff}.settings_view input:hover{border-bottom:1px solid #2293ec}}@media (hover:none){#lychee_left_menu a{padding:14px 8px 14px 32px}.settings_view input.text{border-bottom:1px solid #2293ec;margin:6px 0}.settings_view>div{padding:16px 0}.settings_view .basicModal__button{background:#2293ec;color:#fff;max-width:320px;margin-top:20px}.settings_view .basicModal__button_MORE,.settings_view .basicModal__button_SAVE{background:#b22027}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.settings_view{max-width:100%}.settings_view .setting_category{font-size:14px;padding-left:0;margin-bottom:4px}.settings_view .setting_line{font-size:12px}.settings_view .setting_line:first-child{padding-top:20px}.settings_view .setting_line p{min-width:unset;line-height:20px}.settings_view .setting_line p.warning{font-size:14px;line-height:16px;margin-bottom:0}.settings_view .setting_line p input,.settings_view .setting_line p span{padding:0}.settings_view .basicModal__button_SAVE{margin-top:20px}}.users_view{width:90%;max-width:700px;margin-left:auto;margin-right:auto}.users_view_line{font-size:14px;width:100%}.users_view_line:first-child,.users_view_line:last-child{padding-top:50px}.users_view_line p{width:550px;margin:0 0 5%;color:#ccc;display:inline-block}.users_view_line p a{color:rgba(255,255,255,.9);text-decoration:none;border-bottom:1px dashed #888}.users_view_line p.line,.users_view_line p:last-of-type{margin:0}.users_view_line span.text{display:inline-block;padding:9px 6px 9px 0;width:40%;background-color:transparent;color:#fff;border:none}.users_view_line span.text_icon{width:5%;min-width:32px}.users_view_line span.text_icon .iconic{width:15px;height:14px;margin:0 8px;fill:#fff}.users_view_line input.text{padding:9px 6px 9px 0;width:40%;background-color:transparent;color:#fff;border:none;border-bottom:1px solid #222;border-radius:0;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.05);box-shadow:0 1px 0 rgba(255,255,255,.05);outline:0;margin:0 0 10px}.users_view_line input.text:focus{border-bottom-color:#2293ec}.users_view_line input.text.error{border-bottom-color:#d92c34}.users_view_line .choice label input:checked~.checkbox .iconic{opacity:1;-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}.users_view_line .choice{display:inline-block;width:5%;min-width:32px;color:#fff}.users_view_line .choice input{position:absolute;margin:0;opacity:0}.users_view_line .choice .checkbox{display:inline-block;width:16px;height:16px;margin:10px 8px 0;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.users_view_line .choice .checkbox .iconic{-webkit-box-sizing:border-box;box-sizing:border-box;fill:#2293ec;padding:2px;opacity:0;-ms-transform:scale(0);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1)}.users_view_line .basicModal__button{display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);width:10%;min-width:72px;border-radius:0}.users_view_line .basicModal__button_OK{color:#2293ec;border-radius:5px 0 0 5px;margin-right:-4px}.users_view_line .basicModal__button_OK_no_DEL{border-radius:5px;min-width:144px;width:20%}.users_view_line .basicModal__button_DEL{color:#b22027;border-radius:0 5px 5px 0}.users_view_line .basicModal__button_CREATE{width:20%;color:#090;border-radius:5px;min-width:144px}.users_view_line .select{position:relative;margin:1px 5px;padding:0;width:110px;color:#fff;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);font-size:11px;line-height:16px;overflow:hidden;outline:0;vertical-align:middle;background:rgba(0,0,0,.3);display:inline-block}.users_view_line .select select{margin:0;padding:4px 8px;width:120%;color:#fff;font-size:11px;line-height:16px;border:0;outline:0;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background:0 0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.users_view_line .select select option{margin:0;padding:0;background:#fff;color:#333;-webkit-transition:none;transition:none}.users_view_line .select::after{position:absolute;content:"≡";right:8px;top:4px;color:#2293ec;font-size:16px;line-height:16px;font-weight:700;pointer-events:none}@media (hover:hover){.users_view_line .basicModal__button:hover{cursor:pointer;color:#fff}.users_view_line .basicModal__button_OK:hover{background:#2293ec}.users_view_line .basicModal__button_DEL:hover{background:#b22027}.users_view_line .basicModal__button_CREATE:hover{background:#090}.users_view_line input:hover{border-bottom:1px solid #2293ec}}@media (hover:none){.users_view_line .basicModal__button{color:#fff}.users_view_line .basicModal__button_OK{background:#2293ec}.users_view_line .basicModal__button_DEL{background:#b22027}.users_view_line .basicModal__button_CREATE{background:#090}.users_view_line input{border-bottom:1px solid #2293ec}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.users_view{width:100%;max-width:100%;padding:20px}.users_view_line p{width:100%}.users_view_line p .text,.users_view_line p input.text{width:36%;font-size:smaller}.users_view_line .choice{margin-left:-8px;margin-right:3px}}.u2f_view{width:90%;max-width:700px;margin-left:auto;margin-right:auto}.u2f_view_line{font-size:14px;width:100%}.u2f_view_line:first-child,.u2f_view_line:last-child{padding-top:50px}.u2f_view_line p{width:550px;margin:0 0 5%;color:#ccc;display:inline-block}.u2f_view_line p a{color:rgba(255,255,255,.9);text-decoration:none;border-bottom:1px dashed #888}.u2f_view_line p.line,.u2f_view_line p:last-of-type{margin:0}.u2f_view_line p.single{text-align:center}.u2f_view_line span.text{display:inline-block;padding:9px 4px;width:80%;background-color:transparent;color:#fff;border:none}.u2f_view_line span.text_icon{width:5%}.u2f_view_line span.text_icon .iconic{width:15px;height:14px;margin:0 15px 0 1px;fill:#fff}.u2f_view_line .choice label input:checked~.checkbox .iconic{opacity:1;-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}.u2f_view_line .choice{display:inline-block;width:5%;color:#fff}.u2f_view_line .choice input{position:absolute;margin:0;opacity:0}.u2f_view_line .choice .checkbox{display:inline-block;width:16px;height:16px;margin-top:10px;margin-left:2px;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.u2f_view_line .choice .checkbox .iconic{-webkit-box-sizing:border-box;box-sizing:border-box;fill:#2293ec;padding:2px;opacity:0;-ms-transform:scale(0);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1)}.u2f_view_line .basicModal__button{display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);width:20%;min-width:50px;border-radius:0}.u2f_view_line .basicModal__button_OK{color:#2293ec;border-radius:5px 0 0 5px}.u2f_view_line .basicModal__button_DEL{color:#b22027;border-radius:0 5px 5px 0}.u2f_view_line .basicModal__button_CREATE{width:100%;color:#090;border-radius:5px}.u2f_view_line .select{position:relative;margin:1px 5px;padding:0;width:110px;color:#fff;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);font-size:11px;line-height:16px;overflow:hidden;outline:0;vertical-align:middle;background:rgba(0,0,0,.3);display:inline-block}.u2f_view_line .select select{margin:0;padding:4px 8px;width:120%;color:#fff;font-size:11px;line-height:16px;border:0;outline:0;-webkit-box-shadow:none;box-shadow:none;border-radius:0;background:0 0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.u2f_view_line .select select option{margin:0;padding:0;background:#fff;color:#333;-webkit-transition:none;transition:none}.u2f_view_line .select::after{position:absolute;content:"≡";right:8px;top:4px;color:#2293ec;font-size:16px;line-height:16px;font-weight:700;pointer-events:none}@media (hover:hover){.u2f_view_line .basicModal__button:hover{cursor:pointer}.u2f_view_line .basicModal__button_OK:hover{background:#2293ec;color:#fff}.u2f_view_line .basicModal__button_DEL:hover{background:#b22027;color:#fff}.u2f_view_line .basicModal__button_CREATE:hover{background:#090;color:#fff}.u2f_view_line input:hover{border-bottom:1px solid #2293ec}}@media (hover:none){.u2f_view_line .basicModal__button{color:#fff}.u2f_view_line .basicModal__button_OK{background:#2293ec}.u2f_view_line .basicModal__button_DEL{background:#b22027}.u2f_view_line .basicModal__button_CREATE{background:#090}.u2f_view_line input{border-bottom:1px solid #2293ec}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.u2f_view{width:100%;max-width:100%;padding:20px}.u2f_view_line p{width:100%}.u2f_view_line .basicModal__button_CREATE{width:80%;margin:0 10%}}.logs_diagnostics_view{width:90%;margin-left:auto;margin-right:auto;color:#ccc;font-size:12px;line-height:14px}.logs_diagnostics_view pre{font-family:monospace;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;padding-right:30px}.clear_logs_update{padding-left:30px;margin:20px auto}.clear_logs_update .basicModal__button,.logs_diagnostics_view .basicModal__button{color:#2293ec;display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);border-radius:5px}.clear_logs_update .iconic,.logs_diagnostics_view .iconic{display:inline-block;margin:0 10px 0 1px;width:13px;height:12px;fill:#2293ec}.clear_logs_update .button_left,.logs_diagnostics_view .button_left{margin-left:24px;width:400px}@media (hover:none){.clear_logs_update .basicModal__button,.logs_diagnostics_view .basicModal__button{background:#2293ec;color:#fff;max-width:320px;margin-top:20px}.clear_logs_update .iconic,.logs_diagnostics_view .iconic{fill:#fff}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.clear_logs_update,.logs_diagnostics_view{width:100%;max-width:100%;font-size:11px;line-height:12px}.clear_logs_update .basicModal__button,.clear_logs_update .button_left,.logs_diagnostics_view .basicModal__button,.logs_diagnostics_view .button_left{width:80%;margin:0 10%}.logs_diagnostics_view{padding:10px 10px 0 0}.clear_logs_update{padding:10px 10px 0;margin:0}}.sharing_view{width:90%;max-width:700px;margin-left:auto;margin-right:auto;margin-top:20px}.sharing_view .sharing_view_line{width:100%;display:block;clear:left}.sharing_view .col-xs-1,.sharing_view .col-xs-10,.sharing_view .col-xs-11,.sharing_view .col-xs-12,.sharing_view .col-xs-2,.sharing_view .col-xs-3,.sharing_view .col-xs-4,.sharing_view .col-xs-5,.sharing_view .col-xs-6,.sharing_view .col-xs-7,.sharing_view .col-xs-8,.sharing_view .col-xs-9{float:left;position:relative;min-height:1px}.sharing_view .col-xs-2{width:10%;padding-right:3%;padding-left:3%}.sharing_view .col-xs-5{width:42%}.sharing_view .btn-block+.btn-block{margin-top:5px}.sharing_view .btn-block{display:block;width:100%}.sharing_view .btn-default{color:#2293ec;border-color:#2293ec;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.sharing_view .btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.sharing_view select[multiple],.sharing_view select[size]{height:150px}.sharing_view .form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}.sharing_view .iconic{display:inline-block;width:15px;height:14px;fill:#2293ec}.sharing_view .iconic .iconic.ionicons{margin:0 8px -2px 0;width:18px;height:18px}.sharing_view .blue .iconic{fill:#2293ec}.sharing_view .grey .iconic{fill:#b4b4b4}.sharing_view p{width:100%;color:#ccc;text-align:center;font-size:14px;display:block}.sharing_view p.with{padding:15px 0}.sharing_view span.text{display:inline-block;padding:0 2px;width:40%;background-color:transparent;color:#fff;border:none}.sharing_view span.text:last-of-type{width:5%}.sharing_view span.text .iconic{width:15px;height:14px;margin:0 10px 0 1px;fill:#fff}.sharing_view .basicModal__button{margin-top:10px;color:#2293ec;display:inline-block;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.02),inset 1px 0 0 rgba(0,0,0,.2);border-radius:5px}.sharing_view .choice label input:checked~.checkbox .iconic{opacity:1;-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}.sharing_view .choice{display:inline-block;width:5%;margin:0 10px;color:#fff}.sharing_view .choice input{position:absolute;margin:0;opacity:0}.sharing_view .choice .checkbox{display:inline-block;width:16px;height:16px;margin-top:10px;margin-left:2px;background:rgba(0,0,0,.5);border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.7);box-shadow:0 0 0 1px rgba(0,0,0,.7)}.sharing_view .choice .checkbox .iconic{-webkit-box-sizing:border-box;box-sizing:border-box;fill:#2293ec;padding:2px;opacity:0;-ms-transform:scale(0);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1);transition:opacity .2s cubic-bezier(.51,.92,.24,1),transform .2s cubic-bezier(.51,.92,.24,1),-webkit-transform .2s cubic-bezier(.51,.92,.24,1)}.sharing_view .select{position:relative;padding:0;color:#fff;border-radius:3px;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.02);box-shadow:0 1px 0 rgba(255,255,255,.02);font-size:14px;line-height:16px;outline:0;vertical-align:middle;background:rgba(0,0,0,.3);display:inline-block}.sharing_view .borderBlue{border:1px solid #2293ec}@media (hover:none){.sharing_view .basicModal__button{background:#2293ec;color:#fff}.sharing_view input{border-bottom:1px solid #2293ec}}@media only screen and (max-width:567px),only screen and (max-width:640px) and (orientation:portrait){.sharing_view{width:100%;max-width:100%;padding:10px}.sharing_view .select{font-size:12px}.sharing_view .iconic{margin-left:-4px}.sharing_view_line p{width:100%}.sharing_view_line .basicModal__button{width:80%;margin:0 10%}}#multiselect{position:absolute;background-color:rgba(0,94,204,.3);border:1px solid #005ecc;border-radius:3px;z-index:5}.justified-layout,.unjustified-layout{margin:30px;width:100%;position:relative}.justified-layout.laying-out,.unjustified-layout.laying-out{display:none}.justified-layout>.photo{position:absolute;--lychee-default-height:320px;margin:0}.unjustified-layout>.photo{float:left;max-height:240px;margin:5px}.justified-layout>.photo>.thumbimg,.justified-layout>.photo>.thumbimg>img,.unjustified-layout>.photo>.thumbimg,.unjustified-layout>.photo>.thumbimg>img{width:100%;height:100%;border:none;-o-object-fit:cover;object-fit:cover}.justified-layout>.photo>.overlay,.unjustified-layout>.photo>.overlay{width:100%;bottom:0;margin:0}.justified-layout>.photo>.overlay>h1,.unjustified-layout>.photo>.overlay>h1{width:auto;margin-right:15px}@media only screen and (min-width:320px) and (max-width:567px){.justified-layout{margin:8px}.justified-layout .photo{--lychee-default-height:160px}}@media only screen and (min-width:568px) and (max-width:639px){.justified-layout{margin:9px}.justified-layout .photo{--lychee-default-height:200px}}@media only screen and (min-width:640px) and (max-width:768px){.justified-layout{margin:10px}.justified-layout .photo{--lychee-default-height:240px}}#lychee_footer{text-align:center;padding:5px 0;background:#1d1d1d;-webkit-transition:color .3s,opacity .3s ease-out,margin-left .5s,-webkit-transform .3s ease-out,-webkit-box-shadow .3s;transition:color .3s,opacity .3s ease-out,transform .3s ease-out,box-shadow .3s,margin-left .5s,-webkit-transform .3s ease-out,-webkit-box-shadow .3s}#lychee_footer p{color:#ccc;font-size:.75em;font-weight:400;line-height:26px}#lychee_footer p a,#lychee_footer p a:visited{color:#ccc}#lychee_footer p.home_copyright,#lychee_footer p.hosted_by{text-transform:uppercase}#lychee_footer #home_socials a[href=""],#lychee_footer p:empty,.hide_footer,body.mode-frame div#footer,body.mode-none div#footer{display:none}@font-face{font-family:socials;src:url(fonts/socials.eot?egvu10);src:url(fonts/socials.eot?egvu10#iefix) format("embedded-opentype"),url(fonts/socials.ttf?egvu10) format("truetype"),url(fonts/socials.woff?egvu10) format("woff"),url(fonts/socials.svg?egvu10#socials) format("svg");font-weight:400;font-style:normal}#socials_footer{padding:0;text-align:center;left:0;right:0}.socialicons{display:inline-block;font-size:18px;font-family:socials!important;speak:none;color:#ccc;text-decoration:none;margin:15px 15px 5px;transition:.3s;-webkit-transition:.3s;-moz-transition:.3s;-o-transition:.3s}#twitter:before{content:"\ea96"}#instagram:before{content:"\ea92"}#youtube:before{content:"\ea9d"}#flickr:before{content:"\eaa4"}#facebook:before{content:"\ea91"}@media (hover:hover){.sharing_view .basicModal__button:hover{background:#2293ec;color:#fff;cursor:pointer}.sharing_view input:hover{border-bottom:1px solid #2293ec}.socialicons:hover{color:#b5b5b5;-ms-transform:scale(1.3);transform:scale(1.3);-webkit-transform:scale(1.3)}}@media tv{.basicModal__button:focus{background:#2293ec;color:#fff;cursor:pointer;outline-style:none}.basicModal__button#basicModal__action:focus{color:#fff}.photo:focus{outline:#fff solid 10px}.album:focus{outline-width:0}.toolbar .button:focus{outline-width:0;background-color:#fff}.header__title:focus{outline-width:0;background-color:#fff;color:#000}.toolbar .button:focus .iconic{fill:#000}#imageview{background-color:#000}#imageview #image,#imageview #livephoto{outline-width:0}}#lychee_view_container{position:absolute;top:0;left:0;height:100%;width:100%;overflow:clip auto}.leaflet-image-layer,.leaflet-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane,.leaflet-pane>canvas,.leaflet-pane>svg,.leaflet-tile,.leaflet-tile-container,.leaflet-zoom-box{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden;-webkit-tap-highlight-color:transparent;background:#ddd;outline-offset:1px;font-family:"Helvetica Neue",Arial,Helvetica,sans-serif;font-size:.75rem;line-height:1.5}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::-moz-selection{background:0 0}.leaflet-tile::selection{background:0 0}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer{max-width:none!important;max-height:none!important;width:auto;padding:0}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4);color:#0078a8}.leaflet-tile{-webkit-filter:inherit;filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;-webkit-box-sizing:border-box;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto;float:left;clear:both}.leaflet-bottom,.leaflet-top{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-right .leaflet-control{float:right;margin-right:10px}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1),-webkit-transform .25s cubic-bezier(0,0,.25,1)}.leaflet-pan-anim .leaflet-tile,.leaflet-zoom-anim .leaflet-tile{-webkit-transition:none;transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-control,.leaflet-popup-pane{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:grabbing}.leaflet-image-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-image-layer.leaflet-interactive,.leaflet-marker-icon.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-zoom-box{border:2px dotted #38f;background:rgba(255,255,255,.5)}.leaflet-bar{-webkit-box-shadow:0 1px 5px rgba(0,0,0,.65);box-shadow:0 1px 5px rgba(0,0,0,.65);border-radius:4px}.leaflet-bar a{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:focus,.leaflet-bar a:hover{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:bold 18px "Lucida Console",Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{-webkit-box-shadow:0 1px 5px rgba(0,0,0,.4);box-shadow:0 1px 5px rgba(0,0,0,.4);background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url(images/layers.png);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(images/layers-2x.png);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block;font-size:1.08333em}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(images/marker-icon.png)}.leaflet-container .leaflet-control-attribution{background:rgba(255,255,255,.8);margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:focus,.leaflet-control-attribution a:hover{text-decoration:underline}.leaflet-attribution-flag{display:inline!important;vertical-align:baseline!important;width:1em;height:.6669em}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;white-space:nowrap;-webkit-box-sizing:border-box;box-sizing:border-box;background:rgba(255,255,255,.8);text-shadow:1px 1px #fff}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-bar,.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers{-webkit-box-shadow:none;box-shadow:none}.leaflet-touch .leaflet-bar,.leaflet-touch .leaflet-control-layers{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 24px 13px 20px;line-height:1.3;font-size:1.08333em;min-height:1px}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-top:-1px;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;pointer-events:auto;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;-webkit-box-shadow:0 3px 14px rgba(0,0,0,.4);box-shadow:0 3px 14px rgba(0,0,0,.4)}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;border:none;text-align:center;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;color:#757575;text-decoration:none;background:0 0}.leaflet-container a.leaflet-popup-close-button:focus,.leaflet-container a.leaflet-popup-close-button:hover{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto}.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.4);box-shadow:0 1px 3px rgba(0,0,0,.4)}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before,.leaflet-tooltip-top:before{position:absolute;pointer-events:none;border:6px solid transparent;background:0 0;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.leaflet-cluster-anim .leaflet-marker-icon,.leaflet-cluster-anim .leaflet-marker-shadow{-webkit-transition:opacity .3s ease-in,-webkit-transform .3s ease-out;transition:transform .3s ease-out,opacity .3s ease-in,-webkit-transform .3s ease-out}.leaflet-cluster-spider-leg{-webkit-transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in;transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in}.leaflet-marker-photo{border:2px solid #fff;-webkit-box-shadow:3px 3px 10px #888;box-shadow:3px 3px 10px #888}.leaflet-marker-photo div{width:100%;height:100%;background-size:cover;background-position:center center;background-repeat:no-repeat}.leaflet-marker-photo b{position:absolute;top:-7px;right:-11px;color:#555;background-color:#fff;border-radius:8px;height:12px;min-width:12px;line-height:12px;text-align:center;padding:3px;-webkit-box-shadow:0 3px 14px rgba(0,0,0,.4);box-shadow:0 3px 14px rgba(0,0,0,.4)} \ No newline at end of file diff --git a/public/dist/frontend.js b/public/dist/frontend.js index 7c19b86e016..0f7530b1cfa 100644 --- a/public/dist/frontend.js +++ b/public/dist/frontend.js @@ -1,5 +1,5 @@ -/*! jQuery v3.6.3 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},S=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||S).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.3",E=function(e,t){return new E.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,S)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=E)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{if(d.cssSupportsSelector&&!CSS.supports("selector(:is("+c+"))"))throw new Error;return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===E&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[E]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,S=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.cssSupportsSelector=ce(function(){return CSS.supports("selector(*)")&&C.querySelectorAll(":is(:jqfake)")&&!CSS.supports("selector(:is(*,:jqfake))")}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=E,!C.getElementsByName||!C.getElementsByName(E).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&S){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&S){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&S)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+E+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+E+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),d.cssSupportsSelector||y.push(":has"),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType&&e.documentElement||e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&S&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:S,!0)),N.test(r[1])&&E.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=S.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)}).prototype=E.fn,D=E(S);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=S.createDocumentFragment().appendChild(S.createElement("div")),(fe=S.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?E.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),S.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;E.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||E.expando+"_"+Ct.guid++;return this[e]=!0,e}}),E.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||E.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?E(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=S.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=S.implementation.createHTMLDocument("")).createElement("base")).href=S.location.href,t.head.appendChild(r)):t=S),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&E(o).remove(),E.merge([],i.childNodes)));var r,i,o},E.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(E.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},E.expr.pseudos.animated=function(t){return E.grep(E.timers,function(e){return t===e.elem}).length},E.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=E.css(e,"position"),c=E(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=E.css(e,"top"),u=E.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),i.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-E.css(r,"marginTop",!0),left:t.left-i.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===E.css(e,"position"))e=e.offsetParent;return e||re})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;E.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(a,s){E.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){E.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?E.css(e,t,i):E.style(e,t,n,i)},s,n?e:void 0,n)}})}),E.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){E.fn[t]=function(e){return this.on(t,e)}}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},R=function(){V()},M=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&z(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function X(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&M(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function U(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function z(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",R),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Me(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return R(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return R(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0=layoutConfig.maxNumRows){currentRow=null;return true}currentRow=createNewRow(layoutConfig,layoutData);if(!itemAdded){itemAdded=currentRow.addItem(itemData);if(currentRow.isLayoutComplete()){laidOutItems=laidOutItems.concat(addRow(layoutConfig,layoutData,currentRow));if(layoutData._rows.length>=layoutConfig.maxNumRows){currentRow=null;return true}currentRow=createNewRow(layoutConfig,layoutData)}}}});if(currentRow&¤tRow.getItems().length&&layoutConfig.showWidows){if(layoutData._rows.length){if(layoutData._rows[layoutData._rows.length-1].isBreakoutRow){nextToLastRowHeight=layoutData._rows[layoutData._rows.length-1].targetRowHeight}else{nextToLastRowHeight=layoutData._rows[layoutData._rows.length-1].height}currentRow.forceComplete(false,nextToLastRowHeight)}else{currentRow.forceComplete(false)}laidOutItems=laidOutItems.concat(addRow(layoutConfig,layoutData,currentRow));layoutConfig._widowCount=currentRow.getItems().length}layoutData._containerHeight=layoutData._containerHeight-layoutConfig.boxSpacing.vertical;layoutData._containerHeight=layoutData._containerHeight+layoutConfig.containerPadding.bottom;return{containerHeight:layoutData._containerHeight,widowCount:layoutConfig._widowCount,boxes:layoutData._layoutItems}}module.exports=function(input,config){var layoutConfig={};var layoutData={};var defaults={containerWidth:1060,containerPadding:10,boxSpacing:10,targetRowHeight:320,targetRowHeightTolerance:.25,maxNumRows:Number.POSITIVE_INFINITY,forceAspectRatio:false,showWidows:true,fullWidthBreakoutRowCadence:false,widowLayoutStyle:"left"};var containerPadding={};var boxSpacing={};config=config||{};layoutConfig=Object.assign(defaults,config);containerPadding.top=!isNaN(parseFloat(layoutConfig.containerPadding.top))?layoutConfig.containerPadding.top:layoutConfig.containerPadding;containerPadding.right=!isNaN(parseFloat(layoutConfig.containerPadding.right))?layoutConfig.containerPadding.right:layoutConfig.containerPadding;containerPadding.bottom=!isNaN(parseFloat(layoutConfig.containerPadding.bottom))?layoutConfig.containerPadding.bottom:layoutConfig.containerPadding;containerPadding.left=!isNaN(parseFloat(layoutConfig.containerPadding.left))?layoutConfig.containerPadding.left:layoutConfig.containerPadding;boxSpacing.horizontal=!isNaN(parseFloat(layoutConfig.boxSpacing.horizontal))?layoutConfig.boxSpacing.horizontal:layoutConfig.boxSpacing;boxSpacing.vertical=!isNaN(parseFloat(layoutConfig.boxSpacing.vertical))?layoutConfig.boxSpacing.vertical:layoutConfig.boxSpacing;layoutConfig.containerPadding=containerPadding;layoutConfig.boxSpacing=boxSpacing;layoutData._layoutItems=[];layoutData._awakeItems=[];layoutData._inViewportItems=[];layoutData._leadingOrphans=[];layoutData._trailingOrphans=[];layoutData._containerHeight=layoutConfig.containerPadding.top;layoutData._rows=[];layoutData._orphans=[];layoutConfig._widowCount=0;return computeLayout(layoutConfig,layoutData,input.map(function(item){if(item.width&&item.height){return{aspectRatio:item.width/item.height}}else{return{aspectRatio:item}}}))}},{"./row":1}]},{},[]); /* @preserve - * Leaflet 1.9.3, a JS library for interactive maps. https://leafletjs.com - * (c) 2010-2022 Vladimir Agafonkin, (c) 2010-2011 CloudMade + * Leaflet 1.9.4, a JS library for interactive maps. https://leafletjs.com + * (c) 2010-2023 Vladimir Agafonkin, (c) 2010-2011 CloudMade */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).leaflet={})}(this,function(t){"use strict";function l(t){for(var e,i,n=1,o=arguments.length;n=this.min.x&&i.x<=this.max.x&&e.y>=this.min.y&&i.y<=this.max.y},intersects:function(t){t=_(t);var e=this.min,i=this.max,n=t.min,t=t.max,o=t.x>=e.x&&n.x<=i.x,t=t.y>=e.y&&n.y<=i.y;return o&&t},overlaps:function(t){t=_(t);var e=this.min,i=this.max,n=t.min,t=t.max,o=t.x>e.x&&n.xe.y&&n.y=n.lat&&i.lat<=o.lat&&e.lng>=n.lng&&i.lng<=o.lng},intersects:function(t){t=g(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),t=t.getNorthEast(),o=t.lat>=e.lat&&n.lat<=i.lat,t=t.lng>=e.lng&&n.lng<=i.lng;return o&&t},overlaps:function(t){t=g(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),t=t.getNorthEast(),o=t.lat>e.lat&&n.late.lng&&n.lng","http://www.w3.org/2000/svg"===(Ft.firstChild&&Ft.firstChild.namespaceURI));function y(t){return 0<=navigator.userAgent.toLowerCase().indexOf(t)}var b={ie:pt,ielt9:mt,edge:n,webkit:ft,android:gt,android23:vt,androidStock:yt,opera:xt,chrome:wt,gecko:bt,safari:Pt,phantom:Lt,opera12:o,win:Tt,ie3d:Mt,webkit3d:zt,gecko3d:_t,any3d:Ct,mobile:Zt,mobileWebkit:St,mobileWebkit3d:Et,msPointer:kt,pointer:Ot,touch:Bt,touchNative:At,mobileOpera:It,mobileGecko:Rt,retina:Nt,passiveEvents:Dt,canvas:jt,svg:Ht,vml:!Ht&&function(){try{var t=document.createElement("div"),e=(t.innerHTML='',t.firstChild);return e.style.behavior="url(#default#VML)",e&&"object"==typeof e.adj}catch(t){return!1}}(),inlineSvg:Ft,mac:0===navigator.platform.indexOf("Mac"),linux:0===navigator.platform.indexOf("Linux")},Wt=b.msPointer?"MSPointerDown":"pointerdown",Ut=b.msPointer?"MSPointerMove":"pointermove",Vt=b.msPointer?"MSPointerUp":"pointerup",qt=b.msPointer?"MSPointerCancel":"pointercancel",Gt={touchstart:Wt,touchmove:Ut,touchend:Vt,touchcancel:qt},Kt={touchstart:function(t,e){e.MSPOINTER_TYPE_TOUCH&&e.pointerType===e.MSPOINTER_TYPE_TOUCH&&O(e);ee(t,e)},touchmove:ee,touchend:ee,touchcancel:ee},Yt={},Xt=!1;function Jt(t,e,i){return"touchstart"!==e||Xt||(document.addEventListener(Wt,$t,!0),document.addEventListener(Ut,Qt,!0),document.addEventListener(Vt,te,!0),document.addEventListener(qt,te,!0),Xt=!0),Kt[e]?(i=Kt[e].bind(this,i),t.addEventListener(Gt[e],i,!1),i):(console.warn("wrong event specified:",e),u)}function $t(t){Yt[t.pointerId]=t}function Qt(t){Yt[t.pointerId]&&(Yt[t.pointerId]=t)}function te(t){delete Yt[t.pointerId]}function ee(t,e){if(e.pointerType!==(e.MSPOINTER_TYPE_MOUSE||"mouse")){for(var i in e.touches=[],Yt)e.touches.push(Yt[i]);e.changedTouches=[e],t(e)}}var ie=200;function ne(t,i){t.addEventListener("dblclick",i);var n,o=0;function e(t){var e;1!==t.detail?n=t.detail:"mouse"===t.pointerType||t.sourceCapabilities&&!t.sourceCapabilities.firesTouchEvents||((e=Ne(t)).some(function(t){return t instanceof HTMLLabelElement&&t.attributes.for})&&!e.some(function(t){return t instanceof HTMLInputElement||t instanceof HTMLSelectElement})||((e=Date.now())-o<=ie?2===++n&&i(function(t){var e,i,n={};for(i in t)e=t[i],n[i]=e&&e.bind?e.bind(t):e;return(t=n).type="dblclick",n.detail=2,n.isTrusted=!1,n._simulated=!0,n}(t)):n=1,o=e))}return t.addEventListener("click",e),{dblclick:i,simDblclick:e}}var oe,se,re,ae,he,le,ue=we(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),ce=we(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),de="webkitTransition"===ce||"OTransition"===ce?ce+"End":"transitionend";function _e(t){return"string"==typeof t?document.getElementById(t):t}function pe(t,e){var i=t.style[e]||t.currentStyle&&t.currentStyle[e];return"auto"===(i=i&&"auto"!==i||!document.defaultView?i:(t=document.defaultView.getComputedStyle(t,null))?t[e]:null)?null:i}function P(t,e,i){t=document.createElement(t);return t.className=e||"",i&&i.appendChild(t),t}function T(t){var e=t.parentNode;e&&e.removeChild(t)}function me(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function fe(t){var e=t.parentNode;e&&e.lastChild!==t&&e.appendChild(t)}function ge(t){var e=t.parentNode;e&&e.firstChild!==t&&e.insertBefore(t,e.firstChild)}function ve(t,e){return void 0!==t.classList?t.classList.contains(e):0<(t=xe(t)).length&&new RegExp("(^|\\s)"+e+"(\\s|$)").test(t)}function M(t,e){var i;if(void 0!==t.classList)for(var n=W(e),o=0,s=n.length;othis.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,e){this._enforcingBounds=!0;var i=this.getCenter(),t=this._limitCenter(i,this._zoom,g(t));return i.equals(t)||this.panTo(t,e),this._enforcingBounds=!1,this},panInside:function(t,e){var i=m((e=e||{}).paddingTopLeft||e.padding||[0,0]),n=m(e.paddingBottomRight||e.padding||[0,0]),o=this.project(this.getCenter()),t=this.project(t),s=this.getPixelBounds(),i=_([s.min.add(i),s.max.subtract(n)]),s=i.getSize();return i.contains(t)||(this._enforcingBounds=!0,n=t.subtract(i.getCenter()),i=i.extend(t).getSize().subtract(s),o.x+=n.x<0?-i.x:i.x,o.y+=n.y<0?-i.y:i.y,this.panTo(this.unproject(o),e),this._enforcingBounds=!1),this},invalidateSize:function(t){if(!this._loaded)return this;t=l({animate:!1,pan:!0},!0===t?{animate:!0}:t);var e=this.getSize(),i=(this._sizeChanged=!0,this._lastCenter=null,this.getSize()),n=e.divideBy(2).round(),o=i.divideBy(2).round(),n=n.subtract(o);return n.x||n.y?(t.animate&&t.pan?this.panBy(n):(t.pan&&this._rawPanBy(n),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(a(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:e,newSize:i})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){var e,i;return t=this._locateOptions=l({timeout:1e4,watch:!1},t),"geolocation"in navigator?(e=a(this._handleGeolocationResponse,this),i=a(this._handleGeolocationError,this),t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,i,t):navigator.geolocation.getCurrentPosition(e,i,t)):this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var e;this._container._leaflet_id&&(e=t.code,t=t.message||(1===e?"permission denied":2===e?"position unavailable":"timeout"),this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:e,message:"Geolocation error: "+t+"."}))},_handleGeolocationResponse:function(t){if(this._container._leaflet_id){var e,i,n=new v(t.coords.latitude,t.coords.longitude),o=n.toBounds(2*t.coords.accuracy),s=this._locateOptions,r=(s.setView&&(e=this.getBoundsZoom(o),this.setView(n,s.maxZoom?Math.min(e,s.maxZoom):e)),{latlng:n,bounds:o,timestamp:t.timestamp});for(i in t.coords)"number"==typeof t.coords[i]&&(r[i]=t.coords[i]);this.fire("locationfound",r)}},addHandler:function(t,e){return e&&(e=this[t]=new e(this),this._handlers.push(e),this.options[t]&&e.enable()),this},remove:function(){if(this._initEvents(!0),this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}for(var t in void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),T(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(r(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload"),this._layers)this._layers[t].remove();for(t in this._panes)T(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,e){e=P("div","leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),e||this._mapPane);return t&&(this._panes[t]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter.clone():this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new s(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,e,i){t=g(t),i=m(i||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),t=t.getSouthEast(),i=this.getSize().subtract(i),t=_(this.project(t,n),this.project(r,n)).getSize(),r=b.any3d?this.options.zoomSnap:1,a=i.x/t.x,i=i.y/t.y,t=e?Math.max(a,i):Math.min(a,i),n=this.getScaleZoom(t,n);return r&&(n=Math.round(n/(r/100))*(r/100),n=e?Math.ceil(n/r)*r:Math.floor(n/r)*r),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new p(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,e){t=this._getTopLeftPoint(t,e);return new f(t,t.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return"string"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,e){var i=this.options.crs;return e=void 0===e?this._zoom:e,i.scale(t)/i.scale(e)},getScaleZoom:function(t,e){var i=this.options.crs,t=(e=void 0===e?this._zoom:e,i.zoom(t*i.scale(e)));return isNaN(t)?1/0:t},project:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.latLngToPoint(w(t),e)},unproject:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.pointToLatLng(m(t),e)},layerPointToLatLng:function(t){t=m(t).add(this.getPixelOrigin());return this.unproject(t)},latLngToLayerPoint:function(t){return this.project(w(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(w(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(g(t))},distance:function(t,e){return this.options.crs.distance(w(t),w(e))},containerPointToLayerPoint:function(t){return m(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return m(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){t=this.containerPointToLayerPoint(m(t));return this.layerPointToLatLng(t)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(w(t)))},mouseEventToContainerPoint:function(t){return De(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){t=this._container=_e(t);if(!t)throw new Error("Map container not found.");if(t._leaflet_id)throw new Error("Map container is already initialized.");S(t,"scroll",this._onScroll,this),this._containerId=h(t)},_initLayout:function(){var t=this._container,e=(this._fadeAnimated=this.options.fadeAnimation&&b.any3d,M(t,"leaflet-container"+(b.touch?" leaflet-touch":"")+(b.retina?" leaflet-retina":"")+(b.ielt9?" leaflet-oldie":"")+(b.safari?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":"")),pe(t,"position"));"absolute"!==e&&"relative"!==e&&"fixed"!==e&&"sticky"!==e&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),Z(this._mapPane,new p(0,0)),this.createPane("tilePane"),this.createPane("overlayPane"),this.createPane("shadowPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(M(t.markerPane,"leaflet-zoom-hide"),M(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,e,i){Z(this._mapPane,new p(0,0));var n=!this._loaded,o=(this._loaded=!0,e=this._limitZoom(e),this.fire("viewprereset"),this._zoom!==e);this._moveStart(o,i)._move(t,e)._moveEnd(o),this.fire("viewreset"),n&&this.fire("load")},_moveStart:function(t,e){return t&&this.fire("zoomstart"),e||this.fire("movestart"),this},_move:function(t,e,i,n){void 0===e&&(e=this._zoom);var o=this._zoom!==e;return this._zoom=e,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),n?i&&i.pinch&&this.fire("zoom",i):((o||i&&i.pinch)&&this.fire("zoom",i),this.fire("move",i)),this},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return r(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){Z(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={};var e=t?k:S;e((this._targets[h(this._container)]=this)._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",this._handleDOMEvent,this),this.options.trackResize&&e(window,"resize",this._onResize,this),b.any3d&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){r(this._resizeRequest),this._resizeRequest=x(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,e){for(var i,n=[],o="mouseout"===e||"mouseover"===e,s=t.target||t.srcElement,r=!1;s;){if((i=this._targets[h(s)])&&("click"===e||"preclick"===e)&&this._draggableMoved(i)){r=!0;break}if(i&&i.listens(e,!0)){if(o&&!Fe(s,t))break;if(n.push(i),o)break}if(s===this._container)break;s=s.parentNode}return n=n.length||r||o||!this.listens(e,!0)?n:[this]},_isClickDisabled:function(t){for(;t&&t!==this._container;){if(t._leaflet_disable_click)return!0;t=t.parentNode}},_handleDOMEvent:function(t){var e,i=t.target||t.srcElement;!this._loaded||i._leaflet_disable_events||"click"===t.type&&this._isClickDisabled(i)||("mousedown"===(e=t.type)&&Me(i),this._fireDOMEvent(t,e))},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,e,i){"click"===t.type&&((a=l({},t)).type="preclick",this._fireDOMEvent(a,a.type,i));var n=this._findEventTargets(t,e);if(i){for(var o=[],s=0;sthis.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(e),n=this._getCenterOffset(t)._divideBy(1-1/n);if(!0!==i.animate&&!this.getSize().contains(n))return!1;x(function(){this._moveStart(!0,!1)._animateZoom(t,e,!0)},this)}return!0},_animateZoom:function(t,e,i,n){this._mapPane&&(i&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=e,M(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:e,noUpdate:n}),this._tempFireZoomEvent||(this._tempFireZoomEvent=this._zoom!==this._animateToZoom),this._move(this._animateToCenter,this._animateToZoom,void 0,!0),setTimeout(a(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&z(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom,void 0,!0),this._tempFireZoomEvent&&this.fire("zoom"),delete this._tempFireZoomEvent,this.fire("move"),this._moveEnd(!0))}});function Ue(t){return new B(t)}var Ve,B=et.extend({options:{position:"topright"},initialize:function(t){c(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var e=this._map;return e&&e.removeControl(this),this.options.position=t,e&&e.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var e=this._container=this.onAdd(t),i=this.getPosition(),t=t._controlCorners[i];return M(e,"leaflet-control"),-1!==i.indexOf("bottom")?t.insertBefore(e,t.firstChild):t.appendChild(e),this._map.on("unload",this.remove,this),this},remove:function(){return this._map&&(T(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null),this},_refocusOnMap:function(t){this._map&&t&&0",e=document.createElement("div");return e.innerHTML=t,e.firstChild},_addItem:function(t){var e,i=document.createElement("label"),n=this._map.hasLayer(t.layer),n=(t.overlay?((e=document.createElement("input")).type="checkbox",e.className="leaflet-control-layers-selector",e.defaultChecked=n):e=this._createRadioElement("leaflet-base-layers_"+h(this),n),this._layerControlInputs.push(e),e.layerId=h(t.layer),S(e,"click",this._onInputClick,this),document.createElement("span")),o=(n.innerHTML=" "+t.name,document.createElement("span"));return i.appendChild(o),o.appendChild(e),o.appendChild(n),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(i),this._checkDisabledLayers(),i},_onInputClick:function(){var t,e,i=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=i.length-1;0<=s;s--)t=i[s],e=this._getLayer(t.layerId).layer,t.checked?n.push(e):t.checked||o.push(e);for(s=0;se.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expandSafely:function(){var t=this._section;S(t,"click",O),this.expand(),setTimeout(function(){k(t,"click",O)})}})),Ge=B.extend({options:{position:"topleft",zoomInText:'',zoomInTitle:"Zoom in",zoomOutText:'',zoomOutTitle:"Zoom out"},onAdd:function(t){var e="leaflet-control-zoom",i=P("div",e+" leaflet-bar"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,e+"-in",i,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,e+"-out",i,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),i},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoomthis._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,e,i,n,o){i=P("a",i,n);return i.innerHTML=t,i.href="#",i.title=e,i.setAttribute("role","button"),i.setAttribute("aria-label",e),Ie(i),S(i,"click",Re),S(i,"click",o,this),S(i,"click",this._refocusOnMap,this),i},_updateDisabled:function(){var t=this._map,e="leaflet-disabled";z(this._zoomInButton,e),z(this._zoomOutButton,e),this._zoomInButton.setAttribute("aria-disabled","false"),this._zoomOutButton.setAttribute("aria-disabled","false"),!this._disabled&&t._zoom!==t.getMinZoom()||(M(this._zoomOutButton,e),this._zoomOutButton.setAttribute("aria-disabled","true")),!this._disabled&&t._zoom!==t.getMaxZoom()||(M(this._zoomInButton,e),this._zoomInButton.setAttribute("aria-disabled","true"))}}),Ke=(A.mergeOptions({zoomControl:!0}),A.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new Ge,this.addControl(this.zoomControl))}),B.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var e="leaflet-control-scale",i=P("div",e),n=this.options;return this._addScales(n,e+"-line",i),t.on(n.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,e,i){t.metric&&(this._mScale=P("div",e,i)),t.imperial&&(this._iScale=P("div",e,i))},_update:function(){var t=this._map,e=t.getSize().y/2,t=t.distance(t.containerPointToLatLng([0,e]),t.containerPointToLatLng([this.options.maxWidth,e]));this._updateScales(t)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var e=this._getRoundNum(t);this._updateScale(this._mScale,e<1e3?e+" m":e/1e3+" km",e/t)},_updateImperial:function(t){var e,i,t=3.2808399*t;5280'+(b.inlineSvg?' ':"")+"Leaflet"},initialize:function(t){c(this,t),this._attributions={}},onAdd:function(t){for(var e in(t.attributionControl=this)._container=P("div","leaflet-control-attribution"),Ie(this._container),t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return this._update(),t.on("layeradd",this._addAttribution,this),this._container},onRemove:function(t){t.off("layeradd",this._addAttribution,this)},_addAttribution:function(t){t.layer.getAttribution&&(this.addAttribution(t.layer.getAttribution()),t.layer.once("remove",function(){this.removeAttribution(t.layer.getAttribution())},this))},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t&&(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update()),this},removeAttribution:function(t){return t&&this._attributions[t]&&(this._attributions[t]--,this._update()),this},_update:function(){if(this._map){var t,e=[];for(t in this._attributions)this._attributions[t]&&e.push(t);var i=[];this.options.prefix&&i.push(this.options.prefix),e.length&&i.push(e.join(", ")),this._container.innerHTML=i.join(' ')}}}),n=(A.mergeOptions({attributionControl:!0}),A.addInitHook(function(){this.options.attributionControl&&(new Ye).addTo(this)}),B.Layers=qe,B.Zoom=Ge,B.Scale=Ke,B.Attribution=Ye,Ue.layers=function(t,e,i){return new qe(t,e,i)},Ue.zoom=function(t){return new Ge(t)},Ue.scale=function(t){return new Ke(t)},Ue.attribution=function(t){return new Ye(t)},et.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled||(this._enabled=!0,this.addHooks()),this},disable:function(){return this._enabled&&(this._enabled=!1,this.removeHooks()),this},enabled:function(){return!!this._enabled}})),ft=(n.addTo=function(t,e){return t.addHandler(e,this),this},{Events:e}),Xe=b.touch?"touchstart mousedown":"mousedown",Je=it.extend({options:{clickTolerance:3},initialize:function(t,e,i,n){c(this,n),this._element=t,this._dragStartTarget=e||t,this._preventOutline=i},enable:function(){this._enabled||(S(this._dragStartTarget,Xe,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Je._dragging===this&&this.finishDrag(!0),k(this._dragStartTarget,Xe,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){var e,i;this._enabled&&(this._moved=!1,ve(this._element,"leaflet-zoom-anim")||(t.touches&&1!==t.touches.length?Je._dragging===this&&this.finishDrag():Je._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||((Je._dragging=this)._preventOutline&&Me(this._element),Le(),re(),this._moving||(this.fire("down"),i=t.touches?t.touches[0]:t,e=Ce(this._element),this._startPoint=new p(i.clientX,i.clientY),this._startPos=Pe(this._element),this._parentScale=Ze(e),i="mousedown"===t.type,S(document,i?"mousemove":"touchmove",this._onMove,this),S(document,i?"mouseup":"touchend touchcancel",this._onUp,this)))))},_onMove:function(t){var e;this._enabled&&(t.touches&&1e&&(i.push(t[n]),o=n);oe.max.x&&(i|=2),t.ye.max.y&&(i|=8),i}function ni(t,e,i,n){var o=e.x,e=e.y,s=i.x-o,r=i.y-e,a=s*s+r*r;return 0this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()t.y!=n.y>t.y&&t.x<(n.x-i.x)*(t.y-i.y)/(n.y-i.y)+i.x&&(l=!l);return l||vi.prototype._containsPoint.call(this,t,!0)}});var xi=ui.extend({initialize:function(t,e){c(this,e),this._layers={},t&&this.addData(t)},addData:function(t){var e,i,n,o=d(t)?t:t.features;if(o){for(e=0,i=o.length;es.x&&(r=i.x+a-s.x+o.x),i.x-r-n.x<(a=0)&&(r=i.x-n.x),i.y+e+o.y>s.y&&(a=i.y+e-s.y+o.y),i.y-a-n.y<0&&(a=i.y-n.y),(r||a)&&(this.options.keepInView&&(this._autopanning=!0),t.fire("autopanstart").panBy([r,a]))))},_getAnchor:function(){return m(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}})),Bi=(A.mergeOptions({closePopupOnClick:!0}),A.include({openPopup:function(t,e,i){return this._initOverlay(Ai,t,e,i).openOn(this),this},closePopup:function(t){return(t=arguments.length?t:this._popup)&&t.close(),this}}),o.include({bindPopup:function(t,e){return this._popup=this._initOverlay(Ai,this._popup,t,e),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t){return this._popup&&(this instanceof ui||(this._popup._source=this),this._popup._prepareOpen(t||this._latlng)&&this._popup.openOn(this._map)),this},closePopup:function(){return this._popup&&this._popup.close(),this},togglePopup:function(){return this._popup&&this._popup.toggle(this),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var e;this._popup&&this._map&&(Re(t),e=t.layer||t.target,this._popup._source!==e||e instanceof mi?(this._popup._source=e,this.openPopup(t.latlng)):this._map.hasLayer(this._popup)?this.closePopup():this.openPopup(t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}}),Oi.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,opacity:.9},onAdd:function(t){Oi.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&(this.addEventParent(this._source),this._source.fire("tooltipopen",{tooltip:this},!0))},onRemove:function(t){Oi.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&(this.removeEventParent(this._source),this._source.fire("tooltipclose",{tooltip:this},!0))},getEvents:function(){var t=Oi.prototype.getEvents.call(this);return this.options.permanent||(t.preclick=this.close),t},_initLayout:function(){var t="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=P("div",t),this._container.setAttribute("role","tooltip"),this._container.setAttribute("id","leaflet-tooltip-"+h(this))},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var e,i=this._map,n=this._container,o=i.latLngToContainerPoint(i.getCenter()),i=i.layerPointToContainerPoint(t),s=this.options.direction,r=n.offsetWidth,a=n.offsetHeight,h=m(this.options.offset),l=this._getAnchor(),i="top"===s?(e=r/2,a):"bottom"===s?(e=r/2,0):(e="center"===s?r/2:"right"===s?0:"left"===s?r:i.xthis.options.maxZoom||nthis.options.maxZoom||void 0!==this.options.minZoom&&oi.max.x)||!e.wrapLat&&(t.yi.max.y))return!1}return!this.options.bounds||(e=this._tileCoordsToBounds(t),g(this.options.bounds).overlaps(e))},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var e=this._map,i=this.getTileSize(),n=t.scaleBy(i),i=n.add(i);return[e.unproject(n,t.z),e.unproject(i,t.z)]},_tileCoordsToBounds:function(t){t=this._tileCoordsToNwSe(t),t=new s(t[0],t[1]);return t=this.options.noWrap?t:this._map.wrapLatLngBounds(t)},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var t=t.split(":"),e=new p(+t[0],+t[1]);return e.z=+t[2],e},_removeTile:function(t){var e=this._tiles[t];e&&(T(e.el),delete this._tiles[t],this.fire("tileunload",{tile:e.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){M(t,"leaflet-tile");var e=this.getTileSize();t.style.width=e.x+"px",t.style.height=e.y+"px",t.onselectstart=u,t.onmousemove=u,b.ielt9&&this.options.opacity<1&&C(t,this.options.opacity)},_addTile:function(t,e){var i=this._getTilePos(t),n=this._tileCoordsToKey(t),o=this.createTile(this._wrapCoords(t),a(this._tileReady,this,t));this._initTile(o),this.createTile.length<2&&x(a(this._tileReady,this,t,null,o)),Z(o,i),this._tiles[n]={el:o,coords:t,current:!0},e.appendChild(o),this.fire("tileloadstart",{tile:o,coords:t})},_tileReady:function(t,e,i){e&&this.fire("tileerror",{error:e,tile:i,coords:t});var n=this._tileCoordsToKey(t);(i=this._tiles[n])&&(i.loaded=+new Date,this._map._fadeAnimated?(C(i.el,0),r(this._fadeFrame),this._fadeFrame=x(this._updateOpacity,this)):(i.active=!0,this._pruneTiles()),e||(M(i.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:i.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),b.ielt9||!this._map._fadeAnimated?x(this._pruneTiles,this):setTimeout(a(this._pruneTiles,this),250)))},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var e=new p(this._wrapX?H(t.x,this._wrapX):t.x,this._wrapY?H(t.y,this._wrapY):t.y);return e.z=t.z,e},_pxBoundsToTileRange:function(t){var e=this.getTileSize();return new f(t.min.unscaleBy(e).floor(),t.max.unscaleBy(e).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}});var Ni=Ri.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1,referrerPolicy:!1},initialize:function(t,e){this._url=t,(e=c(this,e)).detectRetina&&b.retina&&0')}}catch(t){}return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}(),zt={_initContainer:function(){this._container=P("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(Hi.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var e=t._container=Ui("shape");M(e,"leaflet-vml-shape "+(this.options.className||"")),e.coordsize="1 1",t._path=Ui("path"),e.appendChild(t._path),this._updateStyle(t),this._layers[h(t)]=t},_addPath:function(t){var e=t._container;this._container.appendChild(e),t.options.interactive&&t.addInteractiveTarget(e)},_removePath:function(t){var e=t._container;T(e),t.removeInteractiveTarget(e),delete this._layers[h(t)]},_updateStyle:function(t){var e=t._stroke,i=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(e=e||(t._stroke=Ui("stroke")),o.appendChild(e),e.weight=n.weight+"px",e.color=n.color,e.opacity=n.opacity,n.dashArray?e.dashStyle=d(n.dashArray)?n.dashArray.join(" "):n.dashArray.replace(/( *, *)/g," "):e.dashStyle="",e.endcap=n.lineCap.replace("butt","flat"),e.joinstyle=n.lineJoin):e&&(o.removeChild(e),t._stroke=null),n.fill?(i=i||(t._fill=Ui("fill")),o.appendChild(i),i.color=n.fillColor||n.color,i.opacity=n.fillOpacity):i&&(o.removeChild(i),t._fill=null)},_updateCircle:function(t){var e=t._point.round(),i=Math.round(t._radius),n=Math.round(t._radiusY||i);this._setPath(t,t._empty()?"M0 0":"AL "+e.x+","+e.y+" "+i+","+n+" 0,23592600")},_setPath:function(t,e){t._path.v=e},_bringToFront:function(t){fe(t._container)},_bringToBack:function(t){ge(t._container)}},Vi=b.vml?Ui:ct,qi=Hi.extend({_initContainer:function(){this._container=Vi("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=Vi("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){T(this._container),k(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_update:function(){var t,e,i;this._map._animatingZoom&&this._bounds||(Hi.prototype._update.call(this),e=(t=this._bounds).getSize(),i=this._container,this._svgSize&&this._svgSize.equals(e)||(this._svgSize=e,i.setAttribute("width",e.x),i.setAttribute("height",e.y)),Z(i,t.min),i.setAttribute("viewBox",[t.min.x,t.min.y,e.x,e.y].join(" ")),this.fire("update"))},_initPath:function(t){var e=t._path=Vi("path");t.options.className&&M(e,t.options.className),t.options.interactive&&M(e,"leaflet-interactive"),this._updateStyle(t),this._layers[h(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){T(t._path),t.removeInteractiveTarget(t._path),delete this._layers[h(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var e=t._path,t=t.options;e&&(t.stroke?(e.setAttribute("stroke",t.color),e.setAttribute("stroke-opacity",t.opacity),e.setAttribute("stroke-width",t.weight),e.setAttribute("stroke-linecap",t.lineCap),e.setAttribute("stroke-linejoin",t.lineJoin),t.dashArray?e.setAttribute("stroke-dasharray",t.dashArray):e.removeAttribute("stroke-dasharray"),t.dashOffset?e.setAttribute("stroke-dashoffset",t.dashOffset):e.removeAttribute("stroke-dashoffset")):e.setAttribute("stroke","none"),t.fill?(e.setAttribute("fill",t.fillColor||t.color),e.setAttribute("fill-opacity",t.fillOpacity),e.setAttribute("fill-rule",t.fillRule||"evenodd")):e.setAttribute("fill","none"))},_updatePoly:function(t,e){this._setPath(t,dt(t._parts,e))},_updateCircle:function(t){var e=t._point,i=Math.max(Math.round(t._radius),1),n="a"+i+","+(Math.max(Math.round(t._radiusY),1)||i)+" 0 1,0 ",e=t._empty()?"M0 0":"M"+(e.x-i)+","+e.y+n+2*i+",0 "+n+2*-i+",0 ";this._setPath(t,e)},_setPath:function(t,e){t._path.setAttribute("d",e)},_bringToFront:function(t){fe(t._path)},_bringToBack:function(t){ge(t._path)}});function Gi(t){return b.svg||b.vml?new qi(t):null}b.vml&&qi.include(zt),A.include({getRenderer:function(t){t=(t=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer)||(this._renderer=this._createRenderer());return this.hasLayer(t)||this.addLayer(t),t},_getPaneRenderer:function(t){var e;return"overlayPane"!==t&&void 0!==t&&(void 0===(e=this._paneRenderers[t])&&(e=this._createRenderer({pane:t}),this._paneRenderers[t]=e),e)},_createRenderer:function(t){return this.options.preferCanvas&&Wi(t)||Gi(t)}});var Ki=yi.extend({initialize:function(t,e){yi.prototype.initialize.call(this,this._boundsToLatLngs(t),e)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return[(t=g(t)).getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});qi.create=Vi,qi.pointsToPath=dt,xi.geometryToLayer=wi,xi.coordsToLatLng=Pi,xi.coordsToLatLngs=Li,xi.latLngToCoords=Ti,xi.latLngsToCoords=Mi,xi.getFeature=zi,xi.asFeature=Ci,A.mergeOptions({boxZoom:!0});var _t=n.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){S(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){k(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){T(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),re(),Le(),this._startPoint=this._map.mouseEventToContainerPoint(t),S(document,{contextmenu:Re,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=P("div","leaflet-zoom-box",this._container),M(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var t=new f(this._point,this._startPoint),e=t.getSize();Z(this._box,t.min),this._box.style.width=e.x+"px",this._box.style.height=e.y+"px"},_finish:function(){this._moved&&(T(this._box),z(this._container,"leaflet-crosshair")),ae(),Te(),k(document,{contextmenu:Re,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){1!==t.which&&1!==t.button||(this._finish(),this._moved&&(this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(a(this._resetState,this),0),t=new s(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point)),this._map.fitBounds(t).fire("boxzoomend",{boxZoomBounds:t})))},_onKeyDown:function(t){27===t.keyCode&&(this._finish(),this._clearDeferredResetState(),this._resetState())}}),Ct=(A.addInitHook("addHandler","boxZoom",_t),A.mergeOptions({doubleClickZoom:!0}),n.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var e=this._map,i=e.getZoom(),n=e.options.zoomDelta,i=t.originalEvent.shiftKey?i-n:i+n;"center"===e.options.doubleClickZoom?e.setZoom(i):e.setZoomAround(t.containerPoint,i)}})),Zt=(A.addInitHook("addHandler","doubleClickZoom",Ct),A.mergeOptions({dragging:!0,inertia:!0,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0}),n.extend({addHooks:function(){var t;this._draggable||(t=this._map,this._draggable=new Je(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))),M(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){z(this._map._container,"leaflet-grab"),z(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t,e=this._map;e._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity?(t=g(this._map.options.maxBounds),this._offsetLimit=_(this._map.latLngToContainerPoint(t.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(t.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))):this._offsetLimit=null,e.fire("movestart").fire("dragstart"),e.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){var e,i;this._map.options.inertia&&(e=this._lastTime=+new Date,i=this._lastPos=this._draggable._absPos||this._draggable._newPos,this._positions.push(i),this._times.push(e),this._prunePositions(e)),this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;1e.max.x&&(t.x=this._viscousLimit(t.x,e.max.x)),t.y>e.max.y&&(t.y=this._viscousLimit(t.y,e.max.y)),this._draggable._newPos=this._draggable._startPos.add(t))},_onPreDragWrap:function(){var t=this._worldWidth,e=Math.round(t/2),i=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-e+i)%t+e-i,n=(n+e+i)%t-e-i,t=Math.abs(o+i)e.getMaxZoom()&&1=this.min.x&&i.x<=this.max.x&&e.y>=this.min.y&&i.y<=this.max.y},intersects:function(t){t=_(t);var e=this.min,i=this.max,n=t.min,t=t.max,o=t.x>=e.x&&n.x<=i.x,t=t.y>=e.y&&n.y<=i.y;return o&&t},overlaps:function(t){t=_(t);var e=this.min,i=this.max,n=t.min,t=t.max,o=t.x>e.x&&n.xe.y&&n.y=n.lat&&i.lat<=o.lat&&e.lng>=n.lng&&i.lng<=o.lng},intersects:function(t){t=g(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),t=t.getNorthEast(),o=t.lat>=e.lat&&n.lat<=i.lat,t=t.lng>=e.lng&&n.lng<=i.lng;return o&&t},overlaps:function(t){t=g(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),t=t.getNorthEast(),o=t.lat>e.lat&&n.late.lng&&n.lng","http://www.w3.org/2000/svg"===(Wt.firstChild&&Wt.firstChild.namespaceURI));function y(t){return 0<=navigator.userAgent.toLowerCase().indexOf(t)}var b={ie:pt,ielt9:mt,edge:n,webkit:ft,android:gt,android23:vt,androidStock:yt,opera:xt,chrome:wt,gecko:bt,safari:Pt,phantom:Lt,opera12:o,win:Tt,ie3d:Mt,webkit3d:zt,gecko3d:_t,any3d:Ct,mobile:Zt,mobileWebkit:St,mobileWebkit3d:Et,msPointer:kt,pointer:Ot,touch:Bt,touchNative:At,mobileOpera:It,mobileGecko:Rt,retina:Nt,passiveEvents:Dt,canvas:jt,svg:Ht,vml:!Ht&&function(){try{var t=document.createElement("div"),e=(t.innerHTML='',t.firstChild);return e.style.behavior="url(#default#VML)",e&&"object"==typeof e.adj}catch(t){return!1}}(),inlineSvg:Wt,mac:0===navigator.platform.indexOf("Mac"),linux:0===navigator.platform.indexOf("Linux")},Ft=b.msPointer?"MSPointerDown":"pointerdown",Ut=b.msPointer?"MSPointerMove":"pointermove",Vt=b.msPointer?"MSPointerUp":"pointerup",qt=b.msPointer?"MSPointerCancel":"pointercancel",Gt={touchstart:Ft,touchmove:Ut,touchend:Vt,touchcancel:qt},Kt={touchstart:function(t,e){e.MSPOINTER_TYPE_TOUCH&&e.pointerType===e.MSPOINTER_TYPE_TOUCH&&O(e);ee(t,e)},touchmove:ee,touchend:ee,touchcancel:ee},Yt={},Xt=!1;function Jt(t,e,i){return"touchstart"!==e||Xt||(document.addEventListener(Ft,$t,!0),document.addEventListener(Ut,Qt,!0),document.addEventListener(Vt,te,!0),document.addEventListener(qt,te,!0),Xt=!0),Kt[e]?(i=Kt[e].bind(this,i),t.addEventListener(Gt[e],i,!1),i):(console.warn("wrong event specified:",e),u)}function $t(t){Yt[t.pointerId]=t}function Qt(t){Yt[t.pointerId]&&(Yt[t.pointerId]=t)}function te(t){delete Yt[t.pointerId]}function ee(t,e){if(e.pointerType!==(e.MSPOINTER_TYPE_MOUSE||"mouse")){for(var i in e.touches=[],Yt)e.touches.push(Yt[i]);e.changedTouches=[e],t(e)}}var ie=200;function ne(t,i){t.addEventListener("dblclick",i);var n,o=0;function e(t){var e;1!==t.detail?n=t.detail:"mouse"===t.pointerType||t.sourceCapabilities&&!t.sourceCapabilities.firesTouchEvents||((e=Ne(t)).some(function(t){return t instanceof HTMLLabelElement&&t.attributes.for})&&!e.some(function(t){return t instanceof HTMLInputElement||t instanceof HTMLSelectElement})||((e=Date.now())-o<=ie?2===++n&&i(function(t){var e,i,n={};for(i in t)e=t[i],n[i]=e&&e.bind?e.bind(t):e;return(t=n).type="dblclick",n.detail=2,n.isTrusted=!1,n._simulated=!0,n}(t)):n=1,o=e))}return t.addEventListener("click",e),{dblclick:i,simDblclick:e}}var oe,se,re,ae,he,le,ue=we(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),ce=we(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),de="webkitTransition"===ce||"OTransition"===ce?ce+"End":"transitionend";function _e(t){return"string"==typeof t?document.getElementById(t):t}function pe(t,e){var i=t.style[e]||t.currentStyle&&t.currentStyle[e];return"auto"===(i=i&&"auto"!==i||!document.defaultView?i:(t=document.defaultView.getComputedStyle(t,null))?t[e]:null)?null:i}function P(t,e,i){t=document.createElement(t);return t.className=e||"",i&&i.appendChild(t),t}function T(t){var e=t.parentNode;e&&e.removeChild(t)}function me(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function fe(t){var e=t.parentNode;e&&e.lastChild!==t&&e.appendChild(t)}function ge(t){var e=t.parentNode;e&&e.firstChild!==t&&e.insertBefore(t,e.firstChild)}function ve(t,e){return void 0!==t.classList?t.classList.contains(e):0<(t=xe(t)).length&&new RegExp("(^|\\s)"+e+"(\\s|$)").test(t)}function M(t,e){var i;if(void 0!==t.classList)for(var n=F(e),o=0,s=n.length;othis.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,e){this._enforcingBounds=!0;var i=this.getCenter(),t=this._limitCenter(i,this._zoom,g(t));return i.equals(t)||this.panTo(t,e),this._enforcingBounds=!1,this},panInside:function(t,e){var i=m((e=e||{}).paddingTopLeft||e.padding||[0,0]),n=m(e.paddingBottomRight||e.padding||[0,0]),o=this.project(this.getCenter()),t=this.project(t),s=this.getPixelBounds(),i=_([s.min.add(i),s.max.subtract(n)]),s=i.getSize();return i.contains(t)||(this._enforcingBounds=!0,n=t.subtract(i.getCenter()),i=i.extend(t).getSize().subtract(s),o.x+=n.x<0?-i.x:i.x,o.y+=n.y<0?-i.y:i.y,this.panTo(this.unproject(o),e),this._enforcingBounds=!1),this},invalidateSize:function(t){if(!this._loaded)return this;t=l({animate:!1,pan:!0},!0===t?{animate:!0}:t);var e=this.getSize(),i=(this._sizeChanged=!0,this._lastCenter=null,this.getSize()),n=e.divideBy(2).round(),o=i.divideBy(2).round(),n=n.subtract(o);return n.x||n.y?(t.animate&&t.pan?this.panBy(n):(t.pan&&this._rawPanBy(n),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(a(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:e,newSize:i})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){var e,i;return t=this._locateOptions=l({timeout:1e4,watch:!1},t),"geolocation"in navigator?(e=a(this._handleGeolocationResponse,this),i=a(this._handleGeolocationError,this),t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,i,t):navigator.geolocation.getCurrentPosition(e,i,t)):this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var e;this._container._leaflet_id&&(e=t.code,t=t.message||(1===e?"permission denied":2===e?"position unavailable":"timeout"),this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:e,message:"Geolocation error: "+t+"."}))},_handleGeolocationResponse:function(t){if(this._container._leaflet_id){var e,i,n=new v(t.coords.latitude,t.coords.longitude),o=n.toBounds(2*t.coords.accuracy),s=this._locateOptions,r=(s.setView&&(e=this.getBoundsZoom(o),this.setView(n,s.maxZoom?Math.min(e,s.maxZoom):e)),{latlng:n,bounds:o,timestamp:t.timestamp});for(i in t.coords)"number"==typeof t.coords[i]&&(r[i]=t.coords[i]);this.fire("locationfound",r)}},addHandler:function(t,e){return e&&(e=this[t]=new e(this),this._handlers.push(e),this.options[t]&&e.enable()),this},remove:function(){if(this._initEvents(!0),this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}for(var t in void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),T(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(r(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload"),this._layers)this._layers[t].remove();for(t in this._panes)T(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,e){e=P("div","leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),e||this._mapPane);return t&&(this._panes[t]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter.clone():this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new s(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,e,i){t=g(t),i=m(i||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),t=t.getSouthEast(),i=this.getSize().subtract(i),t=_(this.project(t,n),this.project(r,n)).getSize(),r=b.any3d?this.options.zoomSnap:1,a=i.x/t.x,i=i.y/t.y,t=e?Math.max(a,i):Math.min(a,i),n=this.getScaleZoom(t,n);return r&&(n=Math.round(n/(r/100))*(r/100),n=e?Math.ceil(n/r)*r:Math.floor(n/r)*r),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new p(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,e){t=this._getTopLeftPoint(t,e);return new f(t,t.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return"string"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,e){var i=this.options.crs;return e=void 0===e?this._zoom:e,i.scale(t)/i.scale(e)},getScaleZoom:function(t,e){var i=this.options.crs,t=(e=void 0===e?this._zoom:e,i.zoom(t*i.scale(e)));return isNaN(t)?1/0:t},project:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.latLngToPoint(w(t),e)},unproject:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.pointToLatLng(m(t),e)},layerPointToLatLng:function(t){t=m(t).add(this.getPixelOrigin());return this.unproject(t)},latLngToLayerPoint:function(t){return this.project(w(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(w(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(g(t))},distance:function(t,e){return this.options.crs.distance(w(t),w(e))},containerPointToLayerPoint:function(t){return m(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return m(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){t=this.containerPointToLayerPoint(m(t));return this.layerPointToLatLng(t)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(w(t)))},mouseEventToContainerPoint:function(t){return De(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){t=this._container=_e(t);if(!t)throw new Error("Map container not found.");if(t._leaflet_id)throw new Error("Map container is already initialized.");S(t,"scroll",this._onScroll,this),this._containerId=h(t)},_initLayout:function(){var t=this._container,e=(this._fadeAnimated=this.options.fadeAnimation&&b.any3d,M(t,"leaflet-container"+(b.touch?" leaflet-touch":"")+(b.retina?" leaflet-retina":"")+(b.ielt9?" leaflet-oldie":"")+(b.safari?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":"")),pe(t,"position"));"absolute"!==e&&"relative"!==e&&"fixed"!==e&&"sticky"!==e&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),Z(this._mapPane,new p(0,0)),this.createPane("tilePane"),this.createPane("overlayPane"),this.createPane("shadowPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(M(t.markerPane,"leaflet-zoom-hide"),M(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,e,i){Z(this._mapPane,new p(0,0));var n=!this._loaded,o=(this._loaded=!0,e=this._limitZoom(e),this.fire("viewprereset"),this._zoom!==e);this._moveStart(o,i)._move(t,e)._moveEnd(o),this.fire("viewreset"),n&&this.fire("load")},_moveStart:function(t,e){return t&&this.fire("zoomstart"),e||this.fire("movestart"),this},_move:function(t,e,i,n){void 0===e&&(e=this._zoom);var o=this._zoom!==e;return this._zoom=e,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),n?i&&i.pinch&&this.fire("zoom",i):((o||i&&i.pinch)&&this.fire("zoom",i),this.fire("move",i)),this},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return r(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){Z(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={};var e=t?k:S;e((this._targets[h(this._container)]=this)._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",this._handleDOMEvent,this),this.options.trackResize&&e(window,"resize",this._onResize,this),b.any3d&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){r(this._resizeRequest),this._resizeRequest=x(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,e){for(var i,n=[],o="mouseout"===e||"mouseover"===e,s=t.target||t.srcElement,r=!1;s;){if((i=this._targets[h(s)])&&("click"===e||"preclick"===e)&&this._draggableMoved(i)){r=!0;break}if(i&&i.listens(e,!0)){if(o&&!We(s,t))break;if(n.push(i),o)break}if(s===this._container)break;s=s.parentNode}return n=n.length||r||o||!this.listens(e,!0)?n:[this]},_isClickDisabled:function(t){for(;t&&t!==this._container;){if(t._leaflet_disable_click)return!0;t=t.parentNode}},_handleDOMEvent:function(t){var e,i=t.target||t.srcElement;!this._loaded||i._leaflet_disable_events||"click"===t.type&&this._isClickDisabled(i)||("mousedown"===(e=t.type)&&Me(i),this._fireDOMEvent(t,e))},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,e,i){"click"===t.type&&((a=l({},t)).type="preclick",this._fireDOMEvent(a,a.type,i));var n=this._findEventTargets(t,e);if(i){for(var o=[],s=0;sthis.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(e),n=this._getCenterOffset(t)._divideBy(1-1/n);if(!0!==i.animate&&!this.getSize().contains(n))return!1;x(function(){this._moveStart(!0,i.noMoveStart||!1)._animateZoom(t,e,!0)},this)}return!0},_animateZoom:function(t,e,i,n){this._mapPane&&(i&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=e,M(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:e,noUpdate:n}),this._tempFireZoomEvent||(this._tempFireZoomEvent=this._zoom!==this._animateToZoom),this._move(this._animateToCenter,this._animateToZoom,void 0,!0),setTimeout(a(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&z(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom,void 0,!0),this._tempFireZoomEvent&&this.fire("zoom"),delete this._tempFireZoomEvent,this.fire("move"),this._moveEnd(!0))}});function Ue(t){return new B(t)}var B=et.extend({options:{position:"topright"},initialize:function(t){c(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var e=this._map;return e&&e.removeControl(this),this.options.position=t,e&&e.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var e=this._container=this.onAdd(t),i=this.getPosition(),t=t._controlCorners[i];return M(e,"leaflet-control"),-1!==i.indexOf("bottom")?t.insertBefore(e,t.firstChild):t.appendChild(e),this._map.on("unload",this.remove,this),this},remove:function(){return this._map&&(T(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null),this},_refocusOnMap:function(t){this._map&&t&&0",e=document.createElement("div");return e.innerHTML=t,e.firstChild},_addItem:function(t){var e,i=document.createElement("label"),n=this._map.hasLayer(t.layer),n=(t.overlay?((e=document.createElement("input")).type="checkbox",e.className="leaflet-control-layers-selector",e.defaultChecked=n):e=this._createRadioElement("leaflet-base-layers_"+h(this),n),this._layerControlInputs.push(e),e.layerId=h(t.layer),S(e,"click",this._onInputClick,this),document.createElement("span")),o=(n.innerHTML=" "+t.name,document.createElement("span"));return i.appendChild(o),o.appendChild(e),o.appendChild(n),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(i),this._checkDisabledLayers(),i},_onInputClick:function(){if(!this._preventClick){var t,e,i=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=i.length-1;0<=s;s--)t=i[s],e=this._getLayer(t.layerId).layer,t.checked?n.push(e):t.checked||o.push(e);for(s=0;se.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expandSafely:function(){var t=this._section,e=(this._preventClick=!0,S(t,"click",O),this.expand(),this);setTimeout(function(){k(t,"click",O),e._preventClick=!1})}})),qe=B.extend({options:{position:"topleft",zoomInText:'',zoomInTitle:"Zoom in",zoomOutText:'',zoomOutTitle:"Zoom out"},onAdd:function(t){var e="leaflet-control-zoom",i=P("div",e+" leaflet-bar"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,e+"-in",i,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,e+"-out",i,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),i},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoomthis._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,e,i,n,o){i=P("a",i,n);return i.innerHTML=t,i.href="#",i.title=e,i.setAttribute("role","button"),i.setAttribute("aria-label",e),Ie(i),S(i,"click",Re),S(i,"click",o,this),S(i,"click",this._refocusOnMap,this),i},_updateDisabled:function(){var t=this._map,e="leaflet-disabled";z(this._zoomInButton,e),z(this._zoomOutButton,e),this._zoomInButton.setAttribute("aria-disabled","false"),this._zoomOutButton.setAttribute("aria-disabled","false"),!this._disabled&&t._zoom!==t.getMinZoom()||(M(this._zoomOutButton,e),this._zoomOutButton.setAttribute("aria-disabled","true")),!this._disabled&&t._zoom!==t.getMaxZoom()||(M(this._zoomInButton,e),this._zoomInButton.setAttribute("aria-disabled","true"))}}),Ge=(A.mergeOptions({zoomControl:!0}),A.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new qe,this.addControl(this.zoomControl))}),B.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var e="leaflet-control-scale",i=P("div",e),n=this.options;return this._addScales(n,e+"-line",i),t.on(n.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,e,i){t.metric&&(this._mScale=P("div",e,i)),t.imperial&&(this._iScale=P("div",e,i))},_update:function(){var t=this._map,e=t.getSize().y/2,t=t.distance(t.containerPointToLatLng([0,e]),t.containerPointToLatLng([this.options.maxWidth,e]));this._updateScales(t)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var e=this._getRoundNum(t);this._updateScale(this._mScale,e<1e3?e+" m":e/1e3+" km",e/t)},_updateImperial:function(t){var e,i,t=3.2808399*t;5280'+(b.inlineSvg?' ':"")+"Leaflet"},initialize:function(t){c(this,t),this._attributions={}},onAdd:function(t){for(var e in(t.attributionControl=this)._container=P("div","leaflet-control-attribution"),Ie(this._container),t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return this._update(),t.on("layeradd",this._addAttribution,this),this._container},onRemove:function(t){t.off("layeradd",this._addAttribution,this)},_addAttribution:function(t){t.layer.getAttribution&&(this.addAttribution(t.layer.getAttribution()),t.layer.once("remove",function(){this.removeAttribution(t.layer.getAttribution())},this))},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t&&(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update()),this},removeAttribution:function(t){return t&&this._attributions[t]&&(this._attributions[t]--,this._update()),this},_update:function(){if(this._map){var t,e=[];for(t in this._attributions)this._attributions[t]&&e.push(t);var i=[];this.options.prefix&&i.push(this.options.prefix),e.length&&i.push(e.join(", ")),this._container.innerHTML=i.join(' ')}}}),n=(A.mergeOptions({attributionControl:!0}),A.addInitHook(function(){this.options.attributionControl&&(new Ke).addTo(this)}),B.Layers=Ve,B.Zoom=qe,B.Scale=Ge,B.Attribution=Ke,Ue.layers=function(t,e,i){return new Ve(t,e,i)},Ue.zoom=function(t){return new qe(t)},Ue.scale=function(t){return new Ge(t)},Ue.attribution=function(t){return new Ke(t)},et.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled||(this._enabled=!0,this.addHooks()),this},disable:function(){return this._enabled&&(this._enabled=!1,this.removeHooks()),this},enabled:function(){return!!this._enabled}})),ft=(n.addTo=function(t,e){return t.addHandler(e,this),this},{Events:e}),Ye=b.touch?"touchstart mousedown":"mousedown",Xe=it.extend({options:{clickTolerance:3},initialize:function(t,e,i,n){c(this,n),this._element=t,this._dragStartTarget=e||t,this._preventOutline=i},enable:function(){this._enabled||(S(this._dragStartTarget,Ye,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Xe._dragging===this&&this.finishDrag(!0),k(this._dragStartTarget,Ye,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){var e,i;this._enabled&&(this._moved=!1,ve(this._element,"leaflet-zoom-anim")||(t.touches&&1!==t.touches.length?Xe._dragging===this&&this.finishDrag():Xe._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||((Xe._dragging=this)._preventOutline&&Me(this._element),Le(),re(),this._moving||(this.fire("down"),i=t.touches?t.touches[0]:t,e=Ce(this._element),this._startPoint=new p(i.clientX,i.clientY),this._startPos=Pe(this._element),this._parentScale=Ze(e),i="mousedown"===t.type,S(document,i?"mousemove":"touchmove",this._onMove,this),S(document,i?"mouseup":"touchend touchcancel",this._onUp,this)))))},_onMove:function(t){var e;this._enabled&&(t.touches&&1e&&(i.push(t[n]),o=n);oe.max.x&&(i|=2),t.ye.max.y&&(i|=8),i}function ri(t,e,i,n){var o=e.x,e=e.y,s=i.x-o,r=i.y-e,a=s*s+r*r;return 0this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()t.y!=n.y>t.y&&t.x<(n.x-i.x)*(t.y-i.y)/(n.y-i.y)+i.x&&(l=!l);return l||yi.prototype._containsPoint.call(this,t,!0)}});var wi=ci.extend({initialize:function(t,e){c(this,e),this._layers={},t&&this.addData(t)},addData:function(t){var e,i,n,o=d(t)?t:t.features;if(o){for(e=0,i=o.length;es.x&&(r=i.x+a-s.x+o.x),i.x-r-n.x<(a=0)&&(r=i.x-n.x),i.y+e+o.y>s.y&&(a=i.y+e-s.y+o.y),i.y-a-n.y<0&&(a=i.y-n.y),(r||a)&&(this.options.keepInView&&(this._autopanning=!0),t.fire("autopanstart").panBy([r,a]))))},_getAnchor:function(){return m(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}})),Ii=(A.mergeOptions({closePopupOnClick:!0}),A.include({openPopup:function(t,e,i){return this._initOverlay(Bi,t,e,i).openOn(this),this},closePopup:function(t){return(t=arguments.length?t:this._popup)&&t.close(),this}}),o.include({bindPopup:function(t,e){return this._popup=this._initOverlay(Bi,this._popup,t,e),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t){return this._popup&&(this instanceof ci||(this._popup._source=this),this._popup._prepareOpen(t||this._latlng)&&this._popup.openOn(this._map)),this},closePopup:function(){return this._popup&&this._popup.close(),this},togglePopup:function(){return this._popup&&this._popup.toggle(this),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var e;this._popup&&this._map&&(Re(t),e=t.layer||t.target,this._popup._source!==e||e instanceof fi?(this._popup._source=e,this.openPopup(t.latlng)):this._map.hasLayer(this._popup)?this.closePopup():this.openPopup(t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}}),Ai.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,opacity:.9},onAdd:function(t){Ai.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&(this.addEventParent(this._source),this._source.fire("tooltipopen",{tooltip:this},!0))},onRemove:function(t){Ai.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&(this.removeEventParent(this._source),this._source.fire("tooltipclose",{tooltip:this},!0))},getEvents:function(){var t=Ai.prototype.getEvents.call(this);return this.options.permanent||(t.preclick=this.close),t},_initLayout:function(){var t="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=P("div",t),this._container.setAttribute("role","tooltip"),this._container.setAttribute("id","leaflet-tooltip-"+h(this))},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var e,i=this._map,n=this._container,o=i.latLngToContainerPoint(i.getCenter()),i=i.layerPointToContainerPoint(t),s=this.options.direction,r=n.offsetWidth,a=n.offsetHeight,h=m(this.options.offset),l=this._getAnchor(),i="top"===s?(e=r/2,a):"bottom"===s?(e=r/2,0):(e="center"===s?r/2:"right"===s?0:"left"===s?r:i.xthis.options.maxZoom||nthis.options.maxZoom||void 0!==this.options.minZoom&&oi.max.x)||!e.wrapLat&&(t.yi.max.y))return!1}return!this.options.bounds||(e=this._tileCoordsToBounds(t),g(this.options.bounds).overlaps(e))},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var e=this._map,i=this.getTileSize(),n=t.scaleBy(i),i=n.add(i);return[e.unproject(n,t.z),e.unproject(i,t.z)]},_tileCoordsToBounds:function(t){t=this._tileCoordsToNwSe(t),t=new s(t[0],t[1]);return t=this.options.noWrap?t:this._map.wrapLatLngBounds(t)},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var t=t.split(":"),e=new p(+t[0],+t[1]);return e.z=+t[2],e},_removeTile:function(t){var e=this._tiles[t];e&&(T(e.el),delete this._tiles[t],this.fire("tileunload",{tile:e.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){M(t,"leaflet-tile");var e=this.getTileSize();t.style.width=e.x+"px",t.style.height=e.y+"px",t.onselectstart=u,t.onmousemove=u,b.ielt9&&this.options.opacity<1&&C(t,this.options.opacity)},_addTile:function(t,e){var i=this._getTilePos(t),n=this._tileCoordsToKey(t),o=this.createTile(this._wrapCoords(t),a(this._tileReady,this,t));this._initTile(o),this.createTile.length<2&&x(a(this._tileReady,this,t,null,o)),Z(o,i),this._tiles[n]={el:o,coords:t,current:!0},e.appendChild(o),this.fire("tileloadstart",{tile:o,coords:t})},_tileReady:function(t,e,i){e&&this.fire("tileerror",{error:e,tile:i,coords:t});var n=this._tileCoordsToKey(t);(i=this._tiles[n])&&(i.loaded=+new Date,this._map._fadeAnimated?(C(i.el,0),r(this._fadeFrame),this._fadeFrame=x(this._updateOpacity,this)):(i.active=!0,this._pruneTiles()),e||(M(i.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:i.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),b.ielt9||!this._map._fadeAnimated?x(this._pruneTiles,this):setTimeout(a(this._pruneTiles,this),250)))},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var e=new p(this._wrapX?H(t.x,this._wrapX):t.x,this._wrapY?H(t.y,this._wrapY):t.y);return e.z=t.z,e},_pxBoundsToTileRange:function(t){var e=this.getTileSize();return new f(t.min.unscaleBy(e).floor(),t.max.unscaleBy(e).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}});var Di=Ni.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1,referrerPolicy:!1},initialize:function(t,e){this._url=t,(e=c(this,e)).detectRetina&&b.retina&&0')}}catch(t){}return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}(),zt={_initContainer:function(){this._container=P("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(Wi.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var e=t._container=Vi("shape");M(e,"leaflet-vml-shape "+(this.options.className||"")),e.coordsize="1 1",t._path=Vi("path"),e.appendChild(t._path),this._updateStyle(t),this._layers[h(t)]=t},_addPath:function(t){var e=t._container;this._container.appendChild(e),t.options.interactive&&t.addInteractiveTarget(e)},_removePath:function(t){var e=t._container;T(e),t.removeInteractiveTarget(e),delete this._layers[h(t)]},_updateStyle:function(t){var e=t._stroke,i=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(e=e||(t._stroke=Vi("stroke")),o.appendChild(e),e.weight=n.weight+"px",e.color=n.color,e.opacity=n.opacity,n.dashArray?e.dashStyle=d(n.dashArray)?n.dashArray.join(" "):n.dashArray.replace(/( *, *)/g," "):e.dashStyle="",e.endcap=n.lineCap.replace("butt","flat"),e.joinstyle=n.lineJoin):e&&(o.removeChild(e),t._stroke=null),n.fill?(i=i||(t._fill=Vi("fill")),o.appendChild(i),i.color=n.fillColor||n.color,i.opacity=n.fillOpacity):i&&(o.removeChild(i),t._fill=null)},_updateCircle:function(t){var e=t._point.round(),i=Math.round(t._radius),n=Math.round(t._radiusY||i);this._setPath(t,t._empty()?"M0 0":"AL "+e.x+","+e.y+" "+i+","+n+" 0,23592600")},_setPath:function(t,e){t._path.v=e},_bringToFront:function(t){fe(t._container)},_bringToBack:function(t){ge(t._container)}},qi=b.vml?Vi:ct,Gi=Wi.extend({_initContainer:function(){this._container=qi("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=qi("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){T(this._container),k(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_update:function(){var t,e,i;this._map._animatingZoom&&this._bounds||(Wi.prototype._update.call(this),e=(t=this._bounds).getSize(),i=this._container,this._svgSize&&this._svgSize.equals(e)||(this._svgSize=e,i.setAttribute("width",e.x),i.setAttribute("height",e.y)),Z(i,t.min),i.setAttribute("viewBox",[t.min.x,t.min.y,e.x,e.y].join(" ")),this.fire("update"))},_initPath:function(t){var e=t._path=qi("path");t.options.className&&M(e,t.options.className),t.options.interactive&&M(e,"leaflet-interactive"),this._updateStyle(t),this._layers[h(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){T(t._path),t.removeInteractiveTarget(t._path),delete this._layers[h(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var e=t._path,t=t.options;e&&(t.stroke?(e.setAttribute("stroke",t.color),e.setAttribute("stroke-opacity",t.opacity),e.setAttribute("stroke-width",t.weight),e.setAttribute("stroke-linecap",t.lineCap),e.setAttribute("stroke-linejoin",t.lineJoin),t.dashArray?e.setAttribute("stroke-dasharray",t.dashArray):e.removeAttribute("stroke-dasharray"),t.dashOffset?e.setAttribute("stroke-dashoffset",t.dashOffset):e.removeAttribute("stroke-dashoffset")):e.setAttribute("stroke","none"),t.fill?(e.setAttribute("fill",t.fillColor||t.color),e.setAttribute("fill-opacity",t.fillOpacity),e.setAttribute("fill-rule",t.fillRule||"evenodd")):e.setAttribute("fill","none"))},_updatePoly:function(t,e){this._setPath(t,dt(t._parts,e))},_updateCircle:function(t){var e=t._point,i=Math.max(Math.round(t._radius),1),n="a"+i+","+(Math.max(Math.round(t._radiusY),1)||i)+" 0 1,0 ",e=t._empty()?"M0 0":"M"+(e.x-i)+","+e.y+n+2*i+",0 "+n+2*-i+",0 ";this._setPath(t,e)},_setPath:function(t,e){t._path.setAttribute("d",e)},_bringToFront:function(t){fe(t._path)},_bringToBack:function(t){ge(t._path)}});function Ki(t){return b.svg||b.vml?new Gi(t):null}b.vml&&Gi.include(zt),A.include({getRenderer:function(t){t=(t=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer)||(this._renderer=this._createRenderer());return this.hasLayer(t)||this.addLayer(t),t},_getPaneRenderer:function(t){var e;return"overlayPane"!==t&&void 0!==t&&(void 0===(e=this._paneRenderers[t])&&(e=this._createRenderer({pane:t}),this._paneRenderers[t]=e),e)},_createRenderer:function(t){return this.options.preferCanvas&&Ui(t)||Ki(t)}});var Yi=xi.extend({initialize:function(t,e){xi.prototype.initialize.call(this,this._boundsToLatLngs(t),e)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return[(t=g(t)).getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});Gi.create=qi,Gi.pointsToPath=dt,wi.geometryToLayer=bi,wi.coordsToLatLng=Li,wi.coordsToLatLngs=Ti,wi.latLngToCoords=Mi,wi.latLngsToCoords=zi,wi.getFeature=Ci,wi.asFeature=Zi,A.mergeOptions({boxZoom:!0});var _t=n.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){S(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){k(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){T(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),re(),Le(),this._startPoint=this._map.mouseEventToContainerPoint(t),S(document,{contextmenu:Re,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=P("div","leaflet-zoom-box",this._container),M(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var t=new f(this._point,this._startPoint),e=t.getSize();Z(this._box,t.min),this._box.style.width=e.x+"px",this._box.style.height=e.y+"px"},_finish:function(){this._moved&&(T(this._box),z(this._container,"leaflet-crosshair")),ae(),Te(),k(document,{contextmenu:Re,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){1!==t.which&&1!==t.button||(this._finish(),this._moved&&(this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(a(this._resetState,this),0),t=new s(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point)),this._map.fitBounds(t).fire("boxzoomend",{boxZoomBounds:t})))},_onKeyDown:function(t){27===t.keyCode&&(this._finish(),this._clearDeferredResetState(),this._resetState())}}),Ct=(A.addInitHook("addHandler","boxZoom",_t),A.mergeOptions({doubleClickZoom:!0}),n.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var e=this._map,i=e.getZoom(),n=e.options.zoomDelta,i=t.originalEvent.shiftKey?i-n:i+n;"center"===e.options.doubleClickZoom?e.setZoom(i):e.setZoomAround(t.containerPoint,i)}})),Zt=(A.addInitHook("addHandler","doubleClickZoom",Ct),A.mergeOptions({dragging:!0,inertia:!0,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0}),n.extend({addHooks:function(){var t;this._draggable||(t=this._map,this._draggable=new Xe(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))),M(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){z(this._map._container,"leaflet-grab"),z(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t,e=this._map;e._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity?(t=g(this._map.options.maxBounds),this._offsetLimit=_(this._map.latLngToContainerPoint(t.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(t.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))):this._offsetLimit=null,e.fire("movestart").fire("dragstart"),e.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){var e,i;this._map.options.inertia&&(e=this._lastTime=+new Date,i=this._lastPos=this._draggable._absPos||this._draggable._newPos,this._positions.push(i),this._times.push(e),this._prunePositions(e)),this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;1e.max.x&&(t.x=this._viscousLimit(t.x,e.max.x)),t.y>e.max.y&&(t.y=this._viscousLimit(t.y,e.max.y)),this._draggable._newPos=this._draggable._startPos.add(t))},_onPreDragWrap:function(){var t=this._worldWidth,e=Math.round(t/2),i=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-e+i)%t+e-i,n=(n+e+i)%t-e-i,t=Math.abs(o+i)e.getMaxZoom()&&11&&arguments[1]!==undefined?arguments[1]:false;var html="";var thumbnail="";var thumb2x="";// Note, album.json might not be loaded, if // a) the photo is a single public photo in a private album // b) the photo is part of a search result -var isCover=album.json&&album.json.cover_id===data.id;var isVideo=data.type&&data.type.indexOf("video")>-1;var isRaw=data.type&&data.type.indexOf("raw")>-1;var isLivePhoto=data.live_photo_url!==""&&data.live_photo_url!==null;if(data.size_variants.thumb===null){if(isLivePhoto){thumbnail="".concat(lychee.locale["PHOTO_THUMBNAIL"],"");}if(isVideo){thumbnail="".concat(lychee.locale["PHOTO_THUMBNAIL"],"");}else if(isRaw){thumbnail="".concat(lychee.locale["PHOTO_THUMBNAIL"],"");}}else if(lychee.layout===0){if(data.size_variants.thumb2x!==null){thumb2x=data.size_variants.thumb2x.url;}if(thumb2x!==""){thumb2x="data-srcset='".concat(thumb2x," 2x'");}thumbnail="");thumbnail+="".concat(lychee.locale["PHOTO_THUMBNAIL"],"");thumbnail+="";}else{if(data.size_variants.small!==null){if(data.size_variants.small2x!==null){thumb2x="data-srcset='".concat(data.size_variants.small.url," ").concat(data.size_variants.small.width,"w, ").concat(data.size_variants.small2x.url," ").concat(data.size_variants.small2x.width,"w'");}thumbnail="");thumbnail+="".concat(lychee.locale["PHOTO_THUMBNAIL"],"");thumbnail+="";}else if(data.size_variants.medium!==null){if(data.size_variants.medium2x!==null){thumb2x="data-srcset='".concat(data.size_variants.medium.url," ").concat(data.size_variants.medium.width,"w, ").concat(data.size_variants.medium2x.url," ").concat(data.size_variants.medium2x.width,"w'");}thumbnail="");thumbnail+="".concat(lychee.locale["PHOTO_THUMBNAIL"],"");thumbnail+="";}else if(!isVideo){// Fallback for images with no small or medium. +var isCover=album.json&&album.json.cover_id===data.id;var isVideo=data.type&&data.type.indexOf("video")>-1;var isRaw=data.type&&data.type.indexOf("raw")>-1;var isLivePhoto=data.live_photo_url!==""&&data.live_photo_url!==null;if(data.size_variants.thumb===null){if(isLivePhoto){thumbnail="".concat(lychee.locale["PHOTO_THUMBNAIL"],"");}if(isVideo){thumbnail="".concat(lychee.locale["PHOTO_THUMBNAIL"],"");}else if(isRaw){thumbnail="".concat(lychee.locale["PHOTO_THUMBNAIL"],"");}}else if(lychee.layout==="square"){if(data.size_variants.thumb2x!==null){thumb2x=data.size_variants.thumb2x.url;}if(thumb2x!==""){thumb2x="data-srcset='".concat(thumb2x," 2x'");}thumbnail="");thumbnail+="".concat(lychee.locale["PHOTO_THUMBNAIL"],"");thumbnail+="";}else{if(data.size_variants.small!==null){if(data.size_variants.small2x!==null){thumb2x="data-srcset='".concat(data.size_variants.small.url," ").concat(data.size_variants.small.width,"w, ").concat(data.size_variants.small2x.url," ").concat(data.size_variants.small2x.width,"w'");}thumbnail="");thumbnail+="".concat(lychee.locale["PHOTO_THUMBNAIL"],"");thumbnail+="";}else if(data.size_variants.medium!==null){if(data.size_variants.medium2x!==null){thumb2x="data-srcset='".concat(data.size_variants.medium.url," ").concat(data.size_variants.medium.width,"w, ").concat(data.size_variants.medium2x.url," ").concat(data.size_variants.medium2x.width,"w'");}thumbnail="");thumbnail+="".concat(lychee.locale["PHOTO_THUMBNAIL"],"");thumbnail+="";}else if(!isVideo){// Fallback for images with no small or medium. thumbnail="");thumbnail+="").concat(lychee.locale["PHOTO_THUMBNAIL"],"");thumbnail+="";}else{// Fallback for videos with no small (the case of no thumb is // handled at the top of this function). if(data.size_variants.thumb2x!==null){thumb2x=data.size_variants.thumb2x.url;}if(thumb2x!==""){thumb2x="data-srcset='".concat(data.size_variants.thumb.url," ").concat(data.size_variants.thumb.width,"w, ").concat(thumb2x," ").concat(data.size_variants.thumb2x.width,"w'");}thumbnail="";thumbnail+="".concat(lychee.locale["PHOTO_THUMBNAIL"],"");thumbnail+="";}}html+=lychee.html(_templateObject19||(_templateObject19=_taggedTemplateLiteral(["\n\t\t\t
\n\t\t\t\t","\n\t\t\t\t
\n\t\t\t\t\t

$","

\n\t\t\t"])),disabled?"disabled":"",data.album_id,data.id,tabindex.get_next_tab_index(),!album.isUploadable()||disabled?"false":"true",thumbnail,data.title,data.title);if(data.taken_at!==null)html+=lychee.html(_templateObject20||(_templateObject20=_taggedTemplateLiteral(["","",""])),lychee.locale["CAMERA_DATE"],build.iconic("camera-slr"),lychee.locale.printDateTime(data.taken_at));else html+=lychee.html(_templateObject21||(_templateObject21=_taggedTemplateLiteral(["",""])),lychee.locale.printDateTime(data.created_at));html+="
";if(album.isUploadable()){// Note, `album.json` might be null, if the photo is displayed as @@ -2960,12 +2960,12 @@ clearTimeout(loadingBar._timeout);setTimeout(function(){return loadingBar.dom(). */rights:null,/** * Values: * - * - `0`: Use default, "square" layout. - * - `1`: Use Flickr-like "justified" layout. - * - `2`: Use Google-like "unjustified" layout + * - `square`: Use default, "square" layout. + * - `justified`: Use Flickr-like "justified" layout. + * - `unjustified`: Use Google-like "unjustified" layout * - * @type {number} - */layout:1,/** + * @type {string} + */layout:"justified",/** * Display search in public mode. * @type {boolean} */public_search:false,/** @@ -3129,7 +3129,7 @@ var footer=document.querySelector("#lychee_footer");footer.querySelector("p.home * * @param {InitializationData} data * @returns {void} - */lychee.parsePublicInitializationData=function(data){lychee.sorting_photos=data.config.sorting_photos;lychee.sorting_albums=data.config.sorting_albums;lychee.share_button_visible=data.config.share_button_visible;lychee.album_subtitle_type=data.config.album_subtitle_type||"oldstyle";lychee.album_decoration=data.config.album_decoration||"layers";lychee.album_decoration_orientation=data.config.album_decoration_orientation||"row";lychee.checkForUpdates=data.config.check_for_updates;lychee.layout=Number.parseInt(data.config.layout,10);if(Number.isNaN(lychee.layout))lychee.layout=1;lychee.landing_page_enable=data.config.landing_page_enable;lychee.public_search=data.config.public_search;lychee.image_overlay_type=data.config.image_overlay_type||"exif";lychee.image_overlay_type_default=lychee.image_overlay_type;lychee.map_display=data.config.map_display;lychee.map_display_public=data.config.map_display_public;lychee.map_display_direction=data.config.map_display_direction==="1";lychee.map_provider=data.config.map_provider||"Wikimedia";lychee.map_include_subalbums=data.config.map_include_subalbums;lychee.location_show=data.config.location_show;lychee.location_show_public=data.config.location_show_public;lychee.swipe_tolerance_x=Number.parseInt(data.config.swipe_tolerance_x,10)||150;lychee.swipe_tolerance_y=Number.parseInt(data.config.swipe_tolerance_y,10)||250;lychee.nsfw_visible=data.config.nsfw_visible;lychee.nsfw_visible_saved=lychee.nsfw_visible;lychee.nsfw_blur=data.config.nsfw_blur;lychee.nsfw_warning=data.config.nsfw_warning;lychee.nsfw_banner_override=data.config.nsfw_banner_override||"";lychee.sm_facebook_url=data.config.sm_facebook_url;lychee.sm_flickr_url=data.config.sm_flickr_url;lychee.sm_instagram_url=data.config.sm_instagram_url;lychee.sm_twitter_url=data.config.sm_twitter_url;lychee.sm_youtube_url=data.config.sm_youtube_url;lychee.rss_enable=data.config.rss_enable;lychee.rss_feeds=data.config.rss_feeds;lychee.site_title=data.config.site_title;lychee.site_owner=data.config.site_owner;lychee.site_copyright_begin=data.config.site_copyright_begin;lychee.site_copyright_end=data.config.site_copyright_end;lychee.footer_show_social_media=data.config.footer_show_social_media;lychee.footer_show_copyright=data.config.footer_show_copyright;lychee.footer_additional_text=data.config.footer_additional_text;lychee.mod_frame_enabled=data.config.mod_frame_enabled;lychee.mod_frame_refresh=Number.parseInt(data.config.mod_frame_refresh,10)||30;var isTv=window.matchMedia("tv").matches;lychee.header_auto_hide=!isTv;lychee.active_focus_on_page_load=isTv;lychee.enable_button_visibility=!isTv;lychee.enable_button_share=!isTv;lychee.enable_button_archive=!isTv;lychee.enable_button_move=!isTv;lychee.enable_button_trash=!isTv;lychee.enable_button_fullscreen=!isTv;lychee.enable_button_download=!isTv;lychee.enable_button_add=!isTv;lychee.enable_button_more=!isTv;lychee.enable_button_rotate=!isTv;lychee.enable_close_tab_on_esc=isTv;lychee.enable_tabindex=isTv;lychee.enable_contextmenu_header=!isTv;lychee.hide_content_during_imgview=isTv;};/** + */lychee.parsePublicInitializationData=function(data){lychee.sorting_photos=data.config.sorting_photos;lychee.sorting_albums=data.config.sorting_albums;lychee.share_button_visible=data.config.share_button_visible;lychee.album_subtitle_type=data.config.album_subtitle_type||"oldstyle";lychee.album_decoration=data.config.album_decoration||"layers";lychee.album_decoration_orientation=data.config.album_decoration_orientation||"row";lychee.checkForUpdates=data.config.check_for_updates;lychee.layout=data.config.layout||"justified";lychee.landing_page_enable=data.config.landing_page_enable;lychee.public_search=data.config.public_search;lychee.image_overlay_type=data.config.image_overlay_type||"exif";lychee.image_overlay_type_default=lychee.image_overlay_type;lychee.map_display=data.config.map_display;lychee.map_display_public=data.config.map_display_public;lychee.map_display_direction=data.config.map_display_direction==="1";lychee.map_provider=data.config.map_provider||"Wikimedia";lychee.map_include_subalbums=data.config.map_include_subalbums;lychee.location_show=data.config.location_show;lychee.location_show_public=data.config.location_show_public;lychee.swipe_tolerance_x=Number.parseInt(data.config.swipe_tolerance_x,10)||150;lychee.swipe_tolerance_y=Number.parseInt(data.config.swipe_tolerance_y,10)||250;lychee.nsfw_visible=data.config.nsfw_visible;lychee.nsfw_visible_saved=lychee.nsfw_visible;lychee.nsfw_blur=data.config.nsfw_blur;lychee.nsfw_warning=data.config.nsfw_warning;lychee.nsfw_banner_override=data.config.nsfw_banner_override||"";lychee.sm_facebook_url=data.config.sm_facebook_url;lychee.sm_flickr_url=data.config.sm_flickr_url;lychee.sm_instagram_url=data.config.sm_instagram_url;lychee.sm_twitter_url=data.config.sm_twitter_url;lychee.sm_youtube_url=data.config.sm_youtube_url;lychee.rss_enable=data.config.rss_enable;lychee.rss_feeds=data.config.rss_feeds;lychee.site_title=data.config.site_title;lychee.site_owner=data.config.site_owner;lychee.site_copyright_begin=data.config.site_copyright_begin;lychee.site_copyright_end=data.config.site_copyright_end;lychee.footer_show_social_media=data.config.footer_show_social_media;lychee.footer_show_copyright=data.config.footer_show_copyright;lychee.footer_additional_text=data.config.footer_additional_text;lychee.mod_frame_enabled=data.config.mod_frame_enabled;lychee.mod_frame_refresh=Number.parseInt(data.config.mod_frame_refresh,10)||30;var isTv=window.matchMedia("tv").matches;lychee.header_auto_hide=!isTv;lychee.active_focus_on_page_load=isTv;lychee.enable_button_visibility=!isTv;lychee.enable_button_share=!isTv;lychee.enable_button_archive=!isTv;lychee.enable_button_move=!isTv;lychee.enable_button_trash=!isTv;lychee.enable_button_fullscreen=!isTv;lychee.enable_button_download=!isTv;lychee.enable_button_add=!isTv;lychee.enable_button_more=!isTv;lychee.enable_button_rotate=!isTv;lychee.enable_close_tab_on_esc=isTv;lychee.enable_tabindex=isTv;lychee.enable_contextmenu_header=!isTv;lychee.hide_content_during_imgview=isTv;};/** * Parses the configuration settings which are only available, if a user is authenticated. * * TODO: If configuration management is re-factored on the backend, remember to use proper types in the first place @@ -3993,7 +3993,7 @@ _photo3.json.album_id=album.json.id;}var image=$("img#image");if(_photo3.json.si album.json.id=SearchAlbumIDPrefix+"/"+term;return;}search.json=data;// Create and assign a `SearchAlbum` album.json={id:SearchAlbumIDPrefix+"/"+term,title:lychee.locale["SEARCH_RESULTS"],photos:search.json.photos,albums:search.json.albums,tag_albums:search.json.tag_albums,thumb:null,rights:{can_download:false},policy:{is_public:false}};var albumsData="";var photosData="";// Build HTML for album search.json.tag_albums.forEach(function(album){albums.parse(album);albumsData+=build.album(album);});search.json.albums.forEach(function(album){albums.parse(album);albumsData+=build.album(album);});// Build HTML for photo -search.json.photos.forEach(function(photo){photosData+=build.photo(photo);});var albums_divider=lychee.locale["ALBUMS"];var photos_divider=lychee.locale["PHOTOS"];if(albumsData!=="")albums_divider+=" ("+(search.json.tag_albums.length+search.json.albums.length)+")";if(photosData!==""){photos_divider+=" ("+search.json.photos.length+")";if(lychee.layout===1){photosData='
'+photosData+"
";}else if(lychee.layout===2){photosData='
'+photosData+"
";}}// 1. No albums and photos +search.json.photos.forEach(function(photo){photosData+=build.photo(photo);});var albums_divider=lychee.locale["ALBUMS"];var photos_divider=lychee.locale["PHOTOS"];if(albumsData!=="")albums_divider+=" ("+(search.json.tag_albums.length+search.json.albums.length)+")";if(photosData!==""){photos_divider+=" ("+search.json.photos.length+")";if(lychee.layout==="justified"){photosData='
'+photosData+"
";}else if(lychee.layout==="unjustified"){photosData='
'+photosData+"
";}}// 1. No albums and photos // 2. Only photos // 3. Only albums // 4. Albums and photos @@ -4788,7 +4788,7 @@ sharedData+=albums.json.shared_albums.reduce(function(html,album){albums.parse(a * @returns {void} */"delete":function _delete(albumID){$('.album[data-id="'+albumID+'"]').css("opacity",0).animate({width:0,marginLeft:0},300,function(){$(this).remove();if(albums.json.albums.length<=0)lychee.content.find(".divider:last-child").remove();});}}};view.album={/** @returns {void} */init:function init(){multiselect.clearSelection();view.album.sidebar();view.album.title();view.album["public"]();view.album.nsfw();view.album.nsfw_warning.init();view.album.content.init();// TODO: `init` is not a property of the Album JSON; this is a property of the view. Consider to move it to `view.album.isInitialized` album.json.init=true;},/** @returns {void} */title:function title(){if((visible.album()||!album.json.init)&&!visible.photo()){switch(album.getID()){case SmartAlbumID.STARRED:lychee.setMetaData(lychee.locale["STARRED"]);break;case SmartAlbumID.PUBLIC:lychee.setMetaData(lychee.locale["PUBLIC"]);break;case SmartAlbumID.RECENT:lychee.setMetaData(lychee.locale["RECENT"]);break;case SmartAlbumID.UNSORTED:lychee.setMetaData(lychee.locale["UNSORTED"]);break;case SmartAlbumID.ON_THIS_DAY:lychee.setMetaData(lychee.locale["ON_THIS_DAY"]);break;default:if(album.json.init)_sidebar.changeAttr("title",album.json.title);lychee.setMetaData(album.json.title,true,album.json.description);break;}}},nsfw_warning:{/** @returns {void} */init:function init(){if(!lychee.nsfw_warning){$("#sensitive_warning").removeClass("active");return;}if(album.json.policy.is_nsfw&&!lychee.nsfw_unlocked_albums.includes(album.json.id)){$("#sensitive_warning").addClass("active");}else{$("#sensitive_warning").removeClass("active");}},/** @returns {void} */next:function next(){lychee.nsfw_unlocked_albums.push(album.json.id);$("#sensitive_warning").removeClass("active");}},content:{/** @returns {void} */init:function init(){var photosData="";var albumsData="";var html="";if(album.json.albums){album.json.albums.forEach(function(_album){albums.parse(_album);albumsData+=build.album(_album,!album.json.rights.can_edit);});}if(album.json.photos){// Build photos -album.json.photos.forEach(function(_photo){photosData+=build.photo(_photo,!album.json.rights.can_edit);});}if(photosData!==""){if(lychee.layout===1){// The CSS class 'laying-out' prevents the DIV from being +album.json.photos.forEach(function(_photo){photosData+=build.photo(_photo,!album.json.rights.can_edit);});}if(photosData!==""){if(lychee.layout==="justified"){// The CSS class 'laying-out' prevents the DIV from being // rendered. // The CSS class will eventually be removed by the // layout routine `view.album.content.justify` after all @@ -4799,7 +4799,7 @@ album.json.photos.forEach(function(_photo){photosData+=build.photo(_photo,!album // prevent `view.album.content.justify` from calculating // the correct width of the container. // TODO: Re-add the CSS class `laying-out` here after https://github.com/LycheeOrg/Lychee-front/pull/335 has been merged. -photosData='
'+photosData+"
";}else if(lychee.layout===2){photosData='
'+photosData+"
";}}if(albumsData!==""&&photosData!==""){html=build.divider(lychee.locale["ALBUMS"]);}html+=albumsData;if(albumsData!==""&&photosData!==""){html+=build.divider(lychee.locale["PHOTOS"]);}html+=photosData;// Add photos to view +photosData='
'+photosData+"
";}else if(lychee.layout==="unjustified"){photosData='
'+photosData+"
";}}if(albumsData!==""&&photosData!==""){html=build.divider(lychee.locale["ALBUMS"]);}html+=albumsData;if(albumsData!==""&&photosData!==""){html+=build.divider(lychee.locale["PHOTOS"]);}html+=photosData;// Add photos to view lychee.content.html(html);album.apply_nsfw_filter();setTimeout(function(){view.album.content.justify();},0);},/** @returns {void} */restoreScroll:function restoreScroll(){// Restore scroll position var urls=JSON.parse(sessionStorage.getItem("scroll"));var urlWindow=window.location.href;$("#lychee_view_container").scrollTop(urls!=null&&urls[urlWindow]?urls[urlWindow]:0);},/** * @param {string} photoID @@ -4820,7 +4820,7 @@ var urls=JSON.parse(sessionStorage.getItem("scroll"));var urlWindow=window.locat * @param {Photo} data * @returns {void} */updatePhoto:function updatePhoto(data){var src,srcset="";// This mimicks the structure of build.photo -if(lychee.layout===0){src=data.size_variants.thumb.url;if(data.size_variants.thumb2x!==null){srcset="".concat(data.size_variants.thumb2x.url," 2x");}}else{if(data.size_variants.small!==null){src=data.size_variants.small.url;if(data.size_variants.small2x!==null){srcset="".concat(data.size_variants.small.url," ").concat(data.size_variants.small.width,"w, ").concat(data.size_variants.small2x.url," ").concat(data.size_variants.small2x.width,"w");}}else if(data.size_variants.medium!==null){src=data.size_variants.medium.url;if(data.size_variants.medium2x!==null){srcset="".concat(data.size_variants.medium.url," ").concat(data.size_variants.medium.width,"w, ").concat(data.size_variants.medium2x.url," ").concat(data.size_variants.medium2x.width,"w");}}else if(!data.type||data.type.indexOf("video")!==0){src=data.size_variants.original.url;}else{src=data.size_variants.thumb.url;if(data.size_variants.thumb2x!==null){srcset="".concat(data.size_variants.thumb.url," ").concat(data.size_variants.thumb.width,"w, ").concat(data.size_variants.thumb2x.url," ").concat(data.size_variants.thumb2x.width,"w");}}}$('.photo[data-id="'+data.id+'"] > span.thumbimg > img').attr("data-src",src).attr("data-srcset",srcset).addClass("lazyload");setTimeout(function(){return view.album.content.justify();},0);},/** +if(lychee.layout==="square"){src=data.size_variants.thumb.url;if(data.size_variants.thumb2x!==null){srcset="".concat(data.size_variants.thumb2x.url," 2x");}}else{if(data.size_variants.small!==null){src=data.size_variants.small.url;if(data.size_variants.small2x!==null){srcset="".concat(data.size_variants.small.url," ").concat(data.size_variants.small.width,"w, ").concat(data.size_variants.small2x.url," ").concat(data.size_variants.small2x.width,"w");}}else if(data.size_variants.medium!==null){src=data.size_variants.medium.url;if(data.size_variants.medium2x!==null){srcset="".concat(data.size_variants.medium.url," ").concat(data.size_variants.medium.width,"w, ").concat(data.size_variants.medium2x.url," ").concat(data.size_variants.medium2x.width,"w");}}else if(!data.type||data.type.indexOf("video")!==0){src=data.size_variants.original.url;}else{src=data.size_variants.thumb.url;if(data.size_variants.thumb2x!==null){srcset="".concat(data.size_variants.thumb.url," ").concat(data.size_variants.thumb.width,"w, ").concat(data.size_variants.thumb2x.url," ").concat(data.size_variants.thumb2x.width,"w");}}}$('.photo[data-id="'+data.id+'"] > span.thumbimg > img').attr("data-src",src).attr("data-srcset",srcset).addClass("lazyload");setTimeout(function(){return view.album.content.justify();},0);},/** * @param {string} photoID * @param {boolean} [justify=false] * @returns {void} @@ -4846,7 +4846,7 @@ if(album.json){if(visible.sidebar()){var videoCount=0;$.each(album.json.photos,f // a virtual "search smart album" which fills `album.json`. if(album.json===null||album.json.photos.length===0)return;/** * @type {Photo[]} - */var photos=album.json.photos;if(lychee.layout===1){/** @type {jQuery} */var jqJustifiedLayout=$(".justified-layout");var containerWidth=parseFloat(jqJustifiedLayout.width());if(containerWidth===0){// The reported width is zero, if `.justified-layout` + */var photos=album.json.photos;if(lychee.layout==="justified"){/** @type {jQuery} */var jqJustifiedLayout=$(".justified-layout");var containerWidth=parseFloat(jqJustifiedLayout.width());if(containerWidth===0){// The reported width is zero, if `.justified-layout` // or any parent element is hidden via `display: none`. // Currently, this happens when a page reload is triggered // in photo view due to dorky timing constraints. @@ -4888,7 +4888,7 @@ $(".justified-layout").css("height",layoutGeometry.containerHeight+"px");$(".jus // and `photos` can get out of sync as search // query is being modified. return false;}var imgs=$(this).css({top:layoutGeometry.boxes[i].top+"px",width:layoutGeometry.boxes[i].width+"px",height:layoutGeometry.boxes[i].height+"px",left:layoutGeometry.boxes[i].left+"px"}).find(".thumbimg > img");if(imgs.length>0&&imgs[0].getAttribute("data-srcset")){imgs[0].setAttribute("sizes",layoutGeometry.boxes[i].width+"px");}});// Show updated layout -jqJustifiedLayout.removeClass("laying-out");}else if(lychee.layout===2){/** @type {jQuery} */var jqUnjustifiedLayout=$(".unjustified-layout");var _containerWidth=parseFloat(jqUnjustifiedLayout.width());if(_containerWidth===0){// Triggered on Reload in photo view. +jqJustifiedLayout.removeClass("laying-out");}else if(lychee.layout==="unjustified"){/** @type {jQuery} */var jqUnjustifiedLayout=$(".unjustified-layout");var _containerWidth=parseFloat(jqUnjustifiedLayout.width());if(_containerWidth===0){// Triggered on Reload in photo view. _containerWidth=$(window).width()-2*parseFloat(jqUnjustifiedLayout.css("margin"));}/** * An album listing has potentially hundreds of photos, hence * only query for them once. @@ -5023,7 +5023,7 @@ var width=imgWidth\n\t\t\t

".concat(lychee.locale["DEFAULT_LICENSE"],"\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t").concat(lychee.locale["PHOTO_LICENSE_HELP"],"\n\t\t\t

\n\t\t\t\n\t\t\t
\n\t\t\t");$(".settings_view").append(msg);$("select#license").val(lychee.default_license===""?"none":lychee.default_license);settings.bind("#basicModal__action_set_license",".setDefaultLicense",settings.setDefaultLicense);},/** * @returns {void} - */setLayout:function setLayout(){var msg="\n\t\t\t
\n\t\t\t

".concat(lychee.locale["LAYOUT_TYPE"],"\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t

\n\t\t\t\n\t\t\t
\n\t\t\t");$(".settings_view").append(msg);$("select#layout").val(lychee.layout);settings.bind("#basicModal__action_set_layout",".setLayout",settings.setLayout);},/** + */setLayout:function setLayout(){var msg="\n\t\t\t
\n\t\t\t

".concat(lychee.locale["LAYOUT_TYPE"],"\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t

\n\t\t\t\n\t\t\t
\n\t\t\t");$(".settings_view").append(msg);$("select#layout").val(lychee.layout);settings.bind("#basicModal__action_set_layout",".setLayout",settings.setLayout);},/** * @returns {void} */setPublicSearch:function setPublicSearch(){var msg="\n\t\t\t
\n\t\t\t

".concat(lychee.locale["PUBLIC_SEARCH_TEXT"],"\n\t\t\t\n\t\t\t

\n\t\t\t
\n\t\t\t");$(".settings_view").append(msg);if(lychee.public_search)$("#PublicSearch").click();settings.bind("#PublicSearch",".setPublicSearch",settings.changePublicSearch);},/** * @returns {void} @@ -5345,7 +5345,7 @@ $(".u2f_view").append(build.u2f(credential));settings.bind("#CredentialDelete"+c * @property {string} landing_page_enable - actually a boolean * @property {string} lang * @property {string[]} lang_available - * @property {string} layout - actually a number: `0`, `1` or `2` + * @property {string} layout - `square`, `justified` or `unjustified` * @property {string} [location] * @property {string} location_decoding - actually a boolean * @property {string} location_show - actually a boolean @@ -5503,27 +5503,44 @@ $(".u2f_view").append(build.u2f(credential));settings.bind("#CredentialDelete"+c * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */var _routes=/*#__PURE__*/new WeakMap();var _headers=/*#__PURE__*/new WeakMap();var _includeCredentials=/*#__PURE__*/new WeakMap();var _fetch=/*#__PURE__*/new WeakSet();var _parseIncomingServerOptions=/*#__PURE__*/new WeakSet();var _parseOutgoingCredentials=/*#__PURE__*/new WeakSet();var WebAuthn=/*#__PURE__*/function(){/** + * Create a new WebAuthn instance. + * + * @param routes {{registerOptions: string, register: string, loginOptions: string, login: string}} + * @param headers {{string}} + * @param includeCredentials {boolean} + * @param xcsrfToken {string|null} Either a csrf token (40 chars) or xsrfToken (224 chars) + */function WebAuthn(){var routes=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var _headers2=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var includeCredentials=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var xcsrfToken=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;_classCallCheck(this,WebAuthn);/** + * Parses the outgoing credentials from the browser to the server. + * + * @param credentials {Credential|PublicKeyCredential} + * @return {{response: {string}, rawId: string, id: string, type: string}} + */_classPrivateMethodInitSpec(this,_parseOutgoingCredentials);/** + * Parses the Public Key Options received from the Server for the browser. + * + * @param publicKey {Object} + * @returns {Object} + */_classPrivateMethodInitSpec(this,_parseIncomingServerOptions);/** + * Returns a fetch promise to resolve later. + * + * @param data {Object} + * @param route {string} + * @param headers {{string}} + * @returns {Promise} + */_classPrivateMethodInitSpec(this,_fetch);/** * Routes for WebAuthn assertion (login) and attestation (register). * * @type {{registerOptions: string, register: string, loginOptions: string, login: string, }} - */ /** + */_classPrivateFieldInitSpec(this,_routes,{writable:true,value:{registerOptions:"webauthn/register/options",register:"webauthn/register",loginOptions:"webauthn/login/options",login:"webauthn/login"}});/** * Headers to use in ALL requests done. * * @type {{Accept: string, "Content-Type": string, "X-Requested-With": string}} - */ /** + */_classPrivateFieldInitSpec(this,_headers,{writable:true,value:{Accept:"application/json","Content-Type":"application/json","X-Requested-With":"XMLHttpRequest"}});/** * If set to true, the credentials option will be set to 'include' on all fetch calls, * or else it will use the default 'same-origin'. Use this if the backend is not the * same origin as the client or the XSRF protection will break without the session. * * @type {boolean} - */ /** - * Create a new WebAuthn instance. - * - * @param routes {{registerOptions: string, register: string, loginOptions: string, login: string}} - * @param headers {{string}} - * @param includeCredentials {boolean} - * @param xcsrfToken {string|null} Either a csrf token (40 chars) or xsrfToken (224 chars) - */function WebAuthn(){var routes=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var _headers2=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var includeCredentials=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var xcsrfToken=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;_classCallCheck(this,WebAuthn);_classPrivateMethodInitSpec(this,_parseOutgoingCredentials);_classPrivateMethodInitSpec(this,_parseIncomingServerOptions);_classPrivateMethodInitSpec(this,_fetch);_classPrivateFieldInitSpec(this,_routes,{writable:true,value:{registerOptions:"webauthn/register/options",register:"webauthn/register",loginOptions:"webauthn/login/options",login:"webauthn/login"}});_classPrivateFieldInitSpec(this,_headers,{writable:true,value:{Accept:"application/json","Content-Type":"application/json","X-Requested-With":"XMLHttpRequest"}});_classPrivateFieldInitSpec(this,_includeCredentials,{writable:true,value:false});Object.assign(_classPrivateFieldGet(this,_routes),routes);Object.assign(_classPrivateFieldGet(this,_headers),_headers2);_classPrivateFieldSet(this,_includeCredentials,includeCredentials);var xsrfToken;var csrfToken;if(xcsrfToken===null){// If the developer didn't issue an XSRF token, we will find it ourselves. + */_classPrivateFieldInitSpec(this,_includeCredentials,{writable:true,value:false});Object.assign(_classPrivateFieldGet(this,_routes),routes);Object.assign(_classPrivateFieldGet(this,_headers),_headers2);_classPrivateFieldSet(this,_includeCredentials,includeCredentials);var xsrfToken;var csrfToken;if(xcsrfToken===null){// If the developer didn't issue an XSRF token, we will find it ourselves. xsrfToken=_classStaticPrivateFieldSpecGet(WebAuthn,WebAuthn,_XsrfToken);csrfToken=_classStaticPrivateFieldSpecGet(WebAuthn,WebAuthn,_firstInputWithCsrfToken);}else{// Check if it is a CSRF or XSRF token if(xcsrfToken.length===40){csrfToken=xcsrfToken;}else if(xcsrfToken.length===224){xsrfToken=xcsrfToken;}else{throw new TypeError("CSRF token or XSRF token provided does not match requirements. Must be 40 or 224 characters.");}}if(xsrfToken!==null){var _classPrivateFieldGet2,_XXSRFTOKEN,_classPrivateFieldGet3;(_classPrivateFieldGet3=(_classPrivateFieldGet2=_classPrivateFieldGet(this,_headers))[_XXSRFTOKEN="X-XSRF-TOKEN"])!==null&&_classPrivateFieldGet3!==void 0?_classPrivateFieldGet3:_classPrivateFieldGet2[_XXSRFTOKEN]=xsrfToken;}else if(csrfToken!==null){var _classPrivateFieldGet4,_XCSRFTOKEN,_classPrivateFieldGet5;(_classPrivateFieldGet5=(_classPrivateFieldGet4=_classPrivateFieldGet(this,_headers))[_XCSRFTOKEN="X-CSRF-TOKEN"])!==null&&_classPrivateFieldGet5!==void 0?_classPrivateFieldGet5:_classPrivateFieldGet4[_XCSRFTOKEN]=csrfToken;}else{// We didn't find it, and since is required, we will bail out. throw new TypeError('Ensure a CSRF/XSRF token is manually set, or provided in a cookie "XSRF-TOKEN" or or there is meta tag named "csrf-token".');}}/** @@ -5557,7 +5574,13 @@ throw new TypeError('Ensure a CSRF/XSRF token is manually set, or provided in a * @returns {boolean} */},{key:"doesntSupportWebAuthn",value:function doesntSupportWebAuthn(){return!this.supportsWebAuthn();}}]);return WebAuthn;}();function _get_firstInputWithCsrfToken(){// First, try finding an CSRF Token in the head. var token=Array.from(document.head.getElementsByTagName("meta")).find(function(element){return element.name==="csrf-token";});if(token){return token.content;}// Then, try to find a hidden input containing the CSRF token. -token=Array.from(document.getElementsByTagName("input")).find(function(input){return input.name==="_token"&&input.type==="hidden";});if(token){return token.value;}return null;}function _get_XsrfToken(){var cookie=document.cookie.split(";").find(function(row){return /^\s*(X-)?[XC]SRF-TOKEN\s*=/.test(row);});// We must remove all '%3D' from the end of the string. +token=Array.from(document.getElementsByTagName("input")).find(function(input){return input.name==="_token"&&input.type==="hidden";});if(token){return token.value;}return null;}/** + * Returns the value of the XSRF token if it exists in a cookie. + * + * Inspired by https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie#example_2_get_a_sample_cookie_named_test2 + * + * @returns {?string} + */function _get_XsrfToken(){var cookie=document.cookie.split(";").find(function(row){return /^\s*(X-)?[XC]SRF-TOKEN\s*=/.test(row);});// We must remove all '%3D' from the end of the string. // Background: // The actual binary value of the CSFR value is encoded in Base64. // If the length of original, binary value is not a multiple of 3 bytes, @@ -5569,7 +5592,31 @@ token=Array.from(document.getElementsByTagName("input")).find(function(input){re // When we send back the value to the server as part of an AJAX request, // Laravel expects an unpadded value. // Hence, we must remove the `%3D`. -return cookie?cookie.split("=")[1].trim().replaceAll("%3D",""):null;}function _fetch2(data,route){var headers=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var url=new URL(route,window.location.origin).href;return fetch(url,{method:"POST",credentials:_classPrivateFieldGet(this,_includeCredentials)?"include":"same-origin",redirect:"error",headers:_objectSpread(_objectSpread({},_classPrivateFieldGet(this,_headers)),headers),body:JSON.stringify(data)});}function _base64UrlDecode(input){input=input.replace(/-/g,"+").replace(/_/g,"/");var pad=input.length%4;if(pad){if(pad===1){throw new Error("InvalidLengthError: Input base64url string is the wrong length to determine padding");}input+=new Array(5-pad).join("=");}return atob(input);}function _uint8Array(input){var useAtob=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;return Uint8Array.from(useAtob?atob(input):_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_base64UrlDecode).call(WebAuthn,input),function(c){return c.charCodeAt(0);});}function _arrayToBase64String(arrayBuffer){return btoa(String.fromCharCode.apply(String,_toConsumableArray(new Uint8Array(arrayBuffer))));}function _parseIncomingServerOptions2(publicKey){console.debug(publicKey);publicKey.challenge=_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_uint8Array).call(WebAuthn,publicKey.challenge);if("user"in publicKey){publicKey.user=_objectSpread(_objectSpread({},publicKey.user),{},{id:_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_uint8Array).call(WebAuthn,publicKey.user.id)});}["excludeCredentials","allowCredentials"].filter(function(key){return key in publicKey;}).forEach(function(key){publicKey[key]=publicKey[key].map(function(data){return _objectSpread(_objectSpread({},data),{},{id:_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_uint8Array).call(WebAuthn,data.id)});});});console.log(publicKey);return publicKey;}function _parseOutgoingCredentials2(credentials){var parseCredentials={id:credentials.id,type:credentials.type,rawId:_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_arrayToBase64String).call(WebAuthn,credentials.rawId),response:{}};["clientDataJSON","attestationObject","authenticatorData","signature","userHandle"].filter(function(key){return key in credentials.response;}).forEach(function(key){return parseCredentials.response[key]=_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_arrayToBase64String).call(WebAuthn,credentials.response[key]);});return parseCredentials;}function _handleResponse(response){if(!response.ok){throw response;}// Here we will do a small trick. Since most of the responses from the server +return cookie?cookie.split("=")[1].trim().replaceAll("%3D",""):null;}function _fetch2(data,route){var headers=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var url=new URL(route,window.location.origin).href;return fetch(url,{method:"POST",credentials:_classPrivateFieldGet(this,_includeCredentials)?"include":"same-origin",redirect:"error",headers:_objectSpread(_objectSpread({},_classPrivateFieldGet(this,_headers)),headers),body:JSON.stringify(data)});}/** + * Decodes a BASE64 URL string into a normal string. + * + * @param input {string} + * @returns {string|Iterable} + */function _base64UrlDecode(input){input=input.replace(/-/g,"+").replace(/_/g,"/");var pad=input.length%4;if(pad){if(pad===1){throw new Error("InvalidLengthError: Input base64url string is the wrong length to determine padding");}input+=new Array(5-pad).join("=");}return atob(input);}/** + * Transform a string into Uint8Array instance. + * + * @param input {string} + * @param useAtob {boolean} + * @returns {Uint8Array} + */function _uint8Array(input){var useAtob=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;return Uint8Array.from(useAtob?atob(input):_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_base64UrlDecode).call(WebAuthn,input),function(c){return c.charCodeAt(0);});}/** + * Encodes an array of bytes to a BASE64 URL string + * + * @param arrayBuffer {ArrayBuffer|Uint8Array} + * @returns {string} + */function _arrayToBase64String(arrayBuffer){return btoa(String.fromCharCode.apply(String,_toConsumableArray(new Uint8Array(arrayBuffer))));}function _parseIncomingServerOptions2(publicKey){console.debug(publicKey);publicKey.challenge=_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_uint8Array).call(WebAuthn,publicKey.challenge);if("user"in publicKey){publicKey.user=_objectSpread(_objectSpread({},publicKey.user),{},{id:_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_uint8Array).call(WebAuthn,publicKey.user.id)});}["excludeCredentials","allowCredentials"].filter(function(key){return key in publicKey;}).forEach(function(key){publicKey[key]=publicKey[key].map(function(data){return _objectSpread(_objectSpread({},data),{},{id:_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_uint8Array).call(WebAuthn,data.id)});});});console.log(publicKey);return publicKey;}function _parseOutgoingCredentials2(credentials){var parseCredentials={id:credentials.id,type:credentials.type,rawId:_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_arrayToBase64String).call(WebAuthn,credentials.rawId),response:{}};["clientDataJSON","attestationObject","authenticatorData","signature","userHandle"].filter(function(key){return key in credentials.response;}).forEach(function(key){return parseCredentials.response[key]=_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_arrayToBase64String).call(WebAuthn,credentials.response[key]);});return parseCredentials;}/** + * Handles the response from the Server. + * + * Throws the entire response if is not OK (HTTP 2XX). + * + * @param response {Response} + * @returns Promise + * @throws Response + */function _handleResponse(response){if(!response.ok){throw response;}// Here we will do a small trick. Since most of the responses from the server // are JSON, we will automatically parse the JSON body from the response. If // it's not JSON, we will push the body verbatim and let the dev handle it. return new Promise(function(resolve){response.json().then(function(json){return resolve(json);})["catch"](function(){return resolve(response.body);});});}var _XsrfToken={get:_get_XsrfToken,set:void 0};var _firstInputWithCsrfToken={get:_get_firstInputWithCsrfToken,set:void 0}; \ No newline at end of file diff --git a/public/dist/landing.css b/public/dist/landing.css index 64086f6cd7a..6eef016d8f6 100644 --- a/public/dist/landing.css +++ b/public/dist/landing.css @@ -166,7 +166,6 @@ b { user-select: none; -webkit-transition: color 0.3s, opacity 0.3s ease-out, -webkit-transform 0.3s ease-out, -webkit-box-shadow 0.3s; transition: color 0.3s, opacity 0.3s ease-out, -webkit-transform 0.3s ease-out, -webkit-box-shadow 0.3s; - -o-transition: color 0.3s, opacity 0.3s ease-out, transform 0.3s ease-out, box-shadow 0.3s; transition: color 0.3s, opacity 0.3s ease-out, transform 0.3s ease-out, box-shadow 0.3s; transition: color 0.3s, opacity 0.3s ease-out, transform 0.3s ease-out, box-shadow 0.3s, -webkit-transform 0.3s ease-out, -webkit-box-shadow 0.3s; } @@ -3772,7 +3771,6 @@ a { padding: 5px 0 5px 0; -webkit-transition: color 0.3s, opacity 0.3s ease-out, margin-left 0.5s, -webkit-transform 0.3s ease-out, -webkit-box-shadow 0.3s; transition: color 0.3s, opacity 0.3s ease-out, margin-left 0.5s, -webkit-transform 0.3s ease-out, -webkit-box-shadow 0.3s; - -o-transition: color 0.3s, opacity 0.3s ease-out, transform 0.3s ease-out, box-shadow 0.3s, margin-left 0.5s; transition: color 0.3s, opacity 0.3s ease-out, transform 0.3s ease-out, box-shadow 0.3s, margin-left 0.5s; transition: color 0.3s, opacity 0.3s ease-out, transform 0.3s ease-out, box-shadow 0.3s, margin-left 0.5s, -webkit-transform 0.3s ease-out, -webkit-box-shadow 0.3s; } diff --git a/public/dist/landing.js b/public/dist/landing.js index d38af676466..be17a259f01 100644 --- a/public/dist/landing.js +++ b/public/dist/landing.js @@ -1,5 +1,5 @@ -/*! jQuery v3.6.3 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},S=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||S).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.3",E=function(e,t){return new E.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,S)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=E)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{if(d.cssSupportsSelector&&!CSS.supports("selector(:is("+c+"))"))throw new Error;return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===E&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[E]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,S=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.cssSupportsSelector=ce(function(){return CSS.supports("selector(*)")&&C.querySelectorAll(":is(:jqfake)")&&!CSS.supports("selector(:is(*,:jqfake))")}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=E,!C.getElementsByName||!C.getElementsByName(E).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&S){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&S){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&S)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+E+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+E+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),d.cssSupportsSelector||y.push(":has"),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType&&e.documentElement||e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&S&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:S,!0)),N.test(r[1])&&E.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=S.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)}).prototype=E.fn,D=E(S);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=S.createDocumentFragment().appendChild(S.createElement("div")),(fe=S.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?E.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),S.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;E.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||E.expando+"_"+Ct.guid++;return this[e]=!0,e}}),E.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||E.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?E(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=S.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=S.implementation.createHTMLDocument("")).createElement("base")).href=S.location.href,t.head.appendChild(r)):t=S),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&E(o).remove(),E.merge([],i.childNodes)));var r,i,o},E.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(E.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},E.expr.pseudos.animated=function(t){return E.grep(E.timers,function(e){return t===e.elem}).length},E.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=E.css(e,"position"),c=E(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=E.css(e,"top"),u=E.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),i.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-E.css(r,"marginTop",!0),left:t.left-i.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===E.css(e,"position"))e=e.offsetParent;return e||re})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;E.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(a,s){E.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){E.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?E.css(e,t,i):E.style(e,t,n,i)},s,n?e:void 0,n)}})}),E.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){E.fn[t]=function(e){return this.on(t,e)}}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},R=function(){V()},M=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&z(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function X(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&M(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function U(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function z(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",R),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Me(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return R(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return R(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0sendKV('/Settings::setLayout', 'layout', 3, 422); - $this->sendKV('/Settings::setLayout', 'layout', 1); + $this->sendKV('/Settings::setLayout', 'layout', 'something', 422); + $this->sendKV('/Settings::setLayout', 'layout', 'justified'); } // Route::post('/Settings::setDefaultLicense', [Administration\SettingsController::class, 'setDefaultLicense']); From 6aac878953c91910473e69229f0e7f3b83a9d994 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sat, 16 Sep 2023 10:50:24 +0200 Subject: [PATCH 045/209] v4.12.0 (#2016) --- .../2023_09_16_074731_bump_version041200.php | 26 +++++++++++++++++++ version.md | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 database/migrations/2023_09_16_074731_bump_version041200.php diff --git a/database/migrations/2023_09_16_074731_bump_version041200.php b/database/migrations/2023_09_16_074731_bump_version041200.php new file mode 100644 index 00000000000..8057e5d6d79 --- /dev/null +++ b/database/migrations/2023_09_16_074731_bump_version041200.php @@ -0,0 +1,26 @@ +where('key', 'version')->update(['value' => '041200']); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down(): void + { + DB::table('configs')->where('key', 'version')->update(['value' => '041101']); + } +}; diff --git a/version.md b/version.md index 012d0f057e0..bcd250ed080 100644 --- a/version.md +++ b/version.md @@ -1 +1 @@ -4.11.1 \ No newline at end of file +4.12.0 \ No newline at end of file From 4a4005cb2539940d5f6524bbd340c16046385175 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sat, 16 Sep 2023 21:07:40 +0200 Subject: [PATCH 046/209] Unify photoId to photoID and albumId to albumID when found (#2017) --- app/Factories/AlbumFactory.php | 18 ++++----- .../Administration/SharingController.php | 6 +-- app/Http/Resources/SearchResource.php | 4 +- app/Jobs/ProcessImageJob.php | 12 +++--- tests/Feature/Base/BaseSharingTest.php | 8 ++-- tests/Feature/SearchTest.php | 40 +++++++++---------- 6 files changed, 44 insertions(+), 44 deletions(-) diff --git a/app/Factories/AlbumFactory.php b/app/Factories/AlbumFactory.php index f53d00917a8..040d653e061 100644 --- a/app/Factories/AlbumFactory.php +++ b/app/Factories/AlbumFactory.php @@ -42,7 +42,7 @@ class AlbumFactory * Returns an existing instance of an album with the given ID or fails * with an exception. * - * @param string $albumId the ID of the requested album + * @param string $albumID the ID of the requested album * @param bool $withRelations indicates if the relations of an * album (i.e. photos and sub-albums, * if applicable) shall be loaded, too. @@ -53,21 +53,21 @@ class AlbumFactory * @throws InvalidSmartIdException should not be thrown; otherwise this * indicates an internal bug */ - public function findAbstractAlbumOrFail(string $albumId, bool $withRelations = true): AbstractAlbum + public function findAbstractAlbumOrFail(string $albumID, bool $withRelations = true): AbstractAlbum { - $smartAlbumType = SmartAlbumType::tryFrom($albumId); + $smartAlbumType = SmartAlbumType::tryFrom($albumID); if ($smartAlbumType !== null) { return $this->createSmartAlbum($smartAlbumType, $withRelations); } - return $this->findBaseAlbumOrFail($albumId, $withRelations); + return $this->findBaseAlbumOrFail($albumID, $withRelations); } /** * Returns an existing model instance of an album with the given ID or * fails with an exception. * - * @param string $albumId the ID of the requested album + * @param string $albumID the ID of the requested album * @param bool $withRelations indicates if the relations of an * album (i.e. photos and sub-albums, * if applicable) shall be loaded, too. @@ -78,7 +78,7 @@ public function findAbstractAlbumOrFail(string $albumId, bool $withRelations = t * * @noinspection PhpIncompatibleReturnTypeInspection */ - public function findBaseAlbumOrFail(string $albumId, bool $withRelations = true): BaseAlbum + public function findBaseAlbumOrFail(string $albumID, bool $withRelations = true): BaseAlbum { $albumQuery = Album::query(); $tagAlbumQuery = TagAlbum::query(); @@ -91,12 +91,12 @@ public function findBaseAlbumOrFail(string $albumId, bool $withRelations = true) try { // PHPStan does not understand that `findOrFail` returns `BaseAlbum`, but assumes that it returns `Model` // @phpstan-ignore-next-line - return $albumQuery->findOrFail($albumId); + return $albumQuery->findOrFail($albumID); } catch (ModelNotFoundException) { try { - return $tagAlbumQuery->findOrFail($albumId); + return $tagAlbumQuery->findOrFail($albumID); } catch (ModelNotFoundException) { - throw (new ModelNotFoundException())->setModel(BaseAlbumImpl::class, [$albumId]); + throw (new ModelNotFoundException())->setModel(BaseAlbumImpl::class, [$albumID]); } } } diff --git a/app/Http/Controllers/Administration/SharingController.php b/app/Http/Controllers/Administration/SharingController.php index febb455f201..12da8114886 100644 --- a/app/Http/Controllers/Administration/SharingController.php +++ b/app/Http/Controllers/Administration/SharingController.php @@ -76,11 +76,11 @@ public function setByAlbum(SetSharesByAlbumRequest $request): void * Apply the modification. * * @param array $userIds - * @param array $albumIds + * @param array $albumIDs * * @return void */ - private function updateLinks(array $userIds, array $albumIds): void + private function updateLinks(array $userIds, array $albumIDs): void { /** @var Collection $users */ $users = User::query() @@ -90,7 +90,7 @@ private function updateLinks(array $userIds, array $albumIds): void /** @var User $user */ foreach ($users as $user) { $user->shared()->syncWithPivotValues( - $albumIds, + $albumIDs, [ APC::IS_LINK_REQUIRED => false, // In sharing no required link is needed APC::GRANTS_DOWNLOAD => Configs::getValueAsBool('grants_download'), diff --git a/app/Http/Resources/SearchResource.php b/app/Http/Resources/SearchResource.php index 7737d6fdb85..4d2e4db06f3 100644 --- a/app/Http/Resources/SearchResource.php +++ b/app/Http/Resources/SearchResource.php @@ -31,7 +31,7 @@ public function __construct( */ public function toArray($request) { - $albumIds = $this->albums->reduce(fn (string $carry, Album $item) => $carry . $item->id, ''); + $albumIDs = $this->albums->reduce(fn (string $carry, Album $item) => $carry . $item->id, ''); $tagAlbumsIds = $this->tag_albums->reduce(fn (string $carry, TagAlbum $item) => $carry . $item->id, ''); $photosIds = $this->photos->reduce(fn (string $carry, Photo $item) => $carry . $item->id, ''); // The checksum is used by the web front-end as an efficient way to @@ -43,7 +43,7 @@ public function toArray($request) // next character of a search term although the search result might // stay the same, the GUI would flicker. // The checksum is just over the id, we do not need a full conversion of the data. - $checksum = md5($albumIds . $tagAlbumsIds . $photosIds); + $checksum = md5($albumIDs . $tagAlbumsIds . $photosIds); return [ 'albums' => AlbumResource::collection($this->albums)->toArray($request), diff --git a/app/Jobs/ProcessImageJob.php b/app/Jobs/ProcessImageJob.php index 1fcbd684aa8..777bbd8e8db 100644 --- a/app/Jobs/ProcessImageJob.php +++ b/app/Jobs/ProcessImageJob.php @@ -36,7 +36,7 @@ class ProcessImageJob implements ShouldQueue public string $filePath; public string $originalBaseName; - public ?string $albumId; + public ?string $albumID; public int $userId; public ?int $fileLastModifiedTime; @@ -45,12 +45,12 @@ class ProcessImageJob implements ShouldQueue */ public function __construct( ProcessableJobFile $file, - string|AbstractAlbum|null $albumId, + string|AbstractAlbum|null $albumID, ?int $fileLastModifiedTime, ) { $this->filePath = $file->getPath(); $this->originalBaseName = $file->getOriginalBasename(); - $this->albumId = is_string($albumId) ? $albumId : $albumId?->id; + $this->albumID = is_string($albumID) ? $albumID : $albumID?->id; $this->userId = Auth::user()->id; $this->fileLastModifiedTime = $fileLastModifiedTime; @@ -58,7 +58,7 @@ public function __construct( $this->history = new JobHistory(); $this->history->owner_id = $this->userId; $this->history->job = Str::limit('Process Image: ' . $this->originalBaseName, 200); - $this->history->parent_id = $this->albumId; + $this->history->parent_id = $this->albumID; $this->history->status = JobStatus::READY; $this->history->save(); @@ -82,8 +82,8 @@ public function handle(AlbumFactory $albumFactory): Photo ); $album = null; - if ($this->albumId !== null) { - $album = $albumFactory->findAbstractAlbumOrFail($this->albumId); + if ($this->albumID !== null) { + $album = $albumFactory->findAbstractAlbumOrFail($this->albumID); } $photo = $create->add($copiedFile, $album, $this->fileLastModifiedTime); diff --git a/tests/Feature/Base/BaseSharingTest.php b/tests/Feature/Base/BaseSharingTest.php index d48e58a1b0e..c836b588a32 100644 --- a/tests/Feature/Base/BaseSharingTest.php +++ b/tests/Feature/Base/BaseSharingTest.php @@ -176,17 +176,17 @@ protected function generateExpectedSmartAlbumJson( ]; } - protected function ensurePhotosWereTakenOnThisDay(string ...$photoIds): void + protected function ensurePhotosWereTakenOnThisDay(string ...$photoIDs): void { DB::table('photos') - ->whereIn('id', $photoIds) + ->whereIn('id', $photoIDs) ->update(['taken_at' => (Carbon::today())->subYear()->format('Y-m-d H:i:s.u')]); } - protected function ensurePhotosWereNotTakenOnThisDay(string ...$photoIds): void + protected function ensurePhotosWereNotTakenOnThisDay(string ...$photoIDs): void { DB::table('photos') - ->whereIn('id', $photoIds) + ->whereIn('id', $photoIDs) ->update(['taken_at' => (Carbon::today())->subMonth()->format('Y-m-d H:i:s.u')]); } } diff --git a/tests/Feature/SearchTest.php b/tests/Feature/SearchTest.php index f4c994da978..fa686c7caa8 100644 --- a/tests/Feature/SearchTest.php +++ b/tests/Feature/SearchTest.php @@ -51,14 +51,14 @@ public function tearDown(): void public function testSearchPhotoByTitle(): void { - $photoId1 = $this->photos_tests->upload( + $photoID1 = $this->photos_tests->upload( AbstractTestCase::createUploadedFile(TestConstants::SAMPLE_FILE_NIGHT_IMAGE) )->offsetGet('id'); - $photoId2 = $this->photos_tests->upload( + $photoID2 = $this->photos_tests->upload( AbstractTestCase::createUploadedFile(TestConstants::SAMPLE_FILE_MONGOLIA_IMAGE) )->offsetGet('id'); - $this->photos_tests->set_title($photoId1, 'photo search'); - $this->photos_tests->set_title($photoId2, 'do not find me'); + $this->photos_tests->set_title($photoID1, 'photo search'); + $this->photos_tests->set_title($photoID2, 'do not find me'); $response = $this->runSearch('search'); @@ -68,7 +68,7 @@ public function testSearchPhotoByTitle(): void 'album_id' => null, 'aperture' => 'f/2.8', 'focal' => '16 mm', - 'id' => $photoId1, + 'id' => $photoID1, 'iso' => '1250', 'lens' => 'EF16-35mm f/2.8L USM', 'make' => 'Canon', @@ -100,22 +100,22 @@ public function testSearchPhotoByTitle(): void ]); $response->assertJsonMissing([ - 'id' => $photoId2, + 'id' => $photoID2, ]); } public function testSearchPhotoByTag(): void { - $photoId1 = $this->photos_tests->upload( + $photoID1 = $this->photos_tests->upload( AbstractTestCase::createUploadedFile(TestConstants::SAMPLE_FILE_NIGHT_IMAGE) )->offsetGet('id'); - $photoId2 = $this->photos_tests->upload( + $photoID2 = $this->photos_tests->upload( AbstractTestCase::createUploadedFile(TestConstants::SAMPLE_FILE_MONGOLIA_IMAGE) )->offsetGet('id'); - $this->photos_tests->set_title($photoId1, 'photo search'); - $this->photos_tests->set_title($photoId2, 'do not find me'); - $this->photos_tests->set_tag([$photoId1], ['search tag']); - $this->photos_tests->set_tag([$photoId2], ['other tag']); + $this->photos_tests->set_title($photoID1, 'photo search'); + $this->photos_tests->set_title($photoID2, 'do not find me'); + $this->photos_tests->set_tag([$photoID1], ['search tag']); + $this->photos_tests->set_tag([$photoID2], ['other tag']); $response = $this->runSearch('search'); @@ -125,7 +125,7 @@ public function testSearchPhotoByTag(): void 'album_id' => null, 'aperture' => 'f/2.8', 'focal' => '16 mm', - 'id' => $photoId1, + 'id' => $photoID1, 'iso' => '1250', 'lens' => 'EF16-35mm f/2.8L USM', 'make' => 'Canon', @@ -161,22 +161,22 @@ public function testSearchPhotoByTag(): void ]); $response->assertJsonMissing([ - 'id' => $photoId2, + 'id' => $photoID2, ]); } public function testSearchAlbumByTitle(): void { - /** @var string $albumId1 */ - $albumId1 = $this->albums_tests->add(null, 'search')->offsetGet('id'); - /** @var string $albumId2 */ - $albumId2 = $this->albums_tests->add(null, 'other')->offsetGet('id'); + /** @var string $albumID1 */ + $albumID1 = $this->albums_tests->add(null, 'search')->offsetGet('id'); + /** @var string $albumID2 */ + $albumID2 = $this->albums_tests->add(null, 'other')->offsetGet('id'); $response = $this->runSearch('search'); $response->assertJson([ 'albums' => [[ - 'id' => $albumId1, + 'id' => $albumID1, 'title' => 'search', ]], ]); @@ -186,7 +186,7 @@ public function testSearchAlbumByTitle(): void ]); $response->assertJsonMissing([ - 'id' => $albumId2, + 'id' => $albumID2, ]); } From 2133267e7173b015455daa44077ab3bcf4ce308a Mon Sep 17 00:00:00 2001 From: qwerty287 <80460567+qwerty287@users.noreply.github.com> Date: Sun, 17 Sep 2023 10:49:58 +0200 Subject: [PATCH 047/209] Unique constraint for config keys (#2018) --- ...16_234050_require_single_key_in_config.php | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 database/migrations/2023_09_16_234050_require_single_key_in_config.php diff --git a/database/migrations/2023_09_16_234050_require_single_key_in_config.php b/database/migrations/2023_09_16_234050_require_single_key_in_config.php new file mode 100644 index 00000000000..196e4fdfcd1 --- /dev/null +++ b/database/migrations/2023_09_16_234050_require_single_key_in_config.php @@ -0,0 +1,27 @@ +unique('key'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('configs', function (Blueprint $table) { + $table->dropUnique(['key']); + }); + } +}; From cf7b952106f00b735cd8339acdffd858e9df05f0 Mon Sep 17 00:00:00 2001 From: qwerty287 <80460567+qwerty287@users.noreply.github.com> Date: Sun, 17 Sep 2023 12:08:22 +0200 Subject: [PATCH 048/209] Update composer (include breaking) (#2019) * Update composer (include breaking) * fix phpstan * fix header --- app/Actions/Album/Archive.php | 21 ++--- app/Actions/Photo/Archive.php | 15 +-- composer.json | 2 +- composer.lock | 168 +++++++++++----------------------- phpstan.neon | 3 - public/Lychee-front | 2 +- 6 files changed, 67 insertions(+), 144 deletions(-) diff --git a/app/Actions/Album/Archive.php b/app/Actions/Album/Archive.php index e5556c99a4b..69444e5c37f 100644 --- a/app/Actions/Album/Archive.php +++ b/app/Actions/Album/Archive.php @@ -21,11 +21,9 @@ use function Safe\set_time_limit; use Symfony\Component\HttpFoundation\HeaderUtils; use Symfony\Component\HttpFoundation\StreamedResponse; +use ZipStream\CompressionMethod as ZipMethod; use ZipStream\Exception\FileNotFoundException; use ZipStream\Exception\FileNotReadableException; -use ZipStream\Option\Archive as ZipArchiveOption; -use ZipStream\Option\File as ZipFileOption; -use ZipStream\Option\Method as ZipMethod; use ZipStream\ZipStream; class Archive extends Action @@ -62,10 +60,10 @@ public function do(Collection $albums): StreamedResponse $this->deflateLevel = Configs::getValueAsInt('zip_deflate_level'); $responseGenerator = function () use ($albums) { - $options = new ZipArchiveOption(); - $options->setEnableZip64(Configs::getValueAsBool('zip64')); - $options->setZeroHeader(true); - $zip = new ZipStream(null, $options); + $zip = new ZipStream(defaultCompressionMethod: $this->deflateLevel === -1 ? ZipMethod::STORE : ZipMethod::DEFLATE, + defaultDeflateLevel: $this->deflateLevel, + enableZip64: Configs::getValueAsBool('zip64'), + defaultEnableZeroHeader: true, sendHttpHeaders: false); $usedDirNames = []; foreach ($albums as $album) { @@ -216,14 +214,7 @@ private function compressAlbum(AbstractAlbum $album, array &$usedDirNames, ?stri } catch (InfoException) { // Silently do nothing, if `set_time_limit` is denied. } - $zipFileOption = new ZipFileOption(); - $zipFileOption->setMethod($this->deflateLevel === -1 ? ZipMethod::STORE() : ZipMethod::DEFLATE()); - $zipFileOption->setDeflateLevel($this->deflateLevel); - $zipFileOption->setComment($photo->title); - if ($photo->taken_at !== null) { - $zipFileOption->setTime($photo->taken_at); - } - $zip->addFileFromStream($fileName, $file->read(), $zipFileOption); + $zip->addFileFromStream(fileName: $fileName, stream: $file->read(), comment: $photo->title, lastModificationDateTime: $photo->taken_at); $file->close(); } catch (\Throwable $e) { Handler::reportSafely($e); diff --git a/app/Actions/Photo/Archive.php b/app/Actions/Photo/Archive.php index 62576350f67..7a8f826d6ba 100644 --- a/app/Actions/Photo/Archive.php +++ b/app/Actions/Photo/Archive.php @@ -22,8 +22,7 @@ use function Safe\stream_copy_to_stream; use Symfony\Component\HttpFoundation\HeaderUtils; use Symfony\Component\HttpFoundation\StreamedResponse; -use ZipStream\Option\File as ZipFileOption; -use ZipStream\Option\Method as ZipMethod; +use ZipStream\CompressionMethod as ZipMethod; use ZipStream\ZipStream; class Archive @@ -142,10 +141,7 @@ protected function zip(Collection $photos, DownloadVariantType $downloadVariant) $this->deflateLevel = Configs::getValueAsInt('zip_deflate_level'); $responseGenerator = function () use ($downloadVariant, $photos) { - $options = new \ZipStream\Option\Archive(); - $options->setEnableZip64(Configs::getValueAsBool('zip64')); - $options->setZeroHeader(true); - $zip = new ZipStream(null, $options); + $zip = new ZipStream(enableZip64: Configs::getValueAsBool('zip64'), defaultEnableZeroHeader: true, sendHttpHeaders: false); // We first need to scan the whole array of files to avoid // problems with duplicate file names. @@ -236,10 +232,9 @@ protected function zip(Collection $photos, DownloadVariantType $downloadVariant) ); } while (array_key_exists($filename, $uniqueFilenames)); } - $zipFileOption = new ZipFileOption(); - $zipFileOption->setMethod($this->deflateLevel === -1 ? ZipMethod::STORE() : ZipMethod::DEFLATE()); - $zipFileOption->setDeflateLevel($this->deflateLevel); - $zip->addFileFromStream($filename, $archiveFileInfo->getFile()->read(), $zipFileOption); + $zip->addFileFromStream(fileName: $filename, stream: $archiveFileInfo->getFile()->read(), + compressionMethod: $this->deflateLevel === -1 ? ZipMethod::STORE : ZipMethod::DEFLATE, + deflateLevel: $this->deflateLevel); $archiveFileInfo->getFile()->close(); // Reset the execution timeout for every iteration. try { diff --git a/composer.json b/composer.json index 7a963aa3d57..b043057f2ef 100644 --- a/composer.json +++ b/composer.json @@ -54,7 +54,7 @@ "laravel/framework": "^10.0", "lychee-org/nestedset": "^8.0", "lychee-org/php-exif": "^1.0.0", - "maennchen/zipstream-php": "^2.1", + "maennchen/zipstream-php": "^3.1", "opcodesio/log-viewer": "dev-lycheeOrg", "php-ffmpeg/php-ffmpeg": "^1.0", "php-http/guzzle7-adapter": "^1.0", diff --git a/composer.lock b/composer.lock index adea1270512..9bf8c21d7ac 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "59942082cfd20b5aa671346f6d85f574", + "content-hash": "faedff743ded3608ec8c9f03fd8c2e13", "packages": [ { "name": "bepsvpt/secure-headers", @@ -2038,16 +2038,16 @@ }, { "name": "laravel/framework", - "version": "v10.22.0", + "version": "v10.23.1", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "9234388a895206d4e1df37342b61adc67e5c5d31" + "reference": "dbfd495557678759153e8d71cc2f6027686ca51e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/9234388a895206d4e1df37342b61adc67e5c5d31", - "reference": "9234388a895206d4e1df37342b61adc67e5c5d31", + "url": "https://api.github.com/repos/laravel/framework/zipball/dbfd495557678759153e8d71cc2f6027686ca51e", + "reference": "dbfd495557678759153e8d71cc2f6027686ca51e", "shasum": "" }, "require": { @@ -2147,7 +2147,7 @@ "league/flysystem-read-only": "^3.3", "league/flysystem-sftp-v3": "^3.0", "mockery/mockery": "^1.5.1", - "orchestra/testbench-core": "^8.4", + "orchestra/testbench-core": "^8.10", "pda/pheanstalk": "^4.0", "phpstan/phpstan": "^1.4.7", "phpunit/phpunit": "^10.0.7", @@ -2234,20 +2234,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-09-05T13:20:01+00:00" + "time": "2023-09-13T14:51:46+00:00" }, { "name": "laravel/prompts", - "version": "v0.1.6", + "version": "v0.1.7", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "b514c5620e1b3b61221b0024dc88def26d9654f4" + "reference": "554e7d855a22e87942753d68e23b327ad79b2070" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/b514c5620e1b3b61221b0024dc88def26d9654f4", - "reference": "b514c5620e1b3b61221b0024dc88def26d9654f4", + "url": "https://api.github.com/repos/laravel/prompts/zipball/554e7d855a22e87942753d68e23b327ad79b2070", + "reference": "554e7d855a22e87942753d68e23b327ad79b2070", "shasum": "" }, "require": { @@ -2280,9 +2280,9 @@ ], "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.1.6" + "source": "https://github.com/laravel/prompts/tree/v0.1.7" }, - "time": "2023-08-18T13:32:23+00:00" + "time": "2023-09-12T11:09:22+00:00" }, { "name": "laravel/serializable-closure", @@ -2897,33 +2897,36 @@ }, { "name": "maennchen/zipstream-php", - "version": "2.4.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/maennchen/ZipStream-PHP.git", - "reference": "3fa72e4c71a43f9e9118752a5c90e476a8dc9eb3" + "reference": "b8174494eda667f7d13876b4a7bfef0f62a7c0d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/3fa72e4c71a43f9e9118752a5c90e476a8dc9eb3", - "reference": "3fa72e4c71a43f9e9118752a5c90e476a8dc9eb3", + "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/b8174494eda667f7d13876b4a7bfef0f62a7c0d1", + "reference": "b8174494eda667f7d13876b4a7bfef0f62a7c0d1", "shasum": "" }, "require": { "ext-mbstring": "*", - "myclabs/php-enum": "^1.5", - "php": "^8.0", - "psr/http-message": "^1.0" + "ext-zlib": "*", + "php-64bit": "^8.1" }, "require-dev": { "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.9", - "guzzlehttp/guzzle": "^6.5.3 || ^7.2.0", + "friendsofphp/php-cs-fixer": "^3.16", + "guzzlehttp/guzzle": "^7.5", "mikey179/vfsstream": "^1.6", - "php-coveralls/php-coveralls": "^2.4", - "phpunit/phpunit": "^8.5.8 || ^9.4.2", + "php-coveralls/php-coveralls": "^2.5", + "phpunit/phpunit": "^10.0", "vimeo/psalm": "^5.0" }, + "suggest": { + "guzzlehttp/psr7": "^2.4", + "psr/http-message": "^2.0" + }, "type": "library", "autoload": { "psr-4": { @@ -2959,7 +2962,7 @@ ], "support": { "issues": "https://github.com/maennchen/ZipStream-PHP/issues", - "source": "https://github.com/maennchen/ZipStream-PHP/tree/2.4.0" + "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.1.0" }, "funding": [ { @@ -2971,7 +2974,7 @@ "type": "open_collective" } ], - "time": "2022-12-08T12:29:14+00:00" + "time": "2023-06-21T14:59:35+00:00" }, { "name": "monolog/monolog", @@ -3074,69 +3077,6 @@ ], "time": "2023-06-21T08:46:11+00:00" }, - { - "name": "myclabs/php-enum", - "version": "1.8.4", - "source": { - "type": "git", - "url": "https://github.com/myclabs/php-enum.git", - "reference": "a867478eae49c9f59ece437ae7f9506bfaa27483" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/php-enum/zipball/a867478eae49c9f59ece437ae7f9506bfaa27483", - "reference": "a867478eae49c9f59ece437ae7f9506bfaa27483", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.3 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.5", - "squizlabs/php_codesniffer": "1.*", - "vimeo/psalm": "^4.6.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "MyCLabs\\Enum\\": "src/" - }, - "classmap": [ - "stubs/Stringable.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP Enum contributors", - "homepage": "https://github.com/myclabs/php-enum/graphs/contributors" - } - ], - "description": "PHP Enum implementation", - "homepage": "http://github.com/myclabs/php-enum", - "keywords": [ - "enum" - ], - "support": { - "issues": "https://github.com/myclabs/php-enum/issues", - "source": "https://github.com/myclabs/php-enum/tree/1.8.4" - }, - "funding": [ - { - "url": "https://github.com/mnapoli", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/php-enum", - "type": "tidelift" - } - ], - "time": "2022-08-04T09:53:51+00:00" - }, { "name": "nesbot/carbon", "version": "2.70.0", @@ -9728,16 +9668,16 @@ }, { "name": "phpmyadmin/sql-parser", - "version": "5.8.0", + "version": "5.8.1", "source": { "type": "git", "url": "https://github.com/phpmyadmin/sql-parser.git", - "reference": "db1b3069b5dbc220d393d67ff911e0ae76732755" + "reference": "b877ee6262a00f0f498da5e01335e8a5dc01d203" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/db1b3069b5dbc220d393d67ff911e0ae76732755", - "reference": "db1b3069b5dbc220d393d67ff911e0ae76732755", + "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/b877ee6262a00f0f498da5e01335e8a5dc01d203", + "reference": "b877ee6262a00f0f498da5e01335e8a5dc01d203", "shasum": "" }, "require": { @@ -9759,7 +9699,7 @@ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", "psalm/plugin-phpunit": "^0.16.1", "vimeo/psalm": "^4.11", - "zumba/json-serializer": "^3.0" + "zumba/json-serializer": "~3.0.2" }, "suggest": { "ext-mbstring": "For best performance", @@ -9811,7 +9751,7 @@ "type": "other" } ], - "time": "2023-06-05T18:19:38+00:00" + "time": "2023-09-15T18:21:22+00:00" }, { "name": "phpstan/phpdoc-parser", @@ -9862,16 +9802,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.33", + "version": "1.10.34", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "03b1cf9f814ba0863c4e9affea49a4d1ed9a2ed1" + "reference": "7f806b6f1403e6914c778140e2ba07c293cb4901" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/03b1cf9f814ba0863c4e9affea49a4d1ed9a2ed1", - "reference": "03b1cf9f814ba0863c4e9affea49a4d1ed9a2ed1", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/7f806b6f1403e6914c778140e2ba07c293cb4901", + "reference": "7f806b6f1403e6914c778140e2ba07c293cb4901", "shasum": "" }, "require": { @@ -9920,7 +9860,7 @@ "type": "tidelift" } ], - "time": "2023-09-04T12:20:53+00:00" + "time": "2023-09-13T09:49:47+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", @@ -10021,16 +9961,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "10.1.4", + "version": "10.1.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "cd59bb34756a16ca8253ce9b2909039c227fff71" + "reference": "1df504e42a88044c27a90136910f0b3fe9e91939" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/cd59bb34756a16ca8253ce9b2909039c227fff71", - "reference": "cd59bb34756a16ca8253ce9b2909039c227fff71", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/1df504e42a88044c27a90136910f0b3fe9e91939", + "reference": "1df504e42a88044c27a90136910f0b3fe9e91939", "shasum": "" }, "require": { @@ -10087,7 +10027,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.4" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.5" }, "funding": [ { @@ -10095,7 +10035,7 @@ "type": "github" } ], - "time": "2023-08-31T14:04:38+00:00" + "time": "2023-09-12T14:37:22+00:00" }, { "name": "phpunit/php-file-iterator", @@ -10342,16 +10282,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.3.3", + "version": "10.3.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "241ed4dd0db1c096984e62d414c4e1ac8d5dbff4" + "reference": "b8d59476f19115c9774b3b447f78131781c6c32b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/241ed4dd0db1c096984e62d414c4e1ac8d5dbff4", - "reference": "241ed4dd0db1c096984e62d414c4e1ac8d5dbff4", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b8d59476f19115c9774b3b447f78131781c6c32b", + "reference": "b8d59476f19115c9774b3b447f78131781c6c32b", "shasum": "" }, "require": { @@ -10365,7 +10305,7 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=8.1", - "phpunit/php-code-coverage": "^10.1.1", + "phpunit/php-code-coverage": "^10.1.5", "phpunit/php-file-iterator": "^4.0", "phpunit/php-invoker": "^4.0", "phpunit/php-text-template": "^3.0", @@ -10423,7 +10363,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.3.3" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.3.4" }, "funding": [ { @@ -10439,7 +10379,7 @@ "type": "tidelift" } ], - "time": "2023-09-05T04:34:51+00:00" + "time": "2023-09-12T14:42:28+00:00" }, { "name": "sebastian/cli-parser", @@ -12026,5 +11966,5 @@ "platform-overrides": { "php": "8.1" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } diff --git a/phpstan.neon b/phpstan.neon index 0460cb8ccd1..0e2e04f4b08 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -73,9 +73,6 @@ parameters: # False positive as stub code for PHP has not yet been updated to 2nd parameter, see https://github.com/php/doc-en/issues/1529 and https://www.php.net/imagick.writeimagefile - '#Method Imagick::writeImageFile\(\) invoked with 2 parameters, 1 required#' - # False positive from maennchen/ZipStream - - '#Call to an undefined static method ZipStream\\Option\\Method::(STORE|DEFLATE)\(\)#' - # Migrations - message: '#Function define is unsafe to use.#' diff --git a/public/Lychee-front b/public/Lychee-front index 603ba2a37e7..742e4538b08 160000 --- a/public/Lychee-front +++ b/public/Lychee-front @@ -1 +1 @@ -Subproject commit 603ba2a37e7e34e7fa13eec09eab16c5a807f732 +Subproject commit 742e4538b0827a72f23d2ea05dd8e2ad9cd3df28 From 177e08cc8e594ec2d475777ac548a9aec3fe1b7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sun, 17 Sep 2023 13:08:04 +0200 Subject: [PATCH 049/209] Cleaning unused files + sync front end (#2020) --- public/Lychee-front | 2 +- public/css/app.css | 3388 ------------------ public/dist/frontend.js | 20 +- public/dist/landing.js | 4 +- public/js/app.js | 166 - public/mix-manifest.json | 4 - resources/assets/js/app.js | 0 resources/assets/scss/_animations.scss | 79 - resources/assets/scss/_content.scss | 513 --- resources/assets/scss/_footer.scss | 33 - resources/assets/scss/_header.scss | 272 -- resources/assets/scss/_imageview.scss | 271 -- resources/assets/scss/_justified_layout.scss | 75 - resources/assets/scss/_leftMenu.scss | 95 - resources/assets/scss/_loading.scss | 55 - resources/assets/scss/_logs_diagnostics.scss | 94 - resources/assets/scss/_message.scss | 514 --- resources/assets/scss/_multiselect.scss | 7 - resources/assets/scss/_photo-links.scss | 76 - resources/assets/scss/_photo-thumbs.scss | 451 --- resources/assets/scss/_reset.scss | 139 - resources/assets/scss/_settings.scss | 410 --- resources/assets/scss/_sharing.scss | 284 -- resources/assets/scss/_sidebar.scss | 352 -- resources/assets/scss/_social-footer.scss | 59 - resources/assets/scss/_u2f.scss | 256 -- resources/assets/scss/_users.scss | 280 -- resources/assets/scss/_warning.scss | 24 - resources/assets/scss/app.scss | 101 - resources/js/vendor/webauthn/webauthn.js | 356 -- resources/views/layouts/app.blade.php | 37 - 31 files changed, 13 insertions(+), 8404 deletions(-) delete mode 100644 public/css/app.css delete mode 100644 public/js/app.js delete mode 100644 public/mix-manifest.json delete mode 100644 resources/assets/js/app.js delete mode 100644 resources/assets/scss/_animations.scss delete mode 100644 resources/assets/scss/_content.scss delete mode 100644 resources/assets/scss/_footer.scss delete mode 100644 resources/assets/scss/_header.scss delete mode 100644 resources/assets/scss/_imageview.scss delete mode 100644 resources/assets/scss/_justified_layout.scss delete mode 100644 resources/assets/scss/_leftMenu.scss delete mode 100644 resources/assets/scss/_loading.scss delete mode 100644 resources/assets/scss/_logs_diagnostics.scss delete mode 100644 resources/assets/scss/_message.scss delete mode 100644 resources/assets/scss/_multiselect.scss delete mode 100644 resources/assets/scss/_photo-links.scss delete mode 100644 resources/assets/scss/_photo-thumbs.scss delete mode 100644 resources/assets/scss/_reset.scss delete mode 100644 resources/assets/scss/_settings.scss delete mode 100644 resources/assets/scss/_sharing.scss delete mode 100644 resources/assets/scss/_sidebar.scss delete mode 100644 resources/assets/scss/_social-footer.scss delete mode 100644 resources/assets/scss/_u2f.scss delete mode 100644 resources/assets/scss/_users.scss delete mode 100644 resources/assets/scss/_warning.scss delete mode 100644 resources/assets/scss/app.scss delete mode 100644 resources/js/vendor/webauthn/webauthn.js delete mode 100644 resources/views/layouts/app.blade.php diff --git a/public/Lychee-front b/public/Lychee-front index 742e4538b08..a6eb679e3e1 160000 --- a/public/Lychee-front +++ b/public/Lychee-front @@ -1 +1 @@ -Subproject commit 742e4538b0827a72f23d2ea05dd8e2ad9cd3df28 +Subproject commit a6eb679e3e13a49239901ba87bd695ba1dc04cf6 diff --git a/public/css/app.css b/public/css/app.css deleted file mode 100644 index 2b67d1837d2..00000000000 --- a/public/css/app.css +++ /dev/null @@ -1,3388 +0,0 @@ -@charset "UTF-8"; -html, -body, -div, -span, -applet, -object, -iframe, -h1, -h2, -h3, -h4, -h5, -h6, -p, -blockquote, -pre, -a, -abbr, -acronym, -address, -big, -cite, -code, -del, -dfn, -em, -img, -ins, -kbd, -q, -s, -samp, -small, -strike, -strong, -sub, -sup, -tt, -var, -b, -u, -i, -center, -dl, -dt, -dd, -ol, -ul, -li, -fieldset, -form, -label, -legend, -table, -caption, -tbody, -tfoot, -thead, -tr, -th, -td, -article, -aside, -canvas, -details, -embed, -figure, -figcaption, -footer, -header, -hgroup, -menu, -nav, -output, -ruby, -section, -summary, -time, -mark, -audio, -video { - margin: 0; - padding: 0; - border: 0; - font: inherit; - font-size: 100%; - vertical-align: baseline; -} - -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -menu, -nav, -section { - display: block; -} - -body { - line-height: 1; -} - -ol, -ul { - list-style: none; -} - -blockquote, -q { - quotes: none; -} - -blockquote:before, -blockquote:after, -q:before, -q:after { - content: ""; - content: none; -} - -table { - border-collapse: collapse; - border-spacing: 0; -} - -em, -i { - font-style: italic; -} - -strong, -b { - font-weight: bold; -} - -* { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - transition: color 0.3s, opacity 0.3s ease-out, transform 0.3s ease-out, box-shadow 0.3s; -} - -html, -body { - min-height: 100vh; - position: relative; -} - -body { - background-color: #1d1d1d; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 12px; - -webkit-font-smoothing: antialiased; - -moz-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -body.view { - background-color: #0f0f0f; -} - -div#container { - position: relative; -} - -input { - -webkit-user-select: text !important; - -moz-user-select: text !important; - -ms-user-select: text !important; - user-select: text !important; -} - -.svgsprite { - display: none; -} - -.iconic { - width: 100%; - height: 100%; -} - -#upload { - display: none; -} - -.fadeIn { - -webkit-animation-name: fadeIn; - animation-name: fadeIn; - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-fill-mode: forwards; - animation-fill-mode: forwards; - -webkit-animation-timing-function: cubic-bezier(0.51, 0.92, 0.24, 1); - animation-timing-function: cubic-bezier(0.51, 0.92, 0.24, 1); -} - -.fadeOut { - -webkit-animation-name: fadeOut; - animation-name: fadeOut; - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-fill-mode: forwards; - animation-fill-mode: forwards; - -webkit-animation-timing-function: cubic-bezier(0.51, 0.92, 0.24, 1); - animation-timing-function: cubic-bezier(0.51, 0.92, 0.24, 1); -} - -@-webkit-keyframes fadeIn { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } -} - -@keyframes fadeIn { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } -} -@-webkit-keyframes fadeOut { - 0% { - opacity: 1; - } - 100% { - opacity: 0; - } -} -@keyframes fadeOut { - 0% { - opacity: 1; - } - 100% { - opacity: 0; - } -} -@-webkit-keyframes moveBackground { - 0% { - background-position-x: 0px; - } - 100% { - background-position-x: -100px; - } -} -@keyframes moveBackground { - 0% { - background-position-x: 0px; - } - 100% { - background-position-x: -100px; - } -} -@-webkit-keyframes zoomIn { - 0% { - opacity: 0; - transform: scale(0.8); - } - 100% { - opacity: 1; - transform: scale(1); - } -} -@keyframes zoomIn { - 0% { - opacity: 0; - transform: scale(0.8); - } - 100% { - opacity: 1; - transform: scale(1); - } -} -@-webkit-keyframes zoomOut { - 0% { - opacity: 1; - transform: scale(1); - } - 100% { - opacity: 0; - transform: scale(0.8); - } -} -@keyframes zoomOut { - 0% { - opacity: 1; - transform: scale(1); - } - 100% { - opacity: 0; - transform: scale(0.8); - } -} -@-webkit-keyframes pulse { - 0% { - opacity: 1; - } - 50% { - opacity: 0.3; - } - 100% { - opacity: 1; - } -} -@keyframes pulse { - 0% { - opacity: 1; - } - 50% { - opacity: 0.3; - } - 100% { - opacity: 1; - } -} -.content { - display: flex; - flex-wrap: wrap; - align-content: flex-start; - padding: 50px 30px 33px 0; - width: calc(100% - 30px); - transition: margin-left 0.5s; - -webkit-overflow-scrolling: touch; - max-width: calc(100vw - 10px); -} -.content::before { - content: ""; - position: absolute; - left: 0; - width: 100%; - height: 1px; - background: rgba(255, 255, 255, 0.02); -} -.content--sidebar { - width: calc(100% - 380px); -} -.content.contentZoomIn .album, .content.contentZoomIn .photo { - -webkit-animation-name: zoomIn; - animation-name: zoomIn; -} -.content.contentZoomIn .divider { - -webkit-animation-name: fadeIn; - animation-name: fadeIn; -} -.content.contentZoomOut .album, .content.contentZoomOut .photo { - -webkit-animation-name: zoomOut; - animation-name: zoomOut; -} -.content.contentZoomOut .divider { - -webkit-animation-name: fadeOut; - animation-name: fadeOut; -} -.content .album { - position: relative; - width: 202px; - height: 202px; - margin: 30px 0 0 30px; - cursor: default; - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: forwards; - animation-fill-mode: forwards; - -webkit-animation-timing-function: cubic-bezier(0.51, 0.92, 0.24, 1); - animation-timing-function: cubic-bezier(0.51, 0.92, 0.24, 1); -} -.content .album .thumbimg { - position: absolute; - width: 100%; - height: 100%; - background: #222; - color: #222; - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.5); - border: 1px solid rgba(255, 255, 255, 0.5); - transition: opacity 0.3s ease-out, transform 0.3s ease-out, border-color 0.3s ease-out; -} -.content .album .thumbimg > img { - width: 100%; - height: 100%; -} -.content .album:focus .thumbimg, .content .album.active .thumbimg { - border-color: #2293ec; -} -.content .album:active .thumbimg { - transition: none; - border-color: #0f6ab2; -} -.content .album.selected img { - outline: 1px solid #2293ec; -} -.content .album .video::before { - content: ""; - position: absolute; - display: block; - height: 100%; - width: 100%; - background: url("../img/play-icon.png") no-repeat 46% 50%; - transition: all 0.3s; - will-change: opacity, height; -} -.content .album .video:focus::before { - opacity: 0.75; -} -.content .album .livephoto::before { - content: ""; - position: absolute; - display: block; - height: 100%; - width: 100%; - background: url("../img/live-photo-icon.png") no-repeat 46% 50%; - background-position: 2% 2%; - transition: all 0.3s; - will-change: opacity, height; -} -.content .album .livephoto:focus::before { - opacity: 0.75; -} -.content .album .thumbimg:first-child, -.content .album .thumbimg:nth-child(2) { - transform: rotate(0) translateY(0) translateX(0); - opacity: 0; -} -.content .album:focus .thumbimg:nth-child(1), .content .album:focus .thumbimg:nth-child(2) { - opacity: 1; - will-change: transform; -} -.content .album:focus .thumbimg:nth-child(1) { - transform: rotate(-2deg) translateY(10px) translateX(-12px); -} -.content .album:focus .thumbimg:nth-child(2) { - transform: rotate(5deg) translateY(-8px) translateX(12px); -} -.content .blurred span { - overflow: hidden; -} -.content .blurred img { - /* Safari 6.0 - 9.0 */ - filter: blur(5px); -} -.content .album .overlay { - position: absolute; - margin: 0 1px; - width: 100%; - background: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.6)); - bottom: 0px; -} -.content .album .overlay h1 { - min-height: 19px; - width: 180px; - margin: 12px 0 5px 15px; - color: #fff; - text-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); - font-size: 16px; - font-weight: bold; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} -.content .album .overlay a { - display: block; - margin: 0 0 12px 15px; - font-size: 11px; - color: #ccc; - text-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); -} -.content .album .overlay a .iconic { - fill: #ccc; - margin: 0 5px 0 0; - width: 8px; - height: 8px; -} -.content .album .thumbimg[data-overlay=false] + .overlay { - background: none; -} -.content .album .thumbimg[data-overlay=false] + .overlay h1, .content .album .thumbimg[data-overlay=false] + .overlay a { - text-shadow: none; -} -.content .album .badges { - position: relative; - margin: -1px 0 0 6px; -} -.content .album .subalbum_badge { - position: absolute; - right: 0; - top: 0; -} -.content .album .badge { - display: none; - margin: 0 0 0 6px; - padding: 12px 8px 6px; - width: 18px; - background: #d92c34; - box-shadow: 0 0 2px rgba(0, 0, 0, 0.6); - border-radius: 0 0 5px 5px; - border: 1px solid #fff; - border-top: none; - color: #fff; - text-align: center; - text-shadow: 0 1px 0 rgba(0, 0, 0, 0.4); - opacity: 0.9; -} -.content .album .badge--visible { - display: inline-block; -} -.content .album .badge--not--hidden { - background: #00aa00; -} -.content .album .badge--hidden { - background: #ff9900; -} -.content .album .badge--cover { - display: "inline-block"; - background: #ff9900; -} -.content .album .badge--star { - display: inline-block; - background: #ffcc00; -} -.content .album .badge--nsfw { - display: inline-block; - background: #ff82ee; -} -.content .album .badge--list { - background: #2293ec; -} -.content .album .badge--tag { - display: inline-block; - background: #00aa00; -} -.content .album .badge .iconic { - fill: #fff; - width: 16px; - height: 16px; -} -.content .album .badge--folder { - display: inline-block; - box-shadow: none; - background: none; - border: none; -} -.content .album .badge--folder .iconic { - width: 12px; - height: 12px; -} -.content .divider { - margin: 50px 0 0; - padding: 10px 0 0; - width: 100%; - opacity: 0; - border-top: 1px solid rgba(255, 255, 255, 0.02); - box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: forwards; - animation-fill-mode: forwards; - -webkit-animation-timing-function: cubic-bezier(0.51, 0.92, 0.24, 1); - animation-timing-function: cubic-bezier(0.51, 0.92, 0.24, 1); -} -.content .divider:first-child { - margin-top: 10px; - border-top: 0; - box-shadow: none; -} -.content .divider h1 { - margin: 0 0 0 30px; - color: rgba(255, 255, 255, 0.6); - font-size: 14px; - font-weight: bold; -} - -@media only screen and (min-width: 320px) and (max-width: 567px) { - .content { - padding: 50px 0 33px 0; - width: 100%; - max-width: 100%; - } - .content .album { - --size: calc((100vw - 3px) / 3); - width: calc(var(--size) - 3px); - height: calc(var(--size) - 3px); - margin: 3px 0 0 3px; - } - .content .album .thumbimg { - width: calc(var(--size) - 5px); - height: calc(var(--size) - 5px); - } - .content .album .overlay { - width: calc(var(--size) - 5px); - } - .content .album .overlay h1 { - min-height: 14px; - width: calc(var(--size) - 19px); - margin: 8px 0 2px 6px; - font-size: 12px; - } - .content .album .overlay a { - display: none; - } - .content .album .badge { - padding: 4px 3px 3px; - width: 12px; - } - .content .album .badge .iconic { - width: 12px; - height: 12px; - } - .content .album .badge--folder .iconic { - width: 8px; - height: 8px; - } - .content .divider { - margin: 20px 0 0; - } - .content .divider:first-child { - margin-top: 0; - } - .content .divider h1 { - margin: 0 0 6px 8px; - font-size: 12px; - } -} -@media only screen and (min-width: 568px) and (max-width: 639px) { - .content { - padding: 50px 0 33px 0; - width: 100%; - max-width: 100%; - } - .content .album { - --size: calc((100vw - 3px) / 4); - width: calc(var(--size) - 3px); - height: calc(var(--size) - 3px); - margin: 3px 0 0 3px; - } - .content .album .thumbimg { - width: calc(var(--size) - 5px); - height: calc(var(--size) - 5px); - } - .content .album .overlay { - width: calc(var(--size) - 5px); - } - .content .album .overlay h1 { - min-height: 14px; - width: calc(var(--size) - 19px); - margin: 8px 0 2px 6px; - font-size: 12px; - } - .content .album .overlay a { - display: none; - } - .content .album .badge { - padding: 4px 3px 3px; - width: 14px; - } - .content .album .badge .iconic { - width: 14px; - height: 14px; - } - .content .album .badge--folder .iconic { - width: 9px; - height: 9px; - } - .content .divider { - margin: 24px 0 0; - } - .content .divider:first-child { - margin-top: 0; - } - .content .divider h1 { - margin: 0 0 6px 10px; - } -} -@media only screen and (min-width: 640px) and (max-width: 768px) { - .content { - padding: 50px 0 33px 0; - width: 100%; - max-width: 100%; - } - .content .album { - --size: calc((100vw - 5px) / 5); - width: calc(var(--size) - 5px); - height: calc(var(--size) - 5px); - margin: 5px 0 0 5px; - } - .content .album .thumbimg { - width: calc(var(--size) - 7px); - height: calc(var(--size) - 7px); - } - .content .album .overlay { - width: calc(var(--size) - 7px); - } - .content .album .overlay h1 { - min-height: 14px; - width: calc(var(--size) - 21px); - margin: 10px 0 3px 8px; - font-size: 12px; - } - .content .album .overlay a { - display: none; - } - .content .album .badge { - padding: 6px 4px 4px; - width: 16px; - } - .content .album .badge .iconic { - width: 16px; - height: 16px; - } - .content .album .badge--folder .iconic { - width: 10px; - height: 10px; - } - .content .divider { - margin: 28px 0 0; - } - .content .divider:first-child { - margin-top: 0; - } - .content .divider h1 { - margin: 0 0 6px 10px; - } -} -.no_content { - position: absolute; - top: 50%; - left: 50%; - padding-top: 20px; - color: rgba(255, 255, 255, 0.35); - text-align: center; - transform: translateX(-50%) translateY(-50%); -} -.no_content .iconic { - fill: rgba(255, 255, 255, 0.3); - margin: 0 0 10px; - width: 50px; - height: 50px; -} -.no_content p { - font-size: 16px; - font-weight: bold; -} - -.leftMenu__open { - margin-left: 250px; - width: calc(100% - 280px); -} - -@media (hover: hover) { - .content .album:hover .thumbimg, -.content .photo:hover .thumbimg { - border-color: #2293ec; - } - .content .album .video:hover::before, -.content .album .livephoto:hover::before, -.content .photo .video:hover::before, -.content .photo .livephoto:hover::before { - opacity: 0.75; - } - .content .album:hover .thumbimg:nth-child(1), -.content .album:hover .thumbimg:nth-child(2) { - opacity: 1; - will-change: transform; - } - .content .album:hover .thumbimg:nth-child(1) { - transform: rotate(-2deg) translateY(10px) translateX(-12px); - } - .content .album:hover .thumbimg:nth-child(2) { - transform: rotate(5deg) translateY(-8px) translateX(12px); - } - .content .photo:hover .overlay { - opacity: 1; - } -} -.photo { - cursor: default; - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: forwards; - animation-fill-mode: forwards; - -webkit-animation-timing-function: cubic-bezier(0.51, 0.92, 0.24, 1); - animation-timing-function: cubic-bezier(0.51, 0.92, 0.24, 1); -} -.photo .thumbimg { - width: 100%; - height: 100%; - background: #222; - color: #222; - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.5); - transition: opacity 0.3s ease-out, transform 0.3s ease-out, border-color 0.3s ease-out; -} -.photo .thumbimg > img { - width: 100%; - height: 100%; -} -.photo:focus .thumbimg, .photo.active .thumbimg { - border-color: #2293ec; -} -.photo:active .thumbimg { - transition: none; - border-color: #0f6ab2; -} -.photo.selected img { - outline: 1px solid #2293ec; -} -.photo .video::before { - content: ""; - position: absolute; - display: block; - height: 100%; - width: 100%; - background: url("../img/play-icon.png") no-repeat 46% 50%; - transition: all 0.3s; - will-change: opacity, height; -} -.photo .video:focus::before { - opacity: 0.75; -} -.photo .livephoto::before { - content: ""; - position: absolute; - display: block; - height: 100%; - width: 100%; - background: url("../img/live-photo-icon.png") no-repeat 46% 50%; - background-position: 2% 2%; - transition: all 0.3s; - will-change: opacity, height; -} -.photo .livephoto:focus::before { - opacity: 0.75; -} -.photo .overlay { - position: absolute; - margin: 0 0px; - width: 100%; - background: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.6)); - bottom: 0px; - opacity: 0; -} -.photo:focus .overlay, .photo.active .overlay { - opacity: 1; -} -.photo .overlay h1 { - min-height: 19px; - width: 180px; - margin: 12px 0 5px 15px; - color: #fff; - text-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); - font-size: 16px; - font-weight: bold; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} -.photo .overlay a { - display: block; - margin: 0 0 12px 15px; - font-size: 11px; - color: #ccc; - text-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); -} -.photo .overlay a .iconic { - fill: #ccc; - margin: 0 5px 0 0; - width: 8px; - height: 8px; -} -.photo .badges { - position: relative; - margin: -1px 0 0 6px; -} -.photo .badge { - display: none; - margin: 0 0 0 6px; - padding: 12px 8px 6px; - width: 18px; - background: #d92c34; - box-shadow: 0 0 2px rgba(0, 0, 0, 0.6); - border-radius: 0 0 5px 5px; - border: 1px solid #fff; - border-top: none; - color: #fff; - text-align: center; - text-shadow: 0 1px 0 rgba(0, 0, 0, 0.4); - opacity: 0.9; -} -.photo .badge--visible { - display: inline-block; -} -.photo .badge--not--hidden { - background: #00aa00; -} -.photo .badge--hidden { - background: #ff9900; -} -.photo .badge--cover { - display: "inline-block"; - background: #ff9900; -} -.photo .badge--star { - display: inline-block; - background: #ffcc00; -} -.photo .badge--nsfw { - display: inline-block; - background: #ff82ee; -} -.photo .badge--list { - background: #2293ec; -} -.photo .badge--tag { - display: inline-block; - background: #00aa00; -} -.photo .badge .iconic { - fill: #fff; - width: 16px; - height: 16px; -} -.photo .badge--folder { - display: inline-block; - box-shadow: none; - background: none; - border: none; -} -.photo .badge--folder .iconic { - width: 12px; - height: 12px; -} - -.flkr { - display: flex; - flex-wrap: wrap; - flex-grow: 1; - align-content: flex-start; - width: 100%; -} -@media (min-width: 768px) { - .flkr { - /* FLICKR like image display */ - margin: 30px 0 0 30px; - } - .flkr > div, .flkr::after { - --ratio: calc(var(--w) / var(--h)); - --row-height: 260px; - flex-basis: calc(var(--ratio) * var(--row-height)); - } - .flkr > div { - margin: 0.25rem; - flex-grow: calc(var(--ratio) * 100); - } - .flkr::after { - --w: 2; - --h: 1; - content: ""; - flex-grow: 1000000; - } - .flkr > div > span { - display: block; - height: 100%; - width: 100%; - } - .flkr > div > span > img { - width: 100%; - } -} - -@media only screen and (min-width: 320px) and (max-width: 567px) { - .block .content { - padding: 50px 0 33px 0; - width: 100%; - max-width: 100%; - } - .block .content .photo { - --size: calc((100vw - 3px) / 3); - width: calc(var(--size) - 3px); - height: calc(var(--size) - 3px); - margin: 3px 0 0 3px; - } - .block .content .photo .thumbimg { - width: calc(var(--size) - 5px); - height: calc(var(--size) - 5px); - } - .block .content .photo .overlay { - width: calc(var(--size) - 5px); - } - .block .content .photo .overlay h1 { - min-height: 14px; - width: calc(var(--size) - 19px); - margin: 8px 0 2px 6px; - font-size: 12px; - } - .block .content .photo .overlay a { - display: none; - } - .block .content .photo .badge { - padding: 4px 3px 3px; - width: 12px; - } - .block .content .photo .badge .iconic { - width: 12px; - height: 12px; - } - .block .content .photo .badge--folder .iconic { - width: 8px; - height: 8px; - } - .block .content .divider { - margin: 20px 0 0; - } - .block .content .divider:first-child { - margin-top: 0; - } - .block .content .divider h1 { - margin: 0 0 6px 8px; - font-size: 12px; - } -} -@media only screen and (min-width: 568px) and (max-width: 639px) { - .block .content { - padding: 50px 0 33px 0; - width: 100%; - max-width: 100%; - } - .block .content .photo { - --size: calc((100vw - 3px) / 4); - width: calc(var(--size) - 3px); - height: calc(var(--size) - 3px); - margin: 3px 0 0 3px; - } - .block .content .photo .thumbimg { - width: calc(var(--size) - 5px); - height: calc(var(--size) - 5px); - } - .block .content .photo .overlay { - width: calc(var(--size) - 5px); - } - .block .content .photo .overlay h1 { - min-height: 14px; - width: calc(var(--size) - 19px); - margin: 8px 0 2px 6px; - font-size: 12px; - } - .block .content .photo .overlay a { - display: none; - } - .block .content .photo .badge { - padding: 4px 3px 3px; - width: 14px; - } - .block .content .photo .badge .iconic { - width: 14px; - height: 14px; - } - .block .content .photo .badge--folder .iconic { - width: 9px; - height: 9px; - } - .block .content .divider { - margin: 24px 0 0; - } - .block .content .divider:first-child { - margin-top: 0; - } - .block .content .divider h1 { - margin: 0 0 6px 10px; - } -} -@media only screen and (min-width: 640px) and (max-width: 768px) { - .block .content { - padding: 50px 0 33px 0; - width: 100%; - max-width: 100%; - } - .block .content .photo { - --size: calc((100vw - 5px) / 5); - width: calc(var(--size) - 5px); - height: calc(var(--size) - 5px); - margin: 5px 0 0 5px; - } - .block .content .photo .thumbimg { - width: calc(var(--size) - 7px); - height: calc(var(--size) - 7px); - } - .block .content .photo .overlay { - width: calc(var(--size) - 7px); - } - .block .content .photo .overlay h1 { - min-height: 14px; - width: calc(var(--size) - 21px); - margin: 10px 0 3px 8px; - font-size: 12px; - } - .block .content .photo .overlay a { - display: none; - } - .block .content .photo .badge { - padding: 6px 4px 4px; - width: 16px; - } - .block .content .photo .badge .iconic { - width: 16px; - height: 16px; - } - .block .content .photo .badge--folder .iconic { - width: 10px; - height: 10px; - } - .block .content .divider { - margin: 28px 0 0; - } - .block .content .divider:first-child { - margin-top: 0; - } - .block .content .divider h1 { - margin: 0 0 6px 10px; - } -} - -.masonry { - -moz-column-gap: 16px; - column-gap: 16px; -} -@media (max-width: calc((240px + 16px)* 14)) { - .masonry { - -moz-columns: 14; - columns: 14; - } -} -@media (max-width: calc((240px + 16px)* 13)) { - .masonry { - -moz-columns: 13; - columns: 13; - } -} -@media (max-width: calc((240px + 16px)* 12)) { - .masonry { - -moz-columns: 12; - columns: 12; - } -} -@media (max-width: calc((240px + 16px)* 11)) { - .masonry { - -moz-columns: 11; - columns: 11; - } -} -@media (max-width: calc((240px + 16px)* 10)) { - .masonry { - -moz-columns: 10; - columns: 10; - } -} -@media (max-width: calc((240px + 16px)* 9)) { - .masonry { - -moz-columns: 9; - columns: 9; - } -} -@media (max-width: calc((240px + 16px)* 8)) { - .masonry { - -moz-columns: 8; - columns: 8; - } -} -@media (max-width: calc((240px + 16px)* 7)) { - .masonry { - -moz-columns: 7; - columns: 7; - } -} -@media (max-width: calc((240px + 16px)* 6)) { - .masonry { - -moz-columns: 6; - columns: 6; - } -} -@media (max-width: calc((240px + 16px)* 5)) { - .masonry { - -moz-columns: 5; - columns: 5; - } -} -@media (max-width: calc((240px + 16px)* 4)) { - .masonry { - -moz-columns: 4; - columns: 4; - } -} -@media (max-width: calc((240px + 16px)* 3)) { - .masonry { - -moz-columns: 3; - columns: 3; - } -} -@media (max-width: calc((240px + 16px)* 2)) { - .masonry { - -moz-columns: 2; - columns: 2; - } -} -.masonry .photo { - display: inline-block; - margin-bottom: 16px; - position: relative; -} -.masonry .photo .thumbimg { - width: 100%; - height: 100%; - display: grid; -} -.masonry .photo img { - width: 100%; - border-radius: 5px; -} -.masonry .photo .overlay { - opacity: 1; -} - -/* The side navigation menu */ -.leftMenu { - height: 100vh; - /* 100% Full-height */ - width: 0; - /* 0 width - change this with JavaScript */ - position: fixed; - /* Stay in place */ - z-index: 4; - /* Stay on top */ - top: 0; - /* Stay at the top */ - left: 0; - background-color: #111; - /* Black*/ - overflow-x: hidden; - /* Disable horizontal scroll */ - padding-top: 49px; - /* Place content 49px from the top (same as menu bar height) */ - transition: 0.5s; - /* 0.5 second transition effect to slide in the sidenav */ -} - -/* The navigation menu links */ -.leftMenu a { - padding: 8px 8px 8px 32px; - text-decoration: none; - font-size: 18px; - color: #818181; - display: block; - transition: 0.3s; -} -.leftMenu a.linkMenu { - white-space: nowrap; -} - -/* Position and style the close button (top right corner) */ -.leftMenu .closebtn { - position: absolute; - top: 0; - right: 25px; - font-size: 36px; - margin-left: 50px; -} - -.leftMenu .closetxt { - position: absolute; - top: 0; - left: 0; - font-size: 24px; - height: 28px; - padding-top: 16px; - color: #111; - display: inline-block; - width: 210px; -} - -.leftMenu .iconic { - display: inline-block; - margin: 0 10px 0 1px; - width: 15px; - height: 14px; - fill: #818181; -} - -.leftMenu .iconic.ionicons { - margin: 0 8px -2px 0; - width: 18px; - height: 18px; -} - -.leftMenu__visible { - width: 250px; -} - -@media only screen and (max-width: 567px), only screen and (max-width: 640px) and (orientation: portrait) { - .leftMenu { - display: none !important; - } -} -@media (hover: hover) { - .leftMenu { - /* When you mouse over the navigation links, change their color */ - } - .leftMenu .closetxt:hover { - color: #818181; - } - .leftMenu a:hover { - color: #f1f1f1; - } -} -@media (hover: none) { - .leftMenu a { - padding: 14px 8px 14px 32px; - } -} -.header { - position: fixed; - height: 49px; - width: 100%; - background: linear-gradient(to bottom, #222222, #1a1a1a); - border-bottom: 1px solid #0f0f0f; - z-index: 1; - transition: transform 0.3s ease-out; -} -.header--hidden { - transform: translateY(-60px); -} -.header--loading { - transform: translateY(2px); -} -.header--error { - transform: translateY(40px); -} -.header--view { - border-bottom: none; -} -.header--view.header--error { - background-color: rgba(10, 10, 10, 0.99); -} -.header__toolbar { - display: none; - align-items: center; - position: relative; - box-sizing: border-box; - width: 100%; - height: 100%; -} -.header__toolbar--visible { - display: flex; -} -.header__toolbar--config .button .iconic { - transform: rotate(45deg); -} -.header__toolbar--config .header__title { - padding-right: 80px; -} -.header__title { - width: 100%; - padding: 16px 0; - color: #fff; - font-size: 16px; - font-weight: bold; - text-align: center; - cursor: default; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - transition: margin-left 0.5s; -} -.header__title .iconic { - display: none; - margin: 0 0 0 5px; - width: 10px; - height: 10px; - fill: rgba(255, 255, 255, 0.5); - transition: fill 0.2s ease-out; -} -.header__title:active .iconic { - transition: none; - fill: rgba(255, 255, 255, 0.8); -} -.header__title--editable .iconic { - display: inline-block; -} -.header .button { - flex-shrink: 0; - padding: 16px 8px; - height: 15px; -} -.header .button .iconic { - width: 15px; - height: 15px; - fill: rgba(255, 255, 255, 0.5); - transition: fill 0.2s ease-out; -} -.header .button:active .iconic { - transition: none; - fill: rgba(255, 255, 255, 0.8); -} -.header .button--star.active .iconic { - fill: #f0ef77; -} -.header .button--eye.active .iconic { - fill: #d92c34; -} -.header .button--eye.active--not-hidden .iconic { - fill: #00aa00; -} -.header .button--eye.active--hidden .iconic { - fill: #ff9900; -} -.header .button--share .iconic.ionicons { - margin: -2px 0 -2px; - width: 18px; - height: 18px; -} -.header .button--nsfw.active .iconic { - fill: #ff82ee; -} -.header .button--info.active .iconic { - fill: #2293ec; -} -.header #button_back, -.header #button_back_home, -.header #button_settings, -.header #button_close_config, -.header #button_signin { - padding: 16px 12px 16px 18px; -} -.header .button_add { - padding: 16px 18px 16px 12px; -} -.header__divider { - flex-shrink: 0; - width: 14px; -} -.header__search { - flex-shrink: 0; - width: 80px; - margin: 0; - padding: 5px 12px 6px 12px; - background-color: #1d1d1d; - color: #fff; - border: 1px solid rgba(0, 0, 0, 0.9); - box-shadow: 0 1px 0 rgba(255, 255, 255, 0.04); - outline: none; - border-radius: 50px; - opacity: 0.6; - transition: opacity 0.3s ease-out, box-shadow 0.3s ease-out, width 0.2s ease-out; -} -.header__search:focus { - width: 140px; - border-color: #2293ec; - box-shadow: 0 1px 0 rgba(255, 255, 255, 0); - opacity: 1; -} -.header__search:focus ~ .header__clear { - opacity: 1; -} -.header__search::-ms-clear { - display: none; -} -.header__search__field { - position: relative; -} -.header__clear { - position: absolute; - top: 50%; - -ms-transform: translateY(-50%); - transform: translateY(-50%); - right: 8px; - padding: 0; - color: rgba(255, 255, 255, 0.5); - font-size: 24px; - opacity: 0; - transition: color 0.2s ease-out; - cursor: default; -} -.header__clear_nomap { - right: 60px; -} -.header__hostedwith { - flex-shrink: 0; - padding: 5px 10px; - margin: 11px 0; - color: #888; - font-size: 13px; - border-radius: 100px; - cursor: default; -} -.header .leftMenu__open { - margin-left: 250px; -} - -@media (hover: hover) { - .header__title:hover .iconic, -.header .button:hover .iconic { - fill: white; - } - .header__clear:hover { - color: white; - } - .header__hostedwith:hover { - background-color: rgba(0, 0, 0, 0.3); - } -} -@media only screen and (max-width: 640px) { - #button_move, -#button_move_album, -#button_trash, -#button_trash_album, -#button_visibility, -#button_visibility_album, -#button_nsfw_album { - display: none !important; - } -} -@media only screen and (max-width: 640px) and (max-width: 567px) { - #button_rotate_ccwise, -#button_rotate_cwise { - display: none !important; - } - - .header__divider { - width: 0; - } -} -#imageview { - position: fixed; - display: none; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: rgba(10, 10, 10, 0.98); - transition: background-color 0.3s; -} -#imageview.view { - background-color: inherit; -} -#imageview.full { - background-color: black; - cursor: none; -} -#imageview #image, -#imageview #livephoto { - position: absolute; - top: 60px; - right: 30px; - bottom: 30px; - left: 30px; - margin: auto; - max-width: calc(100% - 60px); - max-height: calc(100% - 90px); - width: auto; - height: auto; - transition: top 0.3s, right 0.3s, bottom 0.3s, left 0.3s, max-width 0.3s, max-height 0.3s; - -webkit-animation-name: zoomIn; - animation-name: zoomIn; - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: cubic-bezier(0.51, 0.92, 0.24, 1.15); - animation-timing-function: cubic-bezier(0.51, 0.92, 0.24, 1.15); - background-size: contain; - background-position: center; - background-repeat: no-repeat; -} -#imageview.full #image, #imageview.full #livephoto { - top: 0; - right: 0; - bottom: 0; - left: 0; - max-width: 100%; - max-height: 100%; -} -#imageview.image--sidebar #image, #imageview.image--sidebar #livephoto { - right: 380px; - max-width: calc(100% - 410px); -} -#imageview #image_overlay { - position: absolute; - bottom: 30px; - left: 30px; - color: #ffffff; - text-shadow: 1px 1px 2px #000000; - z-index: 3; -} -#imageview #image_overlay h1 { - font-size: 28px; - font-weight: 500; - transition: visibility 0.3s linear, opacity 0.3s linear; -} -#imageview #image_overlay p { - margin-top: 5px; - font-size: 20px; - line-height: 24px; -} -#imageview #image_overlay a .iconic { - fill: #fff; - margin: 0 5px 0 0; - width: 14px; - height: 14px; -} -#imageview .arrow_wrapper { - position: fixed; - width: 15%; - height: calc(100% - 60px); - top: 60px; -} -#imageview .arrow_wrapper--previous { - left: 0; -} -#imageview .arrow_wrapper--next { - right: 0; -} -#imageview .arrow_wrapper a { - position: fixed; - top: 50%; - margin: -19px 0 0; - padding: 8px 12px; - width: 16px; - height: 22px; - background-size: 100% 100%; - border: 1px solid rgba(255, 255, 255, 0.8); - opacity: 0.6; - z-index: 2; - transition: transform 0.2s ease-out, opacity 0.2s ease-out; - will-change: transform; -} -#imageview .arrow_wrapper a#previous { - left: -1px; - transform: translateX(-100%); -} -#imageview .arrow_wrapper a#next { - right: -1px; - transform: translateX(100%); -} -#imageview .arrow_wrapper .iconic { - fill: rgba(255, 255, 255, 0.8); -} -#imageview.image--sidebar .arrow_wrapper--next { - right: 350px; -} -#imageview.image--sidebar .arrow_wrapper a#next { - right: 349px; -} -#imageview video { - z-index: 1; -} - -@media (hover: hover) { - #imageview .arrow_wrapper:hover a#previous, #imageview .arrow_wrapper:hover a#next { - transform: translateX(0); - } - #imageview .arrow_wrapper a:hover { - opacity: 1; - } -} -@media only screen and (max-width: 567px), only screen and (max-width: 640px) and (orientation: portrait) { - #imageview #image, -#imageview #livephoto { - top: 0; - right: 0; - bottom: 0; - left: 0; - max-width: 100%; - max-height: 100%; - } - #imageview.image--sidebar #image, -#imageview.image--sidebar #livephoto { - right: 0; - max-width: 100%; - } - #imageview.image--sidebar .arrow_wrapper--next { - right: 0; - } - #imageview.image--sidebar .arrow_wrapper a#next { - right: -1px; - } - #imageview #image_overlay h1 { - font-size: 14px; - } - #imageview #image_overlay p { - margin-top: 2px; - font-size: 11px; - line-height: 13px; - } - #imageview #image_overlay a .iconic { - width: 9px; - height: 9px; - } -} -@media only screen and (min-width: 568px) and (max-width: 768px), only screen and (min-width: 568px) and (max-width: 640px) and (orientation: landscape) { - #imageview #image, -#imageview #livephoto { - top: 0; - right: 0; - bottom: 0; - left: 0; - max-width: 100%; - max-height: 100%; - } - #imageview.image--sidebar #image, -#imageview.image--sidebar #livephoto { - top: 50px; - right: 280px; - max-width: calc(100% - 280px); - max-height: calc(100% - 50px); - } - #imageview.image--sidebar .arrow_wrapper--next { - right: 280px; - } - #imageview.image--sidebar .arrow_wrapper a#next { - right: 279px; - } - #imageview #image_overlay h1 { - font-size: 18px; - } - #imageview #image_overlay p { - margin-top: 4px; - font-size: 14px; - line-height: 16px; - } - #imageview #image_overlay a .iconic { - width: 12px; - height: 12px; - } -} -.sidebar { - position: fixed; - top: 49px; - right: -360px; - width: 350px; - height: calc(100% - 49px); - background-color: rgba(25, 25, 25, 0.98); - border-left: 1px solid rgba(0, 0, 0, 0.2); - transform: translateX(0); - transition: transform 0.3s cubic-bezier(0.51, 0.92, 0.24, 1); - z-index: 4; -} -.sidebar.active { - transform: translateX(-360px); -} -.sidebar__header { - float: left; - height: 49px; - width: 100%; - background: linear-gradient(to bottom, rgba(255, 255, 255, 0.02), rgba(0, 0, 0, 0)); - border-top: 1px solid #2293ec; -} -.sidebar__header h1 { - position: absolute; - margin: 15px 0 15px 0; - width: 100%; - color: #fff; - font-size: 16px; - font-weight: bold; - text-align: center; - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; -} -.sidebar__wrapper { - float: left; - height: calc(100% - 49px); - width: 350px; - overflow: auto; - -webkit-overflow-scrolling: touch; -} -.sidebar__divider { - float: left; - padding: 12px 0 8px; - width: 100%; - border-top: 1px solid rgba(255, 255, 255, 0.02); - box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); -} -.sidebar__divider:first-child { - border-top: 0; - box-shadow: none; -} -.sidebar__divider h1 { - margin: 0 0 0 20px; - color: rgba(255, 255, 255, 0.6); - font-size: 14px; - font-weight: bold; - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; -} -.sidebar .edit { - display: inline-block; - margin-left: 3px; - width: 10px; -} -.sidebar .edit .iconic { - width: 10px; - height: 10px; - fill: rgba(255, 255, 255, 0.5); - transition: fill 0.2s ease-out; -} -.sidebar .edit:active .iconic { - transition: none; - fill: rgba(255, 255, 255, 0.8); -} -.sidebar table { - float: left; - margin: 10px 0 15px 20px; - width: calc(100% - 20px); -} -.sidebar table tr td { - padding: 5px 0px; - color: #fff; - font-size: 14px; - line-height: 19px; - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; -} -.sidebar table tr td:first-child { - width: 110px; -} -.sidebar table tr td:last-child { - padding-right: 10px; -} -.sidebar table tr td span { - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; -} -.sidebar #tags { - width: calc(100% - 40px); - margin: 16px 20px 12px 20px; - color: #fff; - display: inline-block; -} -.sidebar #tags > div { - display: inline-block; -} -.sidebar #tags .empty { - font-size: 14px; - margin: 0 2px 8px 0; - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; -} -.sidebar #tags .edit { - margin-top: 6px; -} -.sidebar #tags .empty .edit { - margin-top: 0; -} -.sidebar #tags .tag { - cursor: default; - display: inline-block; - padding: 6px 10px; - margin: 0 6px 8px 0; - background-color: rgba(0, 0, 0, 0.5); - border-radius: 100px; - font-size: 12px; - transition: background-color 0.2s; - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; -} -.sidebar #tags .tag span { - float: right; - padding: 0; - margin: 0 0 -2px 0; - width: 0; - overflow: hidden; - transform: scale(0); - transition: width 0.2s, margin 0.2s, transform 0.2s, fill 0.2s ease-out; -} -.sidebar #tags .tag span .iconic { - fill: #d92c34; - width: 8px; - height: 8px; -} -.sidebar #tags .tag span:active .iconic { - transition: none; - fill: #b22027; -} -.sidebar #leaflet_map_single_photo { - margin: 10px 0px 0px 20px; - height: 180px; - width: calc(100% - 40px); - float: left; -} -.sidebar .attr_location.search { - cursor: pointer; -} - -@media (hover: hover) { - .sidebar .edit:hover .iconic { - fill: white; - } - .sidebar #tags .tag:hover { - background-color: rgba(0, 0, 0, 0.3); - } - .sidebar #tags .tag:hover.search { - cursor: pointer; - } - .sidebar #tags .tag:hover span { - width: 9px; - margin: 0 0 -2px 5px; - transform: scale(1); - } - .sidebar #tags .tag span:hover .iconic { - fill: #e1575e; - } -} -@media only screen and (max-width: 567px), only screen and (max-width: 640px) and (orientation: portrait) { - .sidebar { - width: 240px; - height: unset; - background-color: rgba(0, 0, 0, 0.6); - } - .sidebar__wrapper { - padding-bottom: 10px; - } - .sidebar__header { - height: 22px; - } - .sidebar__header h1 { - margin: 6px 0; - font-size: 13px; - } - .sidebar__divider { - padding: 6px 0 2px; - } - .sidebar__divider h1 { - margin: 0 0 0 10px; - font-size: 12px; - } - .sidebar table { - margin: 4px 0 6px 10px; - width: calc(100% - 16px); - } - .sidebar table tr td { - padding: 2px 0; - font-size: 11px; - line-height: 12px; - } - .sidebar table tr td:first-child { - width: 80px; - } - .sidebar #tags { - margin: 4px 0 6px 10px; - width: calc(100% - 16px); - } - .sidebar #tags .empty { - margin: 0; - font-size: 11px; - } -} -@media only screen and (min-width: 568px) and (max-width: 768px), only screen and (min-width: 568px) and (max-width: 640px) and (orientation: landscape) { - .sidebar { - width: 280px; - } - .sidebar__wrapper { - padding-bottom: 10px; - } - .sidebar__header { - height: 28px; - } - .sidebar__header h1 { - margin: 8px 0; - font-size: 15px; - } - .sidebar__divider { - padding: 8px 0 4px; - } - .sidebar__divider h1 { - margin: 0 0 0 10px; - font-size: 13px; - } - .sidebar table { - margin: 4px 0 6px 10px; - width: calc(100% - 16px); - } - .sidebar table tr td { - padding: 2px 0; - font-size: 12px; - line-height: 13px; - } - .sidebar table tr td:first-child { - width: 90px; - } - .sidebar #tags { - margin: 4px 0 6px 10px; - width: calc(100% - 16px); - } - .sidebar #tags .empty { - margin: 0; - font-size: 12px; - } -} -#sensitive_warning { - background: rgba(100, 0, 0, 0.95); - width: 100vw; - height: 100vh; - position: fixed; - top: 0px; - text-align: center; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - color: white; -} -#sensitive_warning h1 { - font-size: 36px; - font-weight: bold; - border-bottom: 2px solid white; - margin-bottom: 15px; -} -#sensitive_warning p { - font-size: 20px; - max-width: 40%; - margin-top: 15px; -} - -.settings_view { - width: 90%; - max-width: 700px; - margin-left: auto; - margin-right: auto; -} -.settings_view input.text { - padding: 9px 2px; - width: calc(50% - 4px); - background-color: transparent; - color: #fff; - border: none; - border-bottom: 1px solid #222; - border-radius: 0; - box-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); - outline: 0; -} -.settings_view input.text:focus { - border-bottom-color: #2293ec; -} -.settings_view input.text .error { - border-bottom-color: #d92c34; -} -.settings_view .basicModal__button { - color: #2293ec; - display: inline-block; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.02), inset 1px 0 0 rgba(0, 0, 0, 0.2); - border-radius: 5px; -} -.settings_view .basicModal__button_MORE, -.settings_view .basicModal__button_SAVE { - color: #b22027; - border-radius: 5px; -} -.settings_view > div { - font-size: 14px; - width: 100%; - padding: 12px 0; - /* The switch - the box around the slider */ - /* Hide default HTML checkbox */ - /* The slider */ - /* Rounded sliders */ -} -.settings_view > div p { - margin: 0 0 5%; - width: 100%; - color: #ccc; - line-height: 16px; -} -.settings_view > div p a { - color: rgba(255, 255, 255, 0.9); - text-decoration: none; - border-bottom: 1px dashed #888; -} -.settings_view > div p:last-of-type { - margin: 0; -} -.settings_view > div input.text { - width: 100%; -} -.settings_view > div textarea { - padding: 9px 9px; - width: calc(100% - 18px); - height: 100px; - background-color: transparent; - color: #fff; - border: 1px solid #666666; - border-radius: 0; - box-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); - outline: 0; - resize: vertical; -} -.settings_view > div textarea:focus { - border-color: #2293ec; -} -.settings_view > div .choice { - padding: 0 30px 15px; - width: 100%; - color: #fff; -} -.settings_view > div .choice:last-child { - padding-bottom: 40px; -} -.settings_view > div .choice label { - float: left; - color: #fff; - font-size: 14px; - font-weight: 700; -} -.settings_view > div .choice label input { - position: absolute; - margin: 0; - opacity: 0; -} -.settings_view > div .choice label .checkbox { - float: left; - display: block; - width: 16px; - height: 16px; - background: rgba(0, 0, 0, 0.5); - border-radius: 3px; - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.7); -} -.settings_view > div .choice label .checkbox .iconic { - box-sizing: border-box; - fill: #2293ec; - padding: 2px; - opacity: 0; - transform: scale(0); - transition: opacity 0.2s cubic-bezier(0.51, 0.92, 0.24, 1), transform 0.2s cubic-bezier(0.51, 0.92, 0.24, 1); -} -.settings_view > div .select { - position: relative; - margin: 1px 5px; - padding: 0; - width: 110px; - color: #fff; - border-radius: 3px; - border: 1px solid rgba(0, 0, 0, 0.2); - box-shadow: 0 1px 0 rgba(255, 255, 255, 0.02); - font-size: 11px; - line-height: 16px; - overflow: hidden; - outline: 0; - vertical-align: middle; - background: rgba(0, 0, 0, 0.3); - display: inline-block; -} -.settings_view > div .select select { - margin: 0; - padding: 4px 8px; - width: 120%; - color: #fff; - font-size: 11px; - line-height: 16px; - border: 0; - outline: 0; - box-shadow: none; - border-radius: 0; - background-color: transparent; - background-image: none; - -moz-appearance: none; - -webkit-appearance: none; - appearance: none; -} -.settings_view > div .select select option { - margin: 0; - padding: 0; - background: #fff; - color: #333; - transition: none; -} -.settings_view > div .select select:disabled { - color: #000; - cursor: not-allowed; -} -.settings_view > div .select::after { - position: absolute; - content: "≡"; - right: 8px; - top: 4px; - color: #2293ec; - font-size: 16px; - line-height: 16px; - font-weight: 700; - pointer-events: none; -} -.settings_view > div .switch { - position: relative; - display: inline-block; - width: 42px; - height: 22px; - bottom: -2px; - line-height: 24px; -} -.settings_view > div .switch input { - opacity: 0; - width: 0; - height: 0; -} -.settings_view > div .slider { - position: absolute; - cursor: pointer; - top: 0; - left: 0; - right: 0; - bottom: 0; - border: 1px solid rgba(0, 0, 0, 0.2); - box-shadow: 0 1px 0 rgba(255, 255, 255, 0.02); - background: rgba(0, 0, 0, 0.3); - transition: 0.4s; -} -.settings_view > div .slider:before { - position: absolute; - content: ""; - height: 14px; - width: 14px; - left: 3px; - bottom: 3px; - background-color: #2293ec; -} -.settings_view > div input:checked + .slider { - background-color: #2293ec; -} -.settings_view > div input:checked + .slider:before { - transform: translateX(20px); - background-color: #ffffff; -} -.settings_view > div .slider.round { - border-radius: 20px; -} -.settings_view > div .slider.round:before { - border-radius: 50%; -} -.settings_view .setting_category { - font-size: 20px; - width: 100%; - padding-top: 10px; - padding-left: 4px; - border-bottom: dotted 1px #222222; - margin-top: 20px; - color: #ffffff; - font-weight: bold; - text-transform: capitalize; -} -.settings_view .setting_line { - font-size: 14px; - width: 100%; -} -.settings_view .setting_line:last-child, .settings_view .setting_line:first-child { - padding-top: 50px; -} -.settings_view .setting_line p { - min-width: 550px; - margin: 0 0 0 0; - color: #ccc; - display: inline-block; - width: 100%; - overflow-wrap: break-word; -} -.settings_view .setting_line p a { - color: rgba(255, 255, 255, 0.9); - text-decoration: none; - border-bottom: 1px dashed #888; -} -.settings_view .setting_line p:last-of-type { - margin: 0; -} -.settings_view .setting_line p .warning { - margin-bottom: 30px; - color: #d92c34; - font-weight: bold; - font-size: 18px; - text-align: justify; - line-height: 22px; -} -.settings_view .setting_line span.text { - display: inline-block; - padding: 9px 4px; - width: calc(50% - 12px); - background-color: transparent; - color: #fff; - border: none; -} -.settings_view .setting_line span.text_icon { - width: 5%; -} -.settings_view .setting_line span.text_icon .iconic { - width: 15px; - height: 14px; - margin: 0 10px 0 1px; - fill: #ffffff; -} -.settings_view .setting_line input.text { - width: calc(50% - 4px); -} - -@media (hover: hover) { - .settings_view .basicModal__button:hover { - background: #2293ec; - color: #ffffff; - cursor: pointer; - } - .settings_view .basicModal__button_MORE:hover, -.settings_view .basicModal__button_SAVE:hover { - background: #b22027; - color: #ffffff; - } - .settings_view input:hover { - border-bottom: #2293ec solid 1px; - } -} -@media (hover: none) { - .settings_view input.text { - border-bottom: #2293ec solid 1px; - margin: 6px 0; - } - .settings_view > div { - padding: 16px 0; - } - .settings_view .basicModal__button { - background: #2293ec; - color: #ffffff; - max-width: 320px; - margin-top: 20px; - } - .settings_view .basicModal__button_MORE, .settings_view .basicModal__button_SAVE { - background: #b22027; - } -} -@media only screen and (max-width: 567px), only screen and (max-width: 640px) and (orientation: portrait) { - .settings_view { - max-width: 100%; - } - .settings_view .setting_category { - font-size: 14px; - padding-left: 0; - margin-bottom: 4px; - } - .settings_view .setting_line { - font-size: 12px; - } - .settings_view .setting_line:first-child { - padding-top: 20px; - } - .settings_view .setting_line p { - min-width: unset; - line-height: 20px; - } - .settings_view .setting_line p.warning { - font-size: 14px; - line-height: 16px; - margin-bottom: 0; - } - .settings_view .setting_line p span, -.settings_view .setting_line p input { - padding: 0; - } - .settings_view .basicModal__button_SAVE { - margin-top: 20px; - } -} -.users_view { - width: 90%; - max-width: 700px; - margin-left: auto; - margin-right: auto; -} - -.users_view_line { - font-size: 14px; - width: 100%; -} -.users_view_line:last-child, .users_view_line:first-child { - padding-top: 50px; -} -.users_view_line p { - width: 550px; - margin: 0 0 5%; - color: #ccc; - display: inline-block; -} -.users_view_line p a { - color: rgba(255, 255, 255, 0.9); - text-decoration: none; - border-bottom: 1px dashed #888; -} -.users_view_line p:last-of-type { - margin: 0; -} -.users_view_line p.line { - margin: 0 0 0 0; -} -.users_view_line span.text { - display: inline-block; - padding: 9px 6px 9px 0; - width: 40%; - background-color: transparent; - color: #fff; - border: none; -} -.users_view_line span.text_icon { - width: 5%; - min-width: 32px; -} -.users_view_line span.text_icon .iconic { - width: 15px; - height: 14px; - margin: 0 8px; - fill: #ffffff; -} -.users_view_line input.text { - padding: 9px 6px 9px 0; - width: 40%; - background-color: transparent; - color: #fff; - border: none; - border-bottom: 1px solid #222; - border-radius: 0; - box-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); - outline: 0; - margin: 0 0 10px; -} -.users_view_line input.text:focus { - border-bottom-color: #2293ec; -} -.users_view_line input.text.error { - border-bottom-color: #d92c34; -} -.users_view_line .choice label input:checked ~ .checkbox .iconic { - opacity: 1; - transform: scale(1); -} -.users_view_line .choice { - display: inline-block; - width: 5%; - min-width: 32px; - color: #fff; -} -.users_view_line .choice input { - position: absolute; - margin: 0; - opacity: 0; -} -.users_view_line .choice .checkbox { - display: inline-block; - width: 16px; - height: 16px; - margin: 10px 8px 0; - background: rgba(0, 0, 0, 0.5); - border-radius: 3px; - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.7); -} -.users_view_line .choice .checkbox .iconic { - box-sizing: border-box; - fill: #2293ec; - padding: 2px; - opacity: 0; - transform: scale(0); - transition: opacity 0.2s cubic-bezier(0.51, 0.92, 0.24, 1), transform 0.2s cubic-bezier(0.51, 0.92, 0.24, 1); -} -.users_view_line .basicModal__button { - display: inline-block; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.02), inset 1px 0 0 rgba(0, 0, 0, 0.2); - width: 10%; - min-width: 72px; - border-radius: 0 0 0 0; -} -.users_view_line .basicModal__button_OK { - color: #2293ec; - border-radius: 5px 0 0 5px; - margin-right: -4px; -} -.users_view_line .basicModal__button_DEL { - color: #b22027; - border-radius: 0 5px 5px 0; -} -.users_view_line .basicModal__button_CREATE { - width: 20%; - color: #009900; - border-radius: 5px; - min-width: 144px; -} -.users_view_line .select { - position: relative; - margin: 1px 5px; - padding: 0; - width: 110px; - color: #fff; - border-radius: 3px; - border: 1px solid rgba(0, 0, 0, 0.2); - box-shadow: 0 1px 0 rgba(255, 255, 255, 0.02); - font-size: 11px; - line-height: 16px; - overflow: hidden; - outline: 0; - vertical-align: middle; - background: rgba(0, 0, 0, 0.3); - display: inline-block; -} -.users_view_line .select select { - margin: 0; - padding: 4px 8px; - width: 120%; - color: #fff; - font-size: 11px; - line-height: 16px; - border: 0; - outline: 0; - box-shadow: none; - border-radius: 0; - background: transparent none; - -moz-appearance: none; - -webkit-appearance: none; - appearance: none; -} -.users_view_line .select select option { - margin: 0; - padding: 0; - background: #fff; - color: #333; - transition: none; -} -.users_view_line .select::after { - position: absolute; - content: "≡"; - right: 8px; - top: 4px; - color: #2293ec; - font-size: 16px; - line-height: 16px; - font-weight: 700; - pointer-events: none; -} - -@media (hover: hover) { - .users_view_line .basicModal__button:hover { - cursor: pointer; - color: #ffffff; - } - .users_view_line .basicModal__button_OK:hover { - background: #2293ec; - } - .users_view_line .basicModal__button_DEL:hover { - background: #b22027; - } - .users_view_line .basicModal__button_CREATE:hover { - background: #009900; - } - .users_view_line input:hover { - border-bottom: #2293ec solid 1px; - } -} -@media (hover: none) { - .users_view_line .basicModal__button { - color: #ffffff; - } - .users_view_line .basicModal__button_OK { - background: #2293ec; - } - .users_view_line .basicModal__button_DEL { - background: #b22027; - } - .users_view_line .basicModal__button_CREATE { - background: #009900; - } - .users_view_line input { - border-bottom: #2293ec solid 1px; - } -} -@media only screen and (max-width: 567px), only screen and (max-width: 640px) and (orientation: portrait) { - .users_view { - width: 100%; - max-width: 100%; - padding: 20px; - } - - .users_view_line p { - width: 100%; - } - .users_view_line p .text, -.users_view_line p input.text { - width: 36%; - font-size: smaller; - } - .users_view_line .choice { - margin-left: -8px; - margin-right: 3px; - } -} -.u2f_view { - width: 90%; - max-width: 700px; - margin-left: auto; - margin-right: auto; -} - -.u2f_view_line { - font-size: 14px; - width: 100%; -} -.u2f_view_line:last-child, .u2f_view_line:first-child { - padding-top: 50px; -} -.u2f_view_line p { - width: 550px; - margin: 0 0 5%; - color: #ccc; - display: inline-block; -} -.u2f_view_line p a { - color: rgba(255, 255, 255, 0.9); - text-decoration: none; - border-bottom: 1px dashed #888; -} -.u2f_view_line p:last-of-type { - margin: 0; -} -.u2f_view_line p.line { - margin: 0 0 0 0; -} -.u2f_view_line p.single { - text-align: center; -} -.u2f_view_line span.text { - display: inline-block; - padding: 9px 4px; - width: 80%; - background-color: transparent; - color: #fff; - border: none; -} -.u2f_view_line span.text_icon { - width: 5%; -} -.u2f_view_line span.text_icon .iconic { - width: 15px; - height: 14px; - margin: 0 15px 0 1px; - fill: #ffffff; -} -.u2f_view_line .choice label input:checked ~ .checkbox .iconic { - opacity: 1; - transform: scale(1); -} -.u2f_view_line .choice { - display: inline-block; - width: 5%; - color: #fff; -} -.u2f_view_line .choice input { - position: absolute; - margin: 0; - opacity: 0; -} -.u2f_view_line .choice .checkbox { - display: inline-block; - width: 16px; - height: 16px; - margin-top: 10px; - margin-left: 2px; - background: rgba(0, 0, 0, 0.5); - border-radius: 3px; - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.7); -} -.u2f_view_line .choice .checkbox .iconic { - box-sizing: border-box; - fill: #2293ec; - padding: 2px; - opacity: 0; - transform: scale(0); - transition: opacity 0.2s cubic-bezier(0.51, 0.92, 0.24, 1), transform 0.2s cubic-bezier(0.51, 0.92, 0.24, 1); -} -.u2f_view_line .basicModal__button { - display: inline-block; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.02), inset 1px 0 0 rgba(0, 0, 0, 0.2); - width: 20%; - min-width: 50px; - border-radius: 0 0 0 0; -} -.u2f_view_line .basicModal__button_OK { - color: #2293ec; - border-radius: 5px 0 0 5px; -} -.u2f_view_line .basicModal__button_DEL { - color: #b22027; - border-radius: 0 5px 5px 0; -} -.u2f_view_line .basicModal__button_CREATE { - width: 100%; - color: #009900; - border-radius: 5px; -} -.u2f_view_line .select { - position: relative; - margin: 1px 5px; - padding: 0; - width: 110px; - color: #fff; - border-radius: 3px; - border: 1px solid rgba(0, 0, 0, 0.2); - box-shadow: 0 1px 0 rgba(255, 255, 255, 0.02); - font-size: 11px; - line-height: 16px; - overflow: hidden; - outline: 0; - vertical-align: middle; - background: rgba(0, 0, 0, 0.3); - display: inline-block; -} -.u2f_view_line .select select { - margin: 0; - padding: 4px 8px; - width: 120%; - color: #fff; - font-size: 11px; - line-height: 16px; - border: 0; - outline: 0; - box-shadow: none; - border-radius: 0; - background: transparent none; - -moz-appearance: none; - -webkit-appearance: none; - appearance: none; -} -.u2f_view_line .select select option { - margin: 0; - padding: 0; - background: #fff; - color: #333; - transition: none; -} -.u2f_view_line .select::after { - position: absolute; - content: "≡"; - right: 8px; - top: 4px; - color: #2293ec; - font-size: 16px; - line-height: 16px; - font-weight: 700; - pointer-events: none; -} - -/* When you mouse over the navigation links, change their color */ -.signInKeyLess { - display: block; - padding: 10px 10px; - position: absolute; - cursor: pointer; -} -.signInKeyLess .iconic { - display: inline-block; - margin: 0 0px 0 0px; - width: 20px; - height: 20px; - fill: #818181; -} -.signInKeyLess .iconic.ionicons { - margin: 0 8px -2px 0; - width: 18px; - height: 18px; -} - -@media (hover: hover) { - .u2f_view_line .basicModal__button:hover { - cursor: pointer; - } - .u2f_view_line .basicModal__button_OK:hover { - background: #2293ec; - color: #ffffff; - } - .u2f_view_line .basicModal__button_DEL:hover { - background: #b22027; - color: #ffffff; - } - .u2f_view_line .basicModal__button_CREATE:hover { - background: #009900; - color: #ffffff; - } - .u2f_view_line input:hover { - border-bottom: #2293ec solid 1px; - } - - .signInKeyLess:hover .iconic { - fill: #ffffff; - } -} -@media (hover: none) { - .u2f_view_line .basicModal__button { - color: #ffffff; - } - .u2f_view_line .basicModal__button_OK { - background: #2293ec; - } - .u2f_view_line .basicModal__button_DEL { - background: #b22027; - } - .u2f_view_line .basicModal__button_CREATE { - background: #009900; - } - .u2f_view_line input { - border-bottom: #2293ec solid 1px; - } -} -@media only screen and (max-width: 567px), only screen and (max-width: 640px) and (orientation: portrait) { - .u2f_view { - width: 100%; - max-width: 100%; - padding: 20px; - } - - .u2f_view_line p { - width: 100%; - } - .u2f_view_line .basicModal__button_CREATE { - width: 80%; - margin: 0 10%; - } -} -.logs_diagnostics_view { - width: 90%; - margin-left: auto; - margin-right: auto; - color: #ccc; - font-size: 12px; - line-height: 14px; -} -.logs_diagnostics_view pre { - font-family: monospace; - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; - width: -webkit-fit-content; - width: -moz-fit-content; - width: fit-content; - padding-right: 30px; -} - -.clear_logs_update { - margin-left: auto; - margin-right: auto; - margin-bottom: 20px; - margin-top: 20px; - padding-left: 30px; -} - -.clear_logs_update .basicModal__button, -.logs_diagnostics_view .basicModal__button { - color: #2293ec; - display: inline-block; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.02), inset 1px 0 0 rgba(0, 0, 0, 0.2); - border-radius: 5px; -} -.clear_logs_update .iconic, -.logs_diagnostics_view .iconic { - display: inline-block; - margin: 0 10px 0 1px; - width: 13px; - height: 12px; - fill: #2293ec; -} -.clear_logs_update .button_left, -.logs_diagnostics_view .button_left { - margin-left: 24px; - width: 400px; -} - -@media (hover: none) { - .clear_logs_update .basicModal__button, -.logs_diagnostics_view .basicModal__button { - background: #2293ec; - color: #fff; - max-width: 320px; - margin-top: 20px; - } - .clear_logs_update .iconic, -.logs_diagnostics_view .iconic { - fill: #fff; - } -} -@media only screen and (max-width: 567px), only screen and (max-width: 640px) and (orientation: portrait) { - .logs_diagnostics_view, -.clear_logs_update { - width: 100%; - max-width: 100%; - font-size: 11px; - line-height: 12px; - } - .logs_diagnostics_view .basicModal__button, -.logs_diagnostics_view .button_left, -.clear_logs_update .basicModal__button, -.clear_logs_update .button_left { - width: 80%; - margin: 0 10%; - } - - .logs_diagnostics_view { - padding: 10px 10px 0 0; - } - - .clear_logs_update { - padding: 10px 10px 0 10px; - margin: 0; - } -} -.sharing_view { - width: 90%; - max-width: 700px; - margin-left: auto; - margin-right: auto; - margin-top: 20px; -} -.sharing_view .sharing_view_line { - width: 100%; - display: block; - clear: left; -} -.sharing_view .col-xs-1, -.sharing_view .col-xs-10, -.sharing_view .col-xs-11, -.sharing_view .col-xs-12, -.sharing_view .col-xs-2, -.sharing_view .col-xs-3, -.sharing_view .col-xs-4, -.sharing_view .col-xs-5, -.sharing_view .col-xs-6, -.sharing_view .col-xs-7, -.sharing_view .col-xs-8, -.sharing_view .col-xs-9 { - float: left; - position: relative; - min-height: 1px; -} -.sharing_view .col-xs-2 { - width: 10%; - padding-right: 3%; - padding-left: 3%; -} -.sharing_view .col-xs-5 { - width: 42%; -} -.sharing_view .btn-block + .btn-block { - margin-top: 5px; -} -.sharing_view .btn-block { - display: block; - width: 100%; -} -.sharing_view .btn-default { - color: #2293ec; - border-color: #2293ec; - background: rgba(0, 0, 0, 0.5); - border-radius: 3px; - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.7); -} -.sharing_view .btn { - display: inline-block; - padding: 6px 12px; - margin-bottom: 0; - font-size: 14px; - font-weight: 400; - line-height: 1.42857143; - text-align: center; - white-space: nowrap; - vertical-align: middle; - touch-action: manipulation; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.sharing_view select[multiple], -.sharing_view select[size] { - height: 150px; -} -.sharing_view .form-control { - display: block; - width: 100%; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 4px; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; -} -.sharing_view .iconic { - display: inline-block; - width: 15px; - height: 14px; - fill: #2293ec; -} -.sharing_view .iconic .iconic.ionicons { - margin: 0 8px -2px 0; - width: 18px; - height: 18px; -} -.sharing_view .blue .iconic { - fill: #2293ec; -} -.sharing_view .grey .iconic { - fill: #b4b4b4; -} -.sharing_view p { - width: 100%; - color: #ccc; - text-align: center; - font-size: 14px; - display: block; -} -.sharing_view p.with { - padding: 15px 0; -} -.sharing_view span.text { - display: inline-block; - padding: 0 2px; - width: 40%; - background-color: transparent; - color: #fff; - border: none; -} -.sharing_view span.text:last-of-type { - width: 5%; -} -.sharing_view span.text .iconic { - width: 15px; - height: 14px; - margin: 0 10px 0 1px; - fill: #ffffff; -} -.sharing_view .basicModal__button { - margin-top: 10px; - color: #2293ec; - display: inline-block; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.02), inset 1px 0 0 rgba(0, 0, 0, 0.2); - border-radius: 5px; -} -.sharing_view .choice label input:checked ~ .checkbox .iconic { - opacity: 1; - transform: scale(1); -} -.sharing_view .choice { - display: inline-block; - width: 5%; - margin: 0 10px; - color: #fff; -} -.sharing_view .choice input { - position: absolute; - margin: 0; - opacity: 0; -} -.sharing_view .choice .checkbox { - display: inline-block; - width: 16px; - height: 16px; - margin-top: 10px; - margin-left: 2px; - background: rgba(0, 0, 0, 0.5); - border-radius: 3px; - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.7); -} -.sharing_view .choice .checkbox .iconic { - box-sizing: border-box; - fill: #2293ec; - padding: 2px; - opacity: 0; - transform: scale(0); - transition: opacity 0.2s cubic-bezier(0.51, 0.92, 0.24, 1), transform 0.2s cubic-bezier(0.51, 0.92, 0.24, 1); -} -.sharing_view .select { - position: relative; - padding: 0; - color: #fff; - border-radius: 3px; - border: 1px solid rgba(0, 0, 0, 0.2); - box-shadow: 0 1px 0 rgba(255, 255, 255, 0.02); - font-size: 14px; - line-height: 16px; - outline: 0; - vertical-align: middle; - background: rgba(0, 0, 0, 0.3); - display: inline-block; -} -.sharing_view .borderBlue { - border: 1px solid #2293ec; -} - -@media (hover: hover) { - .sharing_view .basicModal__button:hover { - background: #2293ec; - color: #ffffff; - cursor: pointer; - } - .sharing_view input:hover { - border-bottom: #2293ec solid 1px; - } -} -@media (hover: none) { - .sharing_view .basicModal__button { - background: #2293ec; - color: #ffffff; - } - .sharing_view input { - border-bottom: #2293ec solid 1px; - } -} -@media only screen and (max-width: 567px), only screen and (max-width: 640px) and (orientation: portrait) { - .sharing_view { - width: 100%; - max-width: 100%; - padding: 10px; - } - .sharing_view .select { - font-size: 12px; - } - .sharing_view .iconic { - margin-left: -4px; - } - - .sharing_view_line p { - width: 100%; - } - .sharing_view_line .basicModal__button { - width: 80%; - margin: 0 10%; - } -} -#multiselect { - position: absolute; - background-color: rgba(0, 94, 204, 0.3); - border: 1px solid #005ecc; - border-radius: 3px; - z-index: 5; -} - -.justified-layout { - margin: 30px 0 0 30px; - width: 100%; - position: relative; -} - -.unjustified-layout { - margin: 25px -5px -5px 25px; - width: 100%; - position: relative; - overflow: hidden; -} - -.justified-layout > .photo { - position: absolute; - --lychee-default-height: 320px; - margin: 0; -} - -.unjustified-layout > .photo { - float: left; - max-height: 240px; - margin: 5px; -} - -.justified-layout > .photo > .thumbimg > img, -.justified-layout > .photo > .thumbimg, -.unjustified-layout > .photo > .thumbimg > img, -.unjustified-layout > .photo > .thumbimg { - width: 100%; - height: 100%; - border: none; - -o-object-fit: cover; - object-fit: cover; -} - -.justified-layout > .photo > .overlay, -.unjustified-layout > .photo > .overlay { - width: 100%; - bottom: 0; - margin: 0 0 0 0; -} - -.justified-layout > .photo > .overlay > h1, -.unjustified-layout > .photo > .overlay > h1 { - width: auto; - margin-right: 15px; -} - -@media only screen and (min-width: 320px) and (max-width: 567px) { - .content > .justified-layout { - margin: 8px 8px 0 8px; - } - .content > .justified-layout .photo { - --lychee-default-height: 160px; - } -} -@media only screen and (min-width: 568px) and (max-width: 639px) { - .content > .justified-layout { - margin: 9px 9px 0 9px; - } - .content > .justified-layout .photo { - --lychee-default-height: 200px; - } -} -@media only screen and (min-width: 640px) and (max-width: 768px) { - .content > .justified-layout { - margin: 10px 10px 0 10px; - } - .content > .justified-layout .photo { - --lychee-default-height: 240px; - } -} -#footer { - z-index: 3; - left: 0; - right: 0; - bottom: 0; - text-align: center; - padding: 5px 0 5px 0; - transition: color 0.3s, opacity 0.3s ease-out, transform 0.3s ease-out, box-shadow 0.3s, margin-left 0.5s; - position: absolute; - background: #1d1d1d; -} -#footer p.hosted_by, -#footer p.home_copyright { - text-transform: uppercase; -} -#footer p { - color: #cccccc; - font-size: 0.75em; - line-height: 26px; -} -#footer p a { - color: #ccc; -} -#footer p a:visited { - color: #ccc; -} - -.hide_footer { - display: none; -} - -@font-face { - font-family: "socials"; - src: url("fonts/socials.eot?egvu10"); - src: url("fonts/socials.eot?egvu10#iefix") format("embedded-opentype"), url("fonts/socials.ttf?egvu10") format("truetype"), url("fonts/socials.woff?egvu10") format("woff"), url("fonts/socials.svg?egvu10#socials") format("svg"); - font-weight: normal; - font-style: normal; -} -#socials_footer { - padding: 0; - text-align: center; - left: 0; - right: 0; -} - -.socialicons { - display: inline-block; - font-size: 18px; - font-family: "socials" !important; - speak: none; - color: #cccccc; - text-decoration: none; - margin: 15px 15px 5px 15px; - transition: all 0.3s; - -webkit-transition: all 0.3s; - -moz-transition: all 0.3s; - -o-transition: all 0.3s; -} - -#twitter:before { - content: ""; -} - -#instagram:before { - content: ""; -} - -#youtube:before { - content: ""; -} - -#flickr:before { - content: ""; -} - -#facebook:before { - content: ""; -} - -@media (hover: hover) { - .socialicons:hover { - color: #b5b5b5; - transform: scale(1.3); - -webkit-transform: scale(1.3); - } -} -.directLinks input.text { - width: calc(100% - 30px); - color: rgba(255, 255, 255, 0.6); - padding: 2px; -} -.directLinks .basicModal__button { - display: inline-block; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.02), inset 1px 0 0 rgba(0, 0, 0, 0.2); - width: 25px; - height: 25px; - border-radius: 5px; - border-bottom: 0; - padding: 3px 0 0; - margin-top: -5px; - float: right; -} -.directLinks .basicModal__button .iconic { - fill: #2293ec; - width: 16px; - height: 16px; -} -.directLinks .imageLinks { - margin-top: -30px; - padding-bottom: 40px; -} -.directLinks .imageLinks p { - padding: 10px 30px 0; - font-size: 12px; - line-height: 15px; -} -.directLinks .imageLinks .basicModal__button { - margin-top: -8px; -} - -.downloads { - padding: 30px; -} -.downloads .basicModal__button { - color: #2293ec; - display: inline-block; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.02), inset 1px 0 0 rgba(0, 0, 0, 0.2); - border-radius: 5px; - border-bottom: 0; - margin: 5px 0; -} -.downloads .basicModal__button .iconic { - fill: #2293ec; - margin: 0 10px 0 1px; - width: 11px; - height: 10px; -} - -@media (hover: hover) { - .directLinks .basicModal__button:hover, -.downloads .basicModal__button:hover { - background: #2293ec; - cursor: pointer; - } - .directLinks .basicModal__button:hover .iconic, -.downloads .basicModal__button:hover .iconic { - fill: #ffffff; - } - - .downloads .basicModal__button:hover { - color: #ffffff; - } -} diff --git a/public/dist/frontend.js b/public/dist/frontend.js index 0f7530b1cfa..f3240ec4bee 100644 --- a/public/dist/frontend.js +++ b/public/dist/frontend.js @@ -1,5 +1,5 @@ -/*! jQuery v3.7.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.0",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},R=function(){V()},M=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&z(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function X(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&M(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function U(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function z(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",R),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Me(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return R(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return R(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0=p;p+=1)if(!(0> typeof e)throw Error("bad rs block @ typeNumber:"+b+"/errorCorrectLevel:"+a);b=e.length/3;a=[];for(var d=0;d | BSD-3-Clause */ +/*! sprintf-js v1.1.3 | Copyright (c) 2007-present, Alexandru Mărășteanu | BSD-3-Clause */ !function(){"use strict";var g={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function y(e){return function(e,t){var r,n,i,s,a,o,p,c,l,u=1,f=e.length,d="";for(n=0;n>>0).toString(8);break;case"s":r=String(r),r=s.precision?r.substring(0,s.precision):r;break;case"t":r=String(!!r),r=s.precision?r.substring(0,s.precision):r;break;case"T":r=Object.prototype.toString.call(r).slice(8,-1).toLowerCase(),r=s.precision?r.substring(0,s.precision):r;break;case"u":r=parseInt(r,10)>>>0;break;case"v":r=r.valueOf(),r=s.precision?r.substring(0,s.precision):r;break;case"x":r=(parseInt(r,10)>>>0).toString(16);break;case"X":r=(parseInt(r,10)>>>0).toString(16).toUpperCase()}g.json.test(s.type)?d+=r:(!g.number.test(s.type)||c&&!s.sign?l="":(l=c?"+":"-",r=r.toString().replace(g.sign,"")),o=s.pad_char?"0"===s.pad_char?"0":s.pad_char.charAt(1):" ",p=s.width-(l+r).length,a=s.width&&0=0;--i){var entry=this.tryEntries[i],record=entry.completion;if("root"===entry.tryLoc)return handle("end");if(entry.tryLoc<=this.prev){var hasCatch=hasOwn.call(entry,"catchLoc"),hasFinally=hasOwn.call(entry,"finallyLoc");if(hasCatch&&hasFinally){if(this.prev=0;--i){var entry=this.tryEntries[i];if(entry.tryLoc<=this.prev&&hasOwn.call(entry,"finallyLoc")&&this.prev=0;--i){var entry=this.tryEntries[i];if(entry.finallyLoc===finallyLoc)return this.complete(entry.completion,entry.afterLoc),resetTryEntry(entry),ContinueSentinel;}},"catch":function _catch(tryLoc){for(var i=this.tryEntries.length-1;i>=0;--i){var entry=this.tryEntries[i];if(entry.tryLoc===tryLoc){var record=entry.completion;if("throw"===record.type){var thrown=record.arg;resetTryEntry(entry);}return thrown;}}throw new Error("illegal catch attempt");},delegateYield:function delegateYield(iterable,resultName,nextLoc){return this.delegate={iterator:values(iterable),resultName:resultName,nextLoc:nextLoc},"next"===this.method&&(this.arg=undefined),ContinueSentinel;}},exports;}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value;}catch(error){reject(error);return;}if(info.done){resolve(value);}else{Promise.resolve(value).then(_next,_throw);}}function _asyncToGenerator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value);}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err);}_next(undefined);});};}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _defineProperties(target,props){for(var i=0;i]+)>/g,function(_,name){var group=groups[name];return"$"+(Array.isArray(group)?group.join("$"):group);}));}if("function"==typeof substitution){var _this=this;return _super[Symbol.replace].call(this,str,function(){var args=arguments;return"object"!=_typeof(args[args.length-1])&&(args=[].slice.call(args)).push(buildGroups(args,_this)),substitution.apply(this,args);});}return _super[Symbol.replace].call(this,str,substitution);},_wrapRegExp.apply(this,arguments);}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function");}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:true,configurable:true}});Object.defineProperty(subClass,"prototype",{writable:false});if(superClass)_setPrototypeOf(subClass,superClass);}function _setPrototypeOf(o,p){_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(o,p){o.__proto__=p;return o;};return _setPrototypeOf(o,p);}function _typeof(obj){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj;}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;},_typeof(obj);}function _taggedTemplateLiteral(strings,raw){if(!raw){raw=strings.slice(0);}return Object.freeze(Object.defineProperties(strings,{raw:{value:Object.freeze(raw)}}));}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(o);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen);}function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return handle("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),u=n.call(i,"finallyLoc");if(c&&u){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),resetTryEntry(r),y;}},"catch":function _catch(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;resetTryEntry(r);}return o;}}throw new Error("illegal catch attempt");},delegateYield:function delegateYield(e,r,n){return this.delegate={iterator:values(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),y;}},e;}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value;}catch(error){reject(error);return;}if(info.done){resolve(value);}else{Promise.resolve(value).then(_next,_throw);}}function _asyncToGenerator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value);}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err);}_next(undefined);});};}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _defineProperties(target,props){for(var i=0;i]+)>/g,function(e,r){var t=o[r];return"$"+(Array.isArray(t)?t.join("$"):t);}));}if("function"==typeof p){var i=this;return e[Symbol.replace].call(this,t,function(){var e=arguments;return"object"!=_typeof(e[e.length-1])&&(e=[].slice.call(e)).push(buildGroups(e,i)),p.apply(this,e);});}return e[Symbol.replace].call(this,t,p);},_wrapRegExp.apply(this,arguments);}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function");}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:true,configurable:true}});Object.defineProperty(subClass,"prototype",{writable:false});if(superClass)_setPrototypeOf(subClass,superClass);}function _setPrototypeOf(o,p){_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function _setPrototypeOf(o,p){o.__proto__=p;return o;};return _setPrototypeOf(o,p);}function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o;}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o;},_typeof(o);}function _taggedTemplateLiteral(strings,raw){if(!raw){raw=strings.slice(0);}return Object.freeze(Object.defineProperties(strings,{raw:{value:Object.freeze(raw)}}));}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(o);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen);}function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i - */function(){var _register=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(){var request,response,optionsResponse,json,publicKey,credentials,publicKeyCredential,_args=arguments;return _regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:request=_args.length>0&&_args[0]!==undefined?_args[0]:{};response=_args.length>1&&_args[1]!==undefined?_args[1]:{};_context.next=4;return _classPrivateMethodGet(this,_fetch,_fetch2).call(this,request,_classPrivateFieldGet(this,_routes).registerOptions);case 4:optionsResponse=_context.sent;_context.next=7;return optionsResponse.json();case 7:json=_context.sent;publicKey=_classPrivateMethodGet(this,_parseIncomingServerOptions,_parseIncomingServerOptions2).call(this,json);_context.next=11;return navigator.credentials.create({publicKey:publicKey});case 11:credentials=_context.sent;publicKeyCredential=_classPrivateMethodGet(this,_parseOutgoingCredentials,_parseOutgoingCredentials2).call(this,credentials);Object.assign(publicKeyCredential,response);Object.assign(publicKeyCredential,request);_context.next=17;return _classPrivateMethodGet(this,_fetch,_fetch2).call(this,publicKeyCredential,_classPrivateFieldGet(this,_routes).register).then(_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_handleResponse));case 17:return _context.abrupt("return",_context.sent);case 18:case"end":return _context.stop();}},_callee,this);}));function register(){return _register.apply(this,arguments);}return register;}()/** + */function register(){return(_register=_register||_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(){var request,response,optionsResponse,json,publicKey,credentials,publicKeyCredential,_args=arguments;return _regeneratorRuntime().wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:request=_args.length>0&&_args[0]!==undefined?_args[0]:{};response=_args.length>1&&_args[1]!==undefined?_args[1]:{};_context.next=4;return _classPrivateMethodGet(this,_fetch,_fetch2).call(this,request,_classPrivateFieldGet(this,_routes).registerOptions);case 4:optionsResponse=_context.sent;_context.next=7;return optionsResponse.json();case 7:json=_context.sent;publicKey=_classPrivateMethodGet(this,_parseIncomingServerOptions,_parseIncomingServerOptions2).call(this,json);_context.next=11;return navigator.credentials.create({publicKey:publicKey});case 11:credentials=_context.sent;publicKeyCredential=_classPrivateMethodGet(this,_parseOutgoingCredentials,_parseOutgoingCredentials2).call(this,credentials);Object.assign(publicKeyCredential,response);Object.assign(publicKeyCredential,request);_context.next=17;return _classPrivateMethodGet(this,_fetch,_fetch2).call(this,publicKeyCredential,_classPrivateFieldGet(this,_routes).register).then(_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_handleResponse));case 17:return _context.abrupt("return",_context.sent);case 18:case"end":return _context.stop();}},_callee,this);}))).apply(this,arguments);}/** * Log in a user with his credentials. * * If no credentials are given, the app may return a blank assertion for userless login. @@ -5564,7 +5564,7 @@ throw new TypeError('Ensure a CSRF/XSRF token is manually set, or provided in a * @param request {{string}} * @param response {{string}} * @returns Promise - */},{key:"login",value:function(){var _login=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(){var request,response,optionsResponse,json,publicKey,credentials,publicKeyCredential,_args2=arguments;return _regeneratorRuntime().wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:request=_args2.length>0&&_args2[0]!==undefined?_args2[0]:{};response=_args2.length>1&&_args2[1]!==undefined?_args2[1]:{};_context2.next=4;return _classPrivateMethodGet(this,_fetch,_fetch2).call(this,request,_classPrivateFieldGet(this,_routes).loginOptions);case 4:optionsResponse=_context2.sent;_context2.next=7;return optionsResponse.json();case 7:json=_context2.sent;publicKey=_classPrivateMethodGet(this,_parseIncomingServerOptions,_parseIncomingServerOptions2).call(this,json);_context2.next=11;return navigator.credentials.get({publicKey:publicKey});case 11:credentials=_context2.sent;publicKeyCredential=_classPrivateMethodGet(this,_parseOutgoingCredentials,_parseOutgoingCredentials2).call(this,credentials);Object.assign(publicKeyCredential,response);console.log(publicKeyCredential);_context2.next=17;return _classPrivateMethodGet(this,_fetch,_fetch2).call(this,publicKeyCredential,_classPrivateFieldGet(this,_routes).login,response).then(_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_handleResponse));case 17:return _context2.abrupt("return",_context2.sent);case 18:case"end":return _context2.stop();}},_callee2,this);}));function login(){return _login.apply(this,arguments);}return login;}()/** + */},{key:"login",value:function login(){return(_login=_login||_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(){var request,response,optionsResponse,json,publicKey,credentials,publicKeyCredential,_args2=arguments;return _regeneratorRuntime().wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:request=_args2.length>0&&_args2[0]!==undefined?_args2[0]:{};response=_args2.length>1&&_args2[1]!==undefined?_args2[1]:{};_context2.next=4;return _classPrivateMethodGet(this,_fetch,_fetch2).call(this,request,_classPrivateFieldGet(this,_routes).loginOptions);case 4:optionsResponse=_context2.sent;_context2.next=7;return optionsResponse.json();case 7:json=_context2.sent;publicKey=_classPrivateMethodGet(this,_parseIncomingServerOptions,_parseIncomingServerOptions2).call(this,json);_context2.next=11;return navigator.credentials.get({publicKey:publicKey});case 11:credentials=_context2.sent;publicKeyCredential=_classPrivateMethodGet(this,_parseOutgoingCredentials,_parseOutgoingCredentials2).call(this,credentials);Object.assign(publicKeyCredential,response);console.log(publicKeyCredential);_context2.next=17;return _classPrivateMethodGet(this,_fetch,_fetch2).call(this,publicKeyCredential,_classPrivateFieldGet(this,_routes).login,response).then(_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_handleResponse));case 17:return _context2.abrupt("return",_context2.sent);case 18:case"end":return _context2.stop();}},_callee2,this);}))).apply(this,arguments);}/** * Checks if the browser supports WebAuthn. * * @returns {boolean} @@ -5572,7 +5572,7 @@ throw new TypeError('Ensure a CSRF/XSRF token is manually set, or provided in a * Checks if the browser doesn't support WebAuthn. * * @returns {boolean} - */},{key:"doesntSupportWebAuthn",value:function doesntSupportWebAuthn(){return!this.supportsWebAuthn();}}]);return WebAuthn;}();function _get_firstInputWithCsrfToken(){// First, try finding an CSRF Token in the head. + */},{key:"doesntSupportWebAuthn",value:function doesntSupportWebAuthn(){return!this.supportsWebAuthn();}}]);return WebAuthn;}();_class=WebAuthn;function _get_firstInputWithCsrfToken(){// First, try finding an CSRF Token in the head. var token=Array.from(document.head.getElementsByTagName("meta")).find(function(element){return element.name==="csrf-token";});if(token){return token.content;}// Then, try to find a hidden input containing the CSRF token. token=Array.from(document.getElementsByTagName("input")).find(function(input){return input.name==="_token"&&input.type==="hidden";});if(token){return token.value;}return null;}/** * Returns the value of the XSRF token if it exists in a cookie. @@ -5603,12 +5603,12 @@ return cookie?cookie.split("=")[1].trim().replaceAll("%3D",""):null;}function _f * @param input {string} * @param useAtob {boolean} * @returns {Uint8Array} - */function _uint8Array(input){var useAtob=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;return Uint8Array.from(useAtob?atob(input):_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_base64UrlDecode).call(WebAuthn,input),function(c){return c.charCodeAt(0);});}/** + */function _uint8Array(input){var useAtob=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;return Uint8Array.from(useAtob?atob(input):_classStaticPrivateMethodGet(_class,_class,_base64UrlDecode).call(_class,input),function(c){return c.charCodeAt(0);});}/** * Encodes an array of bytes to a BASE64 URL string * * @param arrayBuffer {ArrayBuffer|Uint8Array} * @returns {string} - */function _arrayToBase64String(arrayBuffer){return btoa(String.fromCharCode.apply(String,_toConsumableArray(new Uint8Array(arrayBuffer))));}function _parseIncomingServerOptions2(publicKey){console.debug(publicKey);publicKey.challenge=_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_uint8Array).call(WebAuthn,publicKey.challenge);if("user"in publicKey){publicKey.user=_objectSpread(_objectSpread({},publicKey.user),{},{id:_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_uint8Array).call(WebAuthn,publicKey.user.id)});}["excludeCredentials","allowCredentials"].filter(function(key){return key in publicKey;}).forEach(function(key){publicKey[key]=publicKey[key].map(function(data){return _objectSpread(_objectSpread({},data),{},{id:_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_uint8Array).call(WebAuthn,data.id)});});});console.log(publicKey);return publicKey;}function _parseOutgoingCredentials2(credentials){var parseCredentials={id:credentials.id,type:credentials.type,rawId:_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_arrayToBase64String).call(WebAuthn,credentials.rawId),response:{}};["clientDataJSON","attestationObject","authenticatorData","signature","userHandle"].filter(function(key){return key in credentials.response;}).forEach(function(key){return parseCredentials.response[key]=_classStaticPrivateMethodGet(WebAuthn,WebAuthn,_arrayToBase64String).call(WebAuthn,credentials.response[key]);});return parseCredentials;}/** + */function _arrayToBase64String(arrayBuffer){return btoa(String.fromCharCode.apply(String,_toConsumableArray(new Uint8Array(arrayBuffer))));}function _parseIncomingServerOptions2(publicKey){console.debug(publicKey);publicKey.challenge=_classStaticPrivateMethodGet(_class,_class,_uint8Array).call(_class,publicKey.challenge);if("user"in publicKey){publicKey.user=_objectSpread(_objectSpread({},publicKey.user),{},{id:_classStaticPrivateMethodGet(_class,_class,_uint8Array).call(_class,publicKey.user.id)});}["excludeCredentials","allowCredentials"].filter(function(key){return key in publicKey;}).forEach(function(key){publicKey[key]=publicKey[key].map(function(data){return _objectSpread(_objectSpread({},data),{},{id:_classStaticPrivateMethodGet(_class,_class,_uint8Array).call(_class,data.id)});});});console.log(publicKey);return publicKey;}function _parseOutgoingCredentials2(credentials){var parseCredentials={id:credentials.id,type:credentials.type,rawId:_classStaticPrivateMethodGet(_class,_class,_arrayToBase64String).call(_class,credentials.rawId),response:{}};["clientDataJSON","attestationObject","authenticatorData","signature","userHandle"].filter(function(key){return key in credentials.response;}).forEach(function(key){return parseCredentials.response[key]=_classStaticPrivateMethodGet(_class,_class,_arrayToBase64String).call(_class,credentials.response[key]);});return parseCredentials;}/** * Handles the response from the Server. * * Throws the entire response if is not OK (HTTP 2XX). diff --git a/public/dist/landing.js b/public/dist/landing.js index be17a259f01..8cb2444f061 100644 --- a/public/dist/landing.js +++ b/public/dist/landing.js @@ -1,5 +1,5 @@ -/*! jQuery v3.7.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.0",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},R=function(){V()},M=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&z(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function X(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&M(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function U(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function z(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",R),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Me(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return R(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return R(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0 { // webpackBootstrap -/******/ var __webpack_modules__ = ({ - -/***/ "./resources/assets/js/app.js": -/*!************************************!*\ - !*** ./resources/assets/js/app.js ***! - \************************************/ -/***/ (() => { - - - -/***/ }), - -/***/ "./resources/assets/scss/app.scss": -/*!****************************************!*\ - !*** ./resources/assets/scss/app.scss ***! - \****************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -// extracted by mini-css-extract-plugin - - -/***/ }) - -/******/ }); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ // no module.id needed -/******/ // no module.loaded needed -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = __webpack_modules__; -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/chunk loaded */ -/******/ (() => { -/******/ var deferred = []; -/******/ __webpack_require__.O = (result, chunkIds, fn, priority) => { -/******/ if(chunkIds) { -/******/ priority = priority || 0; -/******/ for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1]; -/******/ deferred[i] = [chunkIds, fn, priority]; -/******/ return; -/******/ } -/******/ var notFulfilled = Infinity; -/******/ for (var i = 0; i < deferred.length; i++) { -/******/ var [chunkIds, fn, priority] = deferred[i]; -/******/ var fulfilled = true; -/******/ for (var j = 0; j < chunkIds.length; j++) { -/******/ if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) { -/******/ chunkIds.splice(j--, 1); -/******/ } else { -/******/ fulfilled = false; -/******/ if(priority < notFulfilled) notFulfilled = priority; -/******/ } -/******/ } -/******/ if(fulfilled) { -/******/ deferred.splice(i--, 1) -/******/ result = fn(); -/******/ } -/******/ } -/******/ return result; -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/hasOwnProperty shorthand */ -/******/ (() => { -/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) -/******/ })(); -/******/ -/******/ /* webpack/runtime/make namespace object */ -/******/ (() => { -/******/ // define __esModule on exports -/******/ __webpack_require__.r = (exports) => { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/jsonp chunk loading */ -/******/ (() => { -/******/ // no baseURI -/******/ -/******/ // object to store loaded and loading chunks -/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched -/******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded -/******/ var installedChunks = { -/******/ "/js/app": 0, -/******/ "css/app": 0 -/******/ }; -/******/ -/******/ // no chunk on demand loading -/******/ -/******/ // no prefetching -/******/ -/******/ // no preloaded -/******/ -/******/ // no HMR -/******/ -/******/ // no HMR manifest -/******/ -/******/ __webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0); -/******/ -/******/ // install a JSONP callback for chunk loading -/******/ var webpackJsonpCallback = (parentChunkLoadingFunction, data) => { -/******/ var [chunkIds, moreModules, runtime] = data; -/******/ // add "moreModules" to the modules object, -/******/ // then flag all "chunkIds" as loaded and fire callback -/******/ var moduleId, chunkId, i = 0; -/******/ for(moduleId in moreModules) { -/******/ if(__webpack_require__.o(moreModules, moduleId)) { -/******/ __webpack_require__.m[moduleId] = moreModules[moduleId]; -/******/ } -/******/ } -/******/ if(runtime) var result = runtime(__webpack_require__); -/******/ if(parentChunkLoadingFunction) parentChunkLoadingFunction(data); -/******/ for(;i < chunkIds.length; i++) { -/******/ chunkId = chunkIds[i]; -/******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) { -/******/ installedChunks[chunkId][0](); -/******/ } -/******/ installedChunks[chunkIds[i]] = 0; -/******/ } -/******/ return __webpack_require__.O(result); -/******/ } -/******/ -/******/ var chunkLoadingGlobal = self["webpackChunk"] = self["webpackChunk"] || []; -/******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0)); -/******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal)); -/******/ })(); -/******/ -/************************************************************************/ -/******/ -/******/ // startup -/******/ // Load entry module and return exports -/******/ // This entry module depends on other loaded chunks and execution need to be delayed -/******/ __webpack_require__.O(undefined, ["css/app"], () => (__webpack_require__("./resources/assets/js/app.js"))) -/******/ var __webpack_exports__ = __webpack_require__.O(undefined, ["css/app"], () => (__webpack_require__("./resources/assets/scss/app.scss"))) -/******/ __webpack_exports__ = __webpack_require__.O(__webpack_exports__); -/******/ -/******/ })() -; \ No newline at end of file diff --git a/public/mix-manifest.json b/public/mix-manifest.json deleted file mode 100644 index 2d60117130c..00000000000 --- a/public/mix-manifest.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "/js/app.js": "/js/app.js", - "/css/app.css": "/css/app.css" -} diff --git a/resources/assets/js/app.js b/resources/assets/js/app.js deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/resources/assets/scss/_animations.scss b/resources/assets/scss/_animations.scss deleted file mode 100644 index 6e3180f8da1..00000000000 --- a/resources/assets/scss/_animations.scss +++ /dev/null @@ -1,79 +0,0 @@ -// Animation Setter ---------------------------------------------------- // -.fadeIn { - animation-name: fadeIn; - animation-duration: 0.3s; - animation-fill-mode: forwards; - animation-timing-function: $timing; -} - -.fadeOut { - animation-name: fadeOut; - animation-duration: 0.3s; - animation-fill-mode: forwards; - animation-timing-function: $timing; -} - -// Fade -------------------------------------------------------------- // -@keyframes fadeIn { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } -} - -@keyframes fadeOut { - 0% { - opacity: 1; - } - 100% { - opacity: 0; - } -} - -// Move -------------------------------------------------------------- // -@keyframes moveBackground { - 0% { - background-position-x: 0px; - } - 100% { - background-position-x: -100px; - } -} - -// Zoom -------------------------------------------------------------- // -@keyframes zoomIn { - 0% { - opacity: 0; - transform: scale(0.8); - } - 100% { - opacity: 1; - transform: scale(1); - } -} - -@keyframes zoomOut { - 0% { - opacity: 1; - transform: scale(1); - } - 100% { - opacity: 0; - transform: scale(0.8); - } -} - -// Pulse -------------------------------------------------------------- // -@keyframes pulse { - 0% { - opacity: 1; - } - 50% { - opacity: 0.3; - } - 100% { - opacity: 1; - } -} diff --git a/resources/assets/scss/_content.scss b/resources/assets/scss/_content.scss deleted file mode 100644 index b744f7b7c73..00000000000 --- a/resources/assets/scss/_content.scss +++ /dev/null @@ -1,513 +0,0 @@ -.content { - display: flex; - flex-wrap: wrap; - align-content: flex-start; - padding: 50px 30px 33px 0; - width: calc(100% - 30px); - // We will set min-height from JavaScript, accounting for the - // height of the footer, which can vary. - //min-height: calc(100vh - 50px - 33px - ); - transition: margin-left 0.5s; - -webkit-overflow-scrolling: touch; - max-width: calc(100vw - 10px); - &::before { - content: ""; - position: absolute; - left: 0; - width: 100%; - height: 1px; - background: white(0.02); - } - &--sidebar { - width: calc(100% - 380px); - } - // Animations -------------------------------------------------------------- // - &.contentZoomIn .album, - &.contentZoomIn .photo { - animation-name: zoomIn; - } - &.contentZoomIn .divider { - animation-name: fadeIn; - } - &.contentZoomOut .album, - &.contentZoomOut .photo { - animation-name: zoomOut; - } - &.contentZoomOut .divider { - animation-name: fadeOut; - } - // Albums and Photos ------------------------------------------------------ // - .album { - position: relative; - width: 202px; - height: 202px; - margin: 30px 0 0 30px; - cursor: default; - - animation-duration: 0.2s; - animation-fill-mode: forwards; - animation-timing-function: $timing; - .thumbimg { - position: absolute; - width: 100%; - height: 100%; - background: #222; - color: #222; - box-shadow: 0 2px 5px black(0.5); - border: 1px solid white(0.5); - transition: opacity 0.3s ease-out, transform 0.3s ease-out, - border-color 0.3s ease-out; - } - .thumbimg > img { - width: 100%; - height: 100%; - } - &:focus .thumbimg, - &.active .thumbimg { - border-color: $colorBlue; - } - &:active .thumbimg { - transition: none; - border-color: darken($colorBlue, 15%); - } - &.selected img { - outline: 1px solid $colorBlue; - } - .video { - &::before { - content: ""; - position: absolute; - display: block; - height: 100%; - width: 100%; - background: url("../img/play-icon.png") no-repeat 46% 50%; - transition: all 0.3s; - will-change: opacity, height; - } - &:focus::before { - opacity: 0.75; - } - } - .livephoto { - &::before { - content: ""; - position: absolute; - display: block; - height: 100%; - width: 100%; - background: url("../img/live-photo-icon.png") no-repeat 46% 50%; - background-position: 2% 2%; - transition: all 0.3s; - will-change: opacity, height; - } - &:focus::before { - opacity: 0.75; - } - } - } - - // Album -------------------------------------------------------------- // - .album { - .thumbimg:first-child, - .thumbimg:nth-child(2) { - transform: rotate(0) translateY(0) translateX(0); - opacity: 0; - } - &:focus .thumbimg:nth-child(1), - &:focus .thumbimg:nth-child(2) { - opacity: 1; - // Keep the composited layer created by the browser during the animation. - // Makes the border of the transformed thumb look better. - // See https://github.com/electerious/Lychee/pull/626 for more. - will-change: transform; - } - &:focus .thumbimg:nth-child(1) { - transform: rotate(-2deg) translateY(10px) translateX(-12px); - } - &:focus .thumbimg:nth-child(2) { - transform: rotate(5deg) translateY(-8px) translateX(12px); - } - } - .blurred { - span { - overflow: hidden; - } - img { - /* Safari 6.0 - 9.0 */ - -webkit-filter: blur(5px); - filter: blur(5px); - } - } - // Overlay -------------------------------------------------------------- // - .album { - .overlay { - position: absolute; - margin: 0 1px; - width: 100%; - background: linear-gradient(to bottom, black(0), black(0.6)); - bottom: 0px; - h1 { - min-height: 19px; - width: 180px; - margin: 12px 0 5px 15px; - color: #fff; - text-shadow: 0 1px 3px black(0.4); - font-size: 16px; - font-weight: bold; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - } - a { - display: block; - margin: 0 0 12px 15px; - font-size: 11px; - color: #ccc; - text-shadow: 0 1px 3px black(0.4); - } - a .iconic { - fill: #ccc; - margin: 0 5px 0 0; - width: 8px; - height: 8px; - } - } - // No overlay for empty albums - .thumbimg[data-overlay="false"] + .overlay { - background: none; - h1, a { - text-shadow: none; - } - } - // Badge -------------------------------------------------------------- // - .badges { - position: relative; - margin: -1px 0 0 6px; - } - .subalbum_badge { - position: absolute; - right: 0; - top: 0; - //margin: -1px 0 0 6px; - } - .badge { - display: none; - margin: 0 0 0 6px; - padding: 12px 8px 6px; - width: 18px; - background: $colorRed; - box-shadow: 0 0 2px black(0.6); - border-radius: 0 0 5px 5px; - border: 1px solid #fff; - border-top: none; - color: #fff; - text-align: center; - text-shadow: 0 1px 0 black(0.4); - opacity: 0.9; - - &--visible { - display: inline-block; - } - &--not--hidden { - background: $colorGreen; - } - &--hidden { - background: $colorOrange; - } - &--cover { - display: "inline-block"; - background: $colorOrange; - } - &--star { - display: inline-block; - background: $colorYellow; - } - &--nsfw { - display: inline-block; - background: $colorPink; - } - &--list { - background: $colorBlue; - } - &--tag { - display: inline-block; - background: $colorGreen; - } - .iconic { - fill: #fff; - width: 16px; - height: 16px; - } - &--folder { - display: inline-block; - box-shadow: none; - background: none; - border: none; - .iconic { - width: 12px; - height: 12px; - } - } - } - } - // Divider -------------------------------------------------------------- // - .divider { - margin: 50px 0 0; - padding: 10px 0 0; - width: 100%; - opacity: 0; - border-top: 1px solid white(0.02); - box-shadow: $shadow; - - animation-duration: 0.2s; - animation-fill-mode: forwards; - animation-timing-function: $timing; - &:first-child { - margin-top: 10px; - border-top: 0; - box-shadow: none; - } - h1 { - margin: 0 0 0 30px; - color: white(0.6); - font-size: 14px; - font-weight: bold; - } - } -} - -// responsive web design for smaller screens -@media only screen and (min-width: 320px) and (max-width: 567px) { - .content { - padding: 50px 0 33px 0; - width: 100%; - max-width: 100%; - - .album { - // 3 thumbnails per row - --size: calc((100vw - 3px) / 3); - width: calc(var(--size) - 3px); - height: calc(var(--size) - 3px); - margin: 3px 0 0 3px; - .thumbimg { - width: calc(var(--size) - 5px); - height: calc(var(--size) - 5px); - } - .overlay { - width: calc(var(--size) - 5px); - h1 { - min-height: 14px; - width: calc(var(--size) - 19px); - margin: 8px 0 2px 6px; - font-size: 12px; - } - a { - // suppress subtitles on small screens - display: none; - } - } - .badge { - padding: 4px 3px 3px; - width: 12px; - .iconic { - width: 12px; - height: 12px; - } - &--folder { - .iconic { - width: 8px; - height: 8px; - } - } - } - } - .divider { - margin: 20px 0 0; - &:first-child { - margin-top: 0; - } - h1 { - margin: 0 0 6px 8px; - font-size: 12px; - } - } - } -} - -@media only screen and (min-width: 568px) and (max-width: 639px) { - .content { - padding: 50px 0 33px 0; - width: 100%; - max-width: 100%; - - .album { - // 4 thumbnails per row - --size: calc((100vw - 3px) / 4); - width: calc(var(--size) - 3px); - height: calc(var(--size) - 3px); - margin: 3px 0 0 3px; - .thumbimg { - width: calc(var(--size) - 5px); - height: calc(var(--size) - 5px); - } - .overlay { - width: calc(var(--size) - 5px); - h1 { - min-height: 14px; - width: calc(var(--size) - 19px); - margin: 8px 0 2px 6px; - font-size: 12px; - } - a { - // suppress subtitles on small screens - display: none; - } - } - .badge { - padding: 4px 3px 3px; - width: 14px; - .iconic { - width: 14px; - height: 14px; - } - &--folder { - .iconic { - width: 9px; - height: 9px; - } - } - } - } - .divider { - margin: 24px 0 0; - &:first-child { - margin-top: 0; - } - h1 { - margin: 0 0 6px 10px; - } - } - } -} - -@media only screen and (min-width: 640px) and (max-width: 768px) { - .content { - padding: 50px 0 33px 0; - width: 100%; - max-width: 100%; - - .album { - // 5 thumbnails per row - --size: calc((100vw - 5px) / 5); - width: calc(var(--size) - 5px); - height: calc(var(--size) - 5px); - margin: 5px 0 0 5px; - .thumbimg { - width: calc(var(--size) - 7px); - height: calc(var(--size) - 7px); - } - .overlay { - width: calc(var(--size) - 7px); - h1 { - min-height: 14px; - width: calc(var(--size) - 21px); - margin: 10px 0 3px 8px; - font-size: 12px; - } - a { - // suppress subtitles on small screens - display: none; - } - } - .badge { - padding: 6px 4px 4px; - width: 16px; - .iconic { - width: 16px; - height: 16px; - } - &--folder { - .iconic { - width: 10px; - height: 10px; - } - } - } - } - .divider { - margin: 28px 0 0; - &:first-child { - margin-top: 0; - } - h1 { - margin: 0 0 6px 10px; - } - } - } -} - -// No content -------------------------------------------------------------- // -.no_content { - position: absolute; - top: 50%; - left: 50%; - padding-top: 20px; - color: white(0.35); - text-align: center; - transform: translateX(-50%) translateY(-50%); - .iconic { - fill: white(0.3); - margin: 0 0 10px; - width: 50px; - height: 50px; - } - p { - font-size: 16px; - font-weight: bold; - } -} - -.leftMenu__open { - margin-left: 250px; - width: calc(100% - 280px); -} - -// restrict hover features to devices that support it -@media (hover: hover) { - .content { - .album, - .photo { - &:hover .thumbimg { - border-color: $colorBlue; - } - - .video, - .livephoto { - &:hover::before { - opacity: 0.75; - } - } - } - - .album:hover { - .thumbimg:nth-child(1), - .thumbimg:nth-child(2) { - opacity: 1; - // Keep the composited layer created by the browser during the animation. - // Makes the border of the transformed thumb look better. - // See https://github.com/electerious/Lychee/pull/626 for more. - will-change: transform; - } - .thumbimg:nth-child(1) { - transform: rotate(-2deg) translateY(10px) translateX(-12px); - } - .thumbimg:nth-child(2) { - transform: rotate(5deg) translateY(-8px) translateX(12px); - } - } - - .photo:hover .overlay { - opacity: 1; - } - } -} diff --git a/resources/assets/scss/_footer.scss b/resources/assets/scss/_footer.scss deleted file mode 100644 index f148bf9fc21..00000000000 --- a/resources/assets/scss/_footer.scss +++ /dev/null @@ -1,33 +0,0 @@ -#footer { - z-index: 3; - left: 0; - right: 0; - bottom: 0; - text-align: center; - padding: 5px 0 5px 0; - transition: color 0.3s, opacity 0.3s ease-out, transform 0.3s ease-out, box-shadow 0.3s, margin-left 0.5s; - position: absolute; - background: #1d1d1d; - - p.hosted_by, - p.home_copyright { - text-transform: uppercase; - } - - p { - color: #cccccc; - font-size: 0.75em; - line-height: 26px; - - a { - color: #ccc; - } - a:visited { - color: #ccc; - } - } -} - -.hide_footer { - display: none; -} diff --git a/resources/assets/scss/_header.scss b/resources/assets/scss/_header.scss deleted file mode 100644 index 60acbf638d6..00000000000 --- a/resources/assets/scss/_header.scss +++ /dev/null @@ -1,272 +0,0 @@ -.header { - position: fixed; - height: 49px; - width: 100%; - background: linear-gradient(to bottom, #222222, #1a1a1a); - border-bottom: 1px solid #0f0f0f; - z-index: 1; - transition: transform 0.3s ease-out; - - // Modes -------------------------------------------------------------- // - &--hidden { - transform: translateY(-60px); - } - - &--loading { - transform: translateY(2px); - } - - &--error { - transform: translateY(40px); - } - - &--view { - border-bottom: none; - - &.header--error { - background-color: rgba(10, 10, 10, 0.99); - } - } - - // Toolbars -------------------------------------------------------------- // - &__toolbar { - display: none; - align-items: center; - position: relative; - box-sizing: border-box; - width: 100%; - height: 100%; - - &--visible { - display: flex; - } - - &--config { - .button .iconic { - transform: rotate(45deg); - } - - .header__title { - padding-right: 80px; - } - } - } - - // Title -------------------------------------------------------------- // - &__title { - width: 100%; - padding: 16px 0; - color: #fff; - font-size: 16px; - font-weight: bold; - text-align: center; - cursor: default; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - transition: margin-left 0.5s; - - .iconic { - display: none; - margin: 0 0 0 5px; - width: 10px; - height: 10px; - fill: white(0.5); - transition: fill 0.2s ease-out; - } - - &:active .iconic { - transition: none; - fill: white(0.8); - } - - &--editable .iconic { - display: inline-block; - } - } - - // Buttons -------------------------------------------------------------- // - .button { - flex-shrink: 0; - padding: 16px 8px; - height: 15px; - - .iconic { - width: 15px; - height: 15px; - fill: white(0.5); - transition: fill 0.2s ease-out; - } - - &:active .iconic { - transition: none; - fill: white(0.8); - } - - &--star.active .iconic { - fill: #f0ef77; - } - - &--eye.active .iconic { - fill: $colorRed; - } - - &--eye.active--not-hidden .iconic { - fill: $colorGreen; - } - - &--eye.active--hidden .iconic { - fill: $colorOrange; - } - - &--share .iconic.ionicons { - margin: -2px 0 -2px; - width: 18px; - height: 18px; - } - - &--nsfw.active .iconic { - fill: $colorPink; - } - - &--info.active .iconic { - fill: $colorBlue; - } - } - - #button_back, - #button_back_home, - #button_settings, - #button_close_config, - #button_signin { - // back button too small on small touch devices - // remove left padding of menu bar and add here plus more padding on - // the right as well - padding: 16px 12px 16px 18px; - } - - .button_add { - padding: 16px 18px 16px 12px; - } - - // Divider -------------------------------------------------------------- // - &__divider { - flex-shrink: 0; - width: 14px; - } - - // Search -------------------------------------------------------------- // - &__search { - flex-shrink: 0; - width: 80px; - margin: 0; - padding: 5px 12px 6px 12px; - background-color: #1d1d1d; - color: #fff; - border: 1px solid black(0.9); - box-shadow: 0 1px 0 white(0.04); - outline: none; - border-radius: 50px; - opacity: 0.6; - transition: opacity 0.3s ease-out, box-shadow 0.3s ease-out, width 0.2s ease-out; - - &:focus { - width: 140px; - border-color: $colorBlue; - box-shadow: 0 1px 0 white(0); - opacity: 1; - } - - &:focus ~ .header__clear { - opacity: 1; - } - - &::-ms-clear { - display: none; - } - - &__field { - position: relative; - } - } - - &__clear { - position: absolute; - top: 50%; - -ms-transform: translateY(-50%); - transform: translateY(-50%); - right: 8px; - padding: 0; - color: white(0.5); - font-size: 24px; - opacity: 0; - transition: color 0.2s ease-out; - cursor: default; - } - - &__clear_nomap { - right: 60px; - } - - // Hosted with -------------------------------------------------------------- // - &__hostedwith { - flex-shrink: 0; - padding: 5px 10px; - margin: 11px 0; - color: #888; - font-size: 13px; - border-radius: 100px; - cursor: default; - } - - .leftMenu__open { - margin-left: 250px; - } -} - -// restrict hover features to devices that support it -@media (hover: hover) { - .header { - &__title, - .button { - &:hover .iconic { - fill: white(1); - } - } - - &__clear:hover { - color: white(1); - } - - &__hostedwith:hover { - background-color: black(0.3); - } - } -} - -// responsive web design for smaller screens -@media only screen and (max-width: 640px) { - // reduce entries in menu bar on small screens - // corresponding entries are added to the 'more' menu - #button_move, - #button_move_album, - #button_trash, - #button_trash_album, - #button_visibility, - #button_visibility_album, - #button_nsfw_album { - display: none !important; - } - - @media (max-width: 567px) { - // remove further buttons on tiny screens - #button_rotate_ccwise, - #button_rotate_cwise { - display: none !important; - } - - .header__divider { - width: 0; - } - } -} diff --git a/resources/assets/scss/_imageview.scss b/resources/assets/scss/_imageview.scss deleted file mode 100644 index 52454a7ab38..00000000000 --- a/resources/assets/scss/_imageview.scss +++ /dev/null @@ -1,271 +0,0 @@ -#imageview { - position: fixed; - display: none; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: rgba(10, 10, 10, 0.98); - transition: background-color 0.3s; - - // Modes -------------------------------------------------------------- // - &.view { - background-color: inherit; - } - - &.full { - background-color: black(1); - cursor: none; - } - - // ImageView -------------------------------------------------------------- // - #image, - #livephoto { - position: absolute; - top: 60px; - right: 30px; - bottom: 30px; - left: 30px; - margin: auto; - max-width: calc(100% - 60px); - max-height: calc(100% - 90px); - width: auto; - height: auto; - transition: top 0.3s, right 0.3s, bottom 0.3s, left 0.3s, max-width 0.3s, max-height 0.3s; - - animation-name: zoomIn; - animation-duration: 0.3s; - animation-timing-function: $timingBounce; - background-size: contain; - background-position: center; - background-repeat: no-repeat; - } - - &.full #image, - &.full #livephoto { - top: 0; - right: 0; - bottom: 0; - left: 0; - max-width: 100%; - max-height: 100%; - } - - &.image--sidebar #image, - &.image--sidebar #livephoto { - right: 380px; - max-width: calc(100% - 410px); - } - - #image_overlay { - position: absolute; - bottom: 30px; - left: 30px; - color: #ffffff; - text-shadow: 1px 1px 2px #000000; - z-index: 3; - - h1 { - font-size: 28px; - font-weight: 500; - transition: visibility 0.3s linear, opacity 0.3s linear; - } - - p { - margin-top: 5px; - font-size: 20px; - line-height: 24px; - } - - a .iconic { - fill: #fff; - margin: 0 5px 0 0; - width: 14px; - height: 14px; - } - } - - // Previous/Next Buttons -------------------------------------------------------------- // - .arrow_wrapper { - position: fixed; - width: 15%; - height: calc(100% - 60px); - top: 60px; - - &--previous { - left: 0; - } - - &--next { - right: 0; - } - - a { - position: fixed; - top: 50%; - margin: -19px 0 0; - padding: 8px 12px; - width: 16px; - height: 22px; - // The background-image will be styled dynamically via JS - // background-image: linear-gradient(to bottom, rgba(0, 0, 0, .4), rgba(0, 0, 0, .4)), url(''); - background-size: 100% 100%; - border: 1px solid white(0.8); - opacity: 0.6; - z-index: 2; - transition: transform 0.2s ease-out, opacity 0.2s ease-out; - will-change: transform; - - &#previous { - left: -1px; - transform: translateX(-100%); - } - - &#next { - right: -1px; - transform: translateX(100%); - } - } - - .iconic { - fill: white(0.8); - } - } - - &.image--sidebar .arrow_wrapper { - &--next { - right: 350px; - } - - a { - &#next { - right: 349px; - } - } - } - - // We must not allow the wide next/prev arrow wrappers to cover the - // on-screen buttons in videos. This is imperfect as now the video - // covers part of the background image. - video { - z-index: 1; - } -} - -// restrict hover features to devices that support it -@media (hover: hover) { - #imageview .arrow_wrapper { - &:hover a#previous, - &:hover a#next { - transform: translateX(0); - } - - a:hover { - opacity: 1; - } - } -} - -// responsive web design for smaller screens -@media only screen and (max-width: 567px), only screen and (max-width: 640px) and (orientation: portrait) { - // sidebar as overlay, small size - #imageview { - #image, - #livephoto { - top: 0; - right: 0; - bottom: 0; - left: 0; - max-width: 100%; - max-height: 100%; - } - - &.image--sidebar { - #image, - #livephoto { - right: 0; - max-width: 100%; - } - - .arrow_wrapper { - &--next { - right: 0; - } - - a#next { - right: -1px; - } - } - } - - #image_overlay { - h1 { - font-size: 14px; - } - - p { - margin-top: 2px; - font-size: 11px; - line-height: 13px; - } - - a .iconic { - width: 9px; - height: 9px; - } - } - } -} - -@media only screen and (min-width: 568px) and (max-width: 768px), - only screen and (min-width: 568px) and (max-width: 640px) and (orientation: landscape) { - // sidebar on side, medium size - #imageview { - #image, - #livephoto { - top: 0; - right: 0; - bottom: 0; - left: 0; - max-width: 100%; - max-height: 100%; - } - - &.image--sidebar { - #image, - #livephoto { - top: 50px; - right: 280px; - max-width: calc(100% - 280px); - max-height: calc(100% - 50px); - } - - .arrow_wrapper { - &--next { - right: 280px; - } - - a#next { - right: 279px; - } - } - } - - #image_overlay { - h1 { - font-size: 18px; - } - - p { - margin-top: 4px; - font-size: 14px; - line-height: 16px; - } - - a .iconic { - width: 12px; - height: 12px; - } - } - } -} diff --git a/resources/assets/scss/_justified_layout.scss b/resources/assets/scss/_justified_layout.scss deleted file mode 100644 index c2ac9648279..00000000000 --- a/resources/assets/scss/_justified_layout.scss +++ /dev/null @@ -1,75 +0,0 @@ -.justified-layout { - margin: 30px 0 0 30px; - width: 100%; - position: relative; -} - -.unjustified-layout { - margin: 25px -5px -5px 25px; - width: 100%; - position: relative; - overflow: hidden; -} - -.justified-layout > .photo { - position: absolute; - --lychee-default-height: 320px; - margin: 0; -} - -.unjustified-layout > .photo { - float: left; - max-height: 240px; - margin: 5px; -} - -.justified-layout > .photo > .thumbimg > img, -.justified-layout > .photo > .thumbimg, -.unjustified-layout > .photo > .thumbimg > img, -.unjustified-layout > .photo > .thumbimg { - width: 100%; - height: 100%; - border: none; - object-fit: cover; -} - -.justified-layout > .photo > .overlay, -.unjustified-layout > .photo > .overlay { - width: 100%; - bottom: 0; - margin: 0 0 0 0; -} - -.justified-layout > .photo > .overlay > h1, -.unjustified-layout > .photo > .overlay > h1 { - width: auto; - margin-right: 15px; -} - -// responsive web design for smaller screens -@media only screen and (min-width: 320px) and (max-width: 567px) { - .content > .justified-layout { - margin: 8px 8px 0 8px; - .photo { - --lychee-default-height: 160px; - } - } -} - -@media only screen and (min-width: 568px) and (max-width: 639px) { - .content > .justified-layout { - margin: 9px 9px 0 9px; - .photo { - --lychee-default-height: 200px; - } - } -} - -@media only screen and (min-width: 640px) and (max-width: 768px) { - .content > .justified-layout { - margin: 10px 10px 0 10px; - .photo { - --lychee-default-height: 240px; - } - } -} diff --git a/resources/assets/scss/_leftMenu.scss b/resources/assets/scss/_leftMenu.scss deleted file mode 100644 index a3f97650aef..00000000000 --- a/resources/assets/scss/_leftMenu.scss +++ /dev/null @@ -1,95 +0,0 @@ -/* The side navigation menu */ -.leftMenu { - height: 100vh; /* 100% Full-height */ - width: 0; /* 0 width - change this with JavaScript */ - position: fixed; /* Stay in place */ - z-index: 4; /* Stay on top */ - top: 0; /* Stay at the top */ - left: 0; - background-color: #111; /* Black*/ - overflow-x: hidden; /* Disable horizontal scroll */ - padding-top: 49px; /* Place content 49px from the top (same as menu bar height) */ - transition: 0.5s; /* 0.5 second transition effect to slide in the sidenav */ -} - -/* The navigation menu links */ -.leftMenu a { - padding: 8px 8px 8px 32px; - text-decoration: none; - font-size: 18px; - color: #818181; - display: block; - transition: 0.3s; - - &.linkMenu { - white-space: nowrap; - } -} - -/* Position and style the close button (top right corner) */ -.leftMenu .closebtn { - position: absolute; - top: 0; - right: 25px; - font-size: 36px; - margin-left: 50px; -} - -.leftMenu .closetxt { - position: absolute; - top: 0; - left: 0; - font-size: 24px; - height: 28px; - padding-top: 16px; - color: #111; - display: inline-block; - width: 210px; -} - -.leftMenu .iconic { - display: inline-block; - margin: 0 10px 0 1px; - width: 15px; - height: 14px; - fill: #818181; -} - -.leftMenu .iconic.ionicons { - margin: 0 8px -2px 0; - width: 18px; - height: 18px; -} - -.leftMenu__visible { - width: 250px; -} - -// responsive web design for smaller screens -@media only screen and (max-width: 567px), only screen and (max-width: 640px) and (orientation: portrait) { - // disable left menu on small devices and use context menu instead - .leftMenu { - display: none !important; - } -} - -// restrict hover features to devices that support it -@media (hover: hover) { - .leftMenu { - .closetxt:hover { - color: #818181; - } - - /* When you mouse over the navigation links, change their color */ - a:hover { - color: #f1f1f1; - } - } -} - -// on touch devices increase space between entries -@media (hover: none) { - .leftMenu a { - padding: 14px 8px 14px 32px; - } -} diff --git a/resources/assets/scss/_loading.scss b/resources/assets/scss/_loading.scss deleted file mode 100644 index 575c91600fe..00000000000 --- a/resources/assets/scss/_loading.scss +++ /dev/null @@ -1,55 +0,0 @@ -#loading { - display: none; - position: fixed; - width: 100%; - height: 3px; - background-size: 100px 3px; - background-repeat: repeat-x; - border-bottom: 1px solid black(0.3); - - animation-name: moveBackground; - animation-duration: 0.3s; - animation-iteration-count: infinite; - animation-timing-function: linear; - - // Modes -------------------------------------------------------------- // - &.loading { - height: 3px; - background-image: linear-gradient(to right, #153674 0%, #153674 47%, #2651ae 53%, #2651ae 100%); - z-index: 2; - } - - &.error { - height: 40px; - background-color: #2f0d0e; - background-image: linear-gradient(to right, #451317 0%, #451317 47%, #aa3039 53%, #aa3039 100%); - z-index: 1; - } - - &.success { - height: 40px; - background-color: #007700; - background-image: linear-gradient(to right, #007700 0%, #009900 47%, #00aa00 53%, #00cc00 100%); - z-index: 1; - } - - .leftMenu__open { - padding-left: 250px; - } - - // Content -------------------------------------------------------------- // - h1 { - margin: 13px 13px 0 13px; - color: #ddd; - font-size: 14px; - font-weight: bold; - text-shadow: 0 1px 0 black(1); - text-transform: capitalize; - - span { - margin-left: 10px; - font-weight: normal; - text-transform: none; - } - } -} diff --git a/resources/assets/scss/_logs_diagnostics.scss b/resources/assets/scss/_logs_diagnostics.scss deleted file mode 100644 index 36eef2a72ae..00000000000 --- a/resources/assets/scss/_logs_diagnostics.scss +++ /dev/null @@ -1,94 +0,0 @@ -.logs_diagnostics_view { - width: 90%; - margin-left: auto; - margin-right: auto; - color: #ccc; - font-size: 12px; - line-height: 14px; - - pre { - font-family: monospace; - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; - width: fit-content; - padding-right: 30px; - } -} - -.clear_logs_update { - margin-left: auto; - margin-right: auto; - margin-bottom: 20px; - margin-top: 20px; - padding-left: 30px; -} - -.clear_logs_update, -.logs_diagnostics_view { - .basicModal__button { - //margin-top: 10px; - color: #2293ec; - display: inline-block; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.02), inset 1px 0 0 rgba(0, 0, 0, 0.2); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.02), inset 1px 0 0 rgba(0, 0, 0, 0.2); - border-radius: 5px; - } - - .iconic { - display: inline-block; - margin: 0 10px 0 1px; - width: 13px; - height: 12px; - fill: #2293ec; - } - - .button_left { - margin-left: 24px; - width: 400px; - } -} - -// on touch devices draw buttons in color -@media (hover: none) { - .clear_logs_update, - .logs_diagnostics_view { - .basicModal__button { - background: #2293ec; - color: #fff; - max-width: 320px; - margin-top: 20px; - } - - .iconic { - fill: #fff; - } - } -} - -// responsive web design for smaller screens -@media only screen and (max-width: 567px), only screen and (max-width: 640px) and (orientation: portrait) { - .logs_diagnostics_view, - .clear_logs_update { - width: 100%; - max-width: 100%; - font-size: 11px; - line-height: 12px; - - .basicModal__button, - .button_left { - width: 80%; - margin: 0 10%; - } - } - - .logs_diagnostics_view { - padding: 10px 10px 0 0; - } - - .clear_logs_update { - padding: 10px 10px 0 10px; - margin: 0; - } -} diff --git a/resources/assets/scss/_message.scss b/resources/assets/scss/_message.scss deleted file mode 100644 index 9e64a64c58a..00000000000 --- a/resources/assets/scss/_message.scss +++ /dev/null @@ -1,514 +0,0 @@ -.basicModalContainer { - background-color: black(0.85); - - &--error { - transform: translateY(40px); - } -} - -.basicModal { - background: linear-gradient(to bottom, #444, #333); - box-shadow: 0 1px 4px black(0.2), inset 0 1px 0 white(0.05); - - &--error { - transform: translateY(-40px); - } - - // Reset -------------------------------------------------------------- // - &__content { - padding: 0; - } - - &__content p { - margin: 0; - } - - &__buttons { - box-shadow: none; - } - - // Text -------------------------------------------------------------- // - p { - padding: 10px 30px; - color: white(0.9); - font-size: 14px; - text-align: left; - line-height: 20px; - - b { - font-weight: bold; - color: white(1); - } - - a { - color: white(0.9); - text-decoration: none; - border-bottom: 1px dashed #888; - } - - &:first-of-type { - padding-top: 42px; - } - - &:last-of-type { - padding-bottom: 40px; - } - - &.signIn:first-of-type { - padding-top: 30px; - } - - &.signIn:last-of-type { - padding-bottom: 30px; - } - - &.less { - padding-bottom: 30px; - } - - &.photoPublic { - padding: 0 30px; - margin: 30px 0; - } - - &.importServer:last-of-type { - padding-bottom: 0px; - } - } - - // Buttons -------------------------------------------------------------- // - &__button { - padding: 13px 0 15px; - background: black(0.02); - color: white(0.5); - border-top: 1px solid black(0.2); - box-shadow: inset 0 1px 0 white(0.02); - cursor: default; - - &:active, - &--active { - transition: none; - background: black(0.1); - } - - &#basicModal__action { - color: $colorBlue; - box-shadow: inset 0 1px 0 white(0.02), inset 1px 0 0 black(0.2); - } - - &#basicModal__action.red, - &#basicModal__cancel.red { - color: $colorRed; - } - - &.hidden { - display: none; - } - - &.busy { - cursor: wait; - } - } - - // Inputs -------------------------------------------------------------- // - input.text { - padding: 9px 2px; - width: 100%; - background-color: transparent; - color: #fff; - border: none; - // Do not use rgba() for border-bottom - // to avoid a blurry line in Safari on non-retina screens - border-bottom: 1px solid #222; - border-radius: 0; - box-shadow: 0 1px 0 white(0.05); - outline: none; - - &:focus { - border-bottom-color: $colorBlue; - } - - &.error { - border-bottom-color: $colorRed; - } - - &:first-child { - margin-top: 10px; - } - - &:last-child { - margin-bottom: 10px; - } - } - - // Radio Buttons ----------------------------------------------------------- // - .choice { - padding: 0 30px 15px; - width: 100%; - color: #fff; - - &:first-child { - padding-top: 42px; - } - - &:last-child { - padding-bottom: 40px; - } - - label { - float: left; - color: white(1); - font-size: 14px; - font-weight: 700; - } - - label input { - position: absolute; - margin: 0; - opacity: 0; - } - - label .checkbox { - float: left; - display: block; - width: 16px; - height: 16px; - background: black(0.5); - border-radius: 3px; - box-shadow: 0 0 0 1px black(0.7); - - .iconic { - box-sizing: border-box; - fill: $colorBlue; - padding: 2px; - opacity: 0; - transform: scale(0); - transition: opacity 0.2s $timing, transform 0.2s $timing; - } - } - - // Checked - label input:checked ~ .checkbox { - background: black(0.5); - .iconic { - opacity: 1; - transform: scale(1); - } - } - - // Active - label input:active ~ .checkbox { - background: black(0.3); - .iconic { - opacity: 0.8; - } - } - - label input:disabled ~ .checkbox { - background: black(0.2); - .iconic { - opacity: 0.3; - } - cursor: not-allowed; - } - - label input:disabled ~ .label { - color: white(0.3); - } - - label .label { - margin: 0 0 0 18px; - } - - p { - clear: both; - padding: 2px 0 0 35px; - margin: 0; - width: 100%; - color: white(0.6); - font-size: 13px; - } - - input.text { - display: none; - margin-top: 5px; - margin-left: 35px; - width: calc(100% - 35px); - } - - input.text:disabled { - cursor: not-allowed; - } - } - - // Select -------------------------------------------------------------- // - .select { - display: inline-block; - position: relative; - margin: 5px 7px; - padding: 0; - width: 210px; - background: black(0.3); - color: #fff; - border-radius: 3px; - border: 1px solid black(0.2); - box-shadow: 0 1px 0 white(0.02); - font-size: 11px; - line-height: 16px; - overflow: hidden; - outline: 0; - vertical-align: middle; - - &::after { - position: absolute; - content: "≡"; - right: 8px; - top: 4px; - color: $colorBlue; - font-size: 16px; - line-height: 16px; - font-weight: bold; - pointer-events: none; - } - - select { - margin: 0; - padding: 4px 8px; - width: 120%; - color: #fff; - font-size: 11px; - line-height: 16px; - border: 0; - outline: 0; - box-shadow: none; - border-radius: 0; - background-color: transparent; - background-image: none; - -moz-appearance: none; - -webkit-appearance: none; - appearance: none; - - &:focus { - outline: none; - } - } - - select option { - margin: 0; - padding: 0; - background: #fff; - color: #333; - transition: none; - } - } - - // Version -------------------------------------------------------------- // - .version { - margin: -5px 0 0; - padding: 0 30px 30px !important; - color: white(0.3); - font-size: 12px; - text-align: right; - - span { - display: none; - } - - span a { - color: white(0.3); - } - } - div.version { - position: absolute; - top: 20px; - right: 0px; - } - - // Title -------------------------------------------------------------- // - h1 { - float: left; - width: 100%; - padding: 12px 0; - color: #fff; - font-size: 16px; - font-weight: bold; - text-align: center; - } - - // Rows -------------------------------------------------------------- // - .rows { - margin: 0 8px 8px; - width: calc(100% - 16px); - height: 300px; - background-color: black(0.4); - overflow: hidden; - overflow-y: auto; - border-radius: 3px; - box-shadow: inset 0 0 3px black(0.4); - } - - // Row -------------------------------------------------------------- // - .rows .row { - float: left; - padding: 8px 0; - width: 100%; - background-color: white(0.02); - - &:nth-child(2n) { - background-color: white(0); - } - - a.name { - float: left; - padding: 5px 10px; - width: 70%; - color: #fff; - font-size: 14px; - white-space: nowrap; - overflow: hidden; - } - - a.status { - float: left; - padding: 5px 10px; - width: 30%; - color: white(0.5); - font-size: 14px; - text-align: right; - - animation-name: pulse; - animation-duration: 2s; - animation-timing-function: ease-in-out; - animation-iteration-count: infinite; - - &.error, - &.warning, - &.success { - animation: none; - } - - &.error { - color: rgb(233, 42, 0); - } - - &.warning { - color: rgb(228, 233, 0); - } - - &.success { - color: rgb(126, 233, 0); - } - } - - p.notice { - display: none; - float: left; - padding: 2px 10px 5px; - width: 100%; - color: white(0.5); - font-size: 12px; - overflow: hidden; - line-height: 16px; - } - } - - // Sliders ----------------------------------------------------------- // - .switch { - padding: 0 30px; - margin-bottom: 15px; - width: 100%; - color: #fff; - - &:first-child { - padding-top: 42px; - } - - input { - opacity: 0; - width: 0; - height: 0; - margin: 0; - } - - label { - float: left; - color: white(1); - font-size: 14px; - font-weight: 700; - } - - .slider { - display: inline-block; - width: 42px; - height: 22px; - left: -9px; - bottom: -6px; - position: relative; - cursor: pointer; - border: 1px solid rgba(0, 0, 0, 0.2); - box-shadow: 0 1px 0 rgba(255, 255, 255, 0.02); - background: rgba(0, 0, 0, 0.3); - -webkit-transition: 0.4s; - transition: 0.4s; - } - - .slider:before { - position: absolute; - content: ""; - height: 14px; - width: 14px; - left: 3px; - bottom: 3px; - background-color: $colorBlue; - -webkit-transition: 0.4s; - transition: 0.4s; - } - - input:checked + .slider { - background-color: $colorBlue; - } - - input:checked + .slider:before { - -ms-transform: translateX(20px); - transform: translateX(20px); - background-color: #ffffff; - } - - /* Rounded sliders */ - .slider.round { - border-radius: 20px; - } - - .slider.round:before { - border-radius: 50%; - } - - label input:disabled ~ .slider { - background: black(0.2); - .iconic { - opacity: 0.3; - } - cursor: not-allowed; - } - - .label--disabled { - color: white(0.6); - } - - p { - clear: both; - padding: 2px 0 0; - margin: 0; - width: 100%; - color: white(0.6); - font-size: 13px; - } - } -} - -// restrict hover features to devices that support it -@media (hover: hover) { - .basicModal__button:hover { - background: white(0.02); - } -} diff --git a/resources/assets/scss/_multiselect.scss b/resources/assets/scss/_multiselect.scss deleted file mode 100644 index 5eb163a99bf..00000000000 --- a/resources/assets/scss/_multiselect.scss +++ /dev/null @@ -1,7 +0,0 @@ -#multiselect { - position: absolute; - background-color: rgba(0, 94, 204, 0.3); - border: 1px solid rgba(0, 94, 204, 1); - border-radius: 3px; - z-index: 5; -} diff --git a/resources/assets/scss/_photo-links.scss b/resources/assets/scss/_photo-links.scss deleted file mode 100644 index 8ed40a55cdd..00000000000 --- a/resources/assets/scss/_photo-links.scss +++ /dev/null @@ -1,76 +0,0 @@ -.directLinks { - input.text { - width: calc(100% - 30px); - color: white(0.6); - padding: 2px; - } - - .basicModal__button { - display: inline-block; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.02), inset 1px 0 0 rgba(0, 0, 0, 0.2); - width: 25px; - height: 25px; - border-radius: 5px; - border-bottom: 0; - padding: 3px 0 0; - margin-top: -5px; - float: right; - - .iconic { - fill: #2293ec; - width: 16px; - height: 16px; - } - } - - .imageLinks { - margin-top: -30px; - padding-bottom: 40px; - - p { - padding: 10px 30px 0; - font-size: 12px; - line-height: 15px; - } - - .basicModal__button { - margin-top: -8px; - } - } -} - -.downloads { - padding: 30px; - - .basicModal__button { - color: #2293ec; - display: inline-block; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.02), inset 1px 0 0 rgba(0, 0, 0, 0.2); - border-radius: 5px; - border-bottom: 0; - margin: 5px 0; - - .iconic { - fill: #2293ec; - margin: 0 10px 0 1px; - width: 11px; - height: 10px; - } - } -} - -// restrict hover features to devices that support it -@media (hover: hover) { - .directLinks .basicModal__button:hover, - .downloads .basicModal__button:hover { - background: #2293ec; - cursor: pointer; - - .iconic { - fill: #ffffff; - } - } - .downloads .basicModal__button:hover { - color: #ffffff; - } -} diff --git a/resources/assets/scss/_photo-thumbs.scss b/resources/assets/scss/_photo-thumbs.scss deleted file mode 100644 index facc91674b9..00000000000 --- a/resources/assets/scss/_photo-thumbs.scss +++ /dev/null @@ -1,451 +0,0 @@ -.photo { - // position: relative; - // width: 202px; - // height: 202px; - // margin: 30px 0 0 30px; - cursor: default; - - animation-duration: 0.2s; - animation-fill-mode: forwards; - animation-timing-function: $timing; - .thumbimg { - width: 100%; - height: 100%; - background: #222; - color: #222; - box-shadow: 0 2px 5px black(0.5); - // border: 1px solid white(0.5); - transition: opacity 0.3s ease-out, transform 0.3s ease-out, - border-color 0.3s ease-out; - } - .thumbimg > img { - width: 100%; - height: 100%; - } - &:focus .thumbimg, - &.active .thumbimg { - border-color: $colorBlue; - } - &:active .thumbimg { - transition: none; - border-color: darken($colorBlue, 15%); - } - &.selected img { - outline: 1px solid $colorBlue; - } - .video { - &::before { - content: ""; - position: absolute; - display: block; - height: 100%; - width: 100%; - background: url("../img/play-icon.png") no-repeat 46% 50%; - transition: all 0.3s; - will-change: opacity, height; - } - &:focus::before { - opacity: 0.75; - } - } - .livephoto { - &::before { - content: ""; - position: absolute; - display: block; - height: 100%; - width: 100%; - background: url("../img/live-photo-icon.png") no-repeat 46% 50%; - background-position: 2% 2%; - transition: all 0.3s; - will-change: opacity, height; - } - &:focus::before { - opacity: 0.75; - } - } - // Overlay -------------------------------------------------------------- // - .overlay { - position: absolute; - margin: 0 0px; - width: 100%; - background: linear-gradient(to bottom, black(0), black(0.6)); - bottom: 0px; - opacity: 0; - } - &:focus .overlay, - &.active .overlay { - opacity: 1; - } - .overlay { - h1 { - min-height: 19px; - width: 180px; - margin: 12px 0 5px 15px; - color: #fff; - text-shadow: 0 1px 3px black(0.4); - font-size: 16px; - font-weight: bold; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - } - a { - display: block; - margin: 0 0 12px 15px; - font-size: 11px; - color: #ccc; - text-shadow: 0 1px 3px black(0.4); - .iconic { - fill: #ccc; - margin: 0 5px 0 0; - width: 8px; - height: 8px; - } - } - } - - // Badge -------------------------------------------------------------- // - .badges { - position: relative; - margin: -1px 0 0 6px; - } - .badge { - display: none; - margin: 0 0 0 6px; - padding: 12px 8px 6px; - width: 18px; - background: $colorRed; - box-shadow: 0 0 2px black(0.6); - border-radius: 0 0 5px 5px; - border: 1px solid #fff; - border-top: none; - color: #fff; - text-align: center; - text-shadow: 0 1px 0 black(0.4); - opacity: 0.9; - - &--visible { - display: inline-block; - } - &--not--hidden { - background: $colorGreen; - } - &--hidden { - background: $colorOrange; - } - &--cover { - display: "inline-block"; - background: $colorOrange; - } - &--star { - display: inline-block; - background: $colorYellow; - } - &--nsfw { - display: inline-block; - background: $colorPink; - } - &--list { - background: $colorBlue; - } - &--tag { - display: inline-block; - background: $colorGreen; - } - .iconic { - fill: #fff; - width: 16px; - height: 16px; - } - &--folder { - display: inline-block; - box-shadow: none; - background: none; - border: none; - .iconic { - width: 12px; - height: 12px; - } - } - } -} - -.flkr { - display: flex; - flex-wrap: wrap; - flex-grow: 1; - align-content: flex-start; - width: 100%; - - @media (min-width: 768px) { - /* FLICKR like image display */ - margin: 30px 0 0 30px; - - & > div, - &::after { - --ratio: calc(var(--w) / var(--h)); - --row-height: 260px; - flex-basis: calc(var(--ratio) * var(--row-height)); - } - - & > div { - margin: 0.25rem; - flex-grow: calc(var(--ratio) * 100); - } - - &::after { - --w: 2; - --h: 1; - content: ""; - flex-grow: 1000000; - } - - & > div > span { - display: block; - height: 100%; - width: 100%; - } - - & > div > span > img { - width: 100%; - } - } - -} - -.block{ - - // responsive web design for smaller screens - @media only screen and (min-width: 320px) and (max-width: 567px) { - .content { - padding: 50px 0 33px 0; - width: 100%; - max-width: 100%; - - .photo { - // 3 thumbnails per row - --size: calc((100vw - 3px) / 3); - width: calc(var(--size) - 3px); - height: calc(var(--size) - 3px); - margin: 3px 0 0 3px; - .thumbimg { - width: calc(var(--size) - 5px); - height: calc(var(--size) - 5px); - } - .overlay { - width: calc(var(--size) - 5px); - h1 { - min-height: 14px; - width: calc(var(--size) - 19px); - margin: 8px 0 2px 6px; - font-size: 12px; - } - a { - // suppress subtitles on small screens - display: none; - } - } - .badge { - padding: 4px 3px 3px; - width: 12px; - .iconic { - width: 12px; - height: 12px; - } - &--folder { - .iconic { - width: 8px; - height: 8px; - } - } - } - } - .divider { - margin: 20px 0 0; - &:first-child { - margin-top: 0; - } - h1 { - margin: 0 0 6px 8px; - font-size: 12px; - } - } - } - } - - @media only screen and (min-width: 568px) and (max-width: 639px) { - .content { - padding: 50px 0 33px 0; - width: 100%; - max-width: 100%; - - .photo { - // 4 thumbnails per row - --size: calc((100vw - 3px) / 4); - width: calc(var(--size) - 3px); - height: calc(var(--size) - 3px); - margin: 3px 0 0 3px; - .thumbimg { - width: calc(var(--size) - 5px); - height: calc(var(--size) - 5px); - } - .overlay { - width: calc(var(--size) - 5px); - h1 { - min-height: 14px; - width: calc(var(--size) - 19px); - margin: 8px 0 2px 6px; - font-size: 12px; - } - a { - // suppress subtitles on small screens - display: none; - } - } - .badge { - padding: 4px 3px 3px; - width: 14px; - .iconic { - width: 14px; - height: 14px; - } - &--folder { - .iconic { - width: 9px; - height: 9px; - } - } - } - } - .divider { - margin: 24px 0 0; - &:first-child { - margin-top: 0; - } - h1 { - margin: 0 0 6px 10px; - } - } - } - } - - - @media only screen and (min-width: 640px) and (max-width: 768px) { - .content { - padding: 50px 0 33px 0; - width: 100%; - max-width: 100%; - - .photo { - // 5 thumbnails per row - --size: calc((100vw - 5px) / 5); - width: calc(var(--size) - 5px); - height: calc(var(--size) - 5px); - margin: 5px 0 0 5px; - .thumbimg { - width: calc(var(--size) - 7px); - height: calc(var(--size) - 7px); - } - .overlay { - width: calc(var(--size) - 7px); - h1 { - min-height: 14px; - width: calc(var(--size) - 21px); - margin: 10px 0 3px 8px; - font-size: 12px; - } - a { - // suppress subtitles on small screens - display: none; - } - } - .badge { - padding: 6px 4px 4px; - width: 16px; - .iconic { - width: 16px; - height: 16px; - } - &--folder { - .iconic { - width: 10px; - height: 10px; - } - } - } - } - .divider { - margin: 28px 0 0; - &:first-child { - margin-top: 0; - } - h1 { - margin: 0 0 6px 10px; - } - } - } - } -} - - -.masonry { - column-gap: 16px; - @media (max-width: calc((240px + 16px)* 14) ) { - columns: 14; - } - @media (max-width: calc((240px + 16px)* 13) ) { - columns: 13; - } - @media (max-width: calc((240px + 16px)* 12) ) { - columns: 12; - } - @media (max-width: calc((240px + 16px)* 11) ) { - columns: 11; - } - @media (max-width: calc((240px + 16px)* 10) ) { - columns: 10; - } - @media (max-width: calc((240px + 16px)* 9)) { - columns: 9; - } - @media (max-width: calc((240px + 16px)* 8)) { - columns: 8; - } - @media (max-width: calc((240px + 16px)* 7)) { - columns: 7; - } - @media (max-width: calc((240px + 16px)* 6)) { - columns: 6; - } - @media (max-width: calc((240px + 16px)* 5)) { - columns: 5; - } - @media (max-width: calc((240px + 16px)* 4)) { - columns: 4; - } - @media (max-width: calc((240px + 16px)* 3)) { - columns: 3; - } - @media (max-width: calc((240px + 16px)* 2)) { - columns: 2; - } - - .photo { - display: inline-block; - margin-bottom: 16px; - position: relative; - .thumbimg { - width: 100%; - height: 100%; - display: grid; - } - img { - width: 100%; - border-radius: 5px; - } - .overlay { - opacity: 1; - } - } -} \ No newline at end of file diff --git a/resources/assets/scss/_reset.scss b/resources/assets/scss/_reset.scss deleted file mode 100644 index e7929c4efd2..00000000000 --- a/resources/assets/scss/_reset.scss +++ /dev/null @@ -1,139 +0,0 @@ -html, -body, -div, -span, -applet, -object, -iframe, -h1, -h2, -h3, -h4, -h5, -h6, -p, -blockquote, -pre, -a, -abbr, -acronym, -address, -big, -cite, -code, -del, -dfn, -em, -img, -ins, -kbd, -q, -s, -samp, -small, -strike, -strong, -sub, -sup, -tt, -var, -b, -u, -i, -center, -dl, -dt, -dd, -ol, -ul, -li, -fieldset, -form, -label, -legend, -table, -caption, -tbody, -tfoot, -thead, -tr, -th, -td, -article, -aside, -canvas, -details, -embed, -figure, -figcaption, -footer, -header, -hgroup, -menu, -nav, -output, -ruby, -section, -summary, -time, -mark, -audio, -video { - margin: 0; - padding: 0; - border: 0; - font: inherit; - font-size: 100%; - vertical-align: baseline; -} - -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -menu, -nav, -section { - display: block; -} - -body { - line-height: 1; -} - -ol, -ul { - list-style: none; -} - -blockquote, -q { - quotes: none; -} - -blockquote:before, -blockquote:after, -q:before, -q:after { - content: ""; - content: none; -} - -table { - border-collapse: collapse; - border-spacing: 0; -} - -em, -i { - font-style: italic; -} - -strong, -b { - font-weight: bold; -} diff --git a/resources/assets/scss/_settings.scss b/resources/assets/scss/_settings.scss deleted file mode 100644 index 19805579ff7..00000000000 --- a/resources/assets/scss/_settings.scss +++ /dev/null @@ -1,410 +0,0 @@ -.settings_view { - width: 90%; - max-width: 700px; - margin-left: auto; - margin-right: auto; - - input.text { - padding: 9px 2px; - width: calc(50% - 4px); - background-color: transparent; - color: #fff; - border: none; - border-bottom: 1px solid #222; - border-radius: 0; - box-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); - outline: 0; - - &:focus { - border-bottom-color: #2293ec; - } - - .error { - border-bottom-color: #d92c34; - } - } - - .basicModal__button { - color: #2293ec; - display: inline-block; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.02), inset 1px 0 0 rgba(0, 0, 0, 0.2); - border-radius: 5px; - } - - .basicModal__button_MORE, - .basicModal__button_SAVE { - color: #b22027; - border-radius: 5px; - } - - > div { - font-size: 14px; - width: 100%; - padding: 12px 0; - - p { - margin: 0 0 5%; - width: 100%; - color: #ccc; - line-height: 16px; - - a { - color: rgba(255, 255, 255, 0.9); - text-decoration: none; - border-bottom: 1px dashed #888; - } - } - - p:last-of-type { - margin: 0; - } - - input.text { - width: 100%; - } - - textarea { - padding: 9px 9px; - width: calc(100% - 18px); - height: 100px; - background-color: transparent; - color: #fff; - border: 1px solid #666666; - border-radius: 0; - box-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); - outline: 0; - resize: vertical; - - &:focus { - border-color: #2293ec; - } - } - - .choice { - padding: 0 30px 15px; - width: 100%; - color: #fff; - } - - .choice:last-child { - padding-bottom: 40px; - } - - .choice label { - float: left; - color: #fff; - font-size: 14px; - font-weight: 700; - } - - .choice label input { - position: absolute; - margin: 0; - opacity: 0; - } - - .choice label .checkbox { - float: left; - display: block; - width: 16px; - height: 16px; - background: rgba(0, 0, 0, 0.5); - border-radius: 3px; - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.7); - } - - .choice label .checkbox .iconic { - box-sizing: border-box; - fill: #2293ec; - padding: 2px; - opacity: 0; - -ms-transform: scale(0); - transform: scale(0); - transition: opacity 0.2s cubic-bezier(0.51, 0.92, 0.24, 1), transform 0.2s cubic-bezier(0.51, 0.92, 0.24, 1); - } - - .select { - position: relative; - margin: 1px 5px; - padding: 0; - width: 110px; - color: #fff; - border-radius: 3px; - border: 1px solid rgba(0, 0, 0, 0.2); - box-shadow: 0 1px 0 rgba(255, 255, 255, 0.02); - font-size: 11px; - line-height: 16px; - overflow: hidden; - outline: 0; - vertical-align: middle; - background: rgba(0, 0, 0, 0.3); - display: inline-block; - - select { - margin: 0; - padding: 4px 8px; - width: 120%; - color: #fff; - font-size: 11px; - line-height: 16px; - border: 0; - outline: 0; - box-shadow: none; - border-radius: 0; - background-color: transparent; - background-image: none; - -moz-appearance: none; - -webkit-appearance: none; - appearance: none; - - option { - margin: 0; - padding: 0; - background: #fff; - color: #333; - transition: none; - } - } - - select:disabled { - color: #000; - cursor: not-allowed; - } - } - - .select::after { - position: absolute; - content: "≡"; - right: 8px; - top: 4px; - color: #2293ec; - font-size: 16px; - line-height: 16px; - font-weight: 700; - pointer-events: none; - } - - /* The switch - the box around the slider */ - .switch { - position: relative; - display: inline-block; - width: 42px; - height: 22px; - bottom: -2px; - line-height: 24px; - } - - /* Hide default HTML checkbox */ - .switch input { - opacity: 0; - width: 0; - height: 0; - } - - /* The slider */ - .slider { - position: absolute; - cursor: pointer; - top: 0; - left: 0; - right: 0; - bottom: 0; - border: 1px solid rgba(0, 0, 0, 0.2); - box-shadow: 0 1px 0 rgba(255, 255, 255, 0.02); - background: rgba(0, 0, 0, 0.3); - -webkit-transition: 0.4s; - transition: 0.4s; - - &:before { - position: absolute; - content: ""; - height: 14px; - width: 14px; - left: 3px; - bottom: 3px; - background-color: $colorBlue; - } - } - - input:checked + .slider { - background-color: $colorBlue; - } - - input:checked + .slider:before { - -ms-transform: translateX(20px); - transform: translateX(20px); - background-color: #ffffff; - } - - /* Rounded sliders */ - .slider.round { - border-radius: 20px; - } - - .slider.round:before { - border-radius: 50%; - } - } - - .setting_category { - font-size: 20px; - width: 100%; - padding-top: 10px; - padding-left: 4px; - border-bottom: dotted 1px #222222; - margin-top: 20px; - color: #ffffff; - font-weight: bold; - text-transform: capitalize; - } - - .setting_line { - font-size: 14px; - width: 100%; - - &:last-child, - &:first-child { - padding-top: 50px; - } - - p { - min-width: 550px; - margin: 0 0 0 0; - color: #ccc; - display: inline-block; - width: 100%; - overflow-wrap: break-word; - - a { - color: rgba(255, 255, 255, 0.9); - text-decoration: none; - border-bottom: 1px dashed #888; - } - - &:last-of-type { - margin: 0; - } - - .warning { - margin-bottom: 30px; - color: $colorRed; - font-weight: bold; - font-size: 18px; - text-align: justify; - line-height: 22px; - } - } - - span.text { - display: inline-block; - padding: 9px 4px; - width: calc(50% - 12px); - background-color: transparent; - color: #fff; - border: none; - - &_icon { - width: 5%; - - .iconic { - width: 15px; - height: 14px; - margin: 0 10px 0 1px; - fill: #ffffff; - } - } - } - - input.text { - width: calc(50% - 4px); - } - } -} - -// restrict hover features to devices that support it -@media (hover: hover) { - .settings_view { - .basicModal__button:hover { - background: #2293ec; - color: #ffffff; - cursor: pointer; - } - - .basicModal__button_MORE:hover, - .basicModal__button_SAVE:hover { - background: #b22027; - color: #ffffff; - } - - input:hover { - border-bottom: #2293ec solid 1px; - } - } -} - -// on touch devices draw buttons in color -@media (hover: none) { - .settings_view { - input.text { - border-bottom: #2293ec solid 1px; - margin: 6px 0; - } - - > div { - padding: 16px 0; - } - - .basicModal__button { - background: #2293ec; - color: #ffffff; - max-width: 320px; - margin-top: 20px; - - &_MORE, - &_SAVE { - background: #b22027; - } - } - } -} - -// responsive web design for smaller screens -@media only screen and (max-width: 567px), only screen and (max-width: 640px) and (orientation: portrait) { - .settings_view { - max-width: 100%; - - .setting_category { - font-size: 14px; - padding-left: 0; - margin-bottom: 4px; - } - - .setting_line { - font-size: 12px; - - &:first-child { - padding-top: 20px; - } - - p { - min-width: unset; - line-height: 20px; - - &.warning { - font-size: 14px; - line-height: 16px; - margin-bottom: 0; - } - - span, - input { - padding: 0; - } - } - } - - .basicModal__button_SAVE { - margin-top: 20px; - } - } -} diff --git a/resources/assets/scss/_sharing.scss b/resources/assets/scss/_sharing.scss deleted file mode 100644 index 19495f4a237..00000000000 --- a/resources/assets/scss/_sharing.scss +++ /dev/null @@ -1,284 +0,0 @@ -.sharing_view { - width: 90%; - max-width: 700px; - margin-left: auto; - margin-right: auto; - margin-top: 20px; - - .sharing_view_line { - width: 100%; - display: block; - clear: left; - } - - .col-xs-1, - .col-xs-10, - .col-xs-11, - .col-xs-12, - .col-xs-2, - .col-xs-3, - .col-xs-4, - .col-xs-5, - .col-xs-6, - .col-xs-7, - .col-xs-8, - .col-xs-9 { - float: left; - position: relative; - min-height: 1px; - } - - .col-xs-2 { - width: 10%; - padding-right: 3%; - padding-left: 3%; - } - - .col-xs-5 { - width: 42%; - } - - .btn-block + .btn-block { - margin-top: 5px; - } - - .btn-block { - display: block; - width: 100%; - } - - .btn-default { - color: $colorBlue; - border-color: $colorBlue; - background: rgba(0, 0, 0, 0.5); - border-radius: 3px; - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.7); - } - - .btn { - display: inline-block; - padding: 6px 12px; - margin-bottom: 0; - font-size: 14px; - font-weight: 400; - line-height: 1.42857143; - text-align: center; - white-space: nowrap; - vertical-align: middle; - -ms-touch-action: manipulation; - touch-action: manipulation; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; - } - - select[multiple], - select[size] { - height: 150px; - } - - .form-control { - display: block; - width: 100%; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -webkit-transition: border-color ease-in-out 0.15s, -webkit-box-shadow ease-in-out 0.15s; - -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; - transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; - } - - .iconic { - display: inline-block; - width: 15px; - height: 14px; - fill: $colorBlue; - - .iconic.ionicons { - margin: 0 8px -2px 0; - width: 18px; - height: 18px; - } - } - - .blue .iconic { - fill: $colorBlue; - } - - .grey .iconic { - fill: #b4b4b4; - } - - p { - //margin: 0 0 5%; - width: 100%; - color: #ccc; - text-align: center; - font-size: 14px; - display: block; - } - - p.with { - padding: 15px 0; - } - - span.text { - display: inline-block; - padding: 0 2px; - width: 40%; - background-color: transparent; - color: #fff; - border: none; - - &:last-of-type { - width: 5%; - } - - .iconic { - width: 15px; - height: 14px; - margin: 0 10px 0 1px; - fill: #ffffff; - } - } - - .basicModal__button { - margin-top: 10px; - color: #2293ec; - display: inline-block; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.02), inset 1px 0 0 rgba(0, 0, 0, 0.2); - border-radius: 5px; - } - - .choice label input:checked ~ .checkbox .iconic { - opacity: 1; - -ms-transform: scale(1); - transform: scale(1); - } - - .choice { - display: inline-block; - //padding: 9px 2px; - width: 5%; - margin: 0 10px; - color: #fff; - - input { - position: absolute; - margin: 0; - opacity: 0; - } - - .checkbox { - display: inline-block; - width: 16px; - height: 16px; - margin-top: 10px; - margin-left: 2px; - background: rgba(0, 0, 0, 0.5); - border-radius: 3px; - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.7); - - .iconic { - box-sizing: border-box; - fill: #2293ec; - padding: 2px; - opacity: 0; - -ms-transform: scale(0); - transform: scale(0); - transition: opacity 0.2s cubic-bezier(0.51, 0.92, 0.24, 1), transform 0.2s cubic-bezier(0.51, 0.92, 0.24, 1); - } - } - } - - .select { - position: relative; - //margin: 1px 5px; - padding: 0; - color: #fff; - border-radius: 3px; - border: 1px solid rgba(0, 0, 0, 0.2); - box-shadow: 0 1px 0 rgba(255, 255, 255, 0.02); - font-size: 14px; - line-height: 16px; - //overflow: hidden; - outline: 0; - vertical-align: middle; - background: rgba(0, 0, 0, 0.3); - display: inline-block; - } - - .borderBlue { - border: 1px solid $colorBlue; - } -} - -// restrict hover features to devices that support it -@media (hover: hover) { - .sharing_view { - .basicModal__button:hover { - background: #2293ec; - color: #ffffff; - cursor: pointer; - } - - input:hover { - border-bottom: #2293ec solid 1px; - } - } -} - -// on touch devices draw buttons in color -@media (hover: none) { - .sharing_view { - .basicModal__button { - background: #2293ec; - color: #ffffff; - } - - input { - border-bottom: #2293ec solid 1px; - } - } -} - -// responsive web design for smaller screens -@media only screen and (max-width: 567px), only screen and (max-width: 640px) and (orientation: portrait) { - .sharing_view { - width: 100%; - max-width: 100%; - padding: 10px; - - .select { - font-size: 12px; - } - - .iconic { - margin-left: -4px; // help with centering - } - } - - .sharing_view_line { - p { - width: 100%; - } - - .basicModal__button { - width: 80%; - margin: 0 10%; - } - } -} diff --git a/resources/assets/scss/_sidebar.scss b/resources/assets/scss/_sidebar.scss deleted file mode 100644 index de0e88ca92c..00000000000 --- a/resources/assets/scss/_sidebar.scss +++ /dev/null @@ -1,352 +0,0 @@ -.sidebar { - position: fixed; - top: 49px; - right: -360px; - width: 350px; - height: calc(100% - 49px); - background-color: rgba(25, 25, 25, 0.98); - border-left: 1px solid black(0.2); - transform: translateX(0); - transition: transform 0.3s $timing; - z-index: 4; - - &.active { - transform: translateX(-360px); - } - - // Doesn't seem to be needed when user-select is globally disabled in main.scss. - // &.notSelectable { - // -webkit-user-select: none !important; - // -moz-user-select: none !important; - // -ms-user-select: none !important; - // user-select: none !important; - // } - - // Header -------------------------------------------------------------- // - &__header { - float: left; - height: 49px; - width: 100%; - background: linear-gradient(to bottom, white(0.02), black(0)); - border-top: 1px solid $colorBlue; - } - - &__header h1 { - position: absolute; - margin: 15px 0 15px 0; - width: 100%; - color: #fff; - font-size: 16px; - font-weight: bold; - text-align: center; - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; - } - - // Wrapper -------------------------------------------------------------- // - &__wrapper { - float: left; - height: calc(100% - 49px); - width: 350px; - overflow: auto; - -webkit-overflow-scrolling: touch; - } - - // Divider -------------------------------------------------------------- // - &__divider { - float: left; - padding: 12px 0 8px; - width: 100%; - border-top: 1px solid white(0.02); - box-shadow: $shadow; - - &:first-child { - border-top: 0; - box-shadow: none; - } - - h1 { - margin: 0 0 0 20px; - color: white(0.6); - font-size: 14px; - font-weight: bold; - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; - } - } - - // Edit -------------------------------------------------------------- // - .edit { - display: inline-block; - margin-left: 3px; - width: 10px; - - .iconic { - width: 10px; - height: 10px; - fill: white(0.5); - transition: fill 0.2s ease-out; - } - - &:active .iconic { - transition: none; - fill: white(0.8); - } - } - - // Table -------------------------------------------------------------- // - table { - float: left; - margin: 10px 0 15px 20px; - width: calc(100% - 20px); - } - - table tr td { - padding: 5px 0px; - color: #fff; - font-size: 14px; - line-height: 19px; - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; - - &:first-child { - width: 110px; - } - - &:last-child { - padding-right: 10px; - } - - span { - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; - } - } - - // Tags -------------------------------------------------------------- // - #tags { - width: calc(100% - 40px); - margin: 16px 20px 12px 20px; - color: #fff; - display: inline-block; - } - - #tags > div { - display: inline-block; - } - - #tags .empty { - font-size: 14px; - margin: 0 2px 8px 0; - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; - } - - #tags .edit { - margin-top: 6px; - } - - #tags .empty .edit { - margin-top: 0; - } - - #tags .tag { - cursor: default; - display: inline-block; - padding: 6px 10px; - margin: 0 6px 8px 0; - background-color: black(0.5); - border-radius: 100px; - font-size: 12px; - transition: background-color 0.2s; - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; - } - - #tags .tag span { - float: right; - padding: 0; - margin: 0 0 -2px 0; - width: 0; - overflow: hidden; - transform: scale(0); - transition: width 0.2s, margin 0.2s, transform 0.2s, fill 0.2s ease-out; - - .iconic { - fill: $colorRed; - width: 8px; - height: 8px; - } - - &:active .iconic { - transition: none; - fill: darken($colorRed, 10%); - } - } - - #leaflet_map_single_photo { - margin: 10px 0px 0px 20px; - height: 180px; - width: calc(100% - 40px); - float: left; - } - - .attr_location { - &.search { - cursor: pointer; - } - } -} - -// restrict hover features to devices that support it -@media (hover: hover) { - .sidebar { - .edit:hover .iconic { - fill: white(1); - } - - #tags .tag { - &:hover { - background-color: black(0.3); - - &.search { - cursor: pointer; - } - - span { - width: 9px; - margin: 0 0 -2px 5px; - transform: scale(1); - } - } - - span:hover .iconic { - fill: lighten($colorRed, 10%); - } - } - } -} - -// responsive web design for smaller screens -@media only screen and (max-width: 567px), only screen and (max-width: 640px) and (orientation: portrait) { - // sidebar as overlay, small size - .sidebar { - width: 240px; - height: unset; - background-color: rgba(0, 0, 0, 0.6); - - &__wrapper { - padding-bottom: 10px; - } - - &__header { - height: 22px; - - h1 { - margin: 6px 0; - font-size: 13px; - } - } - - &__divider { - padding: 6px 0 2px; - - h1 { - margin: 0 0 0 10px; - font-size: 12px; - } - } - - table { - margin: 4px 0 6px 10px; - width: calc(100% - 16px); - - tr td { - padding: 2px 0; - font-size: 11px; - line-height: 12px; - - &:first-child { - width: 80px; - } - } - } - - #tags { - margin: 4px 0 6px 10px; - width: calc(100% - 16px); - - .empty { - margin: 0; - font-size: 11px; - } - } - } -} - -@media only screen and (min-width: 568px) and (max-width: 768px), - only screen and (min-width: 568px) and (max-width: 640px) and (orientation: landscape) { - // sidebar on side, medium size - .sidebar { - width: 280px; - - &__wrapper { - padding-bottom: 10px; - } - - &__header { - height: 28px; - - h1 { - margin: 8px 0; - font-size: 15px; - } - } - - &__divider { - padding: 8px 0 4px; - - h1 { - margin: 0 0 0 10px; - font-size: 13px; - } - } - - table { - margin: 4px 0 6px 10px; - width: calc(100% - 16px); - - tr td { - padding: 2px 0; - font-size: 12px; - line-height: 13px; - - &:first-child { - width: 90px; - } - } - } - - #tags { - margin: 4px 0 6px 10px; - width: calc(100% - 16px); - - .empty { - margin: 0; - font-size: 12px; - } - } - } -} diff --git a/resources/assets/scss/_social-footer.scss b/resources/assets/scss/_social-footer.scss deleted file mode 100644 index 1451e41dad2..00000000000 --- a/resources/assets/scss/_social-footer.scss +++ /dev/null @@ -1,59 +0,0 @@ -@font-face { - font-family: "socials"; - src: url("fonts/socials.eot?egvu10"); - src: url("fonts/socials.eot?egvu10#iefix") format("embedded-opentype"), url("fonts/socials.ttf?egvu10") format("truetype"), - url("fonts/socials.woff?egvu10") format("woff"), url("fonts/socials.svg?egvu10#socials") format("svg"); - font-weight: normal; - font-style: normal; -} - -#socials_footer { - padding: 0; - text-align: center; - left: 0; - right: 0; -} - -.socialicons { - display: inline-block; - font-size: 18px; - font-family: "socials" !important; - speak: none; - color: #cccccc; - text-decoration: none; - margin: 15px 15px 5px 15px; - transition: all 0.3s; - -webkit-transition: all 0.3s; - -moz-transition: all 0.3s; - -o-transition: all 0.3s; -} - -#twitter:before { - content: "\ea96"; -} - -#instagram:before { - content: "\ea92"; -} - -#youtube:before { - content: "\ea9d"; -} - -#flickr:before { - content: "\eaa4"; -} - -#facebook:before { - content: "\ea91"; -} - -// restrict hover features to devices that support it -@media (hover: hover) { - .socialicons:hover { - color: #b5b5b5; - -ms-transform: scale(1.3); - transform: scale(1.3); - -webkit-transform: scale(1.3); - } -} diff --git a/resources/assets/scss/_u2f.scss b/resources/assets/scss/_u2f.scss deleted file mode 100644 index ef6900460fc..00000000000 --- a/resources/assets/scss/_u2f.scss +++ /dev/null @@ -1,256 +0,0 @@ -.u2f_view { - width: 90%; - max-width: 700px; - margin-left: auto; - margin-right: auto; -} - -.u2f_view_line { - font-size: 14px; - width: 100%; - &:last-child, - &:first-child { - padding-top: 50px; - } - p { - width: 550px; - margin: 0 0 5%; - color: #ccc; - display: inline-block; - a { - color: rgba(255, 255, 255, 0.9); - text-decoration: none; - border-bottom: 1px dashed #888; - } - &:last-of-type { - margin: 0; - } - } - p.line { - margin: 0 0 0 0; - } - p.single { - text-align: center; - } - span.text { - display: inline-block; - padding: 9px 4px; - width: 80%; - //margin: 0 2%; - background-color: transparent; - color: #fff; - border: none; - &_icon { - width: 5%; - .iconic { - width: 15px; - height: 14px; - margin: 0 15px 0 1px; - fill: #ffffff; - } - } - } - .choice label input:checked ~ .checkbox .iconic { - opacity: 1; - -ms-transform: scale(1); - transform: scale(1); - } - .choice { - display: inline-block; - width: 5%; - color: #fff; - input { - position: absolute; - margin: 0; - opacity: 0; - } - .checkbox { - display: inline-block; - width: 16px; - height: 16px; - margin-top: 10px; - margin-left: 2px; - background: rgba(0, 0, 0, 0.5); - border-radius: 3px; - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.7); - .iconic { - box-sizing: border-box; - fill: #2293ec; - padding: 2px; - opacity: 0; - -ms-transform: scale(0); - transform: scale(0); - transition: opacity 0.2s cubic-bezier(0.51, 0.92, 0.24, 1), transform 0.2s cubic-bezier(0.51, 0.92, 0.24, 1); - } - } - } - .basicModal__button { - display: inline-block; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.02), inset 1px 0 0 rgba(0, 0, 0, 0.2); - width: 20%; - min-width: 50px; - border-radius: 0 0 0 0; - } - .basicModal__button_OK { - color: #2293ec; - border-radius: 5px 0 0 5px; - } - .basicModal__button_DEL { - color: #b22027; - border-radius: 0 5px 5px 0; - } - .basicModal__button_CREATE { - width: 100%; - color: #009900; - border-radius: 5px; - } - .select { - position: relative; - margin: 1px 5px; - padding: 0; - width: 110px; - color: #fff; - border-radius: 3px; - border: 1px solid rgba(0, 0, 0, 0.2); - box-shadow: 0 1px 0 rgba(255, 255, 255, 0.02); - font-size: 11px; - line-height: 16px; - overflow: hidden; - outline: 0; - vertical-align: middle; - background: rgba(0, 0, 0, 0.3); - display: inline-block; - select { - margin: 0; - padding: 4px 8px; - width: 120%; - color: #fff; - font-size: 11px; - line-height: 16px; - border: 0; - outline: 0; - box-shadow: none; - border-radius: 0; - background: transparent none; - -moz-appearance: none; - -webkit-appearance: none; - appearance: none; - option { - margin: 0; - padding: 0; - background: #fff; - color: #333; - transition: none; - } - } - &::after { - position: absolute; - content: "≡"; - right: 8px; - top: 4px; - color: #2293ec; - font-size: 16px; - line-height: 16px; - font-weight: 700; - pointer-events: none; - } - } -} - -/* When you mouse over the navigation links, change their color */ - -.signInKeyLess { - display: block; - padding: 10px 10px; - position: absolute; - cursor: pointer; - .iconic { - display: inline-block; - margin: 0 0px 0 0px; - width: 20px; - height: 20px; - fill: #818181; - } - .iconic.ionicons { - margin: 0 8px -2px 0; - width: 18px; - height: 18px; - } -} - -// restrict hover features to devices that support it -@media (hover: hover) { - .u2f_view_line { - .basicModal__button:hover { - cursor: pointer; - } - - .basicModal__button_OK:hover { - background: #2293ec; - color: #ffffff; - } - - .basicModal__button_DEL:hover { - background: #b22027; - color: #ffffff; - } - - .basicModal__button_CREATE:hover { - background: #009900; - color: #ffffff; - } - - input:hover { - border-bottom: #2293ec solid 1px; - } - } - - .signInKeyLess:hover .iconic { - fill: #ffffff; - } -} - -// on touch devices draw buttons in color -@media (hover: none) { - .u2f_view_line { - .basicModal__button { - color: #ffffff; - - &_OK { - background: #2293ec; - } - - &_DEL { - background: #b22027; - } - - &_CREATE { - background: #009900; - } - } - - input { - border-bottom: #2293ec solid 1px; - } - } -} - -// responsive web design for smaller screens -@media only screen and (max-width: 567px), only screen and (max-width: 640px) and (orientation: portrait) { - .u2f_view { - width: 100%; - max-width: 100%; - padding: 20px; - } - - .u2f_view_line { - p { - width: 100%; - } - - .basicModal__button_CREATE { - width: 80%; - margin: 0 10%; - } - } -} diff --git a/resources/assets/scss/_users.scss b/resources/assets/scss/_users.scss deleted file mode 100644 index 584bb64f112..00000000000 --- a/resources/assets/scss/_users.scss +++ /dev/null @@ -1,280 +0,0 @@ -.users_view { - width: 90%; - max-width: 700px; - margin-left: auto; - margin-right: auto; -} - -.users_view_line { - font-size: 14px; - width: 100%; - - &:last-child, - &:first-child { - padding-top: 50px; - } - - p { - width: 550px; - margin: 0 0 5%; - color: #ccc; - display: inline-block; - - a { - color: rgba(255, 255, 255, 0.9); - text-decoration: none; - border-bottom: 1px dashed #888; - } - - &:last-of-type { - margin: 0; - } - } - - p.line { - margin: 0 0 0 0; - } - - span.text { - display: inline-block; - padding: 9px 6px 9px 0; - width: 40%; - //margin: 0 2%; - background-color: transparent; - color: #fff; - border: none; - - &_icon { - width: 5%; - min-width: 32px; - - .iconic { - width: 15px; - height: 14px; - margin: 0 8px; - fill: #ffffff; - } - } - } - - input.text { - padding: 9px 6px 9px 0; - width: 40%; - //margin: 0 2%; - background-color: transparent; - color: #fff; - border: none; - border-bottom: 1px solid #222; - border-radius: 0; - box-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); - outline: 0; - margin: 0 0 10px; - - &:focus { - border-bottom-color: #2293ec; - } - } - - input.text.error { - border-bottom-color: #d92c34; - } - - .choice label input:checked ~ .checkbox .iconic { - opacity: 1; - -ms-transform: scale(1); - transform: scale(1); - } - - .choice { - display: inline-block; - width: 5%; - min-width: 32px; - color: #fff; - - input { - position: absolute; - margin: 0; - opacity: 0; - } - - .checkbox { - display: inline-block; - width: 16px; - height: 16px; - margin: 10px 8px 0; - background: rgba(0, 0, 0, 0.5); - border-radius: 3px; - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.7); - - .iconic { - box-sizing: border-box; - fill: #2293ec; - padding: 2px; - opacity: 0; - -ms-transform: scale(0); - transform: scale(0); - transition: opacity 0.2s cubic-bezier(0.51, 0.92, 0.24, 1), transform 0.2s cubic-bezier(0.51, 0.92, 0.24, 1); - } - } - } - - .basicModal__button { - display: inline-block; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.02), inset 1px 0 0 rgba(0, 0, 0, 0.2); - width: 10%; - min-width: 72px; - border-radius: 0 0 0 0; - } - - .basicModal__button_OK { - color: #2293ec; - border-radius: 5px 0 0 5px; - margin-right: -4px; - } - - .basicModal__button_DEL { - color: #b22027; - border-radius: 0 5px 5px 0; - } - - .basicModal__button_CREATE { - width: 20%; - color: #009900; - border-radius: 5px; - min-width: 144px; - } - - .select { - position: relative; - margin: 1px 5px; - padding: 0; - width: 110px; - color: #fff; - border-radius: 3px; - border: 1px solid rgba(0, 0, 0, 0.2); - box-shadow: 0 1px 0 rgba(255, 255, 255, 0.02); - font-size: 11px; - line-height: 16px; - overflow: hidden; - outline: 0; - vertical-align: middle; - background: rgba(0, 0, 0, 0.3); - display: inline-block; - - select { - margin: 0; - padding: 4px 8px; - width: 120%; - color: #fff; - font-size: 11px; - line-height: 16px; - border: 0; - outline: 0; - box-shadow: none; - border-radius: 0; - background: transparent none; - -moz-appearance: none; - -webkit-appearance: none; - appearance: none; - - option { - margin: 0; - padding: 0; - background: #fff; - color: #333; - transition: none; - } - } - - &::after { - position: absolute; - content: "≡"; - right: 8px; - top: 4px; - color: #2293ec; - font-size: 16px; - line-height: 16px; - font-weight: 700; - pointer-events: none; - } - } -} - -// restrict hover features to devices that support it -@media (hover: hover) { - .users_view_line { - .basicModal__button { - &:hover { - cursor: pointer; - color: #ffffff; - } - - &_OK:hover { - background: #2293ec; - } - - &_DEL:hover { - background: #b22027; - } - - &_CREATE:hover { - background: #009900; - } - } - - input:hover { - border-bottom: #2293ec solid 1px; - } - } -} - -// on touch devices draw buttons in color -@media (hover: none) { - .users_view_line { - .basicModal__button { - color: #ffffff; - - &_OK { - background: #2293ec; - } - - &_DEL { - background: #b22027; - } - - &_CREATE { - background: #009900; - } - } - - input { - border-bottom: #2293ec solid 1px; - } - } -} - -// responsive web design for smaller screens -@media only screen and (max-width: 567px), only screen and (max-width: 640px) and (orientation: portrait) { - .users_view { - width: 100%; - max-width: 100%; - padding: 20px; - } - - .users_view_line { - p { - width: 100%; - - .text, - input.text { - width: 36%; - font-size: smaller; - } - } - .choice { - // aligning elements is painful - should use table... - margin-left: -8px; - margin-right: 3px; - } - } -} diff --git a/resources/assets/scss/_warning.scss b/resources/assets/scss/_warning.scss deleted file mode 100644 index 529ce04bef0..00000000000 --- a/resources/assets/scss/_warning.scss +++ /dev/null @@ -1,24 +0,0 @@ -#sensitive_warning { - background: rgba(100, 0, 0, 0.95); - width: 100vw; - height: 100vh; - position: fixed; - top: 0px; - text-align: center; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - color: white; - h1 { - font-size: 36px; - font-weight: bold; - border-bottom: 2px solid white; - margin-bottom: 15px; - } - p { - font-size: 20px; - max-width: 40%; - margin-top: 15px; - } -} diff --git a/resources/assets/scss/app.scss b/resources/assets/scss/app.scss deleted file mode 100644 index 7a5faaf129b..00000000000 --- a/resources/assets/scss/app.scss +++ /dev/null @@ -1,101 +0,0 @@ -// Functions --------------------------------------------------------------- // -@function black($opacity) { - @return rgba(0, 0, 0, $opacity); -} - -@function white($opacity) { - @return rgba(255, 255, 255, $opacity); -} - -// Properties -------------------------------------------------------------- // -$shadow: 0 -1px 0 black(0.2); -// Colors ------------------------------------------------------------------ // -$colorBlue: #2293ec; -$colorRed: #d92c34; -$colorPink: #ff82ee; -$colorGreen: #00aa00; -$colorYellow: #ffcc00; -$colorOrange: #ff9900; -// Animations -------------------------------------------------------------- // -$timing: cubic-bezier(0.51, 0.92, 0.24, 1); -$timingBounce: cubic-bezier(0.51, 0.92, 0.24, 1.15); -// Rest -------------------------------------------------------------------- // -@import "_reset"; -* { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - transition: color 0.3s, opacity 0.3s ease-out, transform 0.3s ease-out, box-shadow 0.3s; -} - -html, -body { - min-height: 100vh; - position: relative; -} - -body { - background-color: #1d1d1d; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 12px; - -webkit-font-smoothing: antialiased; - -moz-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - &.view { - background-color: #0f0f0f; - } -} - -div#container { - // If there is a footer, we will set padding-bottom to its height - // using JavaScript since the height of the footer can vary. - position: relative; -} - -input { - -webkit-user-select: text !important; - -moz-user-select: text !important; - -ms-user-select: text !important; - user-select: text !important; -} - -.svgsprite { - display: none; -} - -.iconic { - width: 100%; - height: 100%; -} - -#upload { - display: none; -} - -// Files ------------------------------------------------------------------- // -@import "animations"; -@import "content"; -@import "photo-thumbs"; -@import "leftMenu"; -// @import "basicContext.custom"; -// @import "basicContext.extended"; -// @import "basicModal.custom"; -@import "header"; -@import "imageview"; -// @import "mapview"; -@import "sidebar"; -// @import "loading"; -// @import "message"; -@import "warning"; -@import "settings"; -@import "users"; -@import "u2f"; -@import "logs_diagnostics"; -@import "sharing"; -@import "multiselect"; -@import "justified_layout"; -// @import "../page/footer"; -@import "footer"; -@import "social-footer"; -@import "photo-links"; diff --git a/resources/js/vendor/webauthn/webauthn.js b/resources/js/vendor/webauthn/webauthn.js deleted file mode 100644 index a5301930d47..00000000000 --- a/resources/js/vendor/webauthn/webauthn.js +++ /dev/null @@ -1,356 +0,0 @@ -/** - * MIT License - * - * Copyright (c) Italo Israel Baeza Cabrera - * - * 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. - */ - -class WebAuthn { - /** - * Routes for WebAuthn assertion (login) and attestation (register). - * - * @type {{registerOptions: string, register: string, loginOptions: string, login: string, }} - */ - #routes = { - registerOptions: "webauthn::register/options", - register: "webauthn::register", - loginOptions: "webauthn::login/options", - login: "webauthn::login", - } - - /** - * Headers to use in ALL requests done. - * - * @type {{Accept: string, "Content-Type": string, "X-Requested-With": string}} - */ - #headers = { - "Accept": "application/json", - "Content-Type": "application/json", - "X-Requested-With": "XMLHttpRequest" - }; - - /** - * If set to true, the credentials option will be set to 'include' on all fetch calls, - * or else it will use the default 'same-origin'. Use this if the backend is not the - * same origin as the client or the XSRF protection will break without the session. - * - * @type {boolean} - */ - #includeCredentials = false - - /** - * Create a new WebAuthn instance. - * - * @param routes {{registerOptions: string, register: string, loginOptions: string, login: string}} - * @param headers {{string}} - * @param includeCredentials {boolean} - * @param xcsrfToken {string|null} Either a csrf token (40 chars) or xsrfToken (224 chars) - */ - constructor(routes = {}, headers = {}, includeCredentials = false, xcsrfToken = null) { - Object.assign(this.#routes, routes); - Object.assign(this.#headers, headers); - - this.#includeCredentials = includeCredentials; - - let xsrfToken; - let csrfToken; - - if (xcsrfToken === null) { - // If the developer didn't issue an XSRF token, we will find it ourselves. - xsrfToken = WebAuthn.#XsrfToken; - csrfToken = WebAuthn.#firstInputWithCsrfToken; - } else{ - // Check if it is a CSRF or XSRF token - if (xcsrfToken.length === 40) { - csrfToken = xcsrfToken; - } else if (xcsrfToken.length === 224) { - xsrfToken = xcsrfToken; - } else { - throw new TypeError('CSRF token or XSRF token provided does not match requirements. Must be 40 or 224 characters.'); - } - } - - if (xsrfToken !== null) { - this.#headers["X-XSRF-TOKEN"] ??= xsrfToken; - } else if (csrfToken !== null) { - this.#headers["X-CSRF-TOKEN"] ??= csrfToken; - } else { - // We didn't find it, and since is required, we will bail out. - throw new TypeError('Ensure a CSRF/XSRF token is manually set, or provided in a cookie "XSRF-TOKEN" or or there is meta tag named "csrf-token".'); - } - } - - /** - * Returns the CSRF token if it exists as a form input tag. - * - * @returns string - * @throws TypeError - */ - static get #firstInputWithCsrfToken() { - // First, try finding an CSRF Token in the head. - let token = Array.from(document.head.getElementsByTagName("meta")) - .find(element => element.name === "csrf-token"); - - if (token) { - return token.content; - } - - // Then, try to find a hidden input containing the CSRF token. - token = Array.from(document.getElementsByTagName('input')) - .find(input => input.name === "_token" && input.type === "hidden") - - if (token) { - return token.value; - } - - return null; - } - - /** - * Returns the value of the XSRF token if it exists in a cookie. - * - * Inspired by https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie#example_2_get_a_sample_cookie_named_test2 - * - * @returns {?string} - */ - static get #XsrfToken() { - const cookie = document.cookie.split(";").find((row) => /^\s*(X-)?[XC]SRF-TOKEN\s*=/.test(row)); - // We must remove all '%3D' from the end of the string. - // Background: - // The actual binary value of the CSFR value is encoded in Base64. - // If the length of original, binary value is not a multiple of 3 bytes, - // the encoding gets padded with `=` on the right; i.e. there might be - // zero, one or two `=` at the end of the encoded value. - // If the value is sent from the server to the client as part of a cookie, - // the `=` character is URL-encoded as `%3D`, because `=` is already used - // to separate a cookie key from its value. - // When we send back the value to the server as part of an AJAX request, - // Laravel expects an unpadded value. - // Hence, we must remove the `%3D`. - return cookie ? cookie.split("=")[1].trim().replaceAll("%3D", "") : null; - }; - - /** - * Returns a fetch promise to resolve later. - * - * @param data {Object} - * @param route {string} - * @param headers {{string}} - * @returns {Promise} - */ - #fetch(data, route, headers = {}) { - return fetch(route, { - method: "POST", - credentials: this.#includeCredentials ? "include" : "same-origin", - redirect: "error", - headers: {...this.#headers, ...headers}, - body: JSON.stringify(data) - }); - } - - /** - * Decodes a BASE64 URL string into a normal string. - * - * @param input {string} - * @returns {string|Iterable} - */ - static #base64UrlDecode(input) { - input = input.replace(/-/g, "+").replace(/_/g, "/"); - - const pad = input.length % 4; - - if (pad) { - if (pad === 1) { - throw new Error("InvalidLengthError: Input base64url string is the wrong length to determine padding"); - } - - input += new Array(5 - pad).join("="); - } - - return atob(input); - } - - /** - * Transform a string into Uint8Array instance. - * - * @param input {string} - * @param useAtob {boolean} - * @returns {Uint8Array} - */ - static #uint8Array(input, useAtob = false) { - return Uint8Array.from( - useAtob ? atob(input) : WebAuthn.#base64UrlDecode(input), c => c.charCodeAt(0) - ); - } - - /** - * Encodes an array of bytes to a BASE64 URL string - * - * @param arrayBuffer {ArrayBuffer|Uint8Array} - * @returns {string} - */ - static #arrayToBase64String(arrayBuffer) { - return btoa(String.fromCharCode(...new Uint8Array(arrayBuffer))); - } - - /** - * Parses the Public Key Options received from the Server for the browser. - * - * @param publicKey {Object} - * @returns {Object} - */ - #parseIncomingServerOptions(publicKey) { - console.debug(publicKey); - - publicKey.challenge = WebAuthn.#uint8Array(publicKey.challenge); - - if ('user' in publicKey) { - publicKey.user = { - ...publicKey.user, - id: WebAuthn.#uint8Array(publicKey.user.id) - }; - } - - [ - "excludeCredentials", - "allowCredentials" - ] - .filter(key => key in publicKey) - .forEach(key => { - publicKey[key] = publicKey[key].map(data => { - return {...data, id: WebAuthn.#uint8Array(data.id)}; - }); - }); - - return publicKey; - } - - /** - * Parses the outgoing credentials from the browser to the server. - * - * @param credentials {Credential|PublicKeyCredential} - * @return {{response: {string}, rawId: string, id: string, type: string}} - */ - #parseOutgoingCredentials(credentials) { - let parseCredentials = { - id: credentials.id, - type: credentials.type, - rawId: WebAuthn.#arrayToBase64String(credentials.rawId), - response: {} - }; - - [ - "clientDataJSON", - "attestationObject", - "authenticatorData", - "signature", - "userHandle" - ] - .filter(key => key in credentials.response) - .forEach(key => parseCredentials.response[key] = WebAuthn.#arrayToBase64String(credentials.response[key])); - - return parseCredentials; - } - - /** - * Handles the response from the Server. - * - * Throws the entire response if is not OK (HTTP 2XX). - * - * @param response {Response} - * @returns Promise - * @throws Response - */ - static #handleResponse(response) { - if (!response.ok) { - throw response; - } - - // Here we will do a small trick. Since most of the responses from the server - // are JSON, we will automatically parse the JSON body from the response. If - // it's not JSON, we will push the body verbatim and let the dev handle it. - return new Promise((resolve) => { - response - .json() - .then((json) => resolve(json)) - .catch(() => resolve(response.body)); - }); - } - - /** - * Register the user credentials from the browser/device. - * - * You can add request input if you are planning to register a user with WebAuthn from scratch. - * - * @param request {{string}} - * @param response {{string}} - * @returns Promise - */ - async register(request = {}, response = {}) { - const optionsResponse = await this.#fetch(request, this.#routes.registerOptions); - const json = await optionsResponse.json(); - const publicKey = this.#parseIncomingServerOptions(json); - const credentials = await navigator.credentials.create({publicKey}); - const publicKeyCredential = this.#parseOutgoingCredentials(credentials); - - Object.assign(publicKeyCredential, response); - - return await this.#fetch(publicKeyCredential, this.#routes.register).then(WebAuthn.#handleResponse); - } - - /** - * Log in a user with his credentials. - * - * If no credentials are given, the app may return a blank assertion for userless login. - * - * @param request {{string}} - * @param response {{string}} - * @returns Promise - */ - async login(request = {}, response = {}) { - const optionsResponse = await this.#fetch(request, this.#routes.loginOptions); - const json = await optionsResponse.json(); - const publicKey = this.#parseIncomingServerOptions(json); - const credentials = await navigator.credentials.get({publicKey}); - const publicKeyCredential = this.#parseOutgoingCredentials(credentials); - - Object.assign(publicKeyCredential, response); - - return await this.#fetch(publicKeyCredential, this.#routes.login, response).then(WebAuthn.#handleResponse); - } - - /** - * Checks if the browser supports WebAuthn. - * - * @returns {boolean} - */ - static supportsWebAuthn() { - return typeof PublicKeyCredential != "undefined"; - } - - /** - * Checks if the browser doesn't support WebAuthn. - * - * @returns {boolean} - */ - static doesntSupportWebAuthn() { - return !this.supportsWebAuthn(); - } -} diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php deleted file mode 100644 index cf46e6ee108..00000000000 --- a/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,37 +0,0 @@ - - - - - {{ App\Models\Configs::getValueAsString('site_title') }} - - - - - - - - - - - - - - - {{-- --}} - @if (Helpers::getDeviceType()=="television") - - @endif - - {{-- @if($rss_enable) - @include('feed::links') - @endif --}} - - @yield('head-meta') -@livewireStyles - - - {{ $slot }} - @include('includes.svg') - @livewireScripts - - \ No newline at end of file From 5f00cbbd6ef2bfc3153346104e945bccbb0ad941 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Thu, 21 Sep 2023 19:04:25 +0200 Subject: [PATCH 050/209] Fix complaint due to type casting (#2024) --- app/Http/Requests/Photo/AddPhotoRequest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Http/Requests/Photo/AddPhotoRequest.php b/app/Http/Requests/Photo/AddPhotoRequest.php index 3f4952ca4af..b16d20820d8 100644 --- a/app/Http/Requests/Photo/AddPhotoRequest.php +++ b/app/Http/Requests/Photo/AddPhotoRequest.php @@ -36,7 +36,8 @@ protected function processValidatedValues(array $values, array $files): void null : $this->albumFactory->findAbstractAlbumOrFail($albumID); // Convert the File Last Modified to seconds instead of milliseconds - $this->fileLastModifiedTime = $values[RequestAttribute::FILE_LAST_MODIFIED_TIME] ?? null; + $val = $values[RequestAttribute::FILE_LAST_MODIFIED_TIME] ?? null; + $this->fileLastModifiedTime = $val !== null ? intval($val) : null; $this->file = $files[RequestAttribute::FILE_ATTRIBUTE]; } From 4c4745fc390f8a9dc0016412781ecaf5d1d8caf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sat, 23 Sep 2023 11:03:54 +0200 Subject: [PATCH 051/209] License as enum type (#2025) --- .../Pipes/Checks/ImageOptCheck.php | 2 +- app/Assets/Helpers.php | 42 -------- app/Contracts/Http/Requests/HasLicense.php | 6 +- app/Enum/LicenseType.php | 101 ++++++++++++++++++ app/Enum/SizeVariantType.php | 2 +- app/Facades/Helpers.php | 1 - .../Requests/Album/SetAlbumLicenseRequest.php | 3 +- .../Requests/Photo/SetPhotoLicenseRequest.php | 3 +- .../SetDefaultLicenseSettingRequest.php | 7 +- app/Http/Requests/Traits/HasLicenseTrait.php | 8 +- app/Http/Resources/ConfigurationResource.php | 3 +- app/Http/Resources/Models/AlbumResource.php | 2 +- app/Http/Resources/Models/PhotoResource.php | 2 +- .../RuleSets/Album/SetAlbumLicenseRuleSet.php | 5 +- .../RuleSets/Photo/SetPhotoLicenseRuleSet.php | 5 +- app/Metadata/Extractor.php | 2 +- app/Models/Album.php | 24 ++++- app/Models/Configs.php | 4 +- app/Models/Photo.php | 62 +++++++++-- app/Rules/LicenseRule.php | 30 ------ .../2020_07_11_184605_update_licences.php | 16 ++- .../2021_12_04_181200_refactor_models.php | 4 +- tests/Feature/BasePhotosAddHandler.php | 2 +- tests/Feature/PhotosOperationsTest.php | 6 +- 24 files changed, 218 insertions(+), 124 deletions(-) create mode 100644 app/Enum/LicenseType.php delete mode 100644 app/Rules/LicenseRule.php diff --git a/app/Actions/Diagnostics/Pipes/Checks/ImageOptCheck.php b/app/Actions/Diagnostics/Pipes/Checks/ImageOptCheck.php index 4796260535f..0eba844f552 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/ImageOptCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/ImageOptCheck.php @@ -45,7 +45,7 @@ public function handle(array &$data, \Closure $next): array $binaryPath = config('image-optimizer.binary_path'); if ($binaryPath !== '' && substr($binaryPath, -1) !== DIRECTORY_SEPARATOR) { - $binaryPath = $binaryPath . DIRECTORY_SEPARATOR; + $binaryPath .= DIRECTORY_SEPARATOR; } if (Helpers::isExecAvailable()) { diff --git a/app/Assets/Helpers.php b/app/Assets/Helpers.php index 1a8db018d64..03f7549f79a 100644 --- a/app/Assets/Helpers.php +++ b/app/Assets/Helpers.php @@ -153,48 +153,6 @@ public function gcd(int $a, int $b): int return ($a % $b) !== 0 ? $this->gcd($b, $a % $b) : $b; } - /** - * Returns the available licenses. - */ - public function get_all_licenses(): array - { - return [ - 'none', - 'reserved', - 'CC0', - 'CC-BY-1.0', - 'CC-BY-2.0', - 'CC-BY-2.5', - 'CC-BY-3.0', - 'CC-BY-4.0', - 'CC-BY-NC-1.0', - 'CC-BY-NC-2.0', - 'CC-BY-NC-2.5', - 'CC-BY-NC-3.0', - 'CC-BY-NC-4.0', - 'CC-BY-NC-ND-1.0', - 'CC-BY-NC-ND-2.0', - 'CC-BY-NC-ND-2.5', - 'CC-BY-NC-ND-3.0', - 'CC-BY-NC-ND-4.0', - 'CC-BY-NC-SA-1.0', - 'CC-BY-NC-SA-2.0', - 'CC-BY-NC-SA-2.5', - 'CC-BY-NC-SA-3.0', - 'CC-BY-NC-SA-4.0', - 'CC-BY-ND-1.0', - 'CC-BY-ND-2.0', - 'CC-BY-ND-2.5', - 'CC-BY-ND-3.0', - 'CC-BY-ND-4.0', - 'CC-BY-SA-1.0', - 'CC-BY-SA-2.0', - 'CC-BY-SA-2.5', - 'CC-BY-SA-3.0', - 'CC-BY-SA-4.0', - ]; - } - /** * Return incrementing numbers. */ diff --git a/app/Contracts/Http/Requests/HasLicense.php b/app/Contracts/Http/Requests/HasLicense.php index 24071b6cced..1e66f5053d4 100644 --- a/app/Contracts/Http/Requests/HasLicense.php +++ b/app/Contracts/Http/Requests/HasLicense.php @@ -2,10 +2,12 @@ namespace App\Contracts\Http\Requests; +use App\Enum\LicenseType; + interface HasLicense { /** - * @return string|null + * @return LicenseType|null */ - public function license(): ?string; + public function license(): ?LicenseType; } diff --git a/app/Enum/LicenseType.php b/app/Enum/LicenseType.php new file mode 100644 index 00000000000..ca0e7dc93b9 --- /dev/null +++ b/app/Enum/LicenseType.php @@ -0,0 +1,101 @@ +value => 'None', + self::RESERVED->value => __('lychee.ALBUM_RESERVED'), + self::CC0->value => 'CC0 - Public Domain', + self::CC_BY_1_0->value => 'CC Attribution 1.0', + self::CC_BY_2_0->value => 'CC Attribution 2.0', + self::CC_BY_2_5->value => 'CC Attribution 2.5', + self::CC_BY_3_0->value => 'CC Attribution 3.0', + self::CC_BY_4_0->value => 'CC Attribution 4.0', + self::CC_BY_ND_1_0->value => 'CC Attribution-NoDerivatives 1.0', + self::CC_BY_ND_2_0->value => 'CC Attribution-NoDerivatives 2.0', + self::CC_BY_ND_2_5->value => 'CC Attribution-NoDerivatives 2.5', + self::CC_BY_ND_3_0->value => 'CC Attribution-NoDerivatives 3.0', + self::CC_BY_ND_4_0->value => 'CC Attribution-NoDerivatives 4.0', + self::CC_BY_SA_1_0->value => 'CC Attribution-ShareAlike 1.0', + self::CC_BY_SA_2_0->value => 'CC Attribution-ShareAlike 2.0', + self::CC_BY_SA_2_5->value => 'CC Attribution-ShareAlike 2.5', + self::CC_BY_SA_3_0->value => 'CC Attribution-ShareAlike 3.0', + self::CC_BY_SA_4_0->value => 'CC Attribution-ShareAlike 4.0', + self::CC_BY_NC_1_0->value => 'CC Attribution-NonCommercial 1.0', + self::CC_BY_NC_2_0->value => 'CC Attribution-NonCommercial 2.0', + self::CC_BY_NC_2_5->value => 'CC Attribution-NonCommercial 2.5', + self::CC_BY_NC_3_0->value => 'CC Attribution-NonCommercial 3.0', + self::CC_BY_NC_4_0->value => 'CC Attribution-NonCommercial 4.0', + self::CC_BY_NC_ND_1_0->value => 'CC Attribution-NonCommercial-NoDerivatives 1.0', + self::CC_BY_NC_ND_2_0->value => 'CC Attribution-NonCommercial-NoDerivatives 2.0', + self::CC_BY_NC_ND_2_5->value => 'CC Attribution-NonCommercial-NoDerivatives 2.5', + self::CC_BY_NC_ND_3_0->value => 'CC Attribution-NonCommercial-NoDerivatives 3.0', + self::CC_BY_NC_ND_4_0->value => 'CC Attribution-NonCommercial-NoDerivatives 4.0', + self::CC_BY_NC_SA_1_0->value => 'CC Attribution-NonCommercial-ShareAlike 1.0', + self::CC_BY_NC_SA_2_0->value => 'CC Attribution-NonCommercial-ShareAlike 2.0', + self::CC_BY_NC_SA_2_5->value => 'CC Attribution-NonCommercial-ShareAlike 2.5', + self::CC_BY_NC_SA_3_0->value => 'CC Attribution-NonCommercial-ShareAlike 3.0', + self::CC_BY_NC_SA_4_0->value => 'CC Attribution-NonCommercial-ShareAlike 4.0', + ]; + } + + /** + * Return the localization string of current. + * + * @return string + */ + public function localization(): string + { + return self::localized()[$this->value]; + } +} diff --git a/app/Enum/SizeVariantType.php b/app/Enum/SizeVariantType.php index bb02f2557a7..58e5ff0aa6a 100644 --- a/app/Enum/SizeVariantType.php +++ b/app/Enum/SizeVariantType.php @@ -40,7 +40,7 @@ public function name(): string * * @return string */ - public function localized(): string + public function localization(): string { return match ($this) { self::THUMB => __('lychee.PHOTO_THUMB'), diff --git a/app/Facades/Helpers.php b/app/Facades/Helpers.php index 30c627c77d4..9c0262c11c5 100644 --- a/app/Facades/Helpers.php +++ b/app/Facades/Helpers.php @@ -20,7 +20,6 @@ * @method static int data_index() * @method static int data_index_r() * @method static void data_index_set(int $idx = 0) - * @method static array get_all_licenses() * @method static bool isExecAvailable() * @method static string secondsToHMS(int|float $d) */ diff --git a/app/Http/Requests/Album/SetAlbumLicenseRequest.php b/app/Http/Requests/Album/SetAlbumLicenseRequest.php index 8ef175c2eee..a05c0c32c9b 100644 --- a/app/Http/Requests/Album/SetAlbumLicenseRequest.php +++ b/app/Http/Requests/Album/SetAlbumLicenseRequest.php @@ -5,6 +5,7 @@ use App\Contracts\Http\Requests\HasAlbum; use App\Contracts\Http\Requests\HasLicense; use App\Contracts\Http\Requests\RequestAttribute; +use App\Enum\LicenseType; use App\Http\Requests\BaseApiRequest; use App\Http\Requests\Traits\Authorize\AuthorizeCanEditAlbumTrait; use App\Http\Requests\Traits\HasAlbumTrait; @@ -32,6 +33,6 @@ public function rules(): array protected function processValidatedValues(array $values, array $files): void { $this->album = Album::query()->findOrFail($values[RequestAttribute::ALBUM_ID_ATTRIBUTE]); - $this->license = $values[RequestAttribute::LICENSE_ATTRIBUTE]; + $this->license = LicenseType::tryFrom($values[RequestAttribute::LICENSE_ATTRIBUTE]); } } diff --git a/app/Http/Requests/Photo/SetPhotoLicenseRequest.php b/app/Http/Requests/Photo/SetPhotoLicenseRequest.php index 982f856b0a6..1e4b7165990 100644 --- a/app/Http/Requests/Photo/SetPhotoLicenseRequest.php +++ b/app/Http/Requests/Photo/SetPhotoLicenseRequest.php @@ -5,6 +5,7 @@ use App\Contracts\Http\Requests\HasLicense; use App\Contracts\Http\Requests\HasPhoto; use App\Contracts\Http\Requests\RequestAttribute; +use App\Enum\LicenseType; use App\Http\Requests\BaseApiRequest; use App\Http\Requests\Traits\Authorize\AuthorizeCanEditPhotoTrait; use App\Http\Requests\Traits\HasLicenseTrait; @@ -34,6 +35,6 @@ protected function processValidatedValues(array $values, array $files): void /** @var ?string $photoID */ $photoID = $values[RequestAttribute::PHOTO_ID_ATTRIBUTE]; $this->photo = Photo::query()->findOrFail($photoID); - $this->license = $values[RequestAttribute::LICENSE_ATTRIBUTE]; + $this->license = LicenseType::tryFrom($values[RequestAttribute::LICENSE_ATTRIBUTE]); } } diff --git a/app/Http/Requests/Settings/SetDefaultLicenseSettingRequest.php b/app/Http/Requests/Settings/SetDefaultLicenseSettingRequest.php index 778269363af..1c4be3944c3 100644 --- a/app/Http/Requests/Settings/SetDefaultLicenseSettingRequest.php +++ b/app/Http/Requests/Settings/SetDefaultLicenseSettingRequest.php @@ -2,18 +2,19 @@ namespace App\Http\Requests\Settings; -use App\Rules\LicenseRule; +use App\Enum\LicenseType; +use Illuminate\Validation\Rules\Enum; class SetDefaultLicenseSettingRequest extends AbstractSettingRequest { public function rules(): array { - return ['license' => ['required', new LicenseRule()]]; + return ['license' => ['required', new Enum(LicenseType::class)]]; } protected function processValidatedValues(array $values, array $files): void { $this->name = 'default_license'; - $this->value = $values['license']; + $this->value = LicenseType::from($values['license']); } } diff --git a/app/Http/Requests/Traits/HasLicenseTrait.php b/app/Http/Requests/Traits/HasLicenseTrait.php index ab0b8ba2f5f..7936924f992 100644 --- a/app/Http/Requests/Traits/HasLicenseTrait.php +++ b/app/Http/Requests/Traits/HasLicenseTrait.php @@ -2,14 +2,16 @@ namespace App\Http\Requests\Traits; +use App\Enum\LicenseType; + trait HasLicenseTrait { - protected string $license = 'none'; + protected LicenseType $license = LicenseType::NONE; /** - * @return string + * @return LicenseType */ - public function license(): string + public function license(): LicenseType { return $this->license; } diff --git a/app/Http/Resources/ConfigurationResource.php b/app/Http/Resources/ConfigurationResource.php index 2fdc76960e7..73aaf250303 100644 --- a/app/Http/Resources/ConfigurationResource.php +++ b/app/Http/Resources/ConfigurationResource.php @@ -9,6 +9,7 @@ use App\Enum\AlbumLayoutType; use App\Enum\DefaultAlbumProtectionType; use App\Enum\ImageOverlayType; +use App\Enum\LicenseType; use App\Enum\ThumbAlbumSubtitleType; use App\Exceptions\Handler; use App\Metadata\Versions\InstalledVersion; @@ -84,7 +85,7 @@ public function toArray($request): array 'allow_online_git_pull' => Configs::getValueAsBool('allow_online_git_pull'), 'apply_composer_update' => Configs::getValueAsBool('apply_composer_update'), 'compression_quality' => Configs::getValueAsInt('compression_quality'), - 'default_license' => Configs::getValueAsString('default_license'), + 'default_license' => Configs::getValueAsEnum('default_license', LicenseType::class), 'delete_imported' => Configs::getValueAsBool('delete_imported'), 'dropbox_key' => Configs::getValueAsString('dropbox_key'), 'editor_enabled' => Configs::getValueAsBool('editor_enabled'), diff --git a/app/Http/Resources/Models/AlbumResource.php b/app/Http/Resources/Models/AlbumResource.php index a093e1fb998..b5a03fec7a4 100644 --- a/app/Http/Resources/Models/AlbumResource.php +++ b/app/Http/Resources/Models/AlbumResource.php @@ -40,7 +40,7 @@ public function toArray($request) // attributes 'description' => $this->resource->description, 'track_url' => $this->resource->track_url, - 'license' => $this->resource->license, + 'license' => $this->resource->license->localization(), 'sorting' => $this->resource->sorting, // children diff --git a/app/Http/Resources/Models/PhotoResource.php b/app/Http/Resources/Models/PhotoResource.php index 5578de6822a..54302d645e3 100644 --- a/app/Http/Resources/Models/PhotoResource.php +++ b/app/Http/Resources/Models/PhotoResource.php @@ -70,7 +70,7 @@ public function toArray($request) 'iso' => $this->resource->iso, 'latitude' => $this->resource->latitude, 'lens' => $this->resource->lens, - 'license' => $this->resource->license, + 'license' => $this->resource->license->localization(), 'live_photo_checksum' => $this->resource->live_photo_checksum, 'live_photo_content_id' => $this->resource->live_photo_content_id, 'live_photo_url' => $this->resource->live_photo_url, diff --git a/app/Http/RuleSets/Album/SetAlbumLicenseRuleSet.php b/app/Http/RuleSets/Album/SetAlbumLicenseRuleSet.php index 28464f3fa84..c7a01017f24 100644 --- a/app/Http/RuleSets/Album/SetAlbumLicenseRuleSet.php +++ b/app/Http/RuleSets/Album/SetAlbumLicenseRuleSet.php @@ -4,8 +4,9 @@ use App\Contracts\Http\Requests\RequestAttribute; use App\Contracts\Http\RuleSet; -use App\Rules\LicenseRule; +use App\Enum\LicenseType; use App\Rules\RandomIDRule; +use Illuminate\Validation\Rules\Enum; /** * Rules applied when changing the license of an album. @@ -19,7 +20,7 @@ public static function rules(): array { return [ RequestAttribute::ALBUM_ID_ATTRIBUTE => ['required', new RandomIDRule(false)], - RequestAttribute::LICENSE_ATTRIBUTE => ['required', new LicenseRule()], + RequestAttribute::LICENSE_ATTRIBUTE => ['required', new Enum(LicenseType::class)], ]; } } diff --git a/app/Http/RuleSets/Photo/SetPhotoLicenseRuleSet.php b/app/Http/RuleSets/Photo/SetPhotoLicenseRuleSet.php index 22c468ff519..6d8497e5d38 100644 --- a/app/Http/RuleSets/Photo/SetPhotoLicenseRuleSet.php +++ b/app/Http/RuleSets/Photo/SetPhotoLicenseRuleSet.php @@ -4,8 +4,9 @@ use App\Contracts\Http\Requests\RequestAttribute; use App\Contracts\Http\RuleSet; -use App\Rules\LicenseRule; +use App\Enum\LicenseType; use App\Rules\RandomIDRule; +use Illuminate\Validation\Rules\Enum; /** * Rule applied when changing the license of a photo. @@ -19,7 +20,7 @@ public static function rules(): array { return [ RequestAttribute::PHOTO_ID_ATTRIBUTE => ['required', new RandomIDRule(false)], - RequestAttribute::LICENSE_ATTRIBUTE => ['required', new LicenseRule()], + RequestAttribute::LICENSE_ATTRIBUTE => ['required', new Enum(LicenseType::class)], ]; } } diff --git a/app/Metadata/Extractor.php b/app/Metadata/Extractor.php index d6a333fe80e..26067e5de20 100644 --- a/app/Metadata/Extractor.php +++ b/app/Metadata/Extractor.php @@ -432,7 +432,7 @@ public static function createFromFile(NativeLocalFile $file, int $fileLastModifi if ($metadata->shutter !== null && $metadata->shutter !== '') { // TODO: If we add the suffix " s" here, we should also normalize the fraction here. // It does not make any sense to strip-off the suffix again in Photo and re-add it again. - $metadata->shutter = $metadata->shutter . self::SUFFIX_SEC_UNIT; + $metadata->shutter .= self::SUFFIX_SEC_UNIT; } // Decode location data, it can be longer than is acceptable for DB that's the reason for substr diff --git a/app/Models/Album.php b/app/Models/Album.php index 5d7c7ed4aeb..c1f55cc3854 100644 --- a/app/Models/Album.php +++ b/app/Models/Album.php @@ -3,6 +3,8 @@ namespace App\Models; use App\Actions\Album\Delete; +use App\Enum\LicenseType; +use App\Exceptions\ConfigurationKeyMissingException; use App\Exceptions\Internal\QueryBuilderException; use App\Exceptions\MediaFileOperationException; use App\Exceptions\ModelDBException; @@ -33,7 +35,7 @@ * @property int $num_children The number of children. * @property Collection $all_photos * @property int $num_photos The number of photos in this album (excluding photos in subalbums). - * @property string $license + * @property LicenseType $license * @property string|null $cover_id * @property Photo|null $cover * @property string|null $track_short_path @@ -156,6 +158,11 @@ class Album extends BaseAlbum implements Node */ protected $with = ['cover', 'cover.size_variants', 'thumb']; + protected function _toArray(): array + { + return parent::toArray(); + } + /** * Return the relationship between this album and photos which are * direct children of this album. @@ -219,13 +226,22 @@ public function cover(): HasOne return $this->hasOne(Photo::class, 'id', 'cover_id'); } - protected function getLicenseAttribute(string $value): string + /** + * Return the License used by the album. + * + * @param string $value + * + * @return LicenseType + * + * @throws ConfigurationKeyMissingException + */ + protected function getLicenseAttribute(string $value): LicenseType { if ($value === 'none') { - return Configs::getValueAsString('default_license'); + return Configs::getValueAsEnum('default_license', LicenseType::class); } - return $value; + return LicenseType::from($value); } /** diff --git a/app/Models/Configs.php b/app/Models/Configs.php index 7fc1e15d442..000da67db04 100644 --- a/app/Models/Configs.php +++ b/app/Models/Configs.php @@ -2,13 +2,13 @@ namespace App\Models; +use App\Enum\LicenseType; use App\Exceptions\ConfigurationKeyMissingException; use App\Exceptions\Internal\InvalidConfigOption; use App\Exceptions\Internal\LycheeAssertionError; use App\Exceptions\Internal\QueryBuilderException; use App\Exceptions\ModelDBException; use App\Exceptions\UnexpectedException; -use App\Facades\Helpers; use App\Models\Builders\ConfigsBuilder; use App\Models\Extensions\ConfigsHas; use App\Models\Extensions\ThrowsConsistentExceptions; @@ -130,7 +130,7 @@ public function sanity(?string $candidateValue, ?string $message_template = null } break; case self::LICENSE: - if (!in_array($candidateValue, Helpers::get_all_licenses(), true)) { + if (LicenseType::tryFrom($candidateValue) === null) { $message = sprintf($message_template, 'a valid license'); } break; diff --git a/app/Models/Photo.php b/app/Models/Photo.php index 7e685c35511..eee9734ec71 100644 --- a/app/Models/Photo.php +++ b/app/Models/Photo.php @@ -7,6 +7,7 @@ use App\Casts\DateTimeWithTimezoneCast; use App\Casts\MustNotSetCast; use App\Constants\RandomID; +use App\Enum\LicenseType; use App\Exceptions\Internal\IllegalOrderOfOperationException; use App\Exceptions\Internal\LycheeAssertionError; use App\Exceptions\Internal\ZeroModuloException; @@ -61,7 +62,7 @@ * @property string|null $album_id * @property string $checksum * @property string $original_checksum - * @property string $license + * @property LicenseType $license * @property Carbon $created_at * @property Carbon $updated_at * @property string|null $live_photo_content_id @@ -157,6 +158,18 @@ class Photo extends Model 'img_direction' => 'float', ]; + /** + * @var array The list of attributes which exist as columns of the DB + * relation but shall not be serialized to JSON + */ + protected $hidden = [ + RandomID::LEGACY_ID_NAME, + 'album', // do not serialize relation in order to avoid infinite loops + 'owner', // do not serialize relation + 'owner_id', + 'live_photo_short_path', // serialize live_photo_url instead + ]; + /** * @param $query * @@ -167,6 +180,11 @@ public function newEloquentBuilder($query): PhotoBuilder return new PhotoBuilder($query); } + protected function _toArray(): array + { + return parent::toArray(); + } + /** * Return the relationship between a Photo and its Album. * @@ -224,8 +242,8 @@ protected function getShutterAttribute(?string $shutter): ?string $b = intval($matches[2]); if ($b !== 0) { $gcd = Helpers::gcd($a, $b); - $a = $a / $gcd; - $b = $b / $gcd; + $a /= $gcd; + $b /= $gcd; if ($a === 1) { $shutter = '1/' . $b . ' s'; } else { @@ -257,22 +275,23 @@ protected function getShutterAttribute(?string $shutter): ?string * @param ?string $license the value from the database passed in by * the Eloquent framework * - * @return string + * @return LicenseType */ - protected function getLicenseAttribute(?string $license): string + protected function getLicenseAttribute(?string $license): LicenseType { if ($license === null) { - return Configs::getValueAsString('default_license'); + return Configs::getValueAsEnum('default_license', LicenseType::class); } - if ($license !== 'none') { - return $license; + if (LicenseType::tryFrom($license) !== null && LicenseType::tryFrom($license) !== LicenseType::NONE) { + return LicenseType::from($license); } - if ($this->album_id !== null) { + + if ($this->album_id !== null && $this->relationLoaded('album')) { return $this->album->license; } - return Configs::getValueAsString('default_license'); + return Configs::getValueAsEnum('default_license', LicenseType::class); } /** @@ -339,6 +358,29 @@ protected function getLivePhotoUrlAttribute(): ?string return ($path === null || $path === '') ? null : Storage::url($path); } + /** + * Accessor for the virtual attribute $aspect_ratio. + * + * Returns the correct aspect ratio for + * - photos + * - and videos where small or medium exists + * Otherwise returns 1 (square) + * + * @return float aspect ratio to use in display mode + */ + protected function getAspectRatioAttribute(): float + { + if ($this->isVideo() && + $this->size_variants->getSmall() === null && + $this->size_variants->getMedium() === null) { + return 1; + } + + return $this->size_variants->getOriginal()?->ratio ?? + $this->size_variants->getMedium()?->ratio ?? + $this->size_variants->getSmall()?->ratio ?? 1; + } + /** * Checks if the photo represents a (real) photo (as opposed to video or raw). * diff --git a/app/Rules/LicenseRule.php b/app/Rules/LicenseRule.php deleted file mode 100644 index 401c3ed4474..00000000000 --- a/app/Rules/LicenseRule.php +++ /dev/null @@ -1,30 +0,0 @@ -update_fields($default_values); // Get all CC licences - /** @var Collection $photos */ - $photos = Photo::where('license', 'like', 'CC-%')->get(); + /** @var Collection $photos */ + $photos = DB::table('photos')->where('license', 'like', 'CC-%')->get(); if ($photos->isEmpty()) { return; } foreach ($photos as $photo) { - $photo->license = $photo->license . '-4.0'; - $photo->save(); + DB::table('photos')->where('id', '=', $photo->id)->update(['license' => $photo->license . '-4.0']); } } @@ -61,15 +60,14 @@ public function up(): void public function down(): void { // Get all CC licences - /** @var Collection $photos */ - $photos = Photo::where('license', 'like', 'CC-%')->get(); + /** @var Collection $photos */ + $photos = DB::table('photos')->where('license', 'like', 'CC-%')->get(); if ($photos->isEmpty()) { return; } foreach ($photos as $photo) { // Delete version - $photo->license = substr($photo->license, 0, -4); - $photo->save(); + DB::table('photos')->where('id', '=', $photo->id)->update(['license' => substr($photo->license, 0, -4)]); } } }; diff --git a/database/migrations/2021_12_04_181200_refactor_models.php b/database/migrations/2021_12_04_181200_refactor_models.php index ca20eef224b..3a93b126894 100644 --- a/database/migrations/2021_12_04_181200_refactor_models.php +++ b/database/migrations/2021_12_04_181200_refactor_models.php @@ -1857,7 +1857,7 @@ private function convertLegacyIdToTime(int $id): Carbon // This is Oct 21st, 1976, so it is also smaller than `self::BIRTH_OF_LYCHEE` if ($id < self::MAX_SIGNED_32BIT_INT / 10 - 1) { - $id = $id * 10; + $id *= 10; } // This will never be true for 32bit platforms, but might be true @@ -1865,7 +1865,7 @@ private function convertLegacyIdToTime(int $id): Carbon if ($id > self::MAX_SIGNED_32BIT_INT) { $id = (float) $id; while ($id >= self::MAX_SIGNED_32BIT_INT) { - $id = $id / 10.0; + $id /= 10.0; } } diff --git a/tests/Feature/BasePhotosAddHandler.php b/tests/Feature/BasePhotosAddHandler.php index 063c9dc9d1d..7efe36a035d 100644 --- a/tests/Feature/BasePhotosAddHandler.php +++ b/tests/Feature/BasePhotosAddHandler.php @@ -489,7 +489,7 @@ public function testUploadMultibyteTitle(): void 'title' => 'fin de journée', 'description' => null, 'tags' => [], - 'license' => 'none', + 'license' => 'None', 'is_public' => false, 'is_starred' => false, 'iso' => '400', diff --git a/tests/Feature/PhotosOperationsTest.php b/tests/Feature/PhotosOperationsTest.php index e62863e6397..228e539b6c9 100644 --- a/tests/Feature/PhotosOperationsTest.php +++ b/tests/Feature/PhotosOperationsTest.php @@ -89,7 +89,7 @@ public function testManyFunctionsAtOnce(): void $this->photos_tests->set_tag([$id], ['night']); $this->photos_tests->set_tag([$id], ['trees'], false); $this->photos_tests->set_public($id, true); - $this->photos_tests->set_license($id, 'WTFPL', 422, 'license must be one out of'); + $this->photos_tests->set_license($id, 'WTFPL', 422, 'The selected license is invalid.'); $this->photos_tests->set_license($id, 'CC0'); $this->photos_tests->set_license($id, 'CC-BY-1.0'); $this->photos_tests->set_license($id, 'CC-BY-2.0'); @@ -150,7 +150,7 @@ public function testManyFunctionsAtOnce(): void 'album_id' => null, 'id' => $id, 'created_at' => $updated_taken_at->setTimezone('UTC')->format('Y-m-d\TH:i:sP'), - 'license' => 'reserved', + 'license' => 'All Rights Reserved', 'is_public' => true, 'is_starred' => true, 'tags' => ['night', 'trees'], @@ -190,7 +190,7 @@ public function testManyFunctionsAtOnce(): void 'focal' => '16 mm', 'iso' => '1250', 'lens' => 'EF16-35mm f/2.8L USM', - 'license' => 'reserved', + 'license' => 'All Rights Reserved', 'make' => 'Canon', 'model' => 'Canon EOS R', 'is_public' => true, From 7111f65e98742f78d3362eb478cd96c02a577679 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sat, 23 Sep 2023 17:04:01 +0200 Subject: [PATCH 052/209] Minor changes in prevision for Livewire. (#2026) --- .github/workflows/.env.mariadb | 2 +- .github/workflows/.env.postgresql | 2 +- .github/workflows/.env.sqlite | 2 +- .github/workflows/CICD.yml | 17 +++--- .gitignore | 35 ++++++++--- .../Pipes/Checks/IniSettingsCheck.php | 27 +------- app/Actions/Photo/Duplicate.php | 1 + app/Assets/Helpers.php | 61 +++++++------------ app/Facades/Helpers.php | 4 +- .../Collections/AlbumForestResource.php | 4 +- app/Policies/PhotoPolicy.php | 1 + tests/Feature/Traits/CatchFailures.php | 2 +- 12 files changed, 68 insertions(+), 90 deletions(-) diff --git a/.github/workflows/.env.mariadb b/.github/workflows/.env.mariadb index ff63b84d058..5b2b4f189d1 100644 --- a/.github/workflows/.env.mariadb +++ b/.github/workflows/.env.mariadb @@ -1,6 +1,6 @@ APP_NAME=Lychee APP_URL=https://localhost -APP_ENV=testing +APP_ENV=dev APP_KEY=SomeRandomString APP_DEBUG=true diff --git a/.github/workflows/.env.postgresql b/.github/workflows/.env.postgresql index ce31ff92ff1..2d6c582c84b 100644 --- a/.github/workflows/.env.postgresql +++ b/.github/workflows/.env.postgresql @@ -1,6 +1,6 @@ APP_NAME=Lychee APP_URL=https://localhost -APP_ENV=testing +APP_ENV=dev APP_KEY=SomeRandomString APP_DEBUG=true diff --git a/.github/workflows/.env.sqlite b/.github/workflows/.env.sqlite index ff3c90395bc..1aff99054cb 100644 --- a/.github/workflows/.env.sqlite +++ b/.github/workflows/.env.sqlite @@ -1,6 +1,6 @@ APP_NAME=Lychee APP_URL=https://localhost -APP_ENV=testing +APP_ENV=dev APP_KEY=SomeRandomString APP_DEBUG=true diff --git a/.github/workflows/CICD.yml b/.github/workflows/CICD.yml index 86c1f56a00b..32d559a64eb 100644 --- a/.github/workflows/CICD.yml +++ b/.github/workflows/CICD.yml @@ -30,7 +30,7 @@ jobs: access_token: ${{ github.token }} php_syntax_errors: - name: 1️⃣ PHP - Syntax errors + name: 1️⃣ PHP 8.1 - Syntax errors runs-on: ubuntu-latest needs: - kill_previous @@ -50,7 +50,7 @@ jobs: run: vendor/bin/parallel-lint --exclude .git --exclude vendor . code_style_errors: - name: 2️⃣ PHP - Code Style errors + name: 2️⃣ PHP 8.1 - Code Style errors runs-on: ubuntu-latest needs: - php_syntax_errors @@ -58,7 +58,7 @@ jobs: - name: Set up PHP uses: shivammathur/setup-php@v2 with: - php-version: latest + php-version: 8.1 - name: Checkout code uses: actions/checkout@v3 @@ -91,7 +91,7 @@ jobs: run: vendor/bin/phpstan analyze tests: - name: 2️⃣ PHP ${{ matrix.php-version }} - ${{ matrix.sql-versions }} + name: 2️⃣ PHP ${{ matrix.php-version }} - ${{ matrix.sql-versions }} -- ${{ matrix.test-suite }} needs: - php_syntax_errors runs-on: ubuntu-latest @@ -104,6 +104,8 @@ jobs: - mariadb - postgresql - sqlite + test-suite: + - Feature # Service containers to run with `container-job` services: # Label used to access the service container @@ -162,11 +164,11 @@ jobs: php artisan optimize php artisan migrate - - name: Apply tests - run: XDEBUG_MODE=coverage vendor/bin/phpunit + - name: Apply tests ${{ matrix.test-suite }} + run: XDEBUG_MODE=coverage vendor/bin/phpunit --testsuite ${{ matrix.test-suite }} - name: Codecov - uses: codecov/codecov-action@v1 + uses: codecov/codecov-action@v3 - name: Make sure we can go backward run: php artisan migrate:rollback @@ -180,7 +182,6 @@ jobs: matrix: php-version: - 8.1 - - 8.2 sql-versions: - mariadb - postgresql diff --git a/.gitignore b/.gitignore index 3a2bf144a0f..e380c9e2f36 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,22 @@ -/node_modules +# We don't care about those +node_modules build/* +# Those are personal public/dist/user.css +public/dist/custom.js +# Pictures we do not commit public/uploads/** +# Storage stuff: useless /storage/*.key /storage/clockwork/ + +# Those are generated /vendor + +# IDE & Cache stuff /.idea /.vscode /.vagrant @@ -15,18 +24,10 @@ Homestead.json Homestead.yaml npm-debug.log yarn-error.log -.env -.env.* - -aliases - -Lychee/* .phpunit* _ide* - .php_cs.cache .php-cs-fixer.cache - *.log clover.xml *.swp @@ -37,6 +38,20 @@ installed.log storage/bootstrap/cache/* storage/image-jobs/* +# used by Vite +public/hot + sync/* + +# Local DB for easy deployment backup.sql -reset.sh \ No newline at end of file +*-bck + +# Make sure we don't commit secrets +.env +.env.* + +aliases + +# Building stuff for releaseses +Lychee/* diff --git a/app/Actions/Diagnostics/Pipes/Checks/IniSettingsCheck.php b/app/Actions/Diagnostics/Pipes/Checks/IniSettingsCheck.php index efcfc473b4a..846a6137490 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/IniSettingsCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/IniSettingsCheck.php @@ -23,10 +23,10 @@ public function handle(array &$data, \Closure $next): array // Load settings $settings = Configs::get(); - if ($this->convert_size(ini_get('upload_max_filesize')) < $this->convert_size('30M')) { + if (Helpers::convertSize(ini_get('upload_max_filesize')) < Helpers::convertSize(('30M'))) { $data[] = 'Warning: You may experience problems when uploading a photo of large size. Take a look in the FAQ for details.'; } - if ($this->convert_size(ini_get('post_max_size')) < $this->convert_size('100M')) { + if (Helpers::convertSize(ini_get('post_max_size')) < Helpers::convertSize(('100M'))) { $data[] = 'Warning: You may experience problems when uploading a photo of large size. Take a look in the FAQ for details.'; } $max_execution_time = intval(ini_get('max_execution_time')); @@ -93,27 +93,4 @@ public function handle(array &$data, \Closure $next): array return $next($data); } - - /** - * Return true if the upload_max_filesize is bellow what we want. - */ - private function convert_size(string $size): int - { - $size = trim($size); - $last = strtolower($size[strlen($size) - 1]); - $size = intval($size); - - switch ($last) { - case 'g': - $size *= 1024; - // no break - case 'm': - $size *= 1024; - // no break - case 'k': - $size *= 1024; - } - - return $size; - } } diff --git a/app/Actions/Photo/Duplicate.php b/app/Actions/Photo/Duplicate.php index e513f2799e0..a72078aa769 100644 --- a/app/Actions/Photo/Duplicate.php +++ b/app/Actions/Photo/Duplicate.php @@ -27,6 +27,7 @@ public function do(EloquentCollection $photos, ?Album $album): BaseCollection foreach ($photos as $photo) { $duplicate = $photo->replicate(); $duplicate->album_id = $album?->id; + $duplicate->setRelation('album', $album); if ($album !== null) { $duplicate->owner_id = $album->owner_id; } diff --git a/app/Assets/Helpers.php b/app/Assets/Helpers.php index 03f7549f79a..fbea1f9f342 100644 --- a/app/Assets/Helpers.php +++ b/app/Assets/Helpers.php @@ -9,16 +9,6 @@ class Helpers { - private int $numTab = 0; - - /** - * Initialize the Facade. - */ - public function __construct() - { - $this->numTab = 0; - } - /** * Add UnixTimeStamp to file path suffix. * @@ -153,34 +143,6 @@ public function gcd(int $a, int $b): int return ($a % $b) !== 0 ? $this->gcd($b, $a % $b) : $b; } - /** - * Return incrementing numbers. - */ - public function data_index(): int - { - $this->numTab++; - - return $this->numTab; - } - - /** - * Reset and return incrementing numbers. - */ - public function data_index_r(): int - { - $this->numTab = 1; - - return $this->numTab; - } - - /** - * Reset the incrementing number. - */ - public function data_index_set(int $idx = 0): void - { - $this->numTab = $idx; - } - /** * From https://www.php.net/manual/en/function.disk-total-space.php. * @@ -232,4 +194,27 @@ public function secondsToHMS(int|float $d): string . ($m > 0 ? $m . 'm' : '') . ($s > 0 || ($h === 0 && $m === 0) ? $s . 's' : ''); } + + /** + * Return true if the upload_max_filesize is bellow what we want. + */ + public function convertSize(string $size): int + { + $size = trim($size); + $last = strtolower($size[strlen($size) - 1]); + $size = intval($size); + + switch ($last) { + case 'g': + $size *= 1024; + // no break + case 'm': + $size *= 1024; + // no break + case 'k': + $size *= 1024; + } + + return $size; + } } diff --git a/app/Facades/Helpers.php b/app/Facades/Helpers.php index 9c0262c11c5..7fee525703a 100644 --- a/app/Facades/Helpers.php +++ b/app/Facades/Helpers.php @@ -17,11 +17,9 @@ * @method static bool hasPermissions(string $path) * @method static bool hasFullPermissions(string $path) * @method static int gcd(int $a, int $b) - * @method static int data_index() - * @method static int data_index_r() - * @method static void data_index_set(int $idx = 0) * @method static bool isExecAvailable() * @method static string secondsToHMS(int|float $d) + * @method static int convertSize(string $size) */ class Helpers extends Facade { diff --git a/app/Http/Resources/Collections/AlbumForestResource.php b/app/Http/Resources/Collections/AlbumForestResource.php index d659e09ea63..03b59854ed7 100644 --- a/app/Http/Resources/Collections/AlbumForestResource.php +++ b/app/Http/Resources/Collections/AlbumForestResource.php @@ -12,8 +12,8 @@ class AlbumForestResource extends JsonResource { public function __construct( - private Collection $albums, - private ?Collection $sharedAlbums = null + public Collection $albums, + public ?Collection $sharedAlbums = null ) { // Laravel applies a shortcut when this value === null but not when it is something else. parent::__construct('must_not_be_null'); diff --git a/app/Policies/PhotoPolicy.php b/app/Policies/PhotoPolicy.php index 0143393c537..f35d4671f77 100644 --- a/app/Policies/PhotoPolicy.php +++ b/app/Policies/PhotoPolicy.php @@ -20,6 +20,7 @@ class PhotoPolicy extends BasePolicy public const CAN_EDIT = 'canEdit'; public const CAN_EDIT_ID = 'canEditById'; public const CAN_ACCESS_FULL_PHOTO = 'canAccessFullPhoto'; + public const CAN_DELETE_BY_ID = 'canDeleteById'; /** * @throws FrameworkException diff --git a/tests/Feature/Traits/CatchFailures.php b/tests/Feature/Traits/CatchFailures.php index e11110d16bd..4bb5f9553cc 100644 --- a/tests/Feature/Traits/CatchFailures.php +++ b/tests/Feature/Traits/CatchFailures.php @@ -28,7 +28,7 @@ protected function assertStatus(TestResponse $response, int $expectedStatusCode) dump($exception); } // We remove 204 as it does not have content - if (!in_array($response->getStatusCode(), [204, $expectedStatusCode], true)) { + if (!in_array($response->getStatusCode(), [204, 302, $expectedStatusCode], true)) { $exception = $response->json(); $this->trimException($exception); dump($exception); From a87d2e2bd3c2917b3444311693ac848078babced Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sun, 24 Sep 2023 16:54:16 +0200 Subject: [PATCH 053/209] version 4.13.0 (#2027) --- .../2023_09_23_204910_bump_version041300.php | 26 +++++++++++++++++++ version.md | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 database/migrations/2023_09_23_204910_bump_version041300.php diff --git a/database/migrations/2023_09_23_204910_bump_version041300.php b/database/migrations/2023_09_23_204910_bump_version041300.php new file mode 100644 index 00000000000..8a2747545c5 --- /dev/null +++ b/database/migrations/2023_09_23_204910_bump_version041300.php @@ -0,0 +1,26 @@ +where('key', 'version')->update(['value' => '041300']); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down(): void + { + DB::table('configs')->where('key', 'version')->update(['value' => '041200']); + } +}; diff --git a/version.md b/version.md index bcd250ed080..01b73abe550 100644 --- a/version.md +++ b/version.md @@ -1 +1 @@ -4.12.0 \ No newline at end of file +4.13.0 \ No newline at end of file From 01c24457610bc9631efde5d9f2829be87724f412 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Fri, 29 Sep 2023 16:32:12 +0200 Subject: [PATCH 054/209] improved honeypot logic & add more honey (#2031) * improved honeypot logic & add more honey --- app/Actions/HoneyPot/BasePipe.php | 58 +++++++++++ app/Actions/HoneyPot/DefaultNotFound.php | 17 ++++ app/Actions/HoneyPot/EnvAccessTentative.php | 23 +++++ .../HoneyPot/FlaggedPathsAccessTentative.php | 42 ++++++++ app/Actions/HoneyPot/HoneyIsActive.php | 22 +++++ app/Http/Controllers/HoneyPotController.php | 82 ++++----------- config/honeypot.php | 99 ++++++++++++++----- 7 files changed, 257 insertions(+), 86 deletions(-) create mode 100644 app/Actions/HoneyPot/BasePipe.php create mode 100644 app/Actions/HoneyPot/DefaultNotFound.php create mode 100644 app/Actions/HoneyPot/EnvAccessTentative.php create mode 100644 app/Actions/HoneyPot/FlaggedPathsAccessTentative.php create mode 100644 app/Actions/HoneyPot/HoneyIsActive.php diff --git a/app/Actions/HoneyPot/BasePipe.php b/app/Actions/HoneyPot/BasePipe.php new file mode 100644 index 00000000000..09fb4947159 --- /dev/null +++ b/app/Actions/HoneyPot/BasePipe.php @@ -0,0 +1,58 @@ +throwNotFound($path); + } +} diff --git a/app/Actions/HoneyPot/EnvAccessTentative.php b/app/Actions/HoneyPot/EnvAccessTentative.php new file mode 100644 index 00000000000..c478fda93ad --- /dev/null +++ b/app/Actions/HoneyPot/EnvAccessTentative.php @@ -0,0 +1,23 @@ +throwTeaPot($path); + } + + $next($path); + } +} diff --git a/app/Actions/HoneyPot/FlaggedPathsAccessTentative.php b/app/Actions/HoneyPot/FlaggedPathsAccessTentative.php new file mode 100644 index 00000000000..da42bcd610f --- /dev/null +++ b/app/Actions/HoneyPot/FlaggedPathsAccessTentative.php @@ -0,0 +1,42 @@ + $honeypot_paths_array */ + $honeypot_paths_array = config('honeypot.paths', []); + + /** @var array,suffix:array}> $honeypot_xpaths_array */ + $honeypot_xpaths_array = config('honeypot.xpaths', []); + + foreach ($honeypot_xpaths_array as $xpaths) { + foreach ($xpaths['prefix'] as $prefix) { + foreach ($xpaths['suffix'] as $suffix) { + $honeypot_paths_array[] = $prefix . '.' . $suffix; + } + } + } + + // Turn the path array into a regex pattern. + // We escape . and / to avoid confusions with other regex characters + $honeypot_paths = '/^(' . str_replace(['.', '/'], ['\.', '\/'], implode('|', $honeypot_paths_array)) . ')/i'; + + // If the user tries to access a honeypot path, fail with the teapot code. + if (preg_match($honeypot_paths, $path) !== 0) { + $this->throwTeaPot($path); + } + + $next($path); + } +} diff --git a/app/Actions/HoneyPot/HoneyIsActive.php b/app/Actions/HoneyPot/HoneyIsActive.php new file mode 100644 index 00000000000..631526fe9fc --- /dev/null +++ b/app/Actions/HoneyPot/HoneyIsActive.php @@ -0,0 +1,22 @@ +throwNotFound($path); + } + + $next($path); + } +} diff --git a/app/Http/Controllers/HoneyPotController.php b/app/Http/Controllers/HoneyPotController.php index ca41bcfcb21..ca8a6617e75 100644 --- a/app/Http/Controllers/HoneyPotController.php +++ b/app/Http/Controllers/HoneyPotController.php @@ -2,10 +2,12 @@ namespace App\Http\Controllers; -use App\Exceptions\HttpHoneyPotException; +use App\Actions\HoneyPot\DefaultNotFound; +use App\Actions\HoneyPot\EnvAccessTentative; +use App\Actions\HoneyPot\FlaggedPathsAccessTentative; +use App\Actions\HoneyPot\HoneyIsActive; +use Illuminate\Pipeline\Pipeline; use Illuminate\Routing\Controller; -use function Safe\preg_match; -use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; /** * This is a HoneyPot. We use this to allow Fail2Ban to stop scanning. @@ -14,71 +16,23 @@ */ class HoneyPotController extends Controller { - public function __invoke(string $path = ''): void - { - // Check if Honey is available - if (config('honeypot.enabled', true) !== true) { - $this->throwNotFound($path); - } - - /** @var array $honeypot_paths_array */ - $honeypot_paths_array = config('honeypot.paths', []); - - /** @var array $honeypot_xpaths_array_prefix */ - $honeypot_xpaths_array_prefix = config('honeypot.xpaths.prefix', []); - - /** @var array $honeypot_xpaths_array_suffix */ - $honeypot_xpaths_array_suffix = config('honeypot.xpaths.suffix', []); - - foreach ($honeypot_xpaths_array_prefix as $prefix) { - foreach ($honeypot_xpaths_array_suffix as $suffix) { - $honeypot_paths_array[] = $prefix . '.' . $suffix; - } - } - - // Turn the path array into a regex pattern. - // We escape . and / to avoid confusions with other regex characters - $honeypot_paths = '/^(' . str_replace(['.', '/'], ['\.', '\/'], implode('|', $honeypot_paths_array)) . ')/i'; - - // If the user tries to access a honeypot path, fail with the teapot code. - if (preg_match($honeypot_paths, $path) !== 0) { - $this->throwTeaPot($path); - } - - // Otherwise just display our regular 404 page. - $this->throwNotFound($path); - } - /** - * using abort(404) does not give the info which path was called. - * This could be very useful when debugging. - * By throwing a proper exception we preserve this info. - * This will generate a log line of type ERROR. + * The array of class pipes. * - * @param string $path called - * - * @return never - * - * @throws NotFoundHttpException + * @var array */ - public function throwNotFound(string $path) - { - throw new NotFoundHttpException(sprintf('The route %s could not be found.', $path)); - } + private array $pipes = [ + HoneyIsActive::class, + EnvAccessTentative::class, + FlaggedPathsAccessTentative::class, + DefaultNotFound::class, + ]; - /** - * Similar to abort(404), abort(418) does not give info. - * It is more interesting to raise a proper exception. - * By having a proper exception we are also able to decrease the severity to NOTICE. - * - * @param string $path called - * - * @return never - * - * @throws HttpHoneyPotException - */ - public function throwTeaPot(string $path) + public function __invoke(string $path = ''): void { - throw new HttpHoneyPotException($path); + app(Pipeline::class) + ->send($path) + ->through($this->pipes) + ->thenReturn(); } } diff --git a/config/honeypot.php b/config/honeypot.php index a3b0dab0ba4..d41582474d3 100644 --- a/config/honeypot.php +++ b/config/honeypot.php @@ -24,41 +24,96 @@ 'pools/default/buckets', '__Additional', + 'CSS/Miniweb.css', 'wp-login.php', + 'wp-content/plugins/core-plugin/include.php', + 'wp-content/plugins/woocommerce/readme.txt', 'Portal/Portal.mwsl', 'Portal0000.htm', + 'ads.txt', 'aQQY', + 'UEPs', + 'HNAP1', 'nmaplowercheck1686252089', 'sdk', + + 'backup', + 'bc', + 'bk', + 'blog', + 'home', + 'main', + 'new', + 'newsite', + 'old', + 'test', + 'testing', + 'wordpress', + 'wp-admin/install.php', + 'wp-admin/setup-config.php', + 'wp', + 'xmlrpc.php', + + '.vscode/sftp.json', + 'aws.json', + 'awsconfig.json', + 'AwsConfig.json', + 'client_secrets.json', + 'conf.json', + 'config/config.json', + 'credentials/config.json', + 'database-config.json', + 'db.json', + 'env.json', + 'smtp.json', + 'ssh-config.json', + 'user-config.json', ], /** * Because of all the combinations, it is more interesting to do a cross product. */ 'xpaths' => [ - 'prefix' => [ - 'admin', - 'base', - 'default', - 'home', - 'indice', - 'inicio', - 'localstart', - 'main', - 'menu', - 'start', - ], - - 'suffix' => [ - 'asp', - 'aspx', - 'cgi', - 'html', - 'jhtml', - 'php', - 'pl', - 'shtml', + [ // admin, main default etc. + 'prefix' => [ + 'admin', + 'base', + 'default', + 'home', + 'indice', + 'inicio', + 'localstart', + 'main', + 'menu', + 'start', + ], + 'suffix' => [ + 'asp', + 'aspx', + 'cgi', + 'cfm', + 'html', + 'jhtml', + 'inc', + 'jsa', + 'jsp', + 'php', + 'pl', + 'shtml', + ], ], + [ // phpinfo sets + 'prefix' => [ + '', + '_', + '__', + 'html/', + ], + 'suffix' => [ + 'info.php', + 'phpinfo.php', + ], + ] ], ]; \ No newline at end of file From 6b2b04cf198c9b97af9b2661a6363036e3916ff6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sun, 1 Oct 2023 17:01:04 +0200 Subject: [PATCH 055/209] map providers are now specified in an Enum (#2033) --- app/Enum/MapProviders.php | 38 +++++++++++++++++++ .../Settings/SetMapProviderSettingRequest.php | 13 ++----- app/Http/Resources/ConfigurationResource.php | 3 +- app/Models/Configs.php | 7 ++++ .../2023_10_01_143159_config_map_provider.php | 22 +++++++++++ 5 files changed, 73 insertions(+), 10 deletions(-) create mode 100644 app/Enum/MapProviders.php create mode 100644 database/migrations/2023_10_01_143159_config_map_provider.php diff --git a/app/Enum/MapProviders.php b/app/Enum/MapProviders.php new file mode 100644 index 00000000000..943e4107343 --- /dev/null +++ b/app/Enum/MapProviders.php @@ -0,0 +1,38 @@ + 'https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}{r}.png', + self::OpenStreetMapOrg => 'https://tile.openstreetmap.org/{z}/{x}/{y}.png', + self::OpenStreetMapDe => 'https://tile.openstreetmap.de/{z}/{x}/{y}.png ', + self::OpenStreetMapFr => 'https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png ', + self::RRZE => 'https://{s}.osm.rrze.fau.de/osmhd/{z}/{x}/{y}.png', + }; + } + + public function getAtributionHtml(): string + { + return match ($this) { + self::Wikimedia => 'Wikimedia', + self::OpenStreetMapOrg => '© ' . __('lychee.OSM_CONTRIBUTORS') . '', + self::OpenStreetMapDe => '© ' . __('lychee.OSM_CONTRIBUTORS') . '', + self::OpenStreetMapFr => '© ' . __('lychee.OSM_CONTRIBUTORS') . '', + self::RRZE => '© ' . __('lychee.OSM_CONTRIBUTORS') . '', + }; + } +} diff --git a/app/Http/Requests/Settings/SetMapProviderSettingRequest.php b/app/Http/Requests/Settings/SetMapProviderSettingRequest.php index 8e23bd69bec..518583b9d43 100644 --- a/app/Http/Requests/Settings/SetMapProviderSettingRequest.php +++ b/app/Http/Requests/Settings/SetMapProviderSettingRequest.php @@ -2,7 +2,8 @@ namespace App\Http\Requests\Settings; -use Illuminate\Validation\Rule; +use App\Enum\MapProviders; +use Illuminate\Validation\Rules\Enum; class SetMapProviderSettingRequest extends AbstractSettingRequest { @@ -11,19 +12,13 @@ class SetMapProviderSettingRequest extends AbstractSettingRequest public function rules(): array { return [ - self::ATTRIBUTE => ['required', 'string', Rule::in([ - 'Wikimedia', - 'OpenStreetMap.org', - 'OpenStreetMap.de', - 'OpenStreetMap.fr', - 'RRZE', - ])], + self::ATTRIBUTE => ['required', new Enum(MapProviders::class)], ]; } protected function processValidatedValues(array $values, array $files): void { $this->name = self::ATTRIBUTE; - $this->value = $values[self::ATTRIBUTE]; + $this->value = MapProviders::from($values[self::ATTRIBUTE]); } } diff --git a/app/Http/Resources/ConfigurationResource.php b/app/Http/Resources/ConfigurationResource.php index 73aaf250303..7eaab13e0aa 100644 --- a/app/Http/Resources/ConfigurationResource.php +++ b/app/Http/Resources/ConfigurationResource.php @@ -10,6 +10,7 @@ use App\Enum\DefaultAlbumProtectionType; use App\Enum\ImageOverlayType; use App\Enum\LicenseType; +use App\Enum\MapProviders; use App\Enum\ThumbAlbumSubtitleType; use App\Exceptions\Handler; use App\Metadata\Versions\InstalledVersion; @@ -147,7 +148,7 @@ public function toArray($request): array 'map_display_direction' => Configs::getValueAsString('map_display_direction'), 'map_display_public' => Configs::getValueAsBool('map_display_public'), 'map_include_subalbums' => Configs::getValueAsBool('map_include_subalbums'), - 'map_provider' => Configs::getValueAsString('map_provider'), + 'map_provider' => Configs::getValueAsEnum('map_provider', MapProviders::class), 'mod_frame_enabled' => Configs::getValueAsBool('mod_frame_enabled'), 'mod_frame_refresh' => Configs::getValueAsInt('mod_frame_refresh'), 'new_photos_notification' => Configs::getValueAsBool('new_photos_notification'), diff --git a/app/Models/Configs.php b/app/Models/Configs.php index 000da67db04..2eb718a8ce1 100644 --- a/app/Models/Configs.php +++ b/app/Models/Configs.php @@ -3,6 +3,7 @@ namespace App\Models; use App\Enum\LicenseType; +use App\Enum\MapProviders; use App\Exceptions\ConfigurationKeyMissingException; use App\Exceptions\Internal\InvalidConfigOption; use App\Exceptions\Internal\LycheeAssertionError; @@ -61,6 +62,7 @@ class Configs extends Model protected const TERNARY = '0|1|2'; protected const DISABLED = ''; protected const LICENSE = 'license'; + protected const MAP_PROVIDER = 'map_provider'; /** * The attributes that are mass assignable. @@ -134,6 +136,11 @@ public function sanity(?string $candidateValue, ?string $message_template = null $message = sprintf($message_template, 'a valid license'); } break; + case self::MAP_PROVIDER: + if (MapProviders::tryFrom($candidateValue) === null) { + $message = sprintf($message_template, 'a valid map provider'); + } + break; default: $values = explode('|', $this->type_range); if (!in_array($candidateValue, $values, true)) { diff --git a/database/migrations/2023_10_01_143159_config_map_provider.php b/database/migrations/2023_10_01_143159_config_map_provider.php new file mode 100644 index 00000000000..df7fff2b900 --- /dev/null +++ b/database/migrations/2023_10_01_143159_config_map_provider.php @@ -0,0 +1,22 @@ +where('key', '=', 'map_provider')->update(['type_range' => 'map_provider']); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + DB::table('configs')->where('key', '=', 'map_provider')->update(['type_range' => 'Wikimedia|OpenStreetMap.org|OpenStreetMap.de|OpenStreetMap.fr|RRZE']); + } +}; From 13e0373aa7dfb51a67e16ea6c78b881c8742d1f1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 7 Oct 2023 08:21:19 +0200 Subject: [PATCH 056/209] Bump postcss from 8.4.14 to 8.4.31 (#2036) --- package-lock.json | 40 +++++++++++++++++++++++++--------------- package.json | 2 +- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3c8e82806cf..838d20df86a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "axios": "^0.27.2", "laravel-mix": "^6.0.6", "lodash": "^4.17.19", - "postcss": "^8.1.14", + "postcss": "^8.4.31", "resolve-url-loader": "^5.0.0", "sass": "^1.32.11", "sass-loader": "^13.0.2" @@ -6019,10 +6019,16 @@ } }, "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -6528,9 +6534,9 @@ } }, "node_modules/postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "dev": true, "funding": [ { @@ -6540,10 +6546,14 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "nanoid": "^3.3.4", + "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -13722,9 +13732,9 @@ } }, "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", "dev": true }, "negotiator": { @@ -14111,12 +14121,12 @@ } }, "postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "dev": true, "requires": { - "nanoid": "^3.3.4", + "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } diff --git a/package.json b/package.json index 4681e0b6388..04da67cc77e 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "axios": "^0.27.2", "laravel-mix": "^6.0.6", "lodash": "^4.17.19", - "postcss": "^8.1.14", + "postcss": "^8.4.31", "resolve-url-loader": "^5.0.0", "sass": "^1.32.11", "sass-loader": "^13.0.2" From f4416bf054784fda55fecd3fdf1546c2d0562393 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Oct 2023 07:30:26 +0200 Subject: [PATCH 057/209] Bump @babel/traverse from 7.18.11 to 7.23.2 (#2039) --- package-lock.json | 386 ++++++++++++++++++++++++++++++---------------- 1 file changed, 252 insertions(+), 134 deletions(-) diff --git a/package-lock.json b/package-lock.json index 838d20df86a..ec8504f3b7c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,17 +28,80 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dev": true, "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/compat-data": { "version": "7.18.8", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", @@ -88,13 +151,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.10.tgz", - "integrity": "sha512-0+sW7e3HjQbiHbj1NeU/vN8ornohYlacAfZIaXhdoGweQqgcNy69COVciYYqEXJ/v+9OBA7Frxm4CVAuNqKeNA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "dev": true, "dependencies": { - "@babel/types": "^7.18.10", + "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "engines": { @@ -231,9 +295,9 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, "engines": { "node": ">=6.9.0" @@ -252,25 +316,25 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "dependencies": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -399,30 +463,30 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", - "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, "engines": { "node": ">=6.9.0" @@ -467,13 +531,13 @@ } }, "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -543,9 +607,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.18.11", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.11.tgz", - "integrity": "sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -1691,33 +1755,33 @@ } }, "node_modules/@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.18.11", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.11.tgz", - "integrity": "sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.11", - "@babel/types": "^7.18.10", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1726,13 +1790,13 @@ } }, "node_modules/@babel/types": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz", - "integrity": "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.18.10", - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -1820,13 +1884,13 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@leichtgewicht/ip-codec": { @@ -9150,12 +9214,65 @@ } }, "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dev": true, "requires": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "@babel/compat-data": { @@ -9196,13 +9313,14 @@ } }, "@babel/generator": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.10.tgz", - "integrity": "sha512-0+sW7e3HjQbiHbj1NeU/vN8ornohYlacAfZIaXhdoGweQqgcNy69COVciYYqEXJ/v+9OBA7Frxm4CVAuNqKeNA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "dev": true, "requires": { - "@babel/types": "^7.18.10", + "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "dependencies": { @@ -9306,9 +9424,9 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true }, "@babel/helper-explode-assignable-expression": { @@ -9321,22 +9439,22 @@ } }, "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" } }, "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-member-expression-to-functions": { @@ -9432,24 +9550,24 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-string-parser": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", - "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true }, "@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true }, "@babel/helper-validator-option": { @@ -9482,13 +9600,13 @@ } }, "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "dependencies": { @@ -9545,9 +9663,9 @@ } }, "@babel/parser": { - "version": "7.18.11", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.11.tgz", - "integrity": "sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { @@ -10316,42 +10434,42 @@ } }, "@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" } }, "@babel/traverse": { - "version": "7.18.11", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.11.tgz", - "integrity": "sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.11", - "@babel/types": "^7.18.10", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz", - "integrity": "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.18.10", - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" } }, @@ -10420,13 +10538,13 @@ "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "@leichtgewicht/ip-codec": { From c77346a1f985c1608e23ad163bb2f182c4fee998 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 28 Oct 2023 08:11:30 +0200 Subject: [PATCH 058/209] Bump browserify-sign from 4.2.1 to 4.2.2 (#2046) --- package-lock.json | 51 +++++++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index ec8504f3b7c..5c2fbd7ad3d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2972,26 +2972,29 @@ } }, "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", + "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", "dev": true, "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", "create-hash": "^1.2.0", "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", + "elliptic": "^6.5.4", "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "parse-asn1": "^5.1.6", + "readable-stream": "^3.6.2", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 4" } }, "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "dependencies": { "inherits": "^2.0.3", @@ -11490,26 +11493,26 @@ } }, "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", + "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", "dev": true, "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", "create-hash": "^1.2.0", "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", + "elliptic": "^6.5.4", "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "parse-asn1": "^5.1.6", + "readable-stream": "^3.6.2", + "safe-buffer": "^5.2.1" }, "dependencies": { "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "requires": { "inherits": "^2.0.3", From e1b2b41309459132708c487a41f3ffa552d263f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Wed, 15 Nov 2023 16:23:55 +0100 Subject: [PATCH 059/209] Fixes #2041: Delete existing user permissions associated (#2047) --- app/Models/User.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/User.php b/app/Models/User.php index eb2691e43d4..58caf939bc2 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -210,7 +210,7 @@ public function delete(): bool } } - $this->shared()->delete(); + AccessPermission::query()->where(APC::USER_ID, '=', $this->id)->delete(); WebAuthnCredential::query()->where('authenticatable_id', '=', $this->id)->delete(); return $this->parentDelete(); From 6a701533497ce66cd6e9b488fc8d00d87fe87a07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Thu, 16 Nov 2023 17:55:33 +0100 Subject: [PATCH 060/209] Composer update (#2056) --- .../Pipes/Checks/IniSettingsCheck.php | 2 +- .../Pipes/Infos/ExtensionsInfo.php | 2 +- .../Diagnostics/Pipes/Infos/VersionInfo.php | 2 +- .../InstallUpdate/Pipes/ComposerCall.php | 2 +- app/Metadata/Extractor.php | 18 +- composer.lock | 750 +- package-lock.json | 16099 ---------------- package.json | 21 - 8 files changed, 389 insertions(+), 16507 deletions(-) delete mode 100644 package-lock.json delete mode 100644 package.json diff --git a/app/Actions/Diagnostics/Pipes/Checks/IniSettingsCheck.php b/app/Actions/Diagnostics/Pipes/Checks/IniSettingsCheck.php index 846a6137490..63989890fd6 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/IniSettingsCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/IniSettingsCheck.php @@ -45,7 +45,7 @@ public function handle(array &$data, \Closure $next): array if (!extension_loaded('imagick')) { // @codeCoverageIgnoreStart $data[] = 'Warning: Pictures that are rotated lose their metadata! Please install Imagick to avoid that.'; - // @codeCoverageIgnoreEnd + // @codeCoverageIgnoreEnd } else { if (!isset($settings['imagick'])) { // @codeCoverageIgnoreStart diff --git a/app/Actions/Diagnostics/Pipes/Infos/ExtensionsInfo.php b/app/Actions/Diagnostics/Pipes/Infos/ExtensionsInfo.php index e756abc8611..e7f2ea798ea 100644 --- a/app/Actions/Diagnostics/Pipes/Infos/ExtensionsInfo.php +++ b/app/Actions/Diagnostics/Pipes/Infos/ExtensionsInfo.php @@ -32,7 +32,7 @@ public function handle(array &$data, \Closure $next): array if (!isset($imagickVersion, $imagickVersion['versionNumber'])) { // @codeCoverageIgnoreStart $imagickVersion = '-'; - // @codeCoverageIgnoreEnd + // @codeCoverageIgnoreEnd } else { $imagickVersion = $imagickVersion['versionNumber']; } diff --git a/app/Actions/Diagnostics/Pipes/Infos/VersionInfo.php b/app/Actions/Diagnostics/Pipes/Infos/VersionInfo.php index 539bfc3a1aa..585617161f9 100644 --- a/app/Actions/Diagnostics/Pipes/Infos/VersionInfo.php +++ b/app/Actions/Diagnostics/Pipes/Infos/VersionInfo.php @@ -35,7 +35,7 @@ public function handle(array &$data, \Closure $next): array $fileVersion->hydrate(false, false); $lycheeInfoString = $fileVersion->getVersion()->toString(); - // @codeCoverageIgnoreEnd + // @codeCoverageIgnoreEnd } else { $gitHubFunctions = resolve(GitHubVersion::class); $gitHubFunctions->hydrate(); diff --git a/app/Actions/InstallUpdate/Pipes/ComposerCall.php b/app/Actions/InstallUpdate/Pipes/ComposerCall.php index f890e5433ea..d4d95151d66 100644 --- a/app/Actions/InstallUpdate/Pipes/ComposerCall.php +++ b/app/Actions/InstallUpdate/Pipes/ComposerCall.php @@ -36,7 +36,7 @@ public function handle(array &$output, \Closure $next): array chdir(base_path()); exec(sprintf('composer install %s--no-progress 2>&1', $noDev), $output); chdir(base_path('public')); - // @codeCoverageIgnoreEnd + // @codeCoverageIgnoreEnd } else { $output[] = 'Composer update are always dangerous when automated.'; $output[] = 'So we did not execute it.'; diff --git a/app/Metadata/Extractor.php b/app/Metadata/Extractor.php index 26067e5de20..fdfc6c8e7cf 100644 --- a/app/Metadata/Extractor.php +++ b/app/Metadata/Extractor.php @@ -330,15 +330,15 @@ public static function createFromFile(NativeLocalFile $file, int $fileLastModifi // that timezone. $taken_at->setTimezone(new \DateTimeZone(date_default_timezone_get())); } - // In the remaining cases the timezone information was - // extracted and the recording time is assumed exhibit - // to original timezone of the location where the video - // has been recorded. - // So we don't need to do anything. - // - // The only known example are the mov files from Apple - // devices; the time zone will be formatted as "+01:00" - // so neither of the two conditions above should trigger. + // In the remaining cases the timezone information was + // extracted and the recording time is assumed exhibit + // to original timezone of the location where the video + // has been recorded. + // So we don't need to do anything. + // + // The only known example are the mov files from Apple + // devices; the time zone will be formatted as "+01:00" + // so neither of the two conditions above should trigger. } elseif ($taken_at->getTimezone()->getName() === 'Z') { // This is a video format where we expect the takestamp // to be provided in local time but the timezone is diff --git a/composer.lock b/composer.lock index 9bf8c21d7ac..77660b72a8a 100644 --- a/composer.lock +++ b/composer.lock @@ -375,16 +375,16 @@ }, { "name": "doctrine/dbal", - "version": "3.6.6", + "version": "3.7.1", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "63646ffd71d1676d2f747f871be31b7e921c7864" + "reference": "5b7bd66c9ff58c04c5474ab85edce442f8081cb2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/63646ffd71d1676d2f747f871be31b7e921c7864", - "reference": "63646ffd71d1676d2f747f871be31b7e921c7864", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/5b7bd66c9ff58c04c5474ab85edce442f8081cb2", + "reference": "5b7bd66c9ff58c04c5474ab85edce442f8081cb2", "shasum": "" }, "require": { @@ -400,9 +400,9 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.29", + "phpstan/phpstan": "1.10.35", "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "9.6.9", + "phpunit/phpunit": "9.6.13", "psalm/plugin-phpunit": "0.18.4", "slevomat/coding-standard": "8.13.1", "squizlabs/php_codesniffer": "3.7.2", @@ -468,7 +468,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.6.6" + "source": "https://github.com/doctrine/dbal/tree/3.7.1" }, "funding": [ { @@ -484,20 +484,20 @@ "type": "tidelift" } ], - "time": "2023-08-17T05:38:17+00:00" + "time": "2023-10-06T05:06:20+00:00" }, { "name": "doctrine/deprecations", - "version": "v1.1.1", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", "shasum": "" }, "require": { @@ -529,9 +529,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.1.1" + "source": "https://github.com/doctrine/deprecations/tree/1.1.2" }, - "time": "2023-06-03T09:27:29+00:00" + "time": "2023-09-27T20:04:15+00:00" }, { "name": "doctrine/event-manager", @@ -855,16 +855,16 @@ }, { "name": "egulias/email-validator", - "version": "4.0.1", + "version": "4.0.2", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff" + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/3a85486b709bc384dae8eb78fb2eec649bdb64ff", - "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", "shasum": "" }, "require": { @@ -873,8 +873,8 @@ "symfony/polyfill-intl-idn": "^1.26" }, "require-dev": { - "phpunit/phpunit": "^9.5.27", - "vimeo/psalm": "^4.30" + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -910,7 +910,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/4.0.1" + "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" }, "funding": [ { @@ -918,7 +918,7 @@ "type": "github" } ], - "time": "2023-01-14T14:17:03+00:00" + "time": "2023-10-06T06:47:41+00:00" }, { "name": "evenement/evenement", @@ -969,21 +969,21 @@ }, { "name": "fruitcake/php-cors", - "version": "v1.2.0", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/fruitcake/php-cors.git", - "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e" + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/58571acbaa5f9f462c9c77e911700ac66f446d4e", - "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "symfony/http-foundation": "^4.4|^5.4|^6" + "symfony/http-foundation": "^4.4|^5.4|^6|^7" }, "require-dev": { "phpstan/phpstan": "^1.4", @@ -993,7 +993,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1-dev" + "dev-master": "1.2-dev" } }, "autoload": { @@ -1024,7 +1024,7 @@ ], "support": { "issues": "https://github.com/fruitcake/php-cors/issues", - "source": "https://github.com/fruitcake/php-cors/tree/v1.2.0" + "source": "https://github.com/fruitcake/php-cors/tree/v1.3.0" }, "funding": [ { @@ -1036,7 +1036,7 @@ "type": "github" } ], - "time": "2022-02-20T15:07:15+00:00" + "time": "2023-10-12T05:21:21+00:00" }, { "name": "fylax/forceutf8", @@ -1275,24 +1275,24 @@ }, { "name": "graham-campbell/result-type", - "version": "v1.1.1", + "version": "v1.1.2", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831" + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", - "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/fbd48bce38f73f8a4ec8583362e732e4095e5862", + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.1" + "phpoption/phpoption": "^1.9.2" }, "require-dev": { - "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "type": "library", "autoload": { @@ -1321,7 +1321,7 @@ ], "support": { "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.1" + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.2" }, "funding": [ { @@ -1333,7 +1333,7 @@ "type": "tidelift" } ], - "time": "2023-02-25T20:23:15+00:00" + "time": "2023-11-12T22:16:48+00:00" }, { "name": "guzzlehttp/guzzle", @@ -1742,21 +1742,21 @@ }, { "name": "laminas/laminas-servicemanager", - "version": "3.21.0", + "version": "3.22.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-servicemanager.git", - "reference": "625f2aa3bc6dd02688b2da5155b3a69870812bda" + "reference": "de98d297d4743956a0558a6d71616979ff779328" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/625f2aa3bc6dd02688b2da5155b3a69870812bda", - "reference": "625f2aa3bc6dd02688b2da5155b3a69870812bda", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/de98d297d4743956a0558a6d71616979ff779328", + "reference": "de98d297d4743956a0558a6d71616979ff779328", "shasum": "" }, "require": { "laminas/laminas-stdlib": "^3.17", - "php": "~8.1.0 || ~8.2.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", "psr/container": "^1.0" }, "conflict": { @@ -1777,10 +1777,9 @@ "laminas/laminas-code": "^4.10.0", "laminas/laminas-coding-standard": "~2.5.0", "laminas/laminas-container-config-test": "^0.8", - "laminas/laminas-dependency-plugin": "^2.2", "mikey179/vfsstream": "^1.6.11", "phpbench/phpbench": "^1.2.9", - "phpunit/phpunit": "^10.0.17", + "phpunit/phpunit": "^10.4", "psalm/plugin-phpunit": "^0.18.4", "vimeo/psalm": "^5.8.0" }, @@ -1829,34 +1828,34 @@ "type": "community_bridge" } ], - "time": "2023-05-14T12:24:54+00:00" + "time": "2023-10-24T11:19:47+00:00" }, { "name": "laminas/laminas-stdlib", - "version": "3.17.0", + "version": "3.18.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "dd35c868075bad80b6718959740913e178eb4274" + "reference": "e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/dd35c868075bad80b6718959740913e178eb4274", - "reference": "dd35c868075bad80b6718959740913e178eb4274", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf", + "reference": "e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-stdlib": "*" }, "require-dev": { "laminas/laminas-coding-standard": "^2.5", - "phpbench/phpbench": "^1.2.9", - "phpunit/phpunit": "^10.0.16", + "phpbench/phpbench": "^1.2.14", + "phpunit/phpunit": "^10.3.3", "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.8" + "vimeo/psalm": "^5.15.0" }, "type": "library", "autoload": { @@ -1888,32 +1887,32 @@ "type": "community_bridge" } ], - "time": "2023-03-20T13:51:37+00:00" + "time": "2023-09-19T10:15:21+00:00" }, { "name": "laminas/laminas-text", - "version": "2.10.0", + "version": "2.11.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-text.git", - "reference": "40f7acdb284d41553d32db811e704d6e15e415b4" + "reference": "d799f3ccb3547e9e6ab313447138bae7009c7cc7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-text/zipball/40f7acdb284d41553d32db811e704d6e15e415b4", - "reference": "40f7acdb284d41553d32db811e704d6e15e415b4", + "url": "https://api.github.com/repos/laminas/laminas-text/zipball/d799f3ccb3547e9e6ab313447138bae7009c7cc7", + "reference": "d799f3ccb3547e9e6ab313447138bae7009c7cc7", "shasum": "" }, "require": { - "laminas/laminas-servicemanager": "^3.19.0", + "laminas/laminas-servicemanager": "^3.22.0", "laminas/laminas-stdlib": "^3.7.1", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-text": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-coding-standard": "~2.5.0", "phpunit/phpunit": "^9.5", "psalm/plugin-phpunit": "^0.18.4", "vimeo/psalm": "^5.1" @@ -1948,7 +1947,7 @@ "type": "community_bridge" } ], - "time": "2022-12-11T15:36:27+00:00" + "time": "2023-11-07T16:45:45+00:00" }, { "name": "laragear/webauthn", @@ -2038,16 +2037,16 @@ }, { "name": "laravel/framework", - "version": "v10.23.1", + "version": "v10.32.1", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "dbfd495557678759153e8d71cc2f6027686ca51e" + "reference": "b30e44f20d244f7ba125283e14a8bbac167f4e5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/dbfd495557678759153e8d71cc2f6027686ca51e", - "reference": "dbfd495557678759153e8d71cc2f6027686ca51e", + "url": "https://api.github.com/repos/laravel/framework/zipball/b30e44f20d244f7ba125283e14a8bbac167f4e5b", + "reference": "b30e44f20d244f7ba125283e14a8bbac167f4e5b", "shasum": "" }, "require": { @@ -2065,7 +2064,7 @@ "ext-tokenizer": "*", "fruitcake/php-cors": "^1.2", "guzzlehttp/uri-template": "^1.0", - "laravel/prompts": "^0.1", + "laravel/prompts": "^0.1.9", "laravel/serializable-closure": "^1.3", "league/commonmark": "^2.2.1", "league/flysystem": "^3.8.0", @@ -2080,7 +2079,7 @@ "symfony/console": "^6.2", "symfony/error-handler": "^6.2", "symfony/finder": "^6.2", - "symfony/http-foundation": "^6.2", + "symfony/http-foundation": "^6.3", "symfony/http-kernel": "^6.2", "symfony/mailer": "^6.2", "symfony/mime": "^6.2", @@ -2147,13 +2146,15 @@ "league/flysystem-read-only": "^3.3", "league/flysystem-sftp-v3": "^3.0", "mockery/mockery": "^1.5.1", - "orchestra/testbench-core": "^8.10", + "nyholm/psr7": "^1.2", + "orchestra/testbench-core": "^8.15.1", "pda/pheanstalk": "^4.0", "phpstan/phpstan": "^1.4.7", "phpunit/phpunit": "^10.0.7", "predis/predis": "^2.0.2", "symfony/cache": "^6.2", - "symfony/http-client": "^6.2.4" + "symfony/http-client": "^6.2.4", + "symfony/psr-http-message-bridge": "^2.0" }, "suggest": { "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", @@ -2234,27 +2235,31 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-09-13T14:51:46+00:00" + "time": "2023-11-14T22:57:08+00:00" }, { "name": "laravel/prompts", - "version": "v0.1.7", + "version": "v0.1.13", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "554e7d855a22e87942753d68e23b327ad79b2070" + "reference": "e1379d8ead15edd6cc4369c22274345982edc95a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/554e7d855a22e87942753d68e23b327ad79b2070", - "reference": "554e7d855a22e87942753d68e23b327ad79b2070", + "url": "https://api.github.com/repos/laravel/prompts/zipball/e1379d8ead15edd6cc4369c22274345982edc95a", + "reference": "e1379d8ead15edd6cc4369c22274345982edc95a", "shasum": "" }, "require": { "ext-mbstring": "*", "illuminate/collections": "^10.0|^11.0", "php": "^8.1", - "symfony/console": "^6.2" + "symfony/console": "^6.2|^7.0" + }, + "conflict": { + "illuminate/console": ">=10.17.0 <10.25.0", + "laravel/framework": ">=10.17.0 <10.25.0" }, "require-dev": { "mockery/mockery": "^1.5", @@ -2266,6 +2271,11 @@ "ext-pcntl": "Required for the spinner to be animated." }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.1.x-dev" + } + }, "autoload": { "files": [ "src/helpers.php" @@ -2280,22 +2290,22 @@ ], "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.1.7" + "source": "https://github.com/laravel/prompts/tree/v0.1.13" }, - "time": "2023-09-12T11:09:22+00:00" + "time": "2023-10-27T13:53:59+00:00" }, { "name": "laravel/serializable-closure", - "version": "v1.3.1", + "version": "v1.3.3", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "e5a3057a5591e1cfe8183034b0203921abe2c902" + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/e5a3057a5591e1cfe8183034b0203921abe2c902", - "reference": "e5a3057a5591e1cfe8183034b0203921abe2c902", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/3dbf8a8e914634c48d389c1234552666b3d43754", + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754", "shasum": "" }, "require": { @@ -2342,7 +2352,7 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2023-07-14T13:56:28+00:00" + "time": "2023-11-08T14:08:06+00:00" }, { "name": "league/commonmark", @@ -2534,16 +2544,16 @@ }, { "name": "league/flysystem", - "version": "3.16.0", + "version": "3.19.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "4fdf372ca6b63c6e281b1c01a624349ccb757729" + "reference": "1b2aa10f2326e0351399b8ce68e287d8e9209a83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/4fdf372ca6b63c6e281b1c01a624349ccb757729", - "reference": "4fdf372ca6b63c6e281b1c01a624349ccb757729", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/1b2aa10f2326e0351399b8ce68e287d8e9209a83", + "reference": "1b2aa10f2326e0351399b8ce68e287d8e9209a83", "shasum": "" }, "require": { @@ -2561,8 +2571,8 @@ "symfony/http-client": "<5.2" }, "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.1", + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", "aws/aws-sdk-php": "^3.220.0", "composer/semver": "^3.0", "ext-fileinfo": "*", @@ -2572,7 +2582,7 @@ "google/cloud-storage": "^1.23", "microsoft/azure-storage-blob": "^1.1", "phpseclib/phpseclib": "^3.0.14", - "phpstan/phpstan": "^0.12.26", + "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^9.5.11|^10.0", "sabre/dav": "^4.3.1" }, @@ -2608,7 +2618,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.16.0" + "source": "https://github.com/thephpleague/flysystem/tree/3.19.0" }, "funding": [ { @@ -2620,20 +2630,20 @@ "type": "github" } ], - "time": "2023-09-07T19:22:17+00:00" + "time": "2023-11-07T09:04:28+00:00" }, { "name": "league/flysystem-local", - "version": "3.16.0", + "version": "3.19.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-local.git", - "reference": "ec7383f25642e6fd4bb0c9554fc2311245391781" + "reference": "8d868217f9eeb4e9a7320db5ccad825e9a7a4076" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/ec7383f25642e6fd4bb0c9554fc2311245391781", - "reference": "ec7383f25642e6fd4bb0c9554fc2311245391781", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/8d868217f9eeb4e9a7320db5ccad825e9a7a4076", + "reference": "8d868217f9eeb4e9a7320db5ccad825e9a7a4076", "shasum": "" }, "require": { @@ -2668,7 +2678,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem-local/issues", - "source": "https://github.com/thephpleague/flysystem-local/tree/3.16.0" + "source": "https://github.com/thephpleague/flysystem-local/tree/3.19.0" }, "funding": [ { @@ -2680,20 +2690,20 @@ "type": "github" } ], - "time": "2023-08-30T10:23:59+00:00" + "time": "2023-11-06T20:35:28+00:00" }, { "name": "league/mime-type-detection", - "version": "1.13.0", + "version": "1.14.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "a6dfb1194a2946fcdc1f38219445234f65b35c96" + "reference": "b6a5854368533df0295c5761a0253656a2e52d9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/a6dfb1194a2946fcdc1f38219445234f65b35c96", - "reference": "a6dfb1194a2946fcdc1f38219445234f65b35c96", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/b6a5854368533df0295c5761a0253656a2e52d9e", + "reference": "b6a5854368533df0295c5761a0253656a2e52d9e", "shasum": "" }, "require": { @@ -2724,7 +2734,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.13.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.14.0" }, "funding": [ { @@ -2736,7 +2746,7 @@ "type": "tidelift" } ], - "time": "2023-08-05T12:09:49+00:00" + "time": "2023-10-17T14:13:20+00:00" }, { "name": "lychee-org/nestedset", @@ -2978,16 +2988,16 @@ }, { "name": "monolog/monolog", - "version": "3.4.0", + "version": "3.5.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "e2392369686d420ca32df3803de28b5d6f76867d" + "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/e2392369686d420ca32df3803de28b5d6f76867d", - "reference": "e2392369686d420ca32df3803de28b5d6f76867d", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c915e2634718dbc8a4a15c61b0e62e7a44e14448", + "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448", "shasum": "" }, "require": { @@ -3063,7 +3073,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.4.0" + "source": "https://github.com/Seldaek/monolog/tree/3.5.0" }, "funding": [ { @@ -3075,20 +3085,20 @@ "type": "tidelift" } ], - "time": "2023-06-21T08:46:11+00:00" + "time": "2023-10-27T15:32:31+00:00" }, { "name": "nesbot/carbon", - "version": "2.70.0", + "version": "2.71.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "d3298b38ea8612e5f77d38d1a99438e42f70341d" + "reference": "98276233188583f2ff845a0f992a235472d9466a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/d3298b38ea8612e5f77d38d1a99438e42f70341d", - "reference": "d3298b38ea8612e5f77d38d1a99438e42f70341d", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/98276233188583f2ff845a0f992a235472d9466a", + "reference": "98276233188583f2ff845a0f992a235472d9466a", "shasum": "" }, "require": { @@ -3181,20 +3191,20 @@ "type": "tidelift" } ], - "time": "2023-09-07T16:43:50+00:00" + "time": "2023-09-25T11:31:05+00:00" }, { "name": "nette/schema", - "version": "v1.2.4", + "version": "v1.2.5", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "c9ff517a53903b3d4e29ec547fb20feecb05b8ab" + "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/c9ff517a53903b3d4e29ec547fb20feecb05b8ab", - "reference": "c9ff517a53903b3d4e29ec547fb20feecb05b8ab", + "url": "https://api.github.com/repos/nette/schema/zipball/0462f0166e823aad657c9224d0f849ecac1ba10a", + "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a", "shasum": "" }, "require": { @@ -3241,22 +3251,22 @@ ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.2.4" + "source": "https://github.com/nette/schema/tree/v1.2.5" }, - "time": "2023-08-05T18:56:25+00:00" + "time": "2023-10-05T20:37:59+00:00" }, { "name": "nette/utils", - "version": "v4.0.1", + "version": "v4.0.3", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "9124157137da01b1f5a5a22d6486cb975f26db7e" + "reference": "a9d127dd6a203ce6d255b2e2db49759f7506e015" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/9124157137da01b1f5a5a22d6486cb975f26db7e", - "reference": "9124157137da01b1f5a5a22d6486cb975f26db7e", + "url": "https://api.github.com/repos/nette/utils/zipball/a9d127dd6a203ce6d255b2e2db49759f7506e015", + "reference": "a9d127dd6a203ce6d255b2e2db49759f7506e015", "shasum": "" }, "require": { @@ -3278,8 +3288,7 @@ "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", "ext-json": "to use Nette\\Utils\\Json", "ext-mbstring": "to use Strings::lower() etc...", - "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" }, "type": "library", "extra": { @@ -3328,9 +3337,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.1" + "source": "https://github.com/nette/utils/tree/v4.0.3" }, - "time": "2023-07-30T15:42:21+00:00" + "time": "2023-10-29T21:02:13+00:00" }, { "name": "nunomaduro/termwind", @@ -3926,31 +3935,26 @@ }, { "name": "php-http/promise", - "version": "1.1.0", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/php-http/promise.git", - "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88" + "reference": "44a67cb59f708f826f3bec35f22030b3edb90119" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", - "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", + "url": "https://api.github.com/repos/php-http/promise/zipball/44a67cb59f708f826f3bec35f22030b3edb90119", + "reference": "44a67cb59f708f826f3bec35f22030b3edb90119", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.3.2", - "phpspec/phpspec": "^5.1.2 || ^6.2" + "friends-of-phpspec/phpspec-code-coverage": "^4.3.2 || ^6.3", + "phpspec/phpspec": "^5.1.2 || ^6.2 || ^7.4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, "autoload": { "psr-4": { "Http\\Promise\\": "src/" @@ -3977,22 +3981,22 @@ ], "support": { "issues": "https://github.com/php-http/promise/issues", - "source": "https://github.com/php-http/promise/tree/1.1.0" + "source": "https://github.com/php-http/promise/tree/1.2.1" }, - "time": "2020-07-07T09:29:14+00:00" + "time": "2023-11-08T12:57:08+00:00" }, { "name": "phpoption/phpoption", - "version": "1.9.1", + "version": "1.9.2", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e" + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dd3a383e599f49777d8b628dadbb90cae435b87e", - "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/80735db690fe4fc5c76dfa7f9b770634285fa820", + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820", "shasum": "" }, "require": { @@ -4000,7 +4004,7 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "type": "library", "extra": { @@ -4042,7 +4046,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.1" + "source": "https://github.com/schmittjoh/php-option/tree/1.9.2" }, "funding": [ { @@ -4054,7 +4058,7 @@ "type": "tidelift" } ], - "time": "2023-02-25T19:38:58+00:00" + "time": "2023-11-12T21:59:55+00:00" }, { "name": "psr/cache", @@ -4253,16 +4257,16 @@ }, { "name": "psr/http-client", - "version": "1.0.2", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/php-fig/http-client.git", - "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31" + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/0955afe48220520692d2d09f7ab7e0f93ffd6a31", - "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", "shasum": "" }, "require": { @@ -4299,9 +4303,9 @@ "psr-18" ], "support": { - "source": "https://github.com/php-fig/http-client/tree/1.0.2" + "source": "https://github.com/php-fig/http-client" }, - "time": "2023-04-10T20:12:12+00:00" + "time": "2023-09-23T14:17:50+00:00" }, { "name": "psr/http-factory", @@ -4647,16 +4651,16 @@ }, { "name": "ramsey/uuid", - "version": "4.7.4", + "version": "4.7.5", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "60a4c63ab724854332900504274f6150ff26d286" + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/60a4c63ab724854332900504274f6150ff26d286", - "reference": "60a4c63ab724854332900504274f6150ff26d286", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", "shasum": "" }, "require": { @@ -4723,7 +4727,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.7.4" + "source": "https://github.com/ramsey/uuid/tree/4.7.5" }, "funding": [ { @@ -4735,7 +4739,7 @@ "type": "tidelift" } ], - "time": "2023-04-15T23:01:58+00:00" + "time": "2023-11-08T05:53:05+00:00" }, { "name": "spatie/guzzle-rate-limiter-middleware", @@ -4791,28 +4795,28 @@ }, { "name": "spatie/image-optimizer", - "version": "1.7.1", + "version": "1.7.2", "source": { "type": "git", "url": "https://github.com/spatie/image-optimizer.git", - "reference": "af179994e2d2413e4b3ba2d348d06b4eaddbeb30" + "reference": "62f7463483d1bd975f6f06025d89d42a29608fe1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/image-optimizer/zipball/af179994e2d2413e4b3ba2d348d06b4eaddbeb30", - "reference": "af179994e2d2413e4b3ba2d348d06b4eaddbeb30", + "url": "https://api.github.com/repos/spatie/image-optimizer/zipball/62f7463483d1bd975f6f06025d89d42a29608fe1", + "reference": "62f7463483d1bd975f6f06025d89d42a29608fe1", "shasum": "" }, "require": { "ext-fileinfo": "*", "php": "^7.3|^8.0", "psr/log": "^1.0 | ^2.0 | ^3.0", - "symfony/process": "^4.2|^5.0|^6.0" + "symfony/process": "^4.2|^5.0|^6.0|^7.0" }, "require-dev": { "pestphp/pest": "^1.21", "phpunit/phpunit": "^8.5.21|^9.4.4", - "symfony/var-dumper": "^4.2|^5.0|^6.0" + "symfony/var-dumper": "^4.2|^5.0|^6.0|^7.0" }, "type": "library", "autoload": { @@ -4840,9 +4844,9 @@ ], "support": { "issues": "https://github.com/spatie/image-optimizer/issues", - "source": "https://github.com/spatie/image-optimizer/tree/1.7.1" + "source": "https://github.com/spatie/image-optimizer/tree/1.7.2" }, - "time": "2023-07-27T07:57:32+00:00" + "time": "2023-11-03T10:08:02+00:00" }, { "name": "spatie/laravel-feed", @@ -5066,16 +5070,16 @@ }, { "name": "spatie/temporary-directory", - "version": "2.1.2", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/spatie/temporary-directory.git", - "reference": "0c804873f6b4042aa8836839dca683c7d0f71831" + "reference": "efc258c9f4da28f0c7661765b8393e4ccee3d19c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/0c804873f6b4042aa8836839dca683c7d0f71831", - "reference": "0c804873f6b4042aa8836839dca683c7d0f71831", + "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/efc258c9f4da28f0c7661765b8393e4ccee3d19c", + "reference": "efc258c9f4da28f0c7661765b8393e4ccee3d19c", "shasum": "" }, "require": { @@ -5111,7 +5115,7 @@ ], "support": { "issues": "https://github.com/spatie/temporary-directory/issues", - "source": "https://github.com/spatie/temporary-directory/tree/2.1.2" + "source": "https://github.com/spatie/temporary-directory/tree/2.2.0" }, "funding": [ { @@ -5123,20 +5127,20 @@ "type": "github" } ], - "time": "2023-04-28T07:47:42+00:00" + "time": "2023-09-25T07:13:36+00:00" }, { "name": "symfony/cache", - "version": "v6.3.4", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "e60d00b4f633efa4c1ef54e77c12762d9073e7b3" + "reference": "ba33517043c22c94c7ab04b056476f6f86816cf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/e60d00b4f633efa4c1ef54e77c12762d9073e7b3", - "reference": "e60d00b4f633efa4c1ef54e77c12762d9073e7b3", + "url": "https://api.github.com/repos/symfony/cache/zipball/ba33517043c22c94c7ab04b056476f6f86816cf8", + "reference": "ba33517043c22c94c7ab04b056476f6f86816cf8", "shasum": "" }, "require": { @@ -5145,7 +5149,7 @@ "psr/log": "^1.1|^2|^3", "symfony/cache-contracts": "^2.5|^3", "symfony/service-contracts": "^2.5|^3", - "symfony/var-exporter": "^6.2.10" + "symfony/var-exporter": "^6.3.6" }, "conflict": { "doctrine/dbal": "<2.13.1", @@ -5160,7 +5164,7 @@ }, "require-dev": { "cache/integration-tests": "dev-master", - "doctrine/dbal": "^2.13.1|^3.0", + "doctrine/dbal": "^2.13.1|^3|^4", "predis/predis": "^1.1|^2.0", "psr/simple-cache": "^1.0|^2.0|^3.0", "symfony/config": "^5.4|^6.0", @@ -5203,7 +5207,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.3.4" + "source": "https://github.com/symfony/cache/tree/v6.3.8" }, "funding": [ { @@ -5219,20 +5223,20 @@ "type": "tidelift" } ], - "time": "2023-08-05T09:10:27+00:00" + "time": "2023-11-07T10:17:15+00:00" }, { "name": "symfony/cache-contracts", - "version": "v3.3.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "ad945640ccc0ae6e208bcea7d7de4b39b569896b" + "reference": "1d74b127da04ffa87aa940abe15446fa89653778" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/ad945640ccc0ae6e208bcea7d7de4b39b569896b", - "reference": "ad945640ccc0ae6e208bcea7d7de4b39b569896b", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/1d74b127da04ffa87aa940abe15446fa89653778", + "reference": "1d74b127da04ffa87aa940abe15446fa89653778", "shasum": "" }, "require": { @@ -5279,7 +5283,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/cache-contracts/tree/v3.4.0" }, "funding": [ { @@ -5295,20 +5299,20 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2023-09-25T12:52:38+00:00" }, { "name": "symfony/console", - "version": "v6.3.4", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6" + "reference": "0d14a9f6d04d4ac38a8cea1171f4554e325dae92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/eca495f2ee845130855ddf1cf18460c38966c8b6", - "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6", + "url": "https://api.github.com/repos/symfony/console/zipball/0d14a9f6d04d4ac38a8cea1171f4554e325dae92", + "reference": "0d14a9f6d04d4ac38a8cea1171f4554e325dae92", "shasum": "" }, "require": { @@ -5369,7 +5373,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.3.4" + "source": "https://github.com/symfony/console/tree/v6.3.8" }, "funding": [ { @@ -5385,7 +5389,7 @@ "type": "tidelift" } ], - "time": "2023-08-16T10:10:12+00:00" + "time": "2023-10-31T08:09:35+00:00" }, { "name": "symfony/css-selector", @@ -5454,7 +5458,7 @@ }, { "name": "symfony/deprecation-contracts", - "version": "v3.3.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", @@ -5501,7 +5505,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" }, "funding": [ { @@ -5521,16 +5525,16 @@ }, { "name": "symfony/error-handler", - "version": "v6.3.2", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "85fd65ed295c4078367c784e8a5a6cee30348b7a" + "reference": "1f69476b64fb47105c06beef757766c376b548c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/85fd65ed295c4078367c784e8a5a6cee30348b7a", - "reference": "85fd65ed295c4078367c784e8a5a6cee30348b7a", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/1f69476b64fb47105c06beef757766c376b548c4", + "reference": "1f69476b64fb47105c06beef757766c376b548c4", "shasum": "" }, "require": { @@ -5575,7 +5579,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.3.2" + "source": "https://github.com/symfony/error-handler/tree/v6.3.5" }, "funding": [ { @@ -5591,7 +5595,7 @@ "type": "tidelift" } ], - "time": "2023-07-16T17:05:46+00:00" + "time": "2023-09-12T06:57:20+00:00" }, { "name": "symfony/event-dispatcher", @@ -5675,7 +5679,7 @@ }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.3.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", @@ -5731,7 +5735,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" }, "funding": [ { @@ -5751,16 +5755,16 @@ }, { "name": "symfony/finder", - "version": "v6.3.3", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e" + "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/9915db259f67d21eefee768c1abcf1cc61b1fc9e", - "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e", + "url": "https://api.github.com/repos/symfony/finder/zipball/a1b31d88c0e998168ca7792f222cbecee47428c4", + "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4", "shasum": "" }, "require": { @@ -5795,7 +5799,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.3.3" + "source": "https://github.com/symfony/finder/tree/v6.3.5" }, "funding": [ { @@ -5811,20 +5815,20 @@ "type": "tidelift" } ], - "time": "2023-07-31T08:31:44+00:00" + "time": "2023-09-26T12:56:25+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.3.4", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "cac1556fdfdf6719668181974104e6fcfa60e844" + "reference": "ce332676de1912c4389222987193c3ef38033df6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/cac1556fdfdf6719668181974104e6fcfa60e844", - "reference": "cac1556fdfdf6719668181974104e6fcfa60e844", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ce332676de1912c4389222987193c3ef38033df6", + "reference": "ce332676de1912c4389222987193c3ef38033df6", "shasum": "" }, "require": { @@ -5834,12 +5838,12 @@ "symfony/polyfill-php83": "^1.27" }, "conflict": { - "symfony/cache": "<6.2" + "symfony/cache": "<6.3" }, "require-dev": { - "doctrine/dbal": "^2.13.1|^3.0", + "doctrine/dbal": "^2.13.1|^3|^4", "predis/predis": "^1.1|^2.0", - "symfony/cache": "^5.4|^6.0", + "symfony/cache": "^6.3", "symfony/dependency-injection": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", @@ -5872,7 +5876,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.3.4" + "source": "https://github.com/symfony/http-foundation/tree/v6.3.8" }, "funding": [ { @@ -5888,20 +5892,20 @@ "type": "tidelift" } ], - "time": "2023-08-22T08:20:46+00:00" + "time": "2023-11-07T10:17:15+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.3.4", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "36abb425b4af863ae1fe54d8a8b8b4c76a2bccdb" + "reference": "929202375ccf44a309c34aeca8305408442ebcc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/36abb425b4af863ae1fe54d8a8b8b4c76a2bccdb", - "reference": "36abb425b4af863ae1fe54d8a8b8b4c76a2bccdb", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/929202375ccf44a309c34aeca8305408442ebcc1", + "reference": "929202375ccf44a309c34aeca8305408442ebcc1", "shasum": "" }, "require": { @@ -5985,7 +5989,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.3.4" + "source": "https://github.com/symfony/http-kernel/tree/v6.3.8" }, "funding": [ { @@ -6001,20 +6005,20 @@ "type": "tidelift" } ], - "time": "2023-08-26T13:54:49+00:00" + "time": "2023-11-10T13:47:32+00:00" }, { "name": "symfony/mailer", - "version": "v6.3.0", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "7b03d9be1dea29bfec0a6c7b603f5072a4c97435" + "reference": "d89611a7830d51b5e118bca38e390dea92f9ea06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/7b03d9be1dea29bfec0a6c7b603f5072a4c97435", - "reference": "7b03d9be1dea29bfec0a6c7b603f5072a4c97435", + "url": "https://api.github.com/repos/symfony/mailer/zipball/d89611a7830d51b5e118bca38e390dea92f9ea06", + "reference": "d89611a7830d51b5e118bca38e390dea92f9ea06", "shasum": "" }, "require": { @@ -6065,7 +6069,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.3.0" + "source": "https://github.com/symfony/mailer/tree/v6.3.5" }, "funding": [ { @@ -6081,20 +6085,20 @@ "type": "tidelift" } ], - "time": "2023-05-29T12:49:39+00:00" + "time": "2023-09-06T09:47:15+00:00" }, { "name": "symfony/mime", - "version": "v6.3.3", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "9a0cbd52baa5ba5a5b1f0cacc59466f194730f98" + "reference": "d5179eedf1cb2946dbd760475ebf05c251ef6a6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/9a0cbd52baa5ba5a5b1f0cacc59466f194730f98", - "reference": "9a0cbd52baa5ba5a5b1f0cacc59466f194730f98", + "url": "https://api.github.com/repos/symfony/mime/zipball/d5179eedf1cb2946dbd760475ebf05c251ef6a6e", + "reference": "d5179eedf1cb2946dbd760475ebf05c251ef6a6e", "shasum": "" }, "require": { @@ -6149,7 +6153,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.3.3" + "source": "https://github.com/symfony/mime/tree/v6.3.5" }, "funding": [ { @@ -6165,7 +6169,7 @@ "type": "tidelift" } ], - "time": "2023-07-31T07:08:24+00:00" + "time": "2023-09-29T06:59:36+00:00" }, { "name": "symfony/polyfill-ctype", @@ -6968,16 +6972,16 @@ }, { "name": "symfony/routing", - "version": "v6.3.3", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "e7243039ab663822ff134fbc46099b5fdfa16f6a" + "reference": "82616e59acd3e3d9c916bba798326cb7796d7d31" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/e7243039ab663822ff134fbc46099b5fdfa16f6a", - "reference": "e7243039ab663822ff134fbc46099b5fdfa16f6a", + "url": "https://api.github.com/repos/symfony/routing/zipball/82616e59acd3e3d9c916bba798326cb7796d7d31", + "reference": "82616e59acd3e3d9c916bba798326cb7796d7d31", "shasum": "" }, "require": { @@ -7031,7 +7035,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.3.3" + "source": "https://github.com/symfony/routing/tree/v6.3.5" }, "funding": [ { @@ -7047,7 +7051,7 @@ "type": "tidelift" } ], - "time": "2023-07-31T07:08:24+00:00" + "time": "2023-09-20T16:05:51+00:00" }, { "name": "symfony/service-contracts", @@ -7134,16 +7138,16 @@ }, { "name": "symfony/string", - "version": "v6.3.2", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "53d1a83225002635bca3482fcbf963001313fb68" + "reference": "13880a87790c76ef994c91e87efb96134522577a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/53d1a83225002635bca3482fcbf963001313fb68", - "reference": "53d1a83225002635bca3482fcbf963001313fb68", + "url": "https://api.github.com/repos/symfony/string/zipball/13880a87790c76ef994c91e87efb96134522577a", + "reference": "13880a87790c76ef994c91e87efb96134522577a", "shasum": "" }, "require": { @@ -7200,7 +7204,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.3.2" + "source": "https://github.com/symfony/string/tree/v6.3.8" }, "funding": [ { @@ -7216,20 +7220,20 @@ "type": "tidelift" } ], - "time": "2023-07-05T08:41:27+00:00" + "time": "2023-11-09T08:28:21+00:00" }, { "name": "symfony/translation", - "version": "v6.3.3", + "version": "v6.3.7", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd" + "reference": "30212e7c87dcb79c83f6362b00bde0e0b1213499" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", - "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", + "url": "https://api.github.com/repos/symfony/translation/zipball/30212e7c87dcb79c83f6362b00bde0e0b1213499", + "reference": "30212e7c87dcb79c83f6362b00bde0e0b1213499", "shasum": "" }, "require": { @@ -7295,7 +7299,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.3.3" + "source": "https://github.com/symfony/translation/tree/v6.3.7" }, "funding": [ { @@ -7311,20 +7315,20 @@ "type": "tidelift" } ], - "time": "2023-07-31T07:08:24+00:00" + "time": "2023-10-28T23:11:45+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.3.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86" + "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/02c24deb352fb0d79db5486c0c79905a85e37e86", - "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dee0c6e5b4c07ce851b462530088e64b255ac9c5", + "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5", "shasum": "" }, "require": { @@ -7373,7 +7377,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.4.0" }, "funding": [ { @@ -7389,20 +7393,20 @@ "type": "tidelift" } ], - "time": "2023-05-30T17:17:10+00:00" + "time": "2023-07-25T15:08:44+00:00" }, { "name": "symfony/uid", - "version": "v6.3.0", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "01b0f20b1351d997711c56f1638f7a8c3061e384" + "reference": "819fa5ac210fb7ddda4752b91a82f50be7493dd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/01b0f20b1351d997711c56f1638f7a8c3061e384", - "reference": "01b0f20b1351d997711c56f1638f7a8c3061e384", + "url": "https://api.github.com/repos/symfony/uid/zipball/819fa5ac210fb7ddda4752b91a82f50be7493dd9", + "reference": "819fa5ac210fb7ddda4752b91a82f50be7493dd9", "shasum": "" }, "require": { @@ -7447,7 +7451,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v6.3.0" + "source": "https://github.com/symfony/uid/tree/v6.3.8" }, "funding": [ { @@ -7463,20 +7467,20 @@ "type": "tidelift" } ], - "time": "2023-04-08T07:25:02+00:00" + "time": "2023-10-31T08:07:48+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.3.4", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "2027be14f8ae8eae999ceadebcda5b4909b81d45" + "reference": "81acabba9046550e89634876ca64bfcd3c06aa0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2027be14f8ae8eae999ceadebcda5b4909b81d45", - "reference": "2027be14f8ae8eae999ceadebcda5b4909b81d45", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/81acabba9046550e89634876ca64bfcd3c06aa0a", + "reference": "81acabba9046550e89634876ca64bfcd3c06aa0a", "shasum": "" }, "require": { @@ -7531,7 +7535,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.3.4" + "source": "https://github.com/symfony/var-dumper/tree/v6.3.8" }, "funding": [ { @@ -7547,20 +7551,20 @@ "type": "tidelift" } ], - "time": "2023-08-24T14:51:05+00:00" + "time": "2023-11-08T10:42:36+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.3.4", + "version": "v6.3.6", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "df1f8aac5751871b83d30bf3e2c355770f8f0691" + "reference": "374d289c13cb989027274c86206ddc63b16a2441" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/df1f8aac5751871b83d30bf3e2c355770f8f0691", - "reference": "df1f8aac5751871b83d30bf3e2c355770f8f0691", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/374d289c13cb989027274c86206ddc63b16a2441", + "reference": "374d289c13cb989027274c86206ddc63b16a2441", "shasum": "" }, "require": { @@ -7605,7 +7609,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.3.4" + "source": "https://github.com/symfony/var-exporter/tree/v6.3.6" }, "funding": [ { @@ -7621,7 +7625,7 @@ "type": "tidelift" } ], - "time": "2023-08-16T18:14:47+00:00" + "time": "2023-10-13T09:16:49+00:00" }, { "name": "thecodingmachine/safe", @@ -7817,31 +7821,31 @@ }, { "name": "vlucas/phpdotenv", - "version": "v5.5.0", + "version": "v5.6.0", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7" + "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", - "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", + "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", "shasum": "" }, "require": { "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" + "graham-campbell/result-type": "^1.1.2", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.2", + "symfony/polyfill-ctype": "^1.24", + "symfony/polyfill-mbstring": "^1.24", + "symfony/polyfill-php80": "^1.24" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", + "bamarni/composer-bin-plugin": "^1.8.2", "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25" + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "suggest": { "ext-filter": "Required to use the boolean validator." @@ -7853,7 +7857,7 @@ "forward-command": true }, "branch-alias": { - "dev-master": "5.5-dev" + "dev-master": "5.6-dev" } }, "autoload": { @@ -7885,7 +7889,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.0" }, "funding": [ { @@ -7897,7 +7901,7 @@ "type": "tidelift" } ], - "time": "2022-10-16T01:01:54+00:00" + "time": "2023-11-12T22:43:29+00:00" }, { "name": "voku/portable-ascii", @@ -8400,16 +8404,16 @@ }, { "name": "composer/pcre", - "version": "3.1.0", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9", + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9", "shasum": "" }, "require": { @@ -8451,7 +8455,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.0" + "source": "https://github.com/composer/pcre/tree/3.1.1" }, "funding": [ { @@ -8467,7 +8471,7 @@ "type": "tidelift" } ], - "time": "2022-11-17T09:50:14+00:00" + "time": "2023-10-11T07:11:09+00:00" }, { "name": "composer/semver", @@ -8693,16 +8697,16 @@ }, { "name": "filp/whoops", - "version": "2.15.3", + "version": "2.15.4", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "c83e88a30524f9360b11f585f71e6b17313b7187" + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/c83e88a30524f9360b11f585f71e6b17313b7187", - "reference": "c83e88a30524f9360b11f585f71e6b17313b7187", + "url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546", "shasum": "" }, "require": { @@ -8752,7 +8756,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.15.3" + "source": "https://github.com/filp/whoops/tree/2.15.4" }, "funding": [ { @@ -8760,20 +8764,20 @@ "type": "github" } ], - "time": "2023-07-13T12:00:00+00:00" + "time": "2023-11-03T12:00:00+00:00" }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.26.1", + "version": "v3.38.2", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "d023ba6684055f6ea1da1352d8a02baca0426983" + "reference": "d872cdd543797ade030aaa307c0a4954a712e081" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/d023ba6684055f6ea1da1352d8a02baca0426983", - "reference": "d023ba6684055f6ea1da1352d8a02baca0426983", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/d872cdd543797ade030aaa307c0a4954a712e081", + "reference": "d872cdd543797ade030aaa307c0a4954a712e081", "shasum": "" }, "require": { @@ -8806,8 +8810,6 @@ "phpspec/prophecy": "^1.16", "phpspec/prophecy-phpunit": "^2.0", "phpunit/phpunit": "^9.5", - "phpunitgoodpractices/polyfill": "^1.6", - "phpunitgoodpractices/traits": "^1.9.2", "symfony/phpunit-bridge": "^6.2.3", "symfony/yaml": "^5.4 || ^6.0" }, @@ -8847,7 +8849,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.26.1" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.38.2" }, "funding": [ { @@ -8855,7 +8857,7 @@ "type": "github" } ], - "time": "2023-09-08T19:09:07+00:00" + "time": "2023-11-14T00:19:22+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -9027,16 +9029,16 @@ }, { "name": "maximebf/debugbar", - "version": "v1.18.2", + "version": "v1.19.1", "source": { "type": "git", "url": "https://github.com/maximebf/php-debugbar.git", - "reference": "17dcf3f6ed112bb85a37cf13538fd8de49f5c274" + "reference": "03dd40a1826f4d585ef93ef83afa2a9874a00523" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/17dcf3f6ed112bb85a37cf13538fd8de49f5c274", - "reference": "17dcf3f6ed112bb85a37cf13538fd8de49f5c274", + "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/03dd40a1826f4d585ef93ef83afa2a9874a00523", + "reference": "03dd40a1826f4d585ef93ef83afa2a9874a00523", "shasum": "" }, "require": { @@ -9087,9 +9089,9 @@ ], "support": { "issues": "https://github.com/maximebf/php-debugbar/issues", - "source": "https://github.com/maximebf/php-debugbar/tree/v1.18.2" + "source": "https://github.com/maximebf/php-debugbar/tree/v1.19.1" }, - "time": "2023-02-04T15:27:00+00:00" + "time": "2023-10-12T08:10:52+00:00" }, { "name": "mockery/mockery", @@ -9668,16 +9670,16 @@ }, { "name": "phpmyadmin/sql-parser", - "version": "5.8.1", + "version": "5.8.2", "source": { "type": "git", "url": "https://github.com/phpmyadmin/sql-parser.git", - "reference": "b877ee6262a00f0f498da5e01335e8a5dc01d203" + "reference": "f1720ae19abe6294cb5599594a8a57bc3c8cc287" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/b877ee6262a00f0f498da5e01335e8a5dc01d203", - "reference": "b877ee6262a00f0f498da5e01335e8a5dc01d203", + "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/f1720ae19abe6294cb5599594a8a57bc3c8cc287", + "reference": "f1720ae19abe6294cb5599594a8a57bc3c8cc287", "shasum": "" }, "require": { @@ -9751,20 +9753,20 @@ "type": "other" } ], - "time": "2023-09-15T18:21:22+00:00" + "time": "2023-09-19T12:34:29+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.24.0", + "version": "1.24.2", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "3510b0a6274cc42f7219367cb3abfc123ffa09d6" + "reference": "bcad8d995980440892759db0c32acae7c8e79442" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/3510b0a6274cc42f7219367cb3abfc123ffa09d6", - "reference": "3510b0a6274cc42f7219367cb3abfc123ffa09d6", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bcad8d995980440892759db0c32acae7c8e79442", + "reference": "bcad8d995980440892759db0c32acae7c8e79442", "shasum": "" }, "require": { @@ -9796,22 +9798,22 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.2" }, - "time": "2023-09-07T20:46:32+00:00" + "time": "2023-09-26T12:28:12+00:00" }, { "name": "phpstan/phpstan", - "version": "1.10.34", + "version": "1.10.41", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "7f806b6f1403e6914c778140e2ba07c293cb4901" + "reference": "c6174523c2a69231df55bdc65b61655e72876d76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/7f806b6f1403e6914c778140e2ba07c293cb4901", - "reference": "7f806b6f1403e6914c778140e2ba07c293cb4901", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c6174523c2a69231df55bdc65b61655e72876d76", + "reference": "c6174523c2a69231df55bdc65b61655e72876d76", "shasum": "" }, "require": { @@ -9860,7 +9862,7 @@ "type": "tidelift" } ], - "time": "2023-09-13T09:49:47+00:00" + "time": "2023-11-05T12:57:57+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", @@ -9912,21 +9914,21 @@ }, { "name": "phpstan/phpstan-strict-rules", - "version": "1.5.1", + "version": "1.5.2", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-strict-rules.git", - "reference": "b21c03d4f6f3a446e4311155f4be9d65048218e6" + "reference": "7a50e9662ee9f3942e4aaaf3d603653f60282542" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/b21c03d4f6f3a446e4311155f4be9d65048218e6", - "reference": "b21c03d4f6f3a446e4311155f4be9d65048218e6", + "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/7a50e9662ee9f3942e4aaaf3d603653f60282542", + "reference": "7a50e9662ee9f3942e4aaaf3d603653f60282542", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.10" + "phpstan/phpstan": "^1.10.34" }, "require-dev": { "nikic/php-parser": "^4.13.0", @@ -9955,22 +9957,22 @@ "description": "Extra strict and opinionated rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-strict-rules/issues", - "source": "https://github.com/phpstan/phpstan-strict-rules/tree/1.5.1" + "source": "https://github.com/phpstan/phpstan-strict-rules/tree/1.5.2" }, - "time": "2023-03-29T14:47:40+00:00" + "time": "2023-10-30T14:35:06+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "10.1.5", + "version": "10.1.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "1df504e42a88044c27a90136910f0b3fe9e91939" + "reference": "84838eed9ded511f61dc3e8b5944a52d9017b297" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/1df504e42a88044c27a90136910f0b3fe9e91939", - "reference": "1df504e42a88044c27a90136910f0b3fe9e91939", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/84838eed9ded511f61dc3e8b5944a52d9017b297", + "reference": "84838eed9ded511f61dc3e8b5944a52d9017b297", "shasum": "" }, "require": { @@ -10027,7 +10029,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.5" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.8" }, "funding": [ { @@ -10035,7 +10037,7 @@ "type": "github" } ], - "time": "2023-09-12T14:37:22+00:00" + "time": "2023-11-15T13:31:15+00:00" }, { "name": "phpunit/php-file-iterator", @@ -10282,16 +10284,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.3.4", + "version": "10.4.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "b8d59476f19115c9774b3b447f78131781c6c32b" + "reference": "cacd8b9dd224efa8eb28beb69004126c7ca1a1a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b8d59476f19115c9774b3b447f78131781c6c32b", - "reference": "b8d59476f19115c9774b3b447f78131781c6c32b", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/cacd8b9dd224efa8eb28beb69004126c7ca1a1a1", + "reference": "cacd8b9dd224efa8eb28beb69004126c7ca1a1a1", "shasum": "" }, "require": { @@ -10315,7 +10317,7 @@ "sebastian/comparator": "^5.0", "sebastian/diff": "^5.0", "sebastian/environment": "^6.0", - "sebastian/exporter": "^5.0", + "sebastian/exporter": "^5.1", "sebastian/global-state": "^6.0.1", "sebastian/object-enumerator": "^5.0", "sebastian/recursion-context": "^5.0", @@ -10331,7 +10333,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.3-dev" + "dev-main": "10.4-dev" } }, "autoload": { @@ -10363,7 +10365,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.3.4" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.4.2" }, "funding": [ { @@ -10379,7 +10381,7 @@ "type": "tidelift" } ], - "time": "2023-09-12T14:42:28+00:00" + "time": "2023-10-26T07:21:45+00:00" }, { "name": "sebastian/cli-parser", @@ -10627,16 +10629,16 @@ }, { "name": "sebastian/complexity", - "version": "3.0.1", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "c70b73893e10757af9c6a48929fa6a333b56a97a" + "reference": "68cfb347a44871f01e33ab0ef8215966432f6957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/c70b73893e10757af9c6a48929fa6a333b56a97a", - "reference": "c70b73893e10757af9c6a48929fa6a333b56a97a", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68cfb347a44871f01e33ab0ef8215966432f6957", + "reference": "68cfb347a44871f01e33ab0ef8215966432f6957", "shasum": "" }, "require": { @@ -10649,7 +10651,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "3.1-dev" } }, "autoload": { @@ -10673,7 +10675,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.0.1" + "source": "https://github.com/sebastianbergmann/complexity/tree/3.1.0" }, "funding": [ { @@ -10681,7 +10683,7 @@ "type": "github" } ], - "time": "2023-08-31T09:55:53+00:00" + "time": "2023-09-28T11:50:59+00:00" }, { "name": "sebastian/diff", @@ -10816,16 +10818,16 @@ }, { "name": "sebastian/exporter", - "version": "5.0.1", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "32ff03d078fed1279c4ec9a407d08c5e9febb480" + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/32ff03d078fed1279c4ec9a407d08c5e9febb480", - "reference": "32ff03d078fed1279c4ec9a407d08c5e9febb480", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc", "shasum": "" }, "require": { @@ -10839,7 +10841,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -10882,7 +10884,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.0.1" + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1" }, "funding": [ { @@ -10890,7 +10892,7 @@ "type": "github" } ], - "time": "2023-09-08T04:46:58+00:00" + "time": "2023-09-24T13:22:09+00:00" }, { "name": "sebastian/global-state", @@ -11966,5 +11968,5 @@ "platform-overrides": { "php": "8.1" }, - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.3.0" } diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 5c2fbd7ad3d..00000000000 --- a/package-lock.json +++ /dev/null @@ -1,16099 +0,0 @@ -{ - "name": "Lychee", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "devDependencies": { - "axios": "^0.27.2", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.4.31", - "resolve-url-loader": "^5.0.0", - "sass": "^1.32.11", - "sass-loader": "^13.0.2" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", - "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", - "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.10", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.10", - "@babel/types": "^7.18.10", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", - "dev": true, - "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", - "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz", - "integrity": "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", - "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz", - "integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", - "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", - "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", - "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.18.11", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.11.tgz", - "integrity": "sha512-oBUlbv+rjZLh2Ks9SKi4aL7eKaAXBWleHzU89mP0G6BMUlRxSckk9tSIkgDGydhgFxHuGSlBQZfnaD47oBEB7w==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.18.9", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.11", - "@babel/types": "^7.18.10" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", - "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", - "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", - "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", - "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", - "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", - "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", - "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz", - "integrity": "sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", - "dev": true, - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", - "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz", - "integrity": "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==", - "dev": true, - "dependencies": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-validator-identifier": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", - "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz", - "integrity": "sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", - "babel-plugin-polyfill-corejs2": "^0.3.2", - "babel-plugin-polyfill-corejs3": "^0.5.3", - "babel-plugin-polyfill-regenerator": "^0.4.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", - "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz", - "integrity": "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.18.10", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.18.9", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.18.9", - "@babel/plugin-transform-classes": "^7.18.9", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.18.9", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.18.6", - "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.18.9", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.18.8", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.18.9", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.10", - "babel-plugin-polyfill-corejs2": "^0.3.2", - "babel-plugin-polyfill-corejs3": "^0.5.3", - "babel-plugin-polyfill-regenerator": "^0.4.0", - "core-js-compat": "^3.22.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", - "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", - "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", - "dev": true - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@types/babel__core": { - "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.0.tgz", - "integrity": "sha512-v4Vwdko+pgymgS+A2UIaJru93zQd85vIGWObM5ekZNdXCKtDYqATlEYnWgfo86Q6I1Lh0oXnksDnMU1cwmlPDw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.3.0" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/bonjour": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", - "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/clean-css": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@types/clean-css/-/clean-css-4.2.5.tgz", - "integrity": "sha512-NEzjkGGpbs9S9fgC4abuBvTpVwE3i+Acu9BBod3PUyjDVZcNsGx61b8r2PphR61QGPnn0JHVs5ey6/I4eTrkxw==", - "dev": true, - "dependencies": { - "@types/node": "*", - "source-map": "^0.6.0" - } - }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", - "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", - "dev": true, - "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "node_modules/@types/eslint": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", - "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "node_modules/@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "dev": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.30", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz", - "integrity": "sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "node_modules/@types/http-proxy": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/imagemin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@types/imagemin/-/imagemin-8.0.0.tgz", - "integrity": "sha512-B9X2CUeDv/uUeY9CqkzSTfmsLkeJP6PkmXlh4lODBbf9SwpmNuLS30WzUOi863dgsjY3zt3gY5q2F+UdifRi1A==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/imagemin-gifsicle": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@types/imagemin-gifsicle/-/imagemin-gifsicle-7.0.1.tgz", - "integrity": "sha512-kUz6sUh0P95JOS0RGEaaemWUrASuw+dLsWIveK2UZJx74id/B9epgblMkCk/r5MjUWbZ83wFvacG5Rb/f97gyA==", - "dev": true, - "dependencies": { - "@types/imagemin": "*" - } - }, - "node_modules/@types/imagemin-mozjpeg": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@types/imagemin-mozjpeg/-/imagemin-mozjpeg-8.0.1.tgz", - "integrity": "sha512-kMQWEoKxxhlnH4POI3qfW9DjXlQfi80ux3l2b3j5R3eudSCoUIzKQLkfMjNJ6eMYnMWBcB+rfQOWqIzdIwFGKw==", - "dev": true, - "dependencies": { - "@types/imagemin": "*" - } - }, - "node_modules/@types/imagemin-optipng": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@types/imagemin-optipng/-/imagemin-optipng-5.2.1.tgz", - "integrity": "sha512-XCM/3q+HUL7v4zOqMI+dJ5dTxT+MUukY9KU49DSnYb/4yWtSMHJyADP+WHSMVzTR63J2ZvfUOzSilzBNEQW78g==", - "dev": true, - "dependencies": { - "@types/imagemin": "*" - } - }, - "node_modules/@types/imagemin-svgo": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@types/imagemin-svgo/-/imagemin-svgo-8.0.1.tgz", - "integrity": "sha512-YafkdrVAcr38U0Ln1C+L1n4SIZqC47VBHTyxCq7gTUSd1R9MdIvMcrljWlgU1M9O68WZDeQWUrKipKYfEOCOvQ==", - "dev": true, - "dependencies": { - "@types/imagemin": "*", - "@types/svgo": "^1" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", - "dev": true - }, - "node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.6.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.4.tgz", - "integrity": "sha512-I4BD3L+6AWiUobfxZ49DlU43gtI+FTHSv9pE2Zekg6KjMpre4ByusaljW3vYSLJrvQ1ck1hUaeVu8HVlY3vzHg==", - "dev": true - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "dev": true - }, - "node_modules/@types/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", - "dev": true, - "dependencies": { - "@types/express": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", - "dev": true, - "dependencies": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "node_modules/@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/svgo": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@types/svgo/-/svgo-1.3.6.tgz", - "integrity": "sha512-AZU7vQcy/4WFEuwnwsNsJnFwupIpbllH1++LXScN6uxT1Z4zPzdrWG97w4/I7eFKFTvfy/bHFStWjdBAg2Vjug==", - "dev": true - }, - "node_modules/@types/ws": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", - "dev": true, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", - "dev": true, - "dependencies": { - "envinfo": "^7.7.3" - }, - "peerDependencies": { - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", - "dev": true, - "peerDependencies": { - "webpack-cli": "4.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "engines": { - "node": ">=8.9" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "dependencies": { - "object-assign": "^4.1.1", - "util": "0.10.3" - } - }, - "node_modules/assert/node_modules/inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", - "dev": true - }, - "node_modules/assert/node_modules/util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", - "dev": true, - "dependencies": { - "inherits": "2.0.1" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "node_modules/autoprefixer": { - "version": "10.4.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.8.tgz", - "integrity": "sha512-75Jr6Q/XpTqEf6D2ltS5uMewJIx5irCU1oBYJrWjFenq/m12WRRrz6g15L1EIoYvPLXTbEry7rDOwrcYNj77xw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - ], - "dependencies": { - "browserslist": "^4.21.3", - "caniuse-lite": "^1.0.30001373", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", - "dev": true, - "dependencies": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" - } - }, - "node_modules/babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", - "dev": true, - "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" - } - }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "dependencies": { - "object.assign": "^4.1.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz", - "integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.2", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", - "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.2", - "core-js-compat": "^3.21.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz", - "integrity": "sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "node_modules/body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.10.3", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/bonjour-service": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.13.tgz", - "integrity": "sha512-LWKRU/7EqDUC9CTAQtuZl5HzBALoCYwtLhffW3et7vZMwv3bWLpJf8bRYlMD5OCcDpTfnPgNCV4yo9ZIaJGMiA==", - "dev": true, - "dependencies": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "dev": true - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", - "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "browserify-rsa": "^4.1.0", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.4", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.6", - "readable-stream": "^3.6.2", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/browserify-sign/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "dependencies": { - "pako": "~1.0.5" - } - }, - "node_modules/browserslist": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", - "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001370", - "electron-to-chromium": "^1.4.202", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.5" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true - }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", - "dev": true - }, - "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001374", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001374.tgz", - "integrity": "sha512-mWvzatRx3w+j5wx/mpFN5v5twlPrabG8NqX2c6e45LCpymdoGqNvRkRutFUqpRTXKFQFNQJasvK0YT7suW6/Hw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/clean-css": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz", - "integrity": "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==", - "dev": true, - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 10.0" - } - }, - "node_modules/cli-table3": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.2.tgz", - "integrity": "sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/collect.js": { - "version": "4.34.3", - "resolved": "https://registry.npmjs.org/collect.js/-/collect.js-4.34.3.tgz", - "integrity": "sha512-aFr67xDazPwthsGm729mnClgNuh15JEagU6McKBKqxuHOkWL7vMFzGbhsXDdPZ+H6ia5QKIMGYuGOMENBHnVpg==", - "dev": true - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/colord": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", - "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", - "dev": true - }, - "node_modules/colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/concat": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/concat/-/concat-1.0.3.tgz", - "integrity": "sha512-f/ZaH1aLe64qHgTILdldbvyfGiGF4uzeo9IuXUloIOLQzFmIPloy9QbZadNsuVv0j5qbKQvQb/H/UYf2UsKTpw==", - "dev": true, - "dependencies": { - "commander": "^2.9.0" - }, - "bin": { - "concat": "bin/concat" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/concat/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/connect-history-api-fallback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", - "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", - "dev": true - }, - "node_modules/console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", - "dev": true - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true - }, - "node_modules/core-js-compat": { - "version": "3.24.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.24.1.tgz", - "integrity": "sha512-XhdNAGeRnTpp8xbD+sR/HFDK9CbeeeqXT6TuofXh3urqEevzkWmLRgrVoykodsw8okqo2pu1BOmuCKrHx63zdw==", - "dev": true, - "dependencies": { - "browserslist": "^4.21.3", - "semver": "7.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" - } - }, - "node_modules/css-declaration-sorter": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.0.tgz", - "integrity": "sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.0.9" - } - }, - "node_modules/css-loader": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz", - "integrity": "sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==", - "dev": true, - "dependencies": { - "icss-utils": "^5.1.0", - "loader-utils": "^2.0.0", - "postcss": "^8.2.15", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.1.0", - "schema-utils": "^3.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.27.0 || ^5.0.0" - } - }, - "node_modules/css-loader/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-select/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssnano": { - "version": "5.1.12", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.12.tgz", - "integrity": "sha512-TgvArbEZu0lk/dvg2ja+B7kYoD7BBCmn3+k58xD0qjrGHsFzXY/wKTo9M5egcUCabPol05e/PVoIu79s2JN4WQ==", - "dev": true, - "dependencies": { - "cssnano-preset-default": "^5.2.12", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/cssnano" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano-preset-default": { - "version": "5.2.12", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz", - "integrity": "sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==", - "dev": true, - "dependencies": { - "css-declaration-sorter": "^6.3.0", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.0", - "postcss-convert-values": "^5.1.2", - "postcss-discard-comments": "^5.1.2", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.1", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.6", - "postcss-merge-rules": "^5.1.2", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.3", - "postcss-minify-selectors": "^5.2.1", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.1", - "postcss-normalize-repeat-style": "^5.1.1", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.0", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.0", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "dependencies": { - "css-tree": "^1.1.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "dev": true, - "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true - }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", - "dev": true - }, - "node_modules/dns-packet": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", - "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", - "dev": true, - "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/dom-serializer/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true, - "engines": { - "node": ">=0.4", - "npm": ">=1.2" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", - "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/domutils/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.211", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.211.tgz", - "integrity": "sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A==", - "dev": true - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", - "dev": true, - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.0", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.10.3", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/express/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/file-loader/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/file-type": { - "version": "12.4.2", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-12.4.2.tgz", - "integrity": "sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", - "dev": true, - "dependencies": { - "@types/glob": "^7.1.1", - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "node_modules/growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", - "dev": true - }, - "node_modules/handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/hash-base/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", - "dev": true - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dev": true, - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "node_modules/html-entities": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", - "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", - "dev": true - }, - "node_modules/html-loader": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-1.3.2.tgz", - "integrity": "sha512-DEkUwSd0sijK5PF3kRWspYi56XP7bTNkyg5YWSzBdjaSDmvCufep5c4Vpb3PBf6lUL0YPtLwBfy9fL0t5hBAGA==", - "dev": true, - "dependencies": { - "html-minifier-terser": "^5.1.1", - "htmlparser2": "^4.1.0", - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/html-loader/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/html-minifier-terser": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", - "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", - "dev": true, - "dependencies": { - "camel-case": "^4.1.1", - "clean-css": "^4.2.3", - "commander": "^4.1.1", - "he": "^1.2.0", - "param-case": "^3.0.3", - "relateurl": "^0.2.7", - "terser": "^4.6.3" - }, - "bin": { - "html-minifier-terser": "cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/html-minifier-terser/node_modules/clean-css": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", - "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", - "dev": true, - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/html-minifier-terser/node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/html-minifier-terser/node_modules/terser": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", - "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", - "dev": true, - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/html-minifier-terser/node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/htmlparser2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", - "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^3.0.0", - "domutils": "^2.0.0", - "entities": "^2.0.0" - } - }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", - "dev": true, - "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } - } - }, - "node_modules/https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", - "dev": true - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/imagemin": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-7.0.1.tgz", - "integrity": "sha512-33AmZ+xjZhg2JMCe+vDf6a9mzWukE7l+wAtesjE7KyteqqKjzxv7aVQeWnul1Ve26mWvEQqyPwl0OctNBfSR9w==", - "dev": true, - "dependencies": { - "file-type": "^12.0.0", - "globby": "^10.0.0", - "graceful-fs": "^4.2.2", - "junk": "^3.1.0", - "make-dir": "^3.0.0", - "p-pipe": "^3.0.0", - "replace-ext": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/img-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/img-loader/-/img-loader-4.0.0.tgz", - "integrity": "sha512-UwRcPQdwdOyEHyCxe1V9s9YFwInwEWCpoO+kJGfIqDrBDqA8jZUsEZTxQ0JteNPGw/Gupmwesk2OhLTcnw6tnQ==", - "dev": true, - "dependencies": { - "loader-utils": "^1.1.0" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "imagemin": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/img-loader/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/img-loader/node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", - "dev": true - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/junk": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", - "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/laravel-mix": { - "version": "6.0.49", - "resolved": "https://registry.npmjs.org/laravel-mix/-/laravel-mix-6.0.49.tgz", - "integrity": "sha512-bBMFpFjp26XfijPvY5y9zGKud7VqlyOE0OWUcPo3vTBY5asw8LTjafAbee1dhfLz6PWNqDziz69CP78ELSpfKw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.15.8", - "@babel/plugin-proposal-object-rest-spread": "^7.15.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.15.8", - "@babel/preset-env": "^7.15.8", - "@babel/runtime": "^7.15.4", - "@types/babel__core": "^7.1.16", - "@types/clean-css": "^4.2.5", - "@types/imagemin-gifsicle": "^7.0.1", - "@types/imagemin-mozjpeg": "^8.0.1", - "@types/imagemin-optipng": "^5.2.1", - "@types/imagemin-svgo": "^8.0.0", - "autoprefixer": "^10.4.0", - "babel-loader": "^8.2.3", - "chalk": "^4.1.2", - "chokidar": "^3.5.2", - "clean-css": "^5.2.4", - "cli-table3": "^0.6.0", - "collect.js": "^4.28.5", - "commander": "^7.2.0", - "concat": "^1.0.3", - "css-loader": "^5.2.6", - "cssnano": "^5.0.8", - "dotenv": "^10.0.0", - "dotenv-expand": "^5.1.0", - "file-loader": "^6.2.0", - "fs-extra": "^10.0.0", - "glob": "^7.2.0", - "html-loader": "^1.3.2", - "imagemin": "^7.0.1", - "img-loader": "^4.0.0", - "lodash": "^4.17.21", - "md5": "^2.3.0", - "mini-css-extract-plugin": "^1.6.2", - "node-libs-browser": "^2.2.1", - "postcss-load-config": "^3.1.0", - "postcss-loader": "^6.2.0", - "semver": "^7.3.5", - "strip-ansi": "^6.0.0", - "style-loader": "^2.0.0", - "terser": "^5.9.0", - "terser-webpack-plugin": "^5.2.4", - "vue-style-loader": "^4.1.3", - "webpack": "^5.60.0", - "webpack-cli": "^4.9.1", - "webpack-dev-server": "^4.7.3", - "webpack-merge": "^5.8.0", - "webpack-notifier": "^1.14.1", - "webpackbar": "^5.0.0-3", - "yargs": "^17.2.1" - }, - "bin": { - "laravel-mix": "bin/cli.js", - "mix": "bin/cli.js" - }, - "engines": { - "node": ">=12.14.0" - }, - "peerDependencies": { - "@babel/core": "^7.15.8", - "@babel/plugin-proposal-object-rest-spread": "^7.15.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.15.8", - "@babel/preset-env": "^7.15.8", - "postcss": "^8.3.11", - "webpack": "^5.60.0", - "webpack-cli": "^4.9.1" - } - }, - "node_modules/lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true - }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/md5": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", - "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", - "dev": true, - "dependencies": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memfs": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", - "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", - "dev": true, - "dependencies": { - "fs-monkey": "^1.0.3" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/mini-css-extract-plugin": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz", - "integrity": "sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "webpack-sources": "^1.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.4.0 || ^5.0.0" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/multicast-dns": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", - "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", - "dev": true, - "dependencies": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" - } - }, - "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "dev": true, - "engines": { - "node": ">= 6.13.0" - } - }, - "node_modules/node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "dependencies": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - } - }, - "node_modules/node-notifier": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-9.0.1.tgz", - "integrity": "sha512-fPNFIp2hF/Dq7qLDzSg4vZ0J4e9v60gJR+Qx7RbjbWqzPDdEqeVpEx5CFeDAELIl+A/woaaNn1fQ5nEVerMxJg==", - "dev": true, - "dependencies": { - "growly": "^1.3.0", - "is-wsl": "^2.2.0", - "semver": "^7.3.2", - "shellwords": "^0.1.1", - "uuid": "^8.3.0", - "which": "^2.0.2" - } - }, - "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", - "dev": true - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-pipe": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", - "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", - "dev": true, - "dependencies": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0" - }, - "peerDependencies": { - "postcss": "^8.2.2" - } - }, - "node_modules/postcss-colormin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", - "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-convert-values": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz", - "integrity": "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==", - "dev": true, - "dependencies": { - "browserslist": "^4.20.3", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-comments": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", - "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-empty": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dev": true, - "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - }, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-loader": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", - "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", - "dev": true, - "dependencies": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.5" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^5.0.0" - } - }, - "node_modules/postcss-merge-longhand": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz", - "integrity": "sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-merge-rules": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz", - "integrity": "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-font-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-gradients": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", - "dev": true, - "dependencies": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-params": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz", - "integrity": "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-selectors": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", - "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "dev": true, - "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dev": true, - "dependencies": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-normalize-charset": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-positions": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", - "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-repeat-style": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", - "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-unicode": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", - "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", - "dev": true, - "dependencies": { - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-whitespace": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-ordered-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", - "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", - "dev": true, - "dependencies": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-reduce-initial": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", - "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-reduce-transforms": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-unique-selectors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", - "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/pretty-time": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", - "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-addr/node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true - }, - "node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "dev": true, - "dependencies": { - "resolve": "^1.9.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "node_modules/regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true - }, - "node_modules/regexpu-core": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", - "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", - "dev": true - }, - "node_modules/regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", - "dev": true, - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/replace-ext": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-url-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", - "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", - "dev": true, - "dependencies": { - "adjust-sourcemap-loader": "^4.0.0", - "convert-source-map": "^1.7.0", - "loader-utils": "^2.0.0", - "postcss": "^8.2.14", - "source-map": "0.6.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/sass": { - "version": "1.54.3", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.3.tgz", - "integrity": "sha512-fLodey5Qd41Pxp/Tk7Al97sViYwF/TazRc5t6E65O7JOk4XF8pzwIW7CvCxYVOfJFFI/1x5+elDyBIixrp+zrw==", - "dev": true, - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/sass-loader": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.0.2.tgz", - "integrity": "sha512-BbiqbVmbfJaWVeOOAu2o7DhYWtcNmTfvroVgFXa6k2hHheMxNAeDHLNoDy/Q5aoaVlz0LH+MbMktKwm9vN/j8Q==", - "dev": true, - "dependencies": { - "klona": "^2.0.4", - "neo-async": "^2.6.2" - }, - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", - "sass": "^1.3.0", - "sass-embedded": "*", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - } - } - }, - "node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true - }, - "node_modules/selfsigned": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", - "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", - "dev": true, - "dependencies": { - "node-forge": "^1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-index/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-index/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "node_modules/serve-index/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "node_modules/serve-index/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dev": true, - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dev": true, - "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } - }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "node_modules/spdy-transport/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", - "dev": true - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/std-env": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.1.1.tgz", - "integrity": "sha512-/c645XdExBypL01TpFKiG/3RAa/Qmu+zRi0MwAmrdEkwHNuN0ebo8ccAXBBDa5Z0QOJgBskUIbuCK91x0sCVEw==", - "dev": true - }, - "node_modules/stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "dependencies": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "node_modules/stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/style-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", - "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/style-loader/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/stylehacks": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", - "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", - "dev": true, - "dependencies": { - "browserslist": "^4.16.6", - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "dev": true, - "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.7", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "node_modules/timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "dependencies": { - "setimmediate": "^1.0.4" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true - }, - "node_modules/tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", - "dev": true - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", - "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/uri-js/node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", - "dev": true, - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", - "dev": true - }, - "node_modules/util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/util/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "node_modules/vue-style-loader": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", - "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", - "dev": true, - "dependencies": { - "hash-sum": "^1.0.2", - "loader-utils": "^1.0.2" - } - }, - "node_modules/vue-style-loader/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/vue-style-loader/node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "dependencies": { - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/webpack": { - "version": "5.76.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.1.tgz", - "integrity": "sha512-4+YIK4Abzv8172/SGqObnUjaIHjLEuUasz9EwQj/9xmPPkYJy2Mh03Q/lJfSD3YLzbxy5FeTq5Uw0323Oh6SJQ==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", - "dev": true, - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "cross-spawn": "^7.0.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "@webpack-cli/migrate": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", - "dev": true, - "dependencies": { - "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/webpack-dev-middleware/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/webpack-dev-middleware/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/webpack-dev-server": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.3.tgz", - "integrity": "sha512-3qp/eoboZG5/6QgiZ3llN8TUzkSpYg1Ko9khWX1h40MIEUNS2mDoIa8aXsPfskER+GbTvs/IJZ1QTBBhhuetSw==", - "dev": true, - "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.0.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack-dev-server/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-notifier": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/webpack-notifier/-/webpack-notifier-1.15.0.tgz", - "integrity": "sha512-N2V8UMgRB5komdXQRavBsRpw0hPhJq2/SWNOGuhrXpIgRhcMexzkGQysUyGStHLV5hkUlgpRiF7IUXoBqyMmzQ==", - "dev": true, - "dependencies": { - "node-notifier": "^9.0.0", - "strip-ansi": "^6.0.0" - }, - "peerDependencies": { - "@types/webpack": ">4.41.31" - }, - "peerDependenciesMeta": { - "@types/webpack": { - "optional": true - } - } - }, - "node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/webpack/node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpackbar": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz", - "integrity": "sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "consola": "^2.15.3", - "pretty-time": "^1.1.0", - "std-env": "^3.0.1" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "webpack": "3 || 4 || 5" - } - }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/ws": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", - "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "17.5.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", - "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, - "requires": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/compat-data": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", - "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", - "dev": true - }, - "@babel/core": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", - "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.10", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.10", - "@babel/types": "^7.18.10", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", - "dev": true, - "requires": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", - "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz", - "integrity": "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", - "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz", - "integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "requires": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", - "dev": true, - "requires": { - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", - "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", - "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", - "dev": true - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-replace-supers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", - "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", - "dev": true, - "requires": { - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.18.11", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.11.tgz", - "integrity": "sha512-oBUlbv+rjZLh2Ks9SKi4aL7eKaAXBWleHzU89mP0G6BMUlRxSckk9tSIkgDGydhgFxHuGSlBQZfnaD47oBEB7w==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.18.9", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.11", - "@babel/types": "^7.18.10" - } - }, - "@babel/helpers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", - "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - } - }, - "@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", - "dev": true - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", - "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", - "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.8" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-import-assertions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", - "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", - "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", - "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", - "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz", - "integrity": "sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", - "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz", - "integrity": "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-validator-identifier": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", - "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz", - "integrity": "sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", - "babel-plugin-polyfill-corejs2": "^0.3.2", - "babel-plugin-polyfill-corejs3": "^0.5.3", - "babel-plugin-polyfill-regenerator": "^0.4.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", - "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/preset-env": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz", - "integrity": "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.18.10", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.18.9", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.18.9", - "@babel/plugin-transform-classes": "^7.18.9", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.18.9", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.18.6", - "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.18.9", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.18.8", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.18.9", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.10", - "babel-plugin-polyfill-corejs2": "^0.3.2", - "babel-plugin-polyfill-corejs3": "^0.5.3", - "babel-plugin-polyfill-regenerator": "^0.4.0", - "core-js-compat": "^3.22.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/runtime": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", - "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - } - }, - "@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - } - }, - "@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, - "optional": true - }, - "@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true - }, - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "@leichtgewicht/ip-codec": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", - "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", - "dev": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true - }, - "@types/babel__core": { - "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.0.tgz", - "integrity": "sha512-v4Vwdko+pgymgS+A2UIaJru93zQd85vIGWObM5ekZNdXCKtDYqATlEYnWgfo86Q6I1Lh0oXnksDnMU1cwmlPDw==", - "dev": true, - "requires": { - "@babel/types": "^7.3.0" - } - }, - "@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/bonjour": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", - "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/clean-css": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@types/clean-css/-/clean-css-4.2.5.tgz", - "integrity": "sha512-NEzjkGGpbs9S9fgC4abuBvTpVwE3i+Acu9BBod3PUyjDVZcNsGx61b8r2PphR61QGPnn0JHVs5ey6/I4eTrkxw==", - "dev": true, - "requires": { - "@types/node": "*", - "source-map": "^0.6.0" - } - }, - "@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/connect-history-api-fallback": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", - "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", - "dev": true, - "requires": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "@types/eslint": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", - "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", - "dev": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "dev": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.30", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz", - "integrity": "sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/http-proxy": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/imagemin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@types/imagemin/-/imagemin-8.0.0.tgz", - "integrity": "sha512-B9X2CUeDv/uUeY9CqkzSTfmsLkeJP6PkmXlh4lODBbf9SwpmNuLS30WzUOi863dgsjY3zt3gY5q2F+UdifRi1A==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/imagemin-gifsicle": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@types/imagemin-gifsicle/-/imagemin-gifsicle-7.0.1.tgz", - "integrity": "sha512-kUz6sUh0P95JOS0RGEaaemWUrASuw+dLsWIveK2UZJx74id/B9epgblMkCk/r5MjUWbZ83wFvacG5Rb/f97gyA==", - "dev": true, - "requires": { - "@types/imagemin": "*" - } - }, - "@types/imagemin-mozjpeg": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@types/imagemin-mozjpeg/-/imagemin-mozjpeg-8.0.1.tgz", - "integrity": "sha512-kMQWEoKxxhlnH4POI3qfW9DjXlQfi80ux3l2b3j5R3eudSCoUIzKQLkfMjNJ6eMYnMWBcB+rfQOWqIzdIwFGKw==", - "dev": true, - "requires": { - "@types/imagemin": "*" - } - }, - "@types/imagemin-optipng": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@types/imagemin-optipng/-/imagemin-optipng-5.2.1.tgz", - "integrity": "sha512-XCM/3q+HUL7v4zOqMI+dJ5dTxT+MUukY9KU49DSnYb/4yWtSMHJyADP+WHSMVzTR63J2ZvfUOzSilzBNEQW78g==", - "dev": true, - "requires": { - "@types/imagemin": "*" - } - }, - "@types/imagemin-svgo": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@types/imagemin-svgo/-/imagemin-svgo-8.0.1.tgz", - "integrity": "sha512-YafkdrVAcr38U0Ln1C+L1n4SIZqC47VBHTyxCq7gTUSd1R9MdIvMcrljWlgU1M9O68WZDeQWUrKipKYfEOCOvQ==", - "dev": true, - "requires": { - "@types/imagemin": "*", - "@types/svgo": "^1" - } - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", - "dev": true - }, - "@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true - }, - "@types/node": { - "version": "18.6.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.4.tgz", - "integrity": "sha512-I4BD3L+6AWiUobfxZ49DlU43gtI+FTHSv9pE2Zekg6KjMpre4ByusaljW3vYSLJrvQ1ck1hUaeVu8HVlY3vzHg==", - "dev": true - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "dev": true - }, - "@types/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", - "dev": true, - "requires": { - "@types/express": "*" - } - }, - "@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", - "dev": true, - "requires": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/svgo": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@types/svgo/-/svgo-1.3.6.tgz", - "integrity": "sha512-AZU7vQcy/4WFEuwnwsNsJnFwupIpbllH1++LXScN6uxT1Z4zPzdrWG97w4/I7eFKFTvfy/bHFStWjdBAg2Vjug==", - "dev": true - }, - "@types/ws": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", - "dev": true, - "requires": {} - }, - "@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", - "dev": true, - "requires": { - "envinfo": "^7.7.3" - } - }, - "@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", - "dev": true, - "requires": {} - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "requires": {} - }, - "adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "requires": { - "ajv": "^8.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "autoprefixer": { - "version": "10.4.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.8.tgz", - "integrity": "sha512-75Jr6Q/XpTqEf6D2ltS5uMewJIx5irCU1oBYJrWjFenq/m12WRRrz6g15L1EIoYvPLXTbEry7rDOwrcYNj77xw==", - "dev": true, - "requires": { - "browserslist": "^4.21.3", - "caniuse-lite": "^1.0.30001373", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", - "dev": true, - "requires": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" - } - }, - "babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", - "dev": true, - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz", - "integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.2", - "semver": "^6.1.1" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", - "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.2", - "core-js-compat": "^3.21.0" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz", - "integrity": "sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.2" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.10.3", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "bonjour-service": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.13.tgz", - "integrity": "sha512-LWKRU/7EqDUC9CTAQtuZl5HzBALoCYwtLhffW3et7vZMwv3bWLpJf8bRYlMD5OCcDpTfnPgNCV4yo9ZIaJGMiA==", - "dev": true, - "requires": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", - "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "browserify-rsa": "^4.1.0", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.4", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.6", - "readable-stream": "^3.6.2", - "safe-buffer": "^5.2.1" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", - "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001370", - "electron-to-chromium": "^1.4.202", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.5" - } - }, - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", - "dev": true - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "requires": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001374", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001374.tgz", - "integrity": "sha512-mWvzatRx3w+j5wx/mpFN5v5twlPrabG8NqX2c6e45LCpymdoGqNvRkRutFUqpRTXKFQFNQJasvK0YT7suW6/Hw==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", - "dev": true - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "clean-css": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz", - "integrity": "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==", - "dev": true, - "requires": { - "source-map": "~0.6.0" - } - }, - "cli-table3": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.2.tgz", - "integrity": "sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==", - "dev": true, - "requires": { - "@colors/colors": "1.5.0", - "string-width": "^4.2.0" - } - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "collect.js": { - "version": "4.34.3", - "resolved": "https://registry.npmjs.org/collect.js/-/collect.js-4.34.3.tgz", - "integrity": "sha512-aFr67xDazPwthsGm729mnClgNuh15JEagU6McKBKqxuHOkWL7vMFzGbhsXDdPZ+H6ia5QKIMGYuGOMENBHnVpg==", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "colord": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", - "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", - "dev": true - }, - "colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "requires": { - "mime-db": ">= 1.43.0 < 2" - } - }, - "compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "concat": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/concat/-/concat-1.0.3.tgz", - "integrity": "sha512-f/ZaH1aLe64qHgTILdldbvyfGiGF4uzeo9IuXUloIOLQzFmIPloy9QbZadNsuVv0j5qbKQvQb/H/UYf2UsKTpw==", - "dev": true, - "requires": { - "commander": "^2.9.0" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "connect-history-api-fallback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", - "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", - "dev": true - }, - "consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", - "dev": true - }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", - "dev": true - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "requires": { - "safe-buffer": "5.2.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true - }, - "core-js-compat": { - "version": "3.24.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.24.1.tgz", - "integrity": "sha512-XhdNAGeRnTpp8xbD+sR/HFDK9CbeeeqXT6TuofXh3urqEevzkWmLRgrVoykodsw8okqo2pu1BOmuCKrHx63zdw==", - "dev": true, - "requires": { - "browserslist": "^4.21.3", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", - "dev": true - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "css-declaration-sorter": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.0.tgz", - "integrity": "sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og==", - "dev": true, - "requires": {} - }, - "css-loader": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz", - "integrity": "sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==", - "dev": true, - "requires": { - "icss-utils": "^5.1.0", - "loader-utils": "^2.0.0", - "postcss": "^8.2.15", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.1.0", - "schema-utils": "^3.0.0", - "semver": "^7.3.5" - }, - "dependencies": { - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "dependencies": { - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - } - } - }, - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "cssnano": { - "version": "5.1.12", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.12.tgz", - "integrity": "sha512-TgvArbEZu0lk/dvg2ja+B7kYoD7BBCmn3+k58xD0qjrGHsFzXY/wKTo9M5egcUCabPol05e/PVoIu79s2JN4WQ==", - "dev": true, - "requires": { - "cssnano-preset-default": "^5.2.12", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - } - }, - "cssnano-preset-default": { - "version": "5.2.12", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz", - "integrity": "sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==", - "dev": true, - "requires": { - "css-declaration-sorter": "^6.3.0", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.0", - "postcss-convert-values": "^5.1.2", - "postcss-discard-comments": "^5.1.2", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.1", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.6", - "postcss-merge-rules": "^5.1.2", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.3", - "postcss-minify-selectors": "^5.2.1", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.1", - "postcss-normalize-repeat-style": "^5.1.1", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.0", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.0", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" - } - }, - "cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "dev": true, - "requires": {} - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "requires": { - "css-tree": "^1.1.2" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "dev": true, - "requires": { - "execa": "^5.0.0" - } - }, - "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true - }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true - }, - "detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", - "dev": true - }, - "dns-packet": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", - "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", - "dev": true, - "requires": { - "@leichtgewicht/ip-codec": "^2.0.1" - } - }, - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "dependencies": { - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - } - } - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domhandler": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", - "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "dependencies": { - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - } - } - }, - "dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", - "dev": true - }, - "dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.4.211", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.211.tgz", - "integrity": "sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A==", - "dev": true - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true - }, - "enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - }, - "envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", - "dev": true, - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.0", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.10.3", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "file-type": { - "version": "12.4.2", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-12.4.2.tgz", - "integrity": "sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg==", - "dev": true - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", - "dev": true - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true - }, - "fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true - }, - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", - "slash": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", - "dev": true - }, - "handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", - "dev": true - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "html-entities": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", - "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", - "dev": true - }, - "html-loader": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-1.3.2.tgz", - "integrity": "sha512-DEkUwSd0sijK5PF3kRWspYi56XP7bTNkyg5YWSzBdjaSDmvCufep5c4Vpb3PBf6lUL0YPtLwBfy9fL0t5hBAGA==", - "dev": true, - "requires": { - "html-minifier-terser": "^5.1.1", - "htmlparser2": "^4.1.0", - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "html-minifier-terser": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", - "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", - "dev": true, - "requires": { - "camel-case": "^4.1.1", - "clean-css": "^4.2.3", - "commander": "^4.1.1", - "he": "^1.2.0", - "param-case": "^3.0.3", - "relateurl": "^0.2.7", - "terser": "^4.6.3" - }, - "dependencies": { - "clean-css": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", - "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", - "dev": true, - "requires": { - "source-map": "~0.6.0" - } - }, - "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true - }, - "terser": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", - "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - } - } - } - } - }, - "htmlparser2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", - "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^3.0.0", - "domutils": "^2.0.0", - "entities": "^2.0.0" - } - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", - "dev": true, - "requires": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", - "dev": true - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "requires": {} - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "imagemin": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-7.0.1.tgz", - "integrity": "sha512-33AmZ+xjZhg2JMCe+vDf6a9mzWukE7l+wAtesjE7KyteqqKjzxv7aVQeWnul1Ve26mWvEQqyPwl0OctNBfSR9w==", - "dev": true, - "requires": { - "file-type": "^12.0.0", - "globby": "^10.0.0", - "graceful-fs": "^4.2.2", - "junk": "^3.1.0", - "make-dir": "^3.0.0", - "p-pipe": "^3.0.0", - "replace-ext": "^1.0.0" - } - }, - "img-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/img-loader/-/img-loader-4.0.0.tgz", - "integrity": "sha512-UwRcPQdwdOyEHyCxe1V9s9YFwInwEWCpoO+kJGfIqDrBDqA8jZUsEZTxQ0JteNPGw/Gupmwesk2OhLTcnw6tnQ==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0" - }, - "dependencies": { - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - } - } - }, - "immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true - }, - "ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true - }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "junk": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", - "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", - "dev": true - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "dev": true - }, - "laravel-mix": { - "version": "6.0.49", - "resolved": "https://registry.npmjs.org/laravel-mix/-/laravel-mix-6.0.49.tgz", - "integrity": "sha512-bBMFpFjp26XfijPvY5y9zGKud7VqlyOE0OWUcPo3vTBY5asw8LTjafAbee1dhfLz6PWNqDziz69CP78ELSpfKw==", - "dev": true, - "requires": { - "@babel/core": "^7.15.8", - "@babel/plugin-proposal-object-rest-spread": "^7.15.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.15.8", - "@babel/preset-env": "^7.15.8", - "@babel/runtime": "^7.15.4", - "@types/babel__core": "^7.1.16", - "@types/clean-css": "^4.2.5", - "@types/imagemin-gifsicle": "^7.0.1", - "@types/imagemin-mozjpeg": "^8.0.1", - "@types/imagemin-optipng": "^5.2.1", - "@types/imagemin-svgo": "^8.0.0", - "autoprefixer": "^10.4.0", - "babel-loader": "^8.2.3", - "chalk": "^4.1.2", - "chokidar": "^3.5.2", - "clean-css": "^5.2.4", - "cli-table3": "^0.6.0", - "collect.js": "^4.28.5", - "commander": "^7.2.0", - "concat": "^1.0.3", - "css-loader": "^5.2.6", - "cssnano": "^5.0.8", - "dotenv": "^10.0.0", - "dotenv-expand": "^5.1.0", - "file-loader": "^6.2.0", - "fs-extra": "^10.0.0", - "glob": "^7.2.0", - "html-loader": "^1.3.2", - "imagemin": "^7.0.1", - "img-loader": "^4.0.0", - "lodash": "^4.17.21", - "md5": "^2.3.0", - "mini-css-extract-plugin": "^1.6.2", - "node-libs-browser": "^2.2.1", - "postcss-load-config": "^3.1.0", - "postcss-loader": "^6.2.0", - "semver": "^7.3.5", - "strip-ansi": "^6.0.0", - "style-loader": "^2.0.0", - "terser": "^5.9.0", - "terser-webpack-plugin": "^5.2.4", - "vue-style-loader": "^4.1.3", - "webpack": "^5.60.0", - "webpack-cli": "^4.9.1", - "webpack-dev-server": "^4.7.3", - "webpack-merge": "^5.8.0", - "webpack-notifier": "^1.14.1", - "webpackbar": "^5.0.0-3", - "yargs": "^17.2.1" - } - }, - "lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", - "dev": true - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true - }, - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true - }, - "lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "requires": { - "tslib": "^2.0.3" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "md5": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", - "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", - "dev": true, - "requires": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" - } - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true - }, - "memfs": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", - "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", - "dev": true, - "requires": { - "fs-monkey": "^1.0.3" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "mini-css-extract-plugin": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz", - "integrity": "sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "webpack-sources": "^1.1.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "multicast-dns": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", - "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", - "dev": true, - "requires": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" - } - }, - "nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "dev": true - }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - } - }, - "node-notifier": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-9.0.1.tgz", - "integrity": "sha512-fPNFIp2hF/Dq7qLDzSg4vZ0J4e9v60gJR+Qx7RbjbWqzPDdEqeVpEx5CFeDAELIl+A/woaaNn1fQ5nEVerMxJg==", - "dev": true, - "requires": { - "growly": "^1.3.0", - "is-wsl": "^2.2.0", - "semver": "^7.3.2", - "shellwords": "^0.1.1", - "uuid": "^8.3.0", - "which": "^2.0.2" - } - }, - "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true - }, - "normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-pipe": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", - "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", - "dev": true - }, - "p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", - "dev": true, - "requires": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "dev": true, - "requires": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "postcss-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-colormin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", - "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", - "dev": true, - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-convert-values": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz", - "integrity": "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==", - "dev": true, - "requires": { - "browserslist": "^4.20.3", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-discard-comments": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", - "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", - "dev": true, - "requires": {} - }, - "postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "dev": true, - "requires": {} - }, - "postcss-discard-empty": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "dev": true, - "requires": {} - }, - "postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "dev": true, - "requires": {} - }, - "postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dev": true, - "requires": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - } - }, - "postcss-loader": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", - "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", - "dev": true, - "requires": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.5" - } - }, - "postcss-merge-longhand": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz", - "integrity": "sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.0" - } - }, - "postcss-merge-rules": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz", - "integrity": "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==", - "dev": true, - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-minify-font-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-minify-gradients": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", - "dev": true, - "requires": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-minify-params": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz", - "integrity": "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==", - "dev": true, - "requires": { - "browserslist": "^4.16.6", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-minify-selectors": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", - "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "requires": {} - }, - "postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "dev": true, - "requires": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.4" - } - }, - "postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dev": true, - "requires": { - "icss-utils": "^5.0.0" - } - }, - "postcss-normalize-charset": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "dev": true, - "requires": {} - }, - "postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-positions": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", - "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-repeat-style": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", - "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-unicode": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", - "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", - "dev": true, - "requires": { - "browserslist": "^4.16.6", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", - "dev": true, - "requires": { - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-whitespace": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-ordered-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", - "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", - "dev": true, - "requires": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-reduce-initial": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", - "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", - "dev": true, - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" - } - }, - "postcss-unique-selectors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", - "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "pretty-time": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", - "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "dependencies": { - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true - } - } - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true - }, - "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - } - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "dev": true, - "requires": { - "resolve": "^1.9.0" - } - }, - "regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", - "dev": true, - "requires": { - "regenerate": "^1.4.2" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true - }, - "regexpu-core": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", - "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", - "dev": true, - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - } - }, - "regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", - "dev": true - }, - "regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true - } - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "dev": true - }, - "replace-ext": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "resolve-url-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", - "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", - "dev": true, - "requires": { - "adjust-sourcemap-loader": "^4.0.0", - "convert-source-map": "^1.7.0", - "loader-utils": "^2.0.0", - "postcss": "^8.2.14", - "source-map": "0.6.1" - } - }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sass": { - "version": "1.54.3", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.3.tgz", - "integrity": "sha512-fLodey5Qd41Pxp/Tk7Al97sViYwF/TazRc5t6E65O7JOk4XF8pzwIW7CvCxYVOfJFFI/1x5+elDyBIixrp+zrw==", - "dev": true, - "requires": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - } - }, - "sass-loader": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.0.2.tgz", - "integrity": "sha512-BbiqbVmbfJaWVeOOAu2o7DhYWtcNmTfvroVgFXa6k2hHheMxNAeDHLNoDy/Q5aoaVlz0LH+MbMktKwm9vN/j8Q==", - "dev": true, - "requires": { - "klona": "^2.0.4", - "neo-async": "^2.6.2" - } - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true - }, - "selfsigned": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", - "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", - "dev": true, - "requires": { - "node-forge": "^1" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - } - } - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true - } - } - }, - "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dev": true, - "requires": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - } - }, - "spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - }, - "std-env": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.1.1.tgz", - "integrity": "sha512-/c645XdExBypL01TpFKiG/3RAa/Qmu+zRi0MwAmrdEkwHNuN0ebo8ccAXBBDa5Z0QOJgBskUIbuCK91x0sCVEw==", - "dev": true - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "style-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", - "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "stylehacks": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", - "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", - "dev": true, - "requires": { - "browserslist": "^4.16.6", - "postcss-selector-parser": "^6.0.4" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "dev": true, - "requires": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - } - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - }, - "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - } - } - }, - "terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.7", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" - }, - "dependencies": { - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true - }, - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "dev": true - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true - }, - "update-browserslist-db": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", - "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - } - } - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", - "dev": true - } - } - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true - }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "vue-style-loader": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", - "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", - "dev": true, - "requires": { - "hash-sum": "^1.0.2", - "loader-utils": "^1.0.2" - }, - "dependencies": { - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - } - } - }, - "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "requires": { - "minimalistic-assert": "^1.0.0" - } - }, - "webpack": { - "version": "5.76.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.1.tgz", - "integrity": "sha512-4+YIK4Abzv8172/SGqObnUjaIHjLEuUasz9EwQj/9xmPPkYJy2Mh03Q/lJfSD3YLzbxy5FeTq5Uw0323Oh6SJQ==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "dependencies": { - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true - } - } - }, - "webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", - "dev": true, - "requires": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "cross-spawn": "^7.0.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" - } - }, - "webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", - "dev": true, - "requires": { - "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - } - } - }, - "webpack-dev-server": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.3.tgz", - "integrity": "sha512-3qp/eoboZG5/6QgiZ3llN8TUzkSpYg1Ko9khWX1h40MIEUNS2mDoIa8aXsPfskER+GbTvs/IJZ1QTBBhhuetSw==", - "dev": true, - "requires": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.0.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" - }, - "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - } - } - }, - "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "webpack-notifier": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/webpack-notifier/-/webpack-notifier-1.15.0.tgz", - "integrity": "sha512-N2V8UMgRB5komdXQRavBsRpw0hPhJq2/SWNOGuhrXpIgRhcMexzkGQysUyGStHLV5hkUlgpRiF7IUXoBqyMmzQ==", - "dev": true, - "requires": { - "node-notifier": "^9.0.0", - "strip-ansi": "^6.0.0" - } - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "webpackbar": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz", - "integrity": "sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "consola": "^2.15.3", - "pretty-time": "^1.1.0", - "std-env": "^3.0.1" - } - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "ws": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", - "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", - "dev": true, - "requires": {} - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true - }, - "yargs": { - "version": "17.5.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", - "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 04da67cc77e..00000000000 --- a/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "private": true, - "scripts": { - "dev": "npm run development", - "development": "mix", - "watch": "mix watch", - "watch-poll": "mix watch -- --watch-options-poll=1000", - "hot": "mix watch --hot", - "prod": "npm run production", - "production": "mix --production" - }, - "devDependencies": { - "axios": "^0.27.2", - "laravel-mix": "^6.0.6", - "lodash": "^4.17.19", - "postcss": "^8.4.31", - "resolve-url-loader": "^5.0.0", - "sass": "^1.32.11", - "sass-loader": "^13.0.2" - } -} From 5d57c22497ae6c51f5a00464259a028a8107099d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Mon, 27 Nov 2023 18:51:38 +0100 Subject: [PATCH 061/209] composer update + bump log-viewer version (#2062) --- composer.lock | 223 +++++++++++++-------- config/log-viewer.php | 4 +- public/vendor/log-viewer/app.css | 2 +- public/vendor/log-viewer/app.js | 2 +- public/vendor/log-viewer/mix-manifest.json | 4 +- 5 files changed, 149 insertions(+), 86 deletions(-) diff --git a/composer.lock b/composer.lock index 77660b72a8a..a5a55744392 100644 --- a/composer.lock +++ b/composer.lock @@ -375,16 +375,16 @@ }, { "name": "doctrine/dbal", - "version": "3.7.1", + "version": "3.7.2", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "5b7bd66c9ff58c04c5474ab85edce442f8081cb2" + "reference": "0ac3c270590e54910715e9a1a044cc368df282b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/5b7bd66c9ff58c04c5474ab85edce442f8081cb2", - "reference": "5b7bd66c9ff58c04c5474ab85edce442f8081cb2", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/0ac3c270590e54910715e9a1a044cc368df282b2", + "reference": "0ac3c270590e54910715e9a1a044cc368df282b2", "shasum": "" }, "require": { @@ -400,7 +400,7 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.35", + "phpstan/phpstan": "1.10.42", "phpstan/phpstan-strict-rules": "^1.5", "phpunit/phpunit": "9.6.13", "psalm/plugin-phpunit": "0.18.4", @@ -468,7 +468,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.7.1" + "source": "https://github.com/doctrine/dbal/tree/3.7.2" }, "funding": [ { @@ -484,7 +484,7 @@ "type": "tidelift" } ], - "time": "2023-10-06T05:06:20+00:00" + "time": "2023-11-19T08:06:58+00:00" }, { "name": "doctrine/deprecations", @@ -2037,16 +2037,16 @@ }, { "name": "laravel/framework", - "version": "v10.32.1", + "version": "v10.33.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "b30e44f20d244f7ba125283e14a8bbac167f4e5b" + "reference": "4536872e3e5b6be51b1f655dafd12c9a4fa0cfe8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/b30e44f20d244f7ba125283e14a8bbac167f4e5b", - "reference": "b30e44f20d244f7ba125283e14a8bbac167f4e5b", + "url": "https://api.github.com/repos/laravel/framework/zipball/4536872e3e5b6be51b1f655dafd12c9a4fa0cfe8", + "reference": "4536872e3e5b6be51b1f655dafd12c9a4fa0cfe8", "shasum": "" }, "require": { @@ -2235,7 +2235,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-11-14T22:57:08+00:00" + "time": "2023-11-21T14:49:31+00:00" }, { "name": "laravel/prompts", @@ -2544,16 +2544,16 @@ }, { "name": "league/flysystem", - "version": "3.19.0", + "version": "3.21.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "1b2aa10f2326e0351399b8ce68e287d8e9209a83" + "reference": "a326d8a2d007e4ca327a57470846e34363789258" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/1b2aa10f2326e0351399b8ce68e287d8e9209a83", - "reference": "1b2aa10f2326e0351399b8ce68e287d8e9209a83", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a326d8a2d007e4ca327a57470846e34363789258", + "reference": "a326d8a2d007e4ca327a57470846e34363789258", "shasum": "" }, "require": { @@ -2618,7 +2618,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.19.0" + "source": "https://github.com/thephpleague/flysystem/tree/3.21.0" }, "funding": [ { @@ -2630,20 +2630,20 @@ "type": "github" } ], - "time": "2023-11-07T09:04:28+00:00" + "time": "2023-11-18T13:59:15+00:00" }, { "name": "league/flysystem-local", - "version": "3.19.0", + "version": "3.21.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-local.git", - "reference": "8d868217f9eeb4e9a7320db5ccad825e9a7a4076" + "reference": "470eb1c09eaabd49ebd908ae06f23983ba3ecfe7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/8d868217f9eeb4e9a7320db5ccad825e9a7a4076", - "reference": "8d868217f9eeb4e9a7320db5ccad825e9a7a4076", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/470eb1c09eaabd49ebd908ae06f23983ba3ecfe7", + "reference": "470eb1c09eaabd49ebd908ae06f23983ba3ecfe7", "shasum": "" }, "require": { @@ -2678,7 +2678,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem-local/issues", - "source": "https://github.com/thephpleague/flysystem-local/tree/3.19.0" + "source": "https://github.com/thephpleague/flysystem-local/tree/3.21.0" }, "funding": [ { @@ -2690,7 +2690,7 @@ "type": "github" } ], - "time": "2023-11-06T20:35:28+00:00" + "time": "2023-11-18T13:41:42+00:00" }, { "name": "league/mime-type-detection", @@ -3433,16 +3433,17 @@ "source": { "type": "git", "url": "https://github.com/LycheeOrg/log-viewer.git", - "reference": "2af034b2f9074d387b9bff39e9012042c18f5d08" + "reference": "7a81f37e948d896771c4e2bfa1a042d7b94a1f8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/LycheeOrg/log-viewer/zipball/2af034b2f9074d387b9bff39e9012042c18f5d08", - "reference": "2af034b2f9074d387b9bff39e9012042c18f5d08", + "url": "https://api.github.com/repos/LycheeOrg/log-viewer/zipball/7a81f37e948d896771c4e2bfa1a042d7b94a1f8e", + "reference": "7a81f37e948d896771c4e2bfa1a042d7b94a1f8e", "shasum": "" }, "require": { "illuminate/contracts": "^8.0|^9.0|^10.0", + "opcodesio/mail-parser": "^0.1.6", "php": "^8.0" }, "conflict": { @@ -3452,11 +3453,10 @@ "guzzlehttp/guzzle": "^7.2", "itsgoingd/clockwork": "^5.1", "laravel/pint": "^1.0", - "nunomaduro/collision": "^6.0", + "nunomaduro/collision": "^7.0", "orchestra/testbench": "^7.6|^8.0", - "pestphp/pest": "^1.21", - "pestphp/pest-plugin-laravel": "^1.1", - "phpunit/phpunit": "^9.5", + "pestphp/pest": "^2.0", + "pestphp/pest-plugin-laravel": "^2.0", "spatie/test-time": "^1.3" }, "suggest": { @@ -3521,7 +3521,70 @@ "support": { "source": "https://github.com/LycheeOrg/log-viewer/tree/lycheeOrg" }, - "time": "2023-05-16T21:43:39+00:00" + "funding": [ + { + "type": "github", + "url": "https://github.com/arukompas" + }, + { + "type": "custom", + "url": "https://www.buymeacoffee.com/arunas" + } + ], + "time": "2023-11-27T16:44:50+00:00" + }, + { + "name": "opcodesio/mail-parser", + "version": "v0.1.6", + "source": { + "type": "git", + "url": "https://github.com/opcodesio/mail-parser.git", + "reference": "639ef31cbd146a63416283e75afce152e13233ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/opcodesio/mail-parser/zipball/639ef31cbd146a63416283e75afce152e13233ea", + "reference": "639ef31cbd146a63416283e75afce152e13233ea", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "pestphp/pest": "^2.16", + "symfony/var-dumper": "^6.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Opcodes\\MailParser\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Arunas Skirius", + "email": "arukomp@gmail.com", + "role": "Developer" + } + ], + "description": "Parse emails without the mailparse extension", + "keywords": [ + "arukompas", + "email", + "email parser", + "mail", + "opcodesio", + "php" + ], + "support": { + "issues": "https://github.com/opcodesio/mail-parser/issues", + "source": "https://github.com/opcodesio/mail-parser/tree/v0.1.6" + }, + "time": "2023-11-19T08:47:43+00:00" }, { "name": "php-ffmpeg/php-ffmpeg", @@ -8768,50 +8831,50 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.38.2", + "version": "v3.40.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "d872cdd543797ade030aaa307c0a4954a712e081" + "reference": "27d2b3265b5d550ec411b4319967ae7cfddfb2e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/d872cdd543797ade030aaa307c0a4954a712e081", - "reference": "d872cdd543797ade030aaa307c0a4954a712e081", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/27d2b3265b5d550ec411b4319967ae7cfddfb2e0", + "reference": "27d2b3265b5d550ec411b4319967ae7cfddfb2e0", "shasum": "" }, "require": { - "composer/semver": "^3.3", + "composer/semver": "^3.4", "composer/xdebug-handler": "^3.0.3", "ext-json": "*", "ext-tokenizer": "*", "php": "^7.4 || ^8.0", "sebastian/diff": "^4.0 || ^5.0", - "symfony/console": "^5.4 || ^6.0", - "symfony/event-dispatcher": "^5.4 || ^6.0", - "symfony/filesystem": "^5.4 || ^6.0", - "symfony/finder": "^5.4 || ^6.0", - "symfony/options-resolver": "^5.4 || ^6.0", - "symfony/polyfill-mbstring": "^1.27", - "symfony/polyfill-php80": "^1.27", - "symfony/polyfill-php81": "^1.27", - "symfony/process": "^5.4 || ^6.0", - "symfony/stopwatch": "^5.4 || ^6.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", + "symfony/finder": "^5.4 || ^6.0 || ^7.0", + "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-mbstring": "^1.28", + "symfony/polyfill-php80": "^1.28", + "symfony/polyfill-php81": "^1.28", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { "facile-it/paraunit": "^1.3 || ^2.0", "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^2.0", + "keradus/cli-executor": "^2.1", "mikey179/vfsstream": "^1.6.11", - "php-coveralls/php-coveralls": "^2.5.3", + "php-coveralls/php-coveralls": "^2.7", "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy": "^1.16", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", + "phpspec/prophecy": "^1.17", "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5", - "symfony/phpunit-bridge": "^6.2.3", - "symfony/yaml": "^5.4 || ^6.0" + "phpunit/phpunit": "^9.6", + "symfony/phpunit-bridge": "^6.3.8 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -8849,7 +8912,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.38.2" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.40.0" }, "funding": [ { @@ -8857,7 +8920,7 @@ "type": "github" } ], - "time": "2023-11-14T00:19:22+00:00" + "time": "2023-11-26T09:25:53+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -9757,16 +9820,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.24.2", + "version": "1.24.4", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "bcad8d995980440892759db0c32acae7c8e79442" + "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bcad8d995980440892759db0c32acae7c8e79442", - "reference": "bcad8d995980440892759db0c32acae7c8e79442", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6bd0c26f3786cd9b7c359675cb789e35a8e07496", + "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496", "shasum": "" }, "require": { @@ -9798,22 +9861,22 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.2" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.4" }, - "time": "2023-09-26T12:28:12+00:00" + "time": "2023-11-26T18:29:22+00:00" }, { "name": "phpstan/phpstan", - "version": "1.10.41", + "version": "1.10.45", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "c6174523c2a69231df55bdc65b61655e72876d76" + "reference": "2f024fbb47432e2e62ad8a8032387aa2dd631c73" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c6174523c2a69231df55bdc65b61655e72876d76", - "reference": "c6174523c2a69231df55bdc65b61655e72876d76", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/2f024fbb47432e2e62ad8a8032387aa2dd631c73", + "reference": "2f024fbb47432e2e62ad8a8032387aa2dd631c73", "shasum": "" }, "require": { @@ -9862,7 +9925,7 @@ "type": "tidelift" } ], - "time": "2023-11-05T12:57:57+00:00" + "time": "2023-11-27T14:15:06+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", @@ -9963,16 +10026,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "10.1.8", + "version": "10.1.9", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "84838eed9ded511f61dc3e8b5944a52d9017b297" + "reference": "a56a9ab2f680246adcf3db43f38ddf1765774735" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/84838eed9ded511f61dc3e8b5944a52d9017b297", - "reference": "84838eed9ded511f61dc3e8b5944a52d9017b297", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/a56a9ab2f680246adcf3db43f38ddf1765774735", + "reference": "a56a9ab2f680246adcf3db43f38ddf1765774735", "shasum": "" }, "require": { @@ -10029,7 +10092,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.8" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.9" }, "funding": [ { @@ -10037,7 +10100,7 @@ "type": "github" } ], - "time": "2023-11-15T13:31:15+00:00" + "time": "2023-11-23T12:23:20+00:00" }, { "name": "phpunit/php-file-iterator", @@ -11890,16 +11953,16 @@ }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.2", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96", "shasum": "" }, "require": { @@ -11928,7 +11991,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + "source": "https://github.com/theseer/tokenizer/tree/1.2.2" }, "funding": [ { @@ -11936,7 +11999,7 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2023-11-20T00:12:19+00:00" } ], "aliases": [], diff --git a/config/log-viewer.php b/config/log-viewer.php index 0302ba874c1..27f4b036c5e 100644 --- a/config/log-viewer.php +++ b/config/log-viewer.php @@ -1,6 +1,6 @@ '/^\[(\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2}\.?(\d{6}([\+-]\d\d:\d\d)?)?)\](.*?(\w+)\.|.*?)(' - . implode('|', array_filter(Level::caseValues())) + . implode('|', array_filter(LevelClass::caseValues())) . ')?: (.*?)( in [\/].*?:[0-9]+)?$/is', ], ], diff --git a/public/vendor/log-viewer/app.css b/public/vendor/log-viewer/app.css index 8fc417bf46d..9d9bde50233 100644 --- a/public/vendor/log-viewer/app.css +++ b/public/vendor/log-viewer/app.css @@ -1 +1 @@ -/*! tailwindcss v3.1.6 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e4e4e7;box-sizing:border-box}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#a1a1aa;opacity:1}input::placeholder,textarea::placeholder{color:#a1a1aa;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}.\!container{width:100%!important}@media (min-width:640px){.container{max-width:640px}.\!container{max-width:640px!important}}@media (min-width:768px){.container{max-width:768px}.\!container{max-width:768px!important}}@media (min-width:1024px){.container{max-width:1024px}.\!container{max-width:1024px!important}}@media (min-width:1280px){.container{max-width:1280px}.\!container{max-width:1280px!important}}@media (min-width:1536px){.container{max-width:1536px}.\!container{max-width:1536px!important}}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{left:0;right:0}.inset-0,.inset-y-0{bottom:0;top:0}.bottom-0{bottom:0}.left-3{left:.75rem}.right-7{right:1.75rem}.right-0{right:0}.top-9{top:2.25rem}.top-0{top:0}.bottom-10{bottom:2.5rem}.left-0{left:0}.-left-\[200\%\]{left:-200%}.right-\[200\%\]{right:200%}.bottom-4{bottom:1rem}.right-4{right:1rem}.z-20{z-index:20}.z-10{z-index:10}.m-1{margin:.25rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.my-auto{margin-bottom:auto;margin-top:auto}.-my-1{margin-bottom:-.25rem;margin-top:-.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-1\.5{margin-left:.375rem;margin-right:.375rem}.mb-1{margin-bottom:.25rem}.ml-2{margin-left:.5rem}.mt-0{margin-top:0}.mr-1\.5{margin-right:.375rem}.mr-1{margin-right:.25rem}.mt-2{margin-top:.5rem}.mb-8{margin-bottom:2rem}.mt-6{margin-top:1.5rem}.ml-1{margin-left:.25rem}.mt-1{margin-top:.25rem}.mr-2{margin-right:.5rem}.mb-5{margin-bottom:1.25rem}.ml-3{margin-left:.75rem}.mr-5{margin-right:1.25rem}.-mr-2{margin-right:-.5rem}.mr-2\.5{margin-right:.625rem}.mb-4{margin-bottom:1rem}.mt-3{margin-top:.75rem}.ml-5{margin-left:1.25rem}.mb-2{margin-bottom:.5rem}.mr-4{margin-right:1rem}.-mb-0\.5{margin-bottom:-.125rem}.-mb-0{margin-bottom:0}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-full{height:100%}.h-\[18px\]{height:18px}.h-5{height:1.25rem}.h-3{height:.75rem}.h-4{height:1rem}.h-14{height:3.5rem}.h-7{height:1.75rem}.h-6{height:1.5rem}.h-0{height:0}.max-h-screen{max-height:100vh}.max-h-60{max-height:15rem}.min-h-\[38px\]{min-height:38px}.min-h-screen{min-height:100vh}.w-\[18px\]{width:18px}.w-5{width:1.25rem}.w-3{width:.75rem}.w-4{width:1rem}.w-48{width:12rem}.w-full{width:100%}.w-14{width:3.5rem}.w-screen{width:100vw}.w-6{width:1.5rem}.w-\[120px\]{width:120px}.w-\[180px\]{width:180px}.w-\[110px\]{width:110px}.min-w-\[240px\]{min-width:240px}.min-w-full{min-width:100%}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.max-w-\[1px\]{max-width:1px}.flex-1{flex:1 1 0%}.shrink{flex-shrink:1}.table-fixed{table-layout:fixed}.border-separate{border-collapse:separate}.translate-x-full{--tw-translate-x:100%}.translate-x-0,.translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.rotate-90{--tw-rotate:90deg}.rotate-90,.scale-100{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-90{--tw-scale-x:.9;--tw-scale-y:.9}.scale-90,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.cursor-default{cursor:default}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.grid-flow-col{grid-auto-flow:column}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-y-auto{overflow-y:auto}.overflow-y-scroll{overflow-y:scroll}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-l{border-left-width:1px}.border-t-2{border-top-width:2px}.border-yellow-300{--tw-border-opacity:1;border-color:rgb(253 224 71/var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-brand-500{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-brand-600{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.bg-opacity-75{--tw-bg-opacity:0.75}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.from-gray-100{--tw-gradient-from:#f4f4f5;--tw-gradient-to:hsla(240,5%,96%,0);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.to-transparent{--tw-gradient-to:transparent}.p-12{padding:3rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-4{padding-left:1rem;padding-right:1rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-4{padding-bottom:1rem;padding-top:1rem}.px-8{padding-left:2rem;padding-right:2rem}.pr-4{padding-right:1rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pr-10{padding-right:2.5rem}.pr-2{padding-right:.5rem}.pr-9{padding-right:2.25rem}.pl-10{padding-left:2.5rem}.pl-2{padding-left:.5rem}.pt-2{padding-top:.5rem}.pb-1{padding-bottom:.25rem}.pt-3{padding-top:.75rem}.pb-16{padding-bottom:4rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.text-base{font-size:1rem;line-height:1.5rem}.font-semibold{font-weight:600}.font-normal{font-weight:400}.font-medium{font-weight:500}.italic{font-style:italic}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.text-brand-700{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.text-yellow-700{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.text-brand-500{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgb(39 39 42/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-brand-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.opacity-100{opacity:1}.opacity-0{opacity:0}.opacity-90{opacity:.9}.opacity-75{opacity:.75}.opacity-25{opacity:.25}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-md,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-brand-500{outline-color:#0ea5e9}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-opacity-5{--tw-ring-opacity:0.05}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.spin{-webkit-animation-duration:1.5s;-moz-animation-duration:1.5s;-ms-animation-duration:1.5s;animation-duration:1.5s;-webkit-animation-iteration-count:infinite;-moz-animation-iteration-count:infinite;-ms-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-name:spin;-moz-animation-name:spin;-ms-animation-name:spin;animation-name:spin;-webkit-animation-timing-function:linear;-moz-animation-timing-function:linear;-ms-animation-timing-function:linear;animation-timing-function:linear}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}html.dark{color-scheme:dark}#bmc-wbtn{height:48px!important;width:48px!important}#bmc-wbtn>img{height:32px!important;width:32px!important}.log-levels-selector .dropdown-toggle{white-space:nowrap}.log-levels-selector .dropdown-toggle:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .log-levels-selector .dropdown-toggle:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.log-levels-selector .dropdown-toggle>svg{height:1rem;margin-left:.25rem;opacity:.75;width:1rem}.log-levels-selector .dropdown .log-level{font-weight:600}.log-levels-selector .dropdown .log-level.success{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.dark .log-levels-selector .dropdown .log-level.success{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.log-levels-selector .dropdown .log-level.info{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.dark .log-levels-selector .dropdown .log-level.info{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.log-levels-selector .dropdown .log-level.warning{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}.dark .log-levels-selector .dropdown .log-level.warning{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}.log-levels-selector .dropdown .log-level.danger{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}.dark .log-levels-selector .dropdown .log-level.danger{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}.log-levels-selector .dropdown .log-level.none{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.dark .log-levels-selector .dropdown .log-level.none{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.log-levels-selector .dropdown .log-count{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity));margin-left:2rem;white-space:nowrap}.dark .log-levels-selector .dropdown .log-count{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.log-levels-selector .dropdown button.active .log-level.success{--tw-text-opacity:1;color:rgb(209 250 229/var(--tw-text-opacity))}.log-levels-selector .dropdown button.active .log-level.info{--tw-text-opacity:1;color:rgb(224 242 254/var(--tw-text-opacity))}.log-levels-selector .dropdown button.active .log-level.warning{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity))}.log-levels-selector .dropdown button.active .log-level.danger{--tw-text-opacity:1;color:rgb(255 228 230/var(--tw-text-opacity))}.log-levels-selector .dropdown button.active .log-level.none{--tw-text-opacity:1;color:rgb(244 244 245/var(--tw-text-opacity))}.log-levels-selector .dropdown button.active .log-count{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity))}.dark .log-levels-selector .dropdown button.active .log-count{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.log-levels-selector .dropdown .no-results{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity));font-size:.75rem;line-height:1rem;padding:.25rem 1rem;text-align:center}.dark .log-levels-selector .dropdown .no-results{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.log-item{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));cursor:pointer;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dark .log-item{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.log-item.success.active>td,.log-item.success:focus-within>td,.log-item.success:hover>td{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity))}.dark .log-item.success.active>td,.dark .log-item.success:focus-within>td,.dark .log-item.success:hover>td{--tw-bg-opacity:0.4;background-color:rgb(6 95 70/var(--tw-bg-opacity))}.log-item.success .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity))}.dark .log-item.success .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.log-item.success .log-level{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.dark .log-item.success .log-level{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.log-item.info.active>td,.log-item.info:focus-within>td,.log-item.info:hover>td{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}.dark .log-item.info.active>td,.dark .log-item.info:focus-within>td,.dark .log-item.info:hover>td{--tw-bg-opacity:0.4;background-color:rgb(7 89 133/var(--tw-bg-opacity))}.log-item.info .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity))}.dark .log-item.info .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}.log-item.info .log-level{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.dark .log-item.info .log-level{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.log-item.warning.active>td,.log-item.warning:focus-within>td,.log-item.warning:hover>td{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity))}.dark .log-item.warning.active>td,.dark .log-item.warning:focus-within>td,.dark .log-item.warning:hover>td{--tw-bg-opacity:0.4;background-color:rgb(146 64 14/var(--tw-bg-opacity))}.log-item.warning .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity))}.dark .log-item.warning .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity))}.log-item.warning .log-level{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}.dark .log-item.warning .log-level{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}.log-item.danger.active>td,.log-item.danger:focus-within>td,.log-item.danger:hover>td{--tw-bg-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity))}.dark .log-item.danger.active>td,.dark .log-item.danger:focus-within>td,.dark .log-item.danger:hover>td{--tw-bg-opacity:0.4;background-color:rgb(159 18 57/var(--tw-bg-opacity))}.log-item.danger .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(190 18 60/var(--tw-bg-opacity))}.dark .log-item.danger .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(251 113 133/var(--tw-bg-opacity))}.log-item.danger .log-level{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}.dark .log-item.danger .log-level{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}.log-item.none.active>td,.log-item.none:focus-within>td,.log-item.none:hover>td{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.dark .log-item.none.active>td,.dark .log-item.none:focus-within>td,.dark .log-item.none:hover>td{--tw-bg-opacity:0.4;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.log-item.none .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}.dark .log-item.none .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(161 161 170/var(--tw-bg-opacity))}.log-item.none .log-level{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.dark .log-item.none .log-level{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.log-item:hover .log-level-icon{opacity:1}.badge{align-items:center;border-radius:.375rem;cursor:pointer;display:inline-flex;font-size:.875rem;line-height:1.25rem;margin-right:.5rem;margin-top:.25rem;padding:.25rem .75rem;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.badge.success{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity));border-color:rgb(167 243 208/var(--tw-border-opacity));border-width:1px;color:rgb(82 82 91/var(--tw-text-opacity))}.dark .badge.success{--tw-border-opacity:1;--tw-bg-opacity:0.4;--tw-text-opacity:1;background-color:rgb(6 78 59/var(--tw-bg-opacity));border-color:rgb(6 95 70/var(--tw-border-opacity));color:rgb(161 161 170/var(--tw-text-opacity))}.badge.success:hover{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity))}.dark .badge.success:hover{--tw-bg-opacity:0.75;background-color:rgb(6 78 59/var(--tw-bg-opacity))}.badge.success .checkmark{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}.dark .badge.success .checkmark{--tw-border-opacity:1;border-color:rgb(6 95 70/var(--tw-border-opacity))}.badge.success.active{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity));border-color:rgb(4 120 87/var(--tw-border-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.dark .badge.success.active{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity));border-color:rgb(5 150 105/var(--tw-border-opacity))}.badge.success.active:hover{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.dark .badge.success.active:hover{--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity))}.badge.success.active .checkmark{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}.dark .badge.success.active .checkmark{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity));border-color:rgb(4 120 87/var(--tw-border-opacity))}.badge.success.active .checkmark>svg{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.dark .badge.success.active .checkmark>svg{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.badge.info{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity));border-color:rgb(186 230 253/var(--tw-border-opacity));border-width:1px;color:rgb(82 82 91/var(--tw-text-opacity))}.dark .badge.info{--tw-border-opacity:1;--tw-bg-opacity:0.4;--tw-text-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity));border-color:rgb(7 89 133/var(--tw-border-opacity));color:rgb(161 161 170/var(--tw-text-opacity))}.badge.info:hover{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}.dark .badge.info:hover{--tw-bg-opacity:0.75;background-color:rgb(12 74 110/var(--tw-bg-opacity))}.badge.info .checkmark{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity))}.dark .badge.info .checkmark{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}.badge.info.active{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity));border-color:rgb(3 105 161/var(--tw-border-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.dark .badge.info.active{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity));border-color:rgb(2 132 199/var(--tw-border-opacity))}.badge.info.active:hover{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}.dark .badge.info.active:hover{--tw-bg-opacity:1;background-color:rgb(7 89 133/var(--tw-bg-opacity))}.badge.info.active .checkmark{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.dark .badge.info.active .checkmark{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity));border-color:rgb(3 105 161/var(--tw-border-opacity))}.badge.info.active .checkmark>svg{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.dark .badge.info.active .checkmark>svg{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.badge.warning{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity));border-color:rgb(253 230 138/var(--tw-border-opacity));border-width:1px;color:rgb(82 82 91/var(--tw-text-opacity))}.dark .badge.warning{--tw-border-opacity:1;--tw-bg-opacity:0.4;--tw-text-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity));border-color:rgb(146 64 14/var(--tw-border-opacity));color:rgb(161 161 170/var(--tw-text-opacity))}.badge.warning:hover{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}.dark .badge.warning:hover{--tw-bg-opacity:0.75;background-color:rgb(120 53 15/var(--tw-bg-opacity))}.badge.warning .checkmark{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity))}.dark .badge.warning .checkmark{--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-opacity))}.badge.warning.active{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity));border-color:rgb(180 83 9/var(--tw-border-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.dark .badge.warning.active{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity));border-color:rgb(217 119 6/var(--tw-border-opacity))}.badge.warning.active:hover{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity))}.dark .badge.warning.active:hover{--tw-bg-opacity:1;background-color:rgb(146 64 14/var(--tw-bg-opacity))}.badge.warning.active .checkmark{--tw-border-opacity:1;border-color:rgb(217 119 6/var(--tw-border-opacity))}.dark .badge.warning.active .checkmark{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity));border-color:rgb(180 83 9/var(--tw-border-opacity))}.badge.warning.active .checkmark>svg{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}.dark .badge.warning.active .checkmark>svg{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}.badge.danger{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity));border-color:rgb(254 205 211/var(--tw-border-opacity));border-width:1px;color:rgb(82 82 91/var(--tw-text-opacity))}.dark .badge.danger{--tw-border-opacity:1;--tw-bg-opacity:0.4;--tw-text-opacity:1;background-color:rgb(136 19 55/var(--tw-bg-opacity));border-color:rgb(159 18 57/var(--tw-border-opacity));color:rgb(161 161 170/var(--tw-text-opacity))}.badge.danger:hover{--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity))}.dark .badge.danger:hover{--tw-bg-opacity:0.75;background-color:rgb(136 19 55/var(--tw-bg-opacity))}.badge.danger .checkmark{--tw-border-opacity:1;border-color:rgb(254 205 211/var(--tw-border-opacity))}.dark .badge.danger .checkmark{--tw-border-opacity:1;border-color:rgb(159 18 57/var(--tw-border-opacity))}.badge.danger.active{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity));border-color:rgb(190 18 60/var(--tw-border-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.dark .badge.danger.active{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(190 18 60/var(--tw-bg-opacity));border-color:rgb(225 29 72/var(--tw-border-opacity))}.badge.danger.active:hover{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity))}.dark .badge.danger.active:hover{--tw-bg-opacity:1;background-color:rgb(159 18 57/var(--tw-bg-opacity))}.badge.danger.active .checkmark{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}.dark .badge.danger.active .checkmark{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity));border-color:rgb(190 18 60/var(--tw-border-opacity))}.badge.danger.active .checkmark>svg{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}.dark .badge.danger.active .checkmark>svg{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}.badge.none{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity));border-color:rgb(228 228 231/var(--tw-border-opacity));border-width:1px;color:rgb(82 82 91/var(--tw-text-opacity))}.dark .badge.none{--tw-border-opacity:1;--tw-bg-opacity:0.4;--tw-text-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity));border-color:rgb(39 39 42/var(--tw-border-opacity));color:rgb(161 161 170/var(--tw-text-opacity))}.badge.none:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.dark .badge.none:hover{--tw-bg-opacity:0.75;background-color:rgb(24 24 27/var(--tw-bg-opacity))}.badge.none .checkmark{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}.dark .badge.none .checkmark{--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity))}.badge.none.active{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));color:rgb(39 39 42/var(--tw-text-opacity))}.dark .badge.none.active{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity));border-color:rgb(82 82 91/var(--tw-border-opacity));color:rgb(244 244 245/var(--tw-text-opacity))}.badge.none.active:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.dark .badge.none.active:hover{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}.badge.none.active .checkmark{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity))}.dark .badge.none.active .checkmark{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity));border-color:rgb(63 63 70/var(--tw-border-opacity))}.badge.none.active .checkmark>svg{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.dark .badge.none.active .checkmark>svg{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.log-list table>thead th{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity));color:rgb(113 113 122/var(--tw-text-opacity));font-size:.875rem;font-weight:600;line-height:1.25rem;padding:.5rem;position:sticky;text-align:left;top:0;z-index:10}.file-list .folder-container .folder-item-container.log-list table>thead th{position:sticky}.dark .log-list table>thead th{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity));color:rgb(161 161 170/var(--tw-text-opacity))}.log-list .log-group{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));position:relative}.dark .log-list .log-group{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity));color:rgb(228 228 231/var(--tw-text-opacity))}.log-list .log-group .log-item>td{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity));border-top-width:1px;font-size:.75rem;line-height:1rem;padding:.375rem .25rem}.dark .log-list .log-group .log-item>td{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}@media (min-width:1024px){.log-list .log-group .log-item>td{font-size:.875rem;line-height:1.25rem;padding:.5rem}}.log-list .log-group.first .log-item>td{border-top-color:transparent}.log-list .log-group .log-stack{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity));font-size:10px;line-height:.75rem;padding:.25rem .5rem;white-space:pre-wrap;word-break:break-all}.dark .log-list .log-group .log-stack{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}@media (min-width:1024px){.log-list .log-group .log-stack{font-size:.75rem;line-height:1rem;padding:.5rem 2rem}}.log-list .log-group .log-link{align-items:center;border-radius:.25rem;display:flex;justify-content:flex-end;margin-bottom:-.125rem;margin-top:-.125rem;padding-bottom:.125rem;padding-left:.25rem;padding-top:.125rem;width:100%}@media (min-width:640px){.log-list .log-group .log-link{min-width:64px}}.log-list .log-group .log-link>svg{height:1rem;margin-left:.25rem;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:1rem}.log-list .log-group .log-link:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .log-list .log-group .log-link:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(56 189 248/var(--tw-ring-opacity))}.log-list .log-group code,.log-list .log-group mark{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity));border-radius:.25rem;color:rgb(24 24 27/var(--tw-text-opacity));padding:.125rem .25rem}.dark .log-list .log-group code,.dark .log-list .log-group mark{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(133 77 14/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.pagination{align-items:center;display:flex;justify-content:center;width:100%}@media (min-width:640px){.pagination{margin-top:.5rem;padding-left:1rem;padding-right:1rem}}@media (min-width:1024px){.pagination{padding-left:0;padding-right:0}}.pagination .previous{display:flex;flex:1 1 0%;justify-content:flex-start;margin-top:-1px;width:0}@media (min-width:768px){.pagination .previous{justify-content:flex-end}}.pagination .previous button{--tw-text-opacity:1;align-items:center;border-color:transparent;border-top-width:2px;color:rgb(113 113 122/var(--tw-text-opacity));display:inline-flex;font-size:.875rem;font-weight:500;line-height:1.25rem;padding-right:.25rem;padding-top:.75rem}.dark .pagination .previous button{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.pagination .previous button:hover{--tw-border-opacity:1;--tw-text-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity));color:rgb(63 63 70/var(--tw-text-opacity))}.dark .pagination .previous button:hover{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.pagination .previous button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .pagination .previous button:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(56 189 248/var(--tw-ring-opacity))}.pagination .previous button svg{color:currentColor;height:1.25rem;margin-left:.75rem;margin-right:.75rem;width:1.25rem}.pagination .next{display:flex;flex:1 1 0%;justify-content:flex-end;margin-top:-1px;width:0}@media (min-width:768px){.pagination .next{justify-content:flex-start}}.pagination .next button{--tw-text-opacity:1;align-items:center;border-color:transparent;border-top-width:2px;color:rgb(113 113 122/var(--tw-text-opacity));display:inline-flex;font-size:.875rem;font-weight:500;line-height:1.25rem;padding-left:.25rem;padding-top:.75rem}.dark .pagination .next button{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.pagination .next button:hover{--tw-border-opacity:1;--tw-text-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity));color:rgb(63 63 70/var(--tw-text-opacity))}.dark .pagination .next button:hover{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.pagination .next button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .pagination .next button:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(56 189 248/var(--tw-ring-opacity))}.pagination .next button svg{color:currentColor;height:1.25rem;margin-left:.75rem;margin-right:.75rem;width:1.25rem}.pagination .pages{display:none}@media (min-width:640px){.pagination .pages{display:flex;margin-top:-1px}}.pagination .pages span{--tw-text-opacity:1;align-items:center;border-color:transparent;border-top-width:2px;color:rgb(113 113 122/var(--tw-text-opacity));display:inline-flex;font-size:.875rem;font-weight:500;line-height:1.25rem;padding-left:1rem;padding-right:1rem;padding-top:.75rem}.dark .pagination .pages span{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.pagination .pages button{align-items:center;border-top-width:2px;display:inline-flex;font-size:.875rem;font-weight:500;line-height:1.25rem;padding-left:1rem;padding-right:1rem;padding-top:.75rem}.pagination .pages button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .pagination .pages button:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(56 189 248/var(--tw-ring-opacity))}.search{--tw-border-opacity:1;--tw-bg-opacity:1;align-items:center;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(212 212 216/var(--tw-border-opacity));border-radius:.375rem;border-width:1px;display:flex;font-size:.875rem;line-height:1.25rem;position:relative;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:100%}.dark .search{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity));border-color:rgb(82 82 91/var(--tw-border-opacity));color:rgb(244 244 245/var(--tw-text-opacity))}.search .prefix-icon{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity));margin-left:.75rem;margin-right:.25rem}.dark .search .prefix-icon{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.search input{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:transparent;background-color:inherit;border-radius:.25rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);flex:1 1 0%;padding:.25rem;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:100%}.search input:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));border-color:transparent;outline:2px solid transparent;outline-offset:2px}.dark .search input:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.search.has-error{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.search .submit-search button{--tw-bg-opacity:1;--tw-text-opacity:1;align-items:center;background-color:rgb(244 244 245/var(--tw-bg-opacity));border-bottom-right-radius:.25rem;border-top-right-radius:.25rem;color:rgb(82 82 91/var(--tw-text-opacity));display:flex;padding:.5rem;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dark .search .submit-search button{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity));color:rgb(212 212 216/var(--tw-text-opacity))}.search .submit-search button:hover{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity))}.dark .search .submit-search button:hover{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity))}.search .submit-search button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .search .submit-search button:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.search .submit-search button>svg{height:1.25rem;margin-left:.25rem;opacity:.75;width:1.25rem}.search .clear-search{position:absolute;right:0;top:0}.search .clear-search button{--tw-text-opacity:1;border-radius:.25rem;color:rgb(161 161 170/var(--tw-text-opacity));padding:.25rem;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dark .search .clear-search button{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.search .clear-search button:hover{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.dark .search .clear-search button:hover{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.search .clear-search button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .search .clear-search button:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.search .clear-search button>svg{height:1.25rem;width:1.25rem}.search-progress-bar{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity));border-radius:.25rem;height:.125rem;position:absolute;top:.25rem;transition-duration:.3s;transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:linear}.dark .search-progress-bar{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.dropdown{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(228 228 231/var(--tw-border-opacity));border-radius:.375rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:rgb(24 24 27/var(--tw-text-opacity));margin-top:-.25rem;overflow:hidden;position:absolute;right:.25rem;top:100%;z-index:40}.dark .dropdown{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity));border-color:rgb(63 63 70/var(--tw-border-opacity));color:rgb(228 228 231/var(--tw-text-opacity))}.dropdown{transform-origin:top right!important}.dropdown:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));--tw-ring-opacity:0.5;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .dropdown:focus{--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity));--tw-ring-opacity:0.5}.dropdown.up{bottom:100%;margin-bottom:-.25rem;margin-top:0;top:auto;transform-origin:bottom right!important}.dropdown.left{left:.25rem;right:auto;transform-origin:top left!important}.dropdown.left.up{transform-origin:bottom left!important}.dropdown a:not(.inline-link),.dropdown button:not(.inline-link){align-items:center;display:block;display:flex;font-size:.875rem;line-height:1.25rem;outline-color:#0ea5e9;padding:.5rem 1rem;text-align:left;width:100%}.dark .dropdown a:not(.inline-link),.dark .dropdown button:not(.inline-link){outline-color:#075985}.dropdown a:not(.inline-link)>svg,.dropdown button:not(.inline-link)>svg{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity));height:1rem;margin-right:.75rem;width:1rem}.dropdown a:not(.inline-link)>svg.spin,.dropdown button:not(.inline-link)>svg.spin{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.dropdown a.active,.dropdown a:hover,.dropdown button.active,.dropdown button:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.dropdown a.active>.checkmark,.dropdown a:hover>.checkmark,.dropdown button.active>.checkmark,.dropdown button:hover>.checkmark{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.dark .dropdown a.active>.checkmark,.dark .dropdown a:hover>.checkmark,.dark .dropdown button.active>.checkmark,.dark .dropdown button:hover>.checkmark{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.dropdown a.active>svg,.dropdown a:hover>svg,.dropdown button.active>svg,.dropdown button:hover>svg{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dropdown .divider{border-top-width:1px;margin-bottom:.5rem;margin-top:.5rem;width:100%}.dark .dropdown .divider{--tw-border-opacity:1;border-top-color:rgb(63 63 70/var(--tw-border-opacity))}.dropdown .label{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity));font-size:.75rem;font-weight:600;line-height:1rem;margin:.25rem 1rem}.file-list{height:100%;overflow-y:auto;padding-bottom:1rem;padding-left:.75rem;padding-right:.75rem;position:relative}@media (min-width:768px){.file-list{padding-left:0;padding-right:0}}.file-list .file-item-container,.file-list .folder-item-container{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;color:rgb(39 39 42/var(--tw-text-opacity));margin-top:.5rem;position:relative;top:0}.dark .file-list .file-item-container,.dark .file-list .folder-item-container{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity));color:rgb(228 228 231/var(--tw-text-opacity))}.file-list .file-item-container .file-item,.file-list .folder-item-container .file-item{border-color:transparent;border-radius:.375rem;border-width:1px;cursor:pointer;position:relative;transition-duration:.1s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.file-list .file-item-container .file-item,.file-list .file-item-container .file-item .file-item-info,.file-list .folder-item-container .file-item,.file-list .folder-item-container .file-item .file-item-info{align-items:center;display:flex;justify-content:space-between;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter}.file-list .file-item-container .file-item .file-item-info,.file-list .folder-item-container .file-item .file-item-info{border-bottom-left-radius:.375rem;border-top-left-radius:.375rem;flex:1 1 0%;outline-color:#0ea5e9;padding:.5rem .75rem .5rem 1rem;text-align:left;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dark .file-list .file-item-container .file-item .file-item-info,.dark .file-list .folder-item-container .file-item .file-item-info{outline-color:#0369a1}.file-list .file-item-container .file-item .file-item-info:hover,.file-list .folder-item-container .file-item .file-item-info:hover{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}.dark .file-list .file-item-container .file-item .file-item-info:hover,.dark .file-list .folder-item-container .file-item .file-item-info:hover{--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity))}.file-list .file-item-container .file-item .file-icon,.file-list .folder-item-container .file-item .file-icon{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity));margin-right:.5rem}.dark .file-list .file-item-container .file-item .file-icon,.dark .file-list .folder-item-container .file-item .file-icon{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.file-list .file-item-container .file-item .file-icon>svg,.file-list .folder-item-container .file-item .file-icon>svg{height:1rem;width:1rem}.file-list .file-item-container .file-item .file-name,.file-list .folder-item-container .file-item .file-name{font-size:.875rem;line-height:1.25rem;margin-right:.75rem;width:100%;word-break:break-word}.file-list .file-item-container .file-item .file-size,.file-list .folder-item-container .file-item .file-size{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity));font-size:.75rem;line-height:1rem;white-space:nowrap}.dark .file-list .file-item-container .file-item .file-size,.dark .file-list .folder-item-container .file-item .file-size{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity));opacity:.9}.file-list .file-item-container.active .file-item,.file-list .folder-item-container.active .file-item{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity));border-color:rgb(14 165 233/var(--tw-border-opacity))}.dark .file-list .file-item-container.active .file-item,.dark .file-list .folder-item-container.active .file-item{--tw-border-opacity:1;--tw-bg-opacity:0.4;background-color:rgb(12 74 110/var(--tw-bg-opacity));border-color:rgb(12 74 110/var(--tw-border-opacity))}.file-list .file-item-container.active-folder .file-item,.file-list .folder-item-container.active-folder .file-item{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.dark .file-list .file-item-container.active-folder .file-item,.dark .file-list .folder-item-container.active-folder .file-item{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}.file-list .file-item-container:hover .file-item,.file-list .folder-item-container:hover .file-item{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.dark .file-list .file-item-container:hover .file-item,.dark .file-list .folder-item-container:hover .file-item{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}.file-list .file-item-container .file-dropdown-toggle,.file-list .folder-item-container .file-dropdown-toggle{--tw-text-opacity:1;align-items:center;align-self:stretch;border-bottom-right-radius:.375rem;border-color:transparent;border-left-width:1px;border-top-right-radius:.375rem;color:rgb(113 113 122/var(--tw-text-opacity));display:flex;justify-content:center;outline-color:#0ea5e9;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:2rem}.dark .file-list .file-item-container .file-dropdown-toggle,.dark .file-list .folder-item-container .file-dropdown-toggle{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity));outline-color:#0369a1}.file-list .file-item-container .file-dropdown-toggle:hover,.file-list .folder-item-container .file-dropdown-toggle:hover{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity));border-color:rgb(2 132 199/var(--tw-border-opacity))}.dark .file-list .file-item-container .file-dropdown-toggle:hover,.dark .file-list .folder-item-container .file-dropdown-toggle:hover{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity));border-color:rgb(7 89 133/var(--tw-border-opacity))}.file-list .folder-container .folder-item-container.sticky{position:sticky}.file-list .folder-container:first-child>.folder-item-container{margin-top:0}.menu-button{--tw-text-opacity:1;border-radius:.375rem;color:rgb(161 161 170/var(--tw-text-opacity));cursor:pointer;outline-color:#0ea5e9;padding:.5rem;position:relative;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.menu-button:hover{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.dark .menu-button:hover{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.menu-button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .menu-button:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}a.button,button.button{--tw-text-opacity:1;align-items:center;border-radius:.375rem;color:rgb(24 24 27/var(--tw-text-opacity));display:block;display:flex;font-size:.875rem;line-height:1.25rem;outline-color:#0ea5e9;padding:.5rem 1rem;text-align:left;width:100%}.dark a.button,.dark button.button{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity));outline-color:#075985}a.button>svg,button.button>svg{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity));height:1rem;width:1rem}.dark a.button>svg,.dark button.button>svg{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}a.button>svg.spin,button.button>svg.spin{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}a.button:hover,button.button:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.dark a.button:hover,.dark button.button:hover{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}.select{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity));border-radius:.25rem;color:rgb(63 63 70/var(--tw-text-opacity));font-weight:400;margin-bottom:-.125rem;margin-top:-.125rem;outline:2px solid transparent;outline-offset:2px;padding:.125rem .25rem}.dark .select{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity));color:rgb(212 212 216/var(--tw-text-opacity))}.select:hover{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity))}.dark .select:hover{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.select:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.dark .select:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.keyboard-shortcut{--tw-text-opacity:1;align-items:center;color:rgb(82 82 91/var(--tw-text-opacity));display:flex;font-size:.875rem;justify-content:flex-start;line-height:1.25rem;margin-bottom:.75rem;width:100%}.dark .keyboard-shortcut{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.keyboard-shortcut .shortcut{--tw-border-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(244 244 245/var(--tw-ring-opacity));align-items:center;border-color:rgb(161 161 170/var(--tw-border-opacity));border-radius:.25rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);display:inline-flex;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1rem;height:1.5rem;justify-content:center;line-height:1.5rem;margin-right:.5rem;width:1.5rem}.dark .keyboard-shortcut .shortcut{--tw-border-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgb(24 24 27/var(--tw-ring-opacity));border-color:rgb(82 82 91/var(--tw-border-opacity))}.hover\:border-brand-600:hover{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.hover\:border-gray-300:hover{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.hover\:text-brand-800:hover{--tw-text-opacity:1;color:rgb(7 89 133/var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.focus\:border-brand-500:focus{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-1:focus,.focus\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-brand-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.group:hover .group-hover\:inline-block{display:inline-block}.group:hover .group-hover\:hidden{display:none}.group:hover .group-hover\:border-brand-600{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.group:hover .group-hover\:underline{-webkit-text-decoration-line:underline;text-decoration-line:underline}.group:hover .group-hover\:opacity-100{opacity:1}.group:focus .group-focus\:inline-block{display:inline-block}.group:focus .group-focus\:hidden{display:none}.dark .dark\:border-gray-600{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity))}.dark .dark\:border-yellow-800{--tw-border-opacity:1;border-color:rgb(133 77 14/var(--tw-border-opacity))}.dark .dark\:border-gray-800{--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity))}.dark .dark\:border-gray-700{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}.dark .dark\:border-brand-600{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.dark .dark\:bg-gray-900{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}.dark .dark\:bg-gray-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.dark .dark\:bg-yellow-900{--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity))}.dark .dark\:bg-gray-700{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}.dark .dark\:bg-opacity-40{--tw-bg-opacity:0.4}.dark .dark\:from-gray-900{--tw-gradient-from:#18181b;--tw-gradient-to:rgba(24,24,27,0);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark .dark\:text-brand-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.dark .dark\:text-gray-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.dark .dark\:text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}.dark .dark\:text-gray-200{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity))}.dark .dark\:text-gray-300{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.dark .dark\:text-brand-500{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.dark .dark\:text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.dark .dark\:opacity-90{opacity:.9}.dark .dark\:outline-brand-800{outline-color:#075985}.dark .hover\:dark\:border-brand-800:hover{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}.dark .dark\:hover\:border-brand-700:hover{--tw-border-opacity:1;border-color:rgb(3 105 161/var(--tw-border-opacity))}.dark .dark\:hover\:border-gray-400:hover{--tw-border-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity))}.dark .dark\:hover\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity))}.dark .dark\:hover\:text-brand-600:hover{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.dark .dark\:hover\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.dark .dark\:focus\:ring-brand-700:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.group:hover .dark .group-hover\:dark\:border-brand-800{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}@media (min-width:640px){.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:flex-col-reverse{flex-direction:column-reverse}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:duration-300{transition-duration:.3s}}@media (min-width:768px){.md\:fixed{position:fixed}.md\:inset-y-0{bottom:0;top:0}.md\:left-0{left:0}.md\:left-auto{left:auto}.md\:right-auto{right:auto}.md\:mx-0{margin-left:0;margin-right:0}.md\:mx-3{margin-left:.75rem;margin-right:.75rem}.md\:mt-0{margin-top:0}.md\:block{display:block}.md\:inline{display:inline}.md\:flex{display:flex}.md\:hidden{display:none}.md\:w-88{width:22rem}.md\:flex-col{flex-direction:column}.md\:px-4{padding-left:1rem;padding-right:1rem}.md\:pl-88{padding-left:22rem}.md\:pb-12{padding-bottom:3rem}.md\:opacity-75{opacity:.75}}@media (min-width:1024px){.lg\:absolute{position:absolute}.lg\:left-0{left:0}.lg\:right-0{right:0}.lg\:top-2{top:.5rem}.lg\:right-6{right:1.5rem}.lg\:mx-0{margin-left:0;margin-right:0}.lg\:mt-0{margin-top:0}.lg\:mb-0{margin-bottom:0}.lg\:block{display:block}.lg\:inline{display:inline}.lg\:table-cell{display:table-cell}.lg\:hidden{display:none}.lg\:w-auto{width:auto}.lg\:flex-row{flex-direction:row}.lg\:px-5{padding-left:1.25rem;padding-right:1.25rem}.lg\:pl-2{padding-left:.5rem}}@media (min-width:1280px){.xl\:inline{display:inline}} +/*! tailwindcss v3.1.6 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e4e4e7;box-sizing:border-box}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#a1a1aa;opacity:1}input::placeholder,textarea::placeholder{color:#a1a1aa;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}.\!container{width:100%!important}@media (min-width:640px){.container{max-width:640px}.\!container{max-width:640px!important}}@media (min-width:768px){.container{max-width:768px}.\!container{max-width:768px!important}}@media (min-width:1024px){.container{max-width:1024px}.\!container{max-width:1024px!important}}@media (min-width:1280px){.container{max-width:1280px}.\!container{max-width:1280px!important}}@media (min-width:1536px){.container{max-width:1536px}.\!container{max-width:1536px!important}}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{left:0;right:0}.inset-0,.inset-y-0{bottom:0;top:0}.bottom-0{bottom:0}.left-3{left:.75rem}.right-7{right:1.75rem}.right-0{right:0}.top-9{top:2.25rem}.top-0{top:0}.bottom-10{bottom:2.5rem}.left-0{left:0}.-left-\[200\%\]{left:-200%}.right-\[200\%\]{right:200%}.bottom-4{bottom:1rem}.right-4{right:1rem}.z-20{z-index:20}.z-10{z-index:10}.m-1{margin:.25rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.my-auto{margin-bottom:auto;margin-top:auto}.-my-1{margin-bottom:-.25rem;margin-top:-.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-1\.5{margin-left:.375rem;margin-right:.375rem}.mb-1{margin-bottom:.25rem}.ml-3{margin-left:.75rem}.ml-2{margin-left:.5rem}.mt-0{margin-top:0}.mr-1\.5{margin-right:.375rem}.mr-1{margin-right:.25rem}.mt-2{margin-top:.5rem}.mb-8{margin-bottom:2rem}.mt-6{margin-top:1.5rem}.ml-1{margin-left:.25rem}.mt-1{margin-top:.25rem}.mr-2{margin-right:.5rem}.mb-5{margin-bottom:1.25rem}.mr-5{margin-right:1.25rem}.-mr-2{margin-right:-.5rem}.mr-2\.5{margin-right:.625rem}.mb-4{margin-bottom:1rem}.mt-3{margin-top:.75rem}.ml-5{margin-left:1.25rem}.mb-2{margin-bottom:.5rem}.mr-4{margin-right:1rem}.mr-3{margin-right:.75rem}.-mb-0\.5{margin-bottom:-.125rem}.-mb-0{margin-bottom:0}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-full{height:100%}.h-\[18px\]{height:18px}.h-5{height:1.25rem}.h-3{height:.75rem}.h-4{height:1rem}.h-14{height:3.5rem}.h-7{height:1.75rem}.h-6{height:1.5rem}.h-0{height:0}.max-h-screen{max-height:100vh}.max-h-60{max-height:15rem}.min-h-\[38px\]{min-height:38px}.min-h-screen{min-height:100vh}.w-\[18px\]{width:18px}.w-full{width:100%}.w-5{width:1.25rem}.w-3{width:.75rem}.w-4{width:1rem}.w-48{width:12rem}.w-14{width:3.5rem}.w-screen{width:100vw}.w-6{width:1.5rem}.w-\[120px\]{width:120px}.w-\[180px\]{width:180px}.w-\[110px\]{width:110px}.w-auto{width:auto}.min-w-\[240px\]{min-width:240px}.min-w-full{min-width:100%}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.max-w-\[1px\]{max-width:1px}.flex-1{flex:1 1 0%}.shrink{flex-shrink:1}.table-fixed{table-layout:fixed}.border-separate{border-collapse:separate}.translate-x-full{--tw-translate-x:100%}.translate-x-0,.translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.rotate-90{--tw-rotate:90deg}.rotate-90,.scale-100{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-90{--tw-scale-x:.9;--tw-scale-y:.9}.scale-90,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.cursor-default{cursor:default}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.grid-flow-col{grid-auto-flow:column}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-y-auto{overflow-y:auto}.overflow-y-scroll{overflow-y:scroll}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-l{border-left-width:1px}.border-t{border-top-width:1px}.border-t-2{border-top-width:2px}.border-yellow-300{--tw-border-opacity:1;border-color:rgb(253 224 71/var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-brand-500{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-brand-600{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.bg-opacity-75{--tw-bg-opacity:0.75}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.from-gray-100{--tw-gradient-from:#f4f4f5;--tw-gradient-to:hsla(240,5%,96%,0);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.to-transparent{--tw-gradient-to:transparent}.p-1{padding:.25rem}.p-12{padding:3rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-4{padding-left:1rem;padding-right:1rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-4{padding-bottom:1rem;padding-top:1rem}.px-8{padding-left:2rem;padding-right:2rem}.pr-4{padding-right:1rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pr-10{padding-right:2.5rem}.pr-2{padding-right:.5rem}.pr-9{padding-right:2.25rem}.pl-10{padding-left:2.5rem}.pl-2{padding-left:.5rem}.pt-2{padding-top:.5rem}.pb-1{padding-bottom:.25rem}.pt-3{padding-top:.75rem}.pb-16{padding-bottom:4rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.text-base{font-size:1rem;line-height:1.5rem}.font-semibold{font-weight:600}.font-normal{font-weight:400}.font-medium{font-weight:500}.italic{font-style:italic}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.text-brand-700{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.text-yellow-700{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.text-brand-500{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgb(39 39 42/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-brand-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.opacity-100{opacity:1}.opacity-0{opacity:0}.opacity-90{opacity:.9}.opacity-75{opacity:.75}.opacity-25{opacity:.25}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-md,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-brand-500{outline-color:#0ea5e9}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-opacity-5{--tw-ring-opacity:0.05}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.spin{-webkit-animation-duration:1.5s;-moz-animation-duration:1.5s;-ms-animation-duration:1.5s;animation-duration:1.5s;-webkit-animation-iteration-count:infinite;-moz-animation-iteration-count:infinite;-ms-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-name:spin;-moz-animation-name:spin;-ms-animation-name:spin;animation-name:spin;-webkit-animation-timing-function:linear;-moz-animation-timing-function:linear;-ms-animation-timing-function:linear;animation-timing-function:linear}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}html.dark{color-scheme:dark}#bmc-wbtn{height:48px!important;width:48px!important}#bmc-wbtn>img{height:32px!important;width:32px!important}.log-levels-selector .dropdown-toggle{white-space:nowrap}.log-levels-selector .dropdown-toggle:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .log-levels-selector .dropdown-toggle:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.log-levels-selector .dropdown-toggle>svg{height:1rem;margin-left:.25rem;opacity:.75;width:1rem}.log-levels-selector .dropdown .log-level{font-weight:600}.log-levels-selector .dropdown .log-level.success{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.dark .log-levels-selector .dropdown .log-level.success{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.log-levels-selector .dropdown .log-level.info{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.dark .log-levels-selector .dropdown .log-level.info{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.log-levels-selector .dropdown .log-level.warning{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}.dark .log-levels-selector .dropdown .log-level.warning{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}.log-levels-selector .dropdown .log-level.danger{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}.dark .log-levels-selector .dropdown .log-level.danger{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}.log-levels-selector .dropdown .log-level.none{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.dark .log-levels-selector .dropdown .log-level.none{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.log-levels-selector .dropdown .log-count{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity));margin-left:2rem;white-space:nowrap}.dark .log-levels-selector .dropdown .log-count{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.log-levels-selector .dropdown button.active .log-level.success{--tw-text-opacity:1;color:rgb(209 250 229/var(--tw-text-opacity))}.log-levels-selector .dropdown button.active .log-level.info{--tw-text-opacity:1;color:rgb(224 242 254/var(--tw-text-opacity))}.log-levels-selector .dropdown button.active .log-level.warning{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity))}.log-levels-selector .dropdown button.active .log-level.danger{--tw-text-opacity:1;color:rgb(255 228 230/var(--tw-text-opacity))}.log-levels-selector .dropdown button.active .log-level.none{--tw-text-opacity:1;color:rgb(244 244 245/var(--tw-text-opacity))}.log-levels-selector .dropdown button.active .log-count{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity))}.dark .log-levels-selector .dropdown button.active .log-count{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.log-levels-selector .dropdown .no-results{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity));font-size:.75rem;line-height:1rem;padding:.25rem 1rem;text-align:center}.dark .log-levels-selector .dropdown .no-results{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.log-item{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));cursor:pointer;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dark .log-item{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.log-item.success.active>td,.log-item.success:focus-within>td,.log-item.success:hover>td{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity))}.dark .log-item.success.active>td,.dark .log-item.success:focus-within>td,.dark .log-item.success:hover>td{--tw-bg-opacity:0.4;background-color:rgb(6 95 70/var(--tw-bg-opacity))}.log-item.success .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity))}.dark .log-item.success .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.log-item.success .log-level{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.dark .log-item.success .log-level{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.log-item.info.active>td,.log-item.info:focus-within>td,.log-item.info:hover>td{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}.dark .log-item.info.active>td,.dark .log-item.info:focus-within>td,.dark .log-item.info:hover>td{--tw-bg-opacity:0.4;background-color:rgb(7 89 133/var(--tw-bg-opacity))}.log-item.info .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity))}.dark .log-item.info .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}.log-item.info .log-level{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.dark .log-item.info .log-level{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.log-item.warning.active>td,.log-item.warning:focus-within>td,.log-item.warning:hover>td{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity))}.dark .log-item.warning.active>td,.dark .log-item.warning:focus-within>td,.dark .log-item.warning:hover>td{--tw-bg-opacity:0.4;background-color:rgb(146 64 14/var(--tw-bg-opacity))}.log-item.warning .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity))}.dark .log-item.warning .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity))}.log-item.warning .log-level{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}.dark .log-item.warning .log-level{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}.log-item.danger.active>td,.log-item.danger:focus-within>td,.log-item.danger:hover>td{--tw-bg-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity))}.dark .log-item.danger.active>td,.dark .log-item.danger:focus-within>td,.dark .log-item.danger:hover>td{--tw-bg-opacity:0.4;background-color:rgb(159 18 57/var(--tw-bg-opacity))}.log-item.danger .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(190 18 60/var(--tw-bg-opacity))}.dark .log-item.danger .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(251 113 133/var(--tw-bg-opacity))}.log-item.danger .log-level{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}.dark .log-item.danger .log-level{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}.log-item.none.active>td,.log-item.none:focus-within>td,.log-item.none:hover>td{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.dark .log-item.none.active>td,.dark .log-item.none:focus-within>td,.dark .log-item.none:hover>td{--tw-bg-opacity:0.4;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.log-item.none .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}.dark .log-item.none .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(161 161 170/var(--tw-bg-opacity))}.log-item.none .log-level{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.dark .log-item.none .log-level{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.log-item:hover .log-level-icon{opacity:1}.badge{align-items:center;border-radius:.375rem;cursor:pointer;display:inline-flex;font-size:.875rem;line-height:1.25rem;margin-right:.5rem;margin-top:.25rem;padding:.25rem .75rem;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.badge.success{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity));border-color:rgb(167 243 208/var(--tw-border-opacity));border-width:1px;color:rgb(82 82 91/var(--tw-text-opacity))}.dark .badge.success{--tw-border-opacity:1;--tw-bg-opacity:0.4;--tw-text-opacity:1;background-color:rgb(6 78 59/var(--tw-bg-opacity));border-color:rgb(6 95 70/var(--tw-border-opacity));color:rgb(161 161 170/var(--tw-text-opacity))}.badge.success:hover{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity))}.dark .badge.success:hover{--tw-bg-opacity:0.75;background-color:rgb(6 78 59/var(--tw-bg-opacity))}.badge.success .checkmark{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}.dark .badge.success .checkmark{--tw-border-opacity:1;border-color:rgb(6 95 70/var(--tw-border-opacity))}.badge.success.active{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity));border-color:rgb(4 120 87/var(--tw-border-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.dark .badge.success.active{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity));border-color:rgb(5 150 105/var(--tw-border-opacity))}.badge.success.active:hover{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.dark .badge.success.active:hover{--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity))}.badge.success.active .checkmark{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}.dark .badge.success.active .checkmark{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity));border-color:rgb(4 120 87/var(--tw-border-opacity))}.badge.success.active .checkmark>svg{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.dark .badge.success.active .checkmark>svg{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.badge.info{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity));border-color:rgb(186 230 253/var(--tw-border-opacity));border-width:1px;color:rgb(82 82 91/var(--tw-text-opacity))}.dark .badge.info{--tw-border-opacity:1;--tw-bg-opacity:0.4;--tw-text-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity));border-color:rgb(7 89 133/var(--tw-border-opacity));color:rgb(161 161 170/var(--tw-text-opacity))}.badge.info:hover{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}.dark .badge.info:hover{--tw-bg-opacity:0.75;background-color:rgb(12 74 110/var(--tw-bg-opacity))}.badge.info .checkmark{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity))}.dark .badge.info .checkmark{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}.badge.info.active{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity));border-color:rgb(3 105 161/var(--tw-border-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.dark .badge.info.active{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity));border-color:rgb(2 132 199/var(--tw-border-opacity))}.badge.info.active:hover{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}.dark .badge.info.active:hover{--tw-bg-opacity:1;background-color:rgb(7 89 133/var(--tw-bg-opacity))}.badge.info.active .checkmark{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.dark .badge.info.active .checkmark{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity));border-color:rgb(3 105 161/var(--tw-border-opacity))}.badge.info.active .checkmark>svg{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.dark .badge.info.active .checkmark>svg{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.badge.warning{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity));border-color:rgb(253 230 138/var(--tw-border-opacity));border-width:1px;color:rgb(82 82 91/var(--tw-text-opacity))}.dark .badge.warning{--tw-border-opacity:1;--tw-bg-opacity:0.4;--tw-text-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity));border-color:rgb(146 64 14/var(--tw-border-opacity));color:rgb(161 161 170/var(--tw-text-opacity))}.badge.warning:hover{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}.dark .badge.warning:hover{--tw-bg-opacity:0.75;background-color:rgb(120 53 15/var(--tw-bg-opacity))}.badge.warning .checkmark{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity))}.dark .badge.warning .checkmark{--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-opacity))}.badge.warning.active{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity));border-color:rgb(180 83 9/var(--tw-border-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.dark .badge.warning.active{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity));border-color:rgb(217 119 6/var(--tw-border-opacity))}.badge.warning.active:hover{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity))}.dark .badge.warning.active:hover{--tw-bg-opacity:1;background-color:rgb(146 64 14/var(--tw-bg-opacity))}.badge.warning.active .checkmark{--tw-border-opacity:1;border-color:rgb(217 119 6/var(--tw-border-opacity))}.dark .badge.warning.active .checkmark{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity));border-color:rgb(180 83 9/var(--tw-border-opacity))}.badge.warning.active .checkmark>svg{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}.dark .badge.warning.active .checkmark>svg{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}.badge.danger{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity));border-color:rgb(254 205 211/var(--tw-border-opacity));border-width:1px;color:rgb(82 82 91/var(--tw-text-opacity))}.dark .badge.danger{--tw-border-opacity:1;--tw-bg-opacity:0.4;--tw-text-opacity:1;background-color:rgb(136 19 55/var(--tw-bg-opacity));border-color:rgb(159 18 57/var(--tw-border-opacity));color:rgb(161 161 170/var(--tw-text-opacity))}.badge.danger:hover{--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity))}.dark .badge.danger:hover{--tw-bg-opacity:0.75;background-color:rgb(136 19 55/var(--tw-bg-opacity))}.badge.danger .checkmark{--tw-border-opacity:1;border-color:rgb(254 205 211/var(--tw-border-opacity))}.dark .badge.danger .checkmark{--tw-border-opacity:1;border-color:rgb(159 18 57/var(--tw-border-opacity))}.badge.danger.active{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity));border-color:rgb(190 18 60/var(--tw-border-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.dark .badge.danger.active{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(190 18 60/var(--tw-bg-opacity));border-color:rgb(225 29 72/var(--tw-border-opacity))}.badge.danger.active:hover{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity))}.dark .badge.danger.active:hover{--tw-bg-opacity:1;background-color:rgb(159 18 57/var(--tw-bg-opacity))}.badge.danger.active .checkmark{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}.dark .badge.danger.active .checkmark{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity));border-color:rgb(190 18 60/var(--tw-border-opacity))}.badge.danger.active .checkmark>svg{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}.dark .badge.danger.active .checkmark>svg{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}.badge.none{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity));border-color:rgb(228 228 231/var(--tw-border-opacity));border-width:1px;color:rgb(82 82 91/var(--tw-text-opacity))}.dark .badge.none{--tw-border-opacity:1;--tw-bg-opacity:0.4;--tw-text-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity));border-color:rgb(39 39 42/var(--tw-border-opacity));color:rgb(161 161 170/var(--tw-text-opacity))}.badge.none:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.dark .badge.none:hover{--tw-bg-opacity:0.75;background-color:rgb(24 24 27/var(--tw-bg-opacity))}.badge.none .checkmark{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}.dark .badge.none .checkmark{--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity))}.badge.none.active{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));color:rgb(39 39 42/var(--tw-text-opacity))}.dark .badge.none.active{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity));border-color:rgb(82 82 91/var(--tw-border-opacity));color:rgb(244 244 245/var(--tw-text-opacity))}.badge.none.active:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.dark .badge.none.active:hover{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}.badge.none.active .checkmark{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity))}.dark .badge.none.active .checkmark{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity));border-color:rgb(63 63 70/var(--tw-border-opacity))}.badge.none.active .checkmark>svg{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.dark .badge.none.active .checkmark>svg{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.log-list table>thead th{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity));color:rgb(113 113 122/var(--tw-text-opacity));font-size:.875rem;font-weight:600;line-height:1.25rem;padding:.5rem;position:sticky;text-align:left;top:0;z-index:10}.file-list .folder-container .folder-item-container.log-list table>thead th{position:sticky}.dark .log-list table>thead th{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity));color:rgb(161 161 170/var(--tw-text-opacity))}.log-list .log-group{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));position:relative}.dark .log-list .log-group{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity));color:rgb(228 228 231/var(--tw-text-opacity))}.log-list .log-group .log-item>td{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity));border-top-width:1px;font-size:.75rem;line-height:1rem;padding:.375rem .25rem}.dark .log-list .log-group .log-item>td{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}@media (min-width:1024px){.log-list .log-group .log-item>td{font-size:.875rem;line-height:1.25rem;padding:.5rem}}.log-list .log-group.first .log-item>td{border-top-color:transparent}.log-list .log-group .log-stack{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity));font-size:10px;line-height:.75rem;padding:.25rem .5rem;white-space:pre-wrap;word-break:break-all}.dark .log-list .log-group .log-stack{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}@media (min-width:1024px){.log-list .log-group .log-stack{font-size:.75rem;line-height:1rem;padding:.5rem 2rem}}.log-list .log-group .log-link{align-items:center;border-radius:.25rem;display:flex;justify-content:flex-end;margin-bottom:-.125rem;margin-top:-.125rem;padding-bottom:.125rem;padding-left:.25rem;padding-top:.125rem;width:100%}@media (min-width:640px){.log-list .log-group .log-link{min-width:64px}}.log-list .log-group .log-link>svg{height:1rem;margin-left:.25rem;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:1rem}.log-list .log-group .log-link:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .log-list .log-group .log-link:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(56 189 248/var(--tw-ring-opacity))}.log-list .log-group code,.log-list .log-group mark{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity));border-radius:.25rem;color:rgb(24 24 27/var(--tw-text-opacity));padding:.125rem .25rem}.dark .log-list .log-group code,.dark .log-list .log-group mark{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(133 77 14/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.pagination{align-items:center;display:flex;justify-content:center;width:100%}@media (min-width:640px){.pagination{margin-top:.5rem;padding-left:1rem;padding-right:1rem}}@media (min-width:1024px){.pagination{padding-left:0;padding-right:0}}.pagination .previous{display:flex;flex:1 1 0%;justify-content:flex-start;margin-top:-1px;width:0}@media (min-width:768px){.pagination .previous{justify-content:flex-end}}.pagination .previous button{--tw-text-opacity:1;align-items:center;border-color:transparent;border-top-width:2px;color:rgb(113 113 122/var(--tw-text-opacity));display:inline-flex;font-size:.875rem;font-weight:500;line-height:1.25rem;padding-right:.25rem;padding-top:.75rem}.dark .pagination .previous button{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.pagination .previous button:hover{--tw-border-opacity:1;--tw-text-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity));color:rgb(63 63 70/var(--tw-text-opacity))}.dark .pagination .previous button:hover{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.pagination .previous button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .pagination .previous button:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(56 189 248/var(--tw-ring-opacity))}.pagination .previous button svg{color:currentColor;height:1.25rem;margin-left:.75rem;margin-right:.75rem;width:1.25rem}.pagination .next{display:flex;flex:1 1 0%;justify-content:flex-end;margin-top:-1px;width:0}@media (min-width:768px){.pagination .next{justify-content:flex-start}}.pagination .next button{--tw-text-opacity:1;align-items:center;border-color:transparent;border-top-width:2px;color:rgb(113 113 122/var(--tw-text-opacity));display:inline-flex;font-size:.875rem;font-weight:500;line-height:1.25rem;padding-left:.25rem;padding-top:.75rem}.dark .pagination .next button{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.pagination .next button:hover{--tw-border-opacity:1;--tw-text-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity));color:rgb(63 63 70/var(--tw-text-opacity))}.dark .pagination .next button:hover{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.pagination .next button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .pagination .next button:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(56 189 248/var(--tw-ring-opacity))}.pagination .next button svg{color:currentColor;height:1.25rem;margin-left:.75rem;margin-right:.75rem;width:1.25rem}.pagination .pages{display:none}@media (min-width:640px){.pagination .pages{display:flex;margin-top:-1px}}.pagination .pages span{--tw-text-opacity:1;align-items:center;border-color:transparent;border-top-width:2px;color:rgb(113 113 122/var(--tw-text-opacity));display:inline-flex;font-size:.875rem;font-weight:500;line-height:1.25rem;padding-left:1rem;padding-right:1rem;padding-top:.75rem}.dark .pagination .pages span{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.pagination .pages button{align-items:center;border-top-width:2px;display:inline-flex;font-size:.875rem;font-weight:500;line-height:1.25rem;padding-left:1rem;padding-right:1rem;padding-top:.75rem}.pagination .pages button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .pagination .pages button:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(56 189 248/var(--tw-ring-opacity))}.search{--tw-border-opacity:1;--tw-bg-opacity:1;align-items:center;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(212 212 216/var(--tw-border-opacity));border-radius:.375rem;border-width:1px;display:flex;font-size:.875rem;line-height:1.25rem;position:relative;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:100%}.dark .search{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity));border-color:rgb(82 82 91/var(--tw-border-opacity));color:rgb(244 244 245/var(--tw-text-opacity))}.search .prefix-icon{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity));margin-left:.75rem;margin-right:.25rem}.dark .search .prefix-icon{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.search input{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:transparent;background-color:inherit;border-radius:.25rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);flex:1 1 0%;padding:.25rem;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:100%}.search input:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));border-color:transparent;outline:2px solid transparent;outline-offset:2px}.dark .search input:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.search.has-error{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.search .submit-search button{--tw-bg-opacity:1;--tw-text-opacity:1;align-items:center;background-color:rgb(244 244 245/var(--tw-bg-opacity));border-bottom-right-radius:.25rem;border-top-right-radius:.25rem;color:rgb(82 82 91/var(--tw-text-opacity));display:flex;padding:.5rem;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dark .search .submit-search button{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity));color:rgb(212 212 216/var(--tw-text-opacity))}.search .submit-search button:hover{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity))}.dark .search .submit-search button:hover{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity))}.search .submit-search button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .search .submit-search button:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.search .submit-search button>svg{height:1.25rem;margin-left:.25rem;opacity:.75;width:1.25rem}.search .clear-search{position:absolute;right:0;top:0}.search .clear-search button{--tw-text-opacity:1;border-radius:.25rem;color:rgb(161 161 170/var(--tw-text-opacity));padding:.25rem;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dark .search .clear-search button{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.search .clear-search button:hover{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.dark .search .clear-search button:hover{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.search .clear-search button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .search .clear-search button:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.search .clear-search button>svg{height:1.25rem;width:1.25rem}.search-progress-bar{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity));border-radius:.25rem;height:.125rem;position:absolute;top:.25rem;transition-duration:.3s;transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:linear}.dark .search-progress-bar{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.dropdown{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(228 228 231/var(--tw-border-opacity));border-radius:.375rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:rgb(24 24 27/var(--tw-text-opacity));margin-top:-.25rem;overflow:hidden;position:absolute;right:.25rem;top:100%;z-index:40}.dark .dropdown{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity));border-color:rgb(63 63 70/var(--tw-border-opacity));color:rgb(228 228 231/var(--tw-text-opacity))}.dropdown{transform-origin:top right!important}.dropdown:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));--tw-ring-opacity:0.5;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .dropdown:focus{--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity));--tw-ring-opacity:0.5}.dropdown.up{bottom:100%;margin-bottom:-.25rem;margin-top:0;top:auto;transform-origin:bottom right!important}.dropdown.left{left:.25rem;right:auto;transform-origin:top left!important}.dropdown.left.up{transform-origin:bottom left!important}.dropdown a:not(.inline-link),.dropdown button:not(.inline-link){align-items:center;display:block;display:flex;font-size:.875rem;line-height:1.25rem;outline-color:#0ea5e9;padding:.5rem 1rem;text-align:left;width:100%}.dark .dropdown a:not(.inline-link),.dark .dropdown button:not(.inline-link){outline-color:#075985}.dropdown a:not(.inline-link)>svg,.dropdown button:not(.inline-link)>svg{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity));height:1rem;margin-right:.75rem;width:1rem}.dropdown a:not(.inline-link)>svg.spin,.dropdown button:not(.inline-link)>svg.spin{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.dropdown a.active,.dropdown a:hover,.dropdown button.active,.dropdown button:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.dropdown a.active>.checkmark,.dropdown a:hover>.checkmark,.dropdown button.active>.checkmark,.dropdown button:hover>.checkmark{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.dark .dropdown a.active>.checkmark,.dark .dropdown a:hover>.checkmark,.dark .dropdown button.active>.checkmark,.dark .dropdown button:hover>.checkmark{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.dropdown a.active>svg,.dropdown a:hover>svg,.dropdown button.active>svg,.dropdown button:hover>svg{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dropdown .divider{border-top-width:1px;margin-bottom:.5rem;margin-top:.5rem;width:100%}.dark .dropdown .divider{--tw-border-opacity:1;border-top-color:rgb(63 63 70/var(--tw-border-opacity))}.dropdown .label{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity));font-size:.75rem;font-weight:600;line-height:1rem;margin:.25rem 1rem}.file-list{height:100%;overflow-y:auto;padding-bottom:1rem;padding-left:.75rem;padding-right:.75rem;position:relative}@media (min-width:768px){.file-list{padding-left:0;padding-right:0}}.file-list .file-item-container,.file-list .folder-item-container{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;color:rgb(39 39 42/var(--tw-text-opacity));margin-top:.5rem;position:relative;top:0}.dark .file-list .file-item-container,.dark .file-list .folder-item-container{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity));color:rgb(228 228 231/var(--tw-text-opacity))}.file-list .file-item-container .file-item,.file-list .folder-item-container .file-item{border-color:transparent;border-radius:.375rem;border-width:1px;cursor:pointer;position:relative;transition-duration:.1s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.file-list .file-item-container .file-item,.file-list .file-item-container .file-item .file-item-info,.file-list .folder-item-container .file-item,.file-list .folder-item-container .file-item .file-item-info{align-items:center;display:flex;justify-content:space-between;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter}.file-list .file-item-container .file-item .file-item-info,.file-list .folder-item-container .file-item .file-item-info{border-bottom-left-radius:.375rem;border-top-left-radius:.375rem;flex:1 1 0%;outline-color:#0ea5e9;padding:.5rem .75rem .5rem 1rem;text-align:left;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dark .file-list .file-item-container .file-item .file-item-info,.dark .file-list .folder-item-container .file-item .file-item-info{outline-color:#0369a1}.file-list .file-item-container .file-item .file-item-info:hover,.file-list .folder-item-container .file-item .file-item-info:hover{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}.dark .file-list .file-item-container .file-item .file-item-info:hover,.dark .file-list .folder-item-container .file-item .file-item-info:hover{--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity))}.file-list .file-item-container .file-item .file-icon,.file-list .folder-item-container .file-item .file-icon{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity));margin-right:.5rem}.dark .file-list .file-item-container .file-item .file-icon,.dark .file-list .folder-item-container .file-item .file-icon{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.file-list .file-item-container .file-item .file-icon>svg,.file-list .folder-item-container .file-item .file-icon>svg{height:1rem;width:1rem}.file-list .file-item-container .file-item .file-name,.file-list .folder-item-container .file-item .file-name{font-size:.875rem;line-height:1.25rem;margin-right:.75rem;width:100%;word-break:break-word}.file-list .file-item-container .file-item .file-size,.file-list .folder-item-container .file-item .file-size{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity));font-size:.75rem;line-height:1rem;white-space:nowrap}.dark .file-list .file-item-container .file-item .file-size,.dark .file-list .folder-item-container .file-item .file-size{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity));opacity:.9}.file-list .file-item-container.active .file-item,.file-list .folder-item-container.active .file-item{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity));border-color:rgb(14 165 233/var(--tw-border-opacity))}.dark .file-list .file-item-container.active .file-item,.dark .file-list .folder-item-container.active .file-item{--tw-border-opacity:1;--tw-bg-opacity:0.4;background-color:rgb(12 74 110/var(--tw-bg-opacity));border-color:rgb(12 74 110/var(--tw-border-opacity))}.file-list .file-item-container.active-folder .file-item,.file-list .folder-item-container.active-folder .file-item{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.dark .file-list .file-item-container.active-folder .file-item,.dark .file-list .folder-item-container.active-folder .file-item{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}.file-list .file-item-container:hover .file-item,.file-list .folder-item-container:hover .file-item{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.dark .file-list .file-item-container:hover .file-item,.dark .file-list .folder-item-container:hover .file-item{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}.file-list .file-item-container .file-dropdown-toggle,.file-list .folder-item-container .file-dropdown-toggle{--tw-text-opacity:1;align-items:center;align-self:stretch;border-bottom-right-radius:.375rem;border-color:transparent;border-left-width:1px;border-top-right-radius:.375rem;color:rgb(113 113 122/var(--tw-text-opacity));display:flex;justify-content:center;outline-color:#0ea5e9;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:2rem}.dark .file-list .file-item-container .file-dropdown-toggle,.dark .file-list .folder-item-container .file-dropdown-toggle{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity));outline-color:#0369a1}.file-list .file-item-container .file-dropdown-toggle:hover,.file-list .folder-item-container .file-dropdown-toggle:hover{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity));border-color:rgb(2 132 199/var(--tw-border-opacity))}.dark .file-list .file-item-container .file-dropdown-toggle:hover,.dark .file-list .folder-item-container .file-dropdown-toggle:hover{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity));border-color:rgb(7 89 133/var(--tw-border-opacity))}.file-list .folder-container .folder-item-container.sticky{position:sticky}.file-list .folder-container:first-child>.folder-item-container{margin-top:0}.menu-button{--tw-text-opacity:1;border-radius:.375rem;color:rgb(161 161 170/var(--tw-text-opacity));cursor:pointer;outline-color:#0ea5e9;padding:.5rem;position:relative;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.menu-button:hover{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.dark .menu-button:hover{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.menu-button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .menu-button:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}a.button,button.button{--tw-text-opacity:1;align-items:center;border-radius:.375rem;color:rgb(24 24 27/var(--tw-text-opacity));display:block;display:flex;font-size:.875rem;line-height:1.25rem;outline-color:#0ea5e9;padding:.5rem 1rem;text-align:left;width:100%}.dark a.button,.dark button.button{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity));outline-color:#075985}a.button>svg,button.button>svg{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity));height:1rem;width:1rem}.dark a.button>svg,.dark button.button>svg{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}a.button>svg.spin,button.button>svg.spin{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}a.button:hover,button.button:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.dark a.button:hover,.dark button.button:hover{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}.select{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity));border-radius:.25rem;color:rgb(63 63 70/var(--tw-text-opacity));font-weight:400;margin-bottom:-.125rem;margin-top:-.125rem;outline:2px solid transparent;outline-offset:2px;padding:.125rem .25rem}.dark .select{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity));color:rgb(212 212 216/var(--tw-text-opacity))}.select:hover{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity))}.dark .select:hover{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.select:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.dark .select:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.keyboard-shortcut{--tw-text-opacity:1;align-items:center;color:rgb(82 82 91/var(--tw-text-opacity));display:flex;font-size:.875rem;justify-content:flex-start;line-height:1.25rem;margin-bottom:.75rem;width:100%}.dark .keyboard-shortcut{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.keyboard-shortcut .shortcut{--tw-border-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(244 244 245/var(--tw-ring-opacity));align-items:center;border-color:rgb(161 161 170/var(--tw-border-opacity));border-radius:.25rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);display:inline-flex;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1rem;height:1.5rem;justify-content:center;line-height:1.5rem;margin-right:.5rem;width:1.5rem}.dark .keyboard-shortcut .shortcut{--tw-border-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgb(24 24 27/var(--tw-ring-opacity));border-color:rgb(82 82 91/var(--tw-border-opacity))}.hover\:border-brand-600:hover{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.hover\:border-gray-300:hover{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.hover\:text-brand-800:hover{--tw-text-opacity:1;color:rgb(7 89 133/var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.focus\:border-brand-500:focus{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-1:focus,.focus\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-brand-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.group:hover .group-hover\:inline-block{display:inline-block}.group:hover .group-hover\:hidden{display:none}.group:hover .group-hover\:border-brand-600{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.group:hover .group-hover\:underline{-webkit-text-decoration-line:underline;text-decoration-line:underline}.group:hover .group-hover\:opacity-100{opacity:1}.group:focus .group-focus\:inline-block{display:inline-block}.group:focus .group-focus\:hidden{display:none}.dark .dark\:border-gray-600{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity))}.dark .dark\:border-yellow-800{--tw-border-opacity:1;border-color:rgb(133 77 14/var(--tw-border-opacity))}.dark .dark\:border-gray-800{--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity))}.dark .dark\:border-gray-700{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}.dark .dark\:border-brand-600{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.dark .dark\:bg-gray-900{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}.dark .dark\:bg-gray-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.dark .dark\:bg-yellow-900{--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity))}.dark .dark\:bg-gray-700{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}.dark .dark\:bg-opacity-40{--tw-bg-opacity:0.4}.dark .dark\:from-gray-900{--tw-gradient-from:#18181b;--tw-gradient-to:rgba(24,24,27,0);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark .dark\:text-brand-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.dark .dark\:text-gray-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.dark .dark\:text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}.dark .dark\:text-gray-200{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity))}.dark .dark\:text-gray-300{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.dark .dark\:text-brand-500{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.dark .dark\:text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.dark .dark\:opacity-90{opacity:.9}.dark .dark\:outline-brand-800{outline-color:#075985}.dark .hover\:dark\:border-brand-800:hover{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}.dark .dark\:hover\:border-brand-700:hover{--tw-border-opacity:1;border-color:rgb(3 105 161/var(--tw-border-opacity))}.dark .dark\:hover\:border-gray-400:hover{--tw-border-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity))}.dark .dark\:hover\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity))}.dark .dark\:hover\:text-brand-600:hover{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.dark .dark\:hover\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.dark .dark\:focus\:ring-brand-700:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.group:hover .dark .group-hover\:dark\:border-brand-800{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}@media (min-width:640px){.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:flex-col-reverse{flex-direction:column-reverse}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:duration-300{transition-duration:.3s}}@media (min-width:768px){.md\:fixed{position:fixed}.md\:inset-y-0{bottom:0;top:0}.md\:left-0{left:0}.md\:left-auto{left:auto}.md\:right-auto{right:auto}.md\:mx-0{margin-left:0;margin-right:0}.md\:mx-3{margin-left:.75rem;margin-right:.75rem}.md\:mt-0{margin-top:0}.md\:block{display:block}.md\:inline{display:inline}.md\:flex{display:flex}.md\:hidden{display:none}.md\:w-88{width:22rem}.md\:flex-col{flex-direction:column}.md\:px-4{padding-left:1rem;padding-right:1rem}.md\:pl-88{padding-left:22rem}.md\:pb-12{padding-bottom:3rem}.md\:opacity-75{opacity:.75}}@media (min-width:1024px){.lg\:absolute{position:absolute}.lg\:left-0{left:0}.lg\:right-0{right:0}.lg\:top-2{top:.5rem}.lg\:right-6{right:1.5rem}.lg\:mx-0{margin-left:0;margin-right:0}.lg\:mx-8{margin-left:2rem;margin-right:2rem}.lg\:mt-0{margin-top:0}.lg\:mb-0{margin-bottom:0}.lg\:block{display:block}.lg\:inline{display:inline}.lg\:table-cell{display:table-cell}.lg\:hidden{display:none}.lg\:w-auto{width:auto}.lg\:flex-row{flex-direction:row}.lg\:px-5{padding-left:1.25rem;padding-right:1.25rem}.lg\:pl-2{padding-left:.5rem}}@media (min-width:1280px){.xl\:inline{display:inline}} diff --git a/public/vendor/log-viewer/app.js b/public/vendor/log-viewer/app.js index 690521b0455..9d1ae1061bc 100644 --- a/public/vendor/log-viewer/app.js +++ b/public/vendor/log-viewer/app.js @@ -1,2 +1,2 @@ /*! For license information please see app.js.LICENSE.txt */ -(()=>{var e,t={520:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true"},[r("path",{"fill-rule":"evenodd",d:"M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z","clip-rule":"evenodd"})])}},889:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true"},[r("path",{"fill-rule":"evenodd",d:"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z","clip-rule":"evenodd"})])}},10:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M10.5 19.5L3 12m0 0l7.5-7.5M3 12h18"})])}},488:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0l3.181 3.183a8.25 8.25 0 0013.803-3.7M4.031 9.865a8.25 8.25 0 0113.803-3.7l3.181 3.182m0-4.991v4.99"})])}},683:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3"})])}},246:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 8.25l-7.5 7.5-7.5-7.5"})])}},388:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.25 4.5l7.5 7.5-7.5 7.5"})])}},782:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M20.25 6.375c0 2.278-3.694 4.125-8.25 4.125S3.75 8.653 3.75 6.375m16.5 0c0-2.278-3.694-4.125-8.25-4.125S3.75 4.097 3.75 6.375m16.5 0v11.25c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125V6.375m16.5 0v3.75m-16.5-3.75v3.75m16.5 0v3.75C20.25 16.153 16.556 18 12 18s-8.25-1.847-8.25-4.125v-3.75m16.5 0c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125"})])}},156:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 9.75v6.75m0 0l-3-3m3 3l3-3m-8.25 6a4.5 4.5 0 01-1.41-8.775 5.25 5.25 0 0110.233-2.33 3 3 0 013.758 3.848A3.752 3.752 0 0118 19.5H6.75z"})])}},904:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M10.343 3.94c.09-.542.56-.94 1.11-.94h1.093c.55 0 1.02.398 1.11.94l.149.894c.07.424.384.764.78.93.398.164.855.142 1.205-.108l.737-.527a1.125 1.125 0 011.45.12l.773.774c.39.389.44 1.002.12 1.45l-.527.737c-.25.35-.272.806-.107 1.204.165.397.505.71.93.78l.893.15c.543.09.94.56.94 1.109v1.094c0 .55-.397 1.02-.94 1.11l-.893.149c-.425.07-.765.383-.93.78-.165.398-.143.854.107 1.204l.527.738c.32.447.269 1.06-.12 1.45l-.774.773a1.125 1.125 0 01-1.449.12l-.738-.527c-.35-.25-.806-.272-1.203-.107-.397.165-.71.505-.781.929l-.149.894c-.09.542-.56.94-1.11.94h-1.094c-.55 0-1.019-.398-1.11-.94l-.148-.894c-.071-.424-.384-.764-.781-.93-.398-.164-.854-.142-1.204.108l-.738.527c-.447.32-1.06.269-1.45-.12l-.773-.774a1.125 1.125 0 01-.12-1.45l.527-.737c.25-.35.273-.806.108-1.204-.165-.397-.505-.71-.93-.78l-.894-.15c-.542-.09-.94-.56-.94-1.109v-1.094c0-.55.398-1.02.94-1.11l.894-.149c.424-.07.765-.383.93-.78.165-.398.143-.854-.107-1.204l-.527-.738a1.125 1.125 0 01.12-1.45l.773-.773a1.125 1.125 0 011.45-.12l.737.527c.35.25.807.272 1.204.107.397-.165.71-.505.78-.929l.15-.894z"}),r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})])}},960:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 17.25v1.007a3 3 0 01-.879 2.122L7.5 21h9l-.621-.621A3 3 0 0115 18.257V17.25m6-12V15a2.25 2.25 0 01-2.25 2.25H5.25A2.25 2.25 0 013 15V5.25m18 0A2.25 2.25 0 0018.75 3H5.25A2.25 2.25 0 003 5.25m18 0V12a2.25 2.25 0 01-2.25 2.25H5.25A2.25 2.25 0 013 12V5.25"})])}},243:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 6.75a.75.75 0 110-1.5.75.75 0 010 1.5zM12 12.75a.75.75 0 110-1.5.75.75 0 010 1.5zM12 18.75a.75.75 0 110-1.5.75.75 0 010 1.5z"})])}},706:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z"})])}},413:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M2.25 12.75V12A2.25 2.25 0 014.5 9.75h15A2.25 2.25 0 0121.75 12v.75m-8.69-6.44l-2.12-2.12a1.5 1.5 0 00-1.061-.44H4.5A2.25 2.25 0 002.25 6v12a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18V9a2.25 2.25 0 00-2.25-2.25h-5.379a1.5 1.5 0 01-1.06-.44z"})])}},199:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.75 9.776c.112-.017.227-.026.344-.026h15.812c.117 0 .232.009.344.026m-16.5 0a2.25 2.25 0 00-1.883 2.542l.857 6a2.25 2.25 0 002.227 1.932H19.05a2.25 2.25 0 002.227-1.932l.857-6a2.25 2.25 0 00-1.883-2.542m-16.5 0V6A2.25 2.25 0 016 3.75h3.879a1.5 1.5 0 011.06.44l2.122 2.12a1.5 1.5 0 001.06.44H18A2.25 2.25 0 0120.25 9v.776"})])}},923:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M13.19 8.688a4.5 4.5 0 011.242 7.244l-4.5 4.5a4.5 4.5 0 01-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 00-6.364-6.364l-4.5 4.5a4.5 4.5 0 001.242 7.244"})])}},447:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z"})])}},902:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z"})])}},390:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9 5.25h.008v.008H12v-.008z"})])}},908:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M7.217 10.907a2.25 2.25 0 100 2.186m0-2.186c.18.324.283.696.283 1.093s-.103.77-.283 1.093m0-2.186l9.566-5.314m-9.566 7.5l9.566 5.314m0 0a2.25 2.25 0 103.935 2.186 2.25 2.25 0 00-3.935-2.186zm0-12.814a2.25 2.25 0 103.933-2.185 2.25 2.25 0 00-3.933 2.185z"})])}},817:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 3v2.25m6.364.386l-1.591 1.591M21 12h-2.25m-.386 6.364l-1.591-1.591M12 18.75V21m-4.773-4.227l-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0z"})])}},558:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0"})])}},505:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6 18L18 6M6 6l12 12"})])}},598:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[r("path",{"fill-rule":"evenodd",d:"M4.755 10.059a7.5 7.5 0 0112.548-3.364l1.903 1.903h-3.183a.75.75 0 100 1.5h4.992a.75.75 0 00.75-.75V4.356a.75.75 0 00-1.5 0v3.18l-1.9-1.9A9 9 0 003.306 9.67a.75.75 0 101.45.388zm15.408 3.352a.75.75 0 00-.919.53 7.5 7.5 0 01-12.548 3.364l-1.902-1.903h3.183a.75.75 0 000-1.5H2.984a.75.75 0 00-.75.75v4.992a.75.75 0 001.5 0v-3.18l1.9 1.9a9 9 0 0015.059-4.035.75.75 0 00-.53-.918z","clip-rule":"evenodd"})])}},462:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[r("path",{"fill-rule":"evenodd",d:"M3 6.75A.75.75 0 013.75 6h16.5a.75.75 0 010 1.5H3.75A.75.75 0 013 6.75zM3 12a.75.75 0 01.75-.75h16.5a.75.75 0 010 1.5H3.75A.75.75 0 013 12zm0 5.25a.75.75 0 01.75-.75h16.5a.75.75 0 010 1.5H3.75a.75.75 0 01-.75-.75z","clip-rule":"evenodd"})])}},452:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[r("path",{"fill-rule":"evenodd",d:"M16.28 11.47a.75.75 0 010 1.06l-7.5 7.5a.75.75 0 01-1.06-1.06L14.69 12 7.72 5.03a.75.75 0 011.06-1.06l7.5 7.5z","clip-rule":"evenodd"})])}},640:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[r("path",{"fill-rule":"evenodd",d:"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z","clip-rule":"evenodd"})])}},307:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[r("path",{"fill-rule":"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z","clip-rule":"evenodd"})])}},69:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[r("path",{d:"M7.493 18.75c-.425 0-.82-.236-.975-.632A7.48 7.48 0 016 15.375c0-1.75.599-3.358 1.602-4.634.151-.192.373-.309.6-.397.473-.183.89-.514 1.212-.924a9.042 9.042 0 012.861-2.4c.723-.384 1.35-.956 1.653-1.715a4.498 4.498 0 00.322-1.672V3a.75.75 0 01.75-.75 2.25 2.25 0 012.25 2.25c0 1.152-.26 2.243-.723 3.218-.266.558.107 1.282.725 1.282h3.126c1.026 0 1.945.694 2.054 1.715.045.422.068.85.068 1.285a11.95 11.95 0 01-2.649 7.521c-.388.482-.987.729-1.605.729H14.23c-.483 0-.964-.078-1.423-.23l-3.114-1.04a4.501 4.501 0 00-1.423-.23h-.777zM2.331 10.977a11.969 11.969 0 00-.831 4.398 12 12 0 00.52 3.507c.26.85 1.084 1.368 1.973 1.368H4.9c.445 0 .72-.498.523-.898a8.963 8.963 0 01-.924-3.977c0-1.708.476-3.305 1.302-4.666.245-.403-.028-.959-.5-.959H4.25c-.832 0-1.612.453-1.918 1.227z"})])}},36:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[r("path",{"fill-rule":"evenodd",d:"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zm8.706-1.442c1.146-.573 2.437.463 2.126 1.706l-.709 2.836.042-.02a.75.75 0 01.67 1.34l-.04.022c-1.147.573-2.438-.463-2.127-1.706l.71-2.836-.042.02a.75.75 0 11-.671-1.34l.041-.022zM12 9a.75.75 0 100-1.5.75.75 0 000 1.5z","clip-rule":"evenodd"})])}},500:(e,t,n)=>{"use strict";var r=n(821),o=!1;function i(e,t,n){return Array.isArray(e)?(e.length=Math.max(e.length,t),e.splice(t,1,n),n):(e[t]=n,n)}function s(){return"undefined"!=typeof navigator&&"undefined"!=typeof window?window:void 0!==n.g?n.g:{}}const a="function"==typeof Proxy,l="devtools-plugin:setup";let c,u,f;function d(){return function(){var e;return void 0!==c||("undefined"!=typeof window&&window.performance?(c=!0,u=window.performance):void 0!==n.g&&(null===(e=n.g.perf_hooks)||void 0===e?void 0:e.performance)?(c=!0,u=n.g.perf_hooks.performance):c=!1),c}()?u.now():Date.now()}class p{constructor(e,t){this.target=null,this.targetQueue=[],this.onQueue=[],this.plugin=e,this.hook=t;const n={};if(e.settings)for(const t in e.settings){const r=e.settings[t];n[t]=r.defaultValue}const r=`__vue-devtools-plugin-settings__${e.id}`;let o=Object.assign({},n);try{const e=localStorage.getItem(r),t=JSON.parse(e);Object.assign(o,t)}catch(e){}this.fallbacks={getSettings:()=>o,setSettings(e){try{localStorage.setItem(r,JSON.stringify(e))}catch(e){}o=e},now:()=>d()},t&&t.on("plugin:settings:set",((e,t)=>{e===this.plugin.id&&this.fallbacks.setSettings(t)})),this.proxiedOn=new Proxy({},{get:(e,t)=>this.target?this.target.on[t]:(...e)=>{this.onQueue.push({method:t,args:e})}}),this.proxiedTarget=new Proxy({},{get:(e,t)=>this.target?this.target[t]:"on"===t?this.proxiedOn:Object.keys(this.fallbacks).includes(t)?(...e)=>(this.targetQueue.push({method:t,args:e,resolve:()=>{}}),this.fallbacks[t](...e)):(...e)=>new Promise((n=>{this.targetQueue.push({method:t,args:e,resolve:n})}))})}async setRealTarget(e){this.target=e;for(const e of this.onQueue)this.target.on[e.method](...e.args);for(const e of this.targetQueue)e.resolve(await this.target[e.method](...e.args))}}function h(e,t){const n=e,r=s(),o=s().__VUE_DEVTOOLS_GLOBAL_HOOK__,i=a&&n.enableEarlyProxy;if(!o||!r.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__&&i){const e=i?new p(n,o):null;(r.__VUE_DEVTOOLS_PLUGINS__=r.__VUE_DEVTOOLS_PLUGINS__||[]).push({pluginDescriptor:n,setupFn:t,proxy:e}),e&&t(e.proxiedTarget)}else o.emit(l,e,t)}const v=e=>f=e,m=Symbol();function g(e){return e&&"object"==typeof e&&"[object Object]"===Object.prototype.toString.call(e)&&"function"!=typeof e.toJSON}var y;!function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"}(y||(y={}));const b="undefined"!=typeof window,w=!1,_=(()=>"object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:"object"==typeof globalThis?globalThis:{HTMLElement:null})();function E(e,t,n){const r=new XMLHttpRequest;r.open("GET",e),r.responseType="blob",r.onload=function(){C(r.response,t,n)},r.onerror=function(){},r.send()}function x(e){const t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return t.status>=200&&t.status<=299}function k(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(t){const n=document.createEvent("MouseEvents");n.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(n)}}const S="object"==typeof navigator?navigator:{userAgent:""},O=(()=>/Macintosh/.test(S.userAgent)&&/AppleWebKit/.test(S.userAgent)&&!/Safari/.test(S.userAgent))(),C=b?"undefined"!=typeof HTMLAnchorElement&&"download"in HTMLAnchorElement.prototype&&!O?function(e,t="download",n){const r=document.createElement("a");r.download=t,r.rel="noopener","string"==typeof e?(r.href=e,r.origin!==location.origin?x(r.href)?E(e,t,n):(r.target="_blank",k(r)):k(r)):(r.href=URL.createObjectURL(e),setTimeout((function(){URL.revokeObjectURL(r.href)}),4e4),setTimeout((function(){k(r)}),0))}:"msSaveOrOpenBlob"in S?function(e,t="download",n){if("string"==typeof e)if(x(e))E(e,t,n);else{const t=document.createElement("a");t.href=e,t.target="_blank",setTimeout((function(){k(t)}))}else navigator.msSaveOrOpenBlob(function(e,{autoBom:t=!1}={}){return t&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([String.fromCharCode(65279),e],{type:e.type}):e}(e,n),t)}:function(e,t,n,r){(r=r||open("","_blank"))&&(r.document.title=r.document.body.innerText="downloading...");if("string"==typeof e)return E(e,t,n);const o="application/octet-stream"===e.type,i=/constructor/i.test(String(_.HTMLElement))||"safari"in _,s=/CriOS\/[\d]+/.test(navigator.userAgent);if((s||o&&i||O)&&"undefined"!=typeof FileReader){const t=new FileReader;t.onloadend=function(){let e=t.result;if("string"!=typeof e)throw r=null,new Error("Wrong reader.result type");e=s?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),r?r.location.href=e:location.assign(e),r=null},t.readAsDataURL(e)}else{const t=URL.createObjectURL(e);r?r.location.assign(t):location.href=t,r=null,setTimeout((function(){URL.revokeObjectURL(t)}),4e4)}}:()=>{};function N(e,t){"function"==typeof __VUE_DEVTOOLS_TOAST__&&__VUE_DEVTOOLS_TOAST__("🍍 "+e,t)}function P(e){return"_a"in e&&"install"in e}function T(){if(!("clipboard"in navigator))return N("Your browser doesn't support the Clipboard API","error"),!0}function R(e){return!!(e instanceof Error&&e.message.toLowerCase().includes("document is not focused"))&&(N('You need to activate the "Emulate a focused page" setting in the "Rendering" panel of devtools.',"warn"),!0)}let A;async function V(e){try{const t=await(A||(A=document.createElement("input"),A.type="file",A.accept=".json"),function(){return new Promise(((e,t)=>{A.onchange=async()=>{const t=A.files;if(!t)return e(null);const n=t.item(0);return e(n?{text:await n.text(),file:n}:null)},A.oncancel=()=>e(null),A.onerror=t,A.click()}))}),n=await t();if(!n)return;const{text:r,file:o}=n;e.state.value=JSON.parse(r),N(`Global state imported from "${o.name}".`)}catch(e){N("Failed to export the state as JSON. Check the console for more details.","error")}}function j(e){return{_custom:{display:e}}}const L="🍍 Pinia (root)",B="_root";function I(e){return P(e)?{id:B,label:L}:{id:e.$id,label:e.$id}}function F(e){return e?Array.isArray(e)?e.reduce(((e,t)=>(e.keys.push(t.key),e.operations.push(t.type),e.oldValue[t.key]=t.oldValue,e.newValue[t.key]=t.newValue,e)),{oldValue:{},keys:[],operations:[],newValue:{}}):{operation:j(e.type),key:j(e.key),oldValue:e.oldValue,newValue:e.newValue}:{}}function D(e){switch(e){case y.direct:return"mutation";case y.patchFunction:case y.patchObject:return"$patch";default:return"unknown"}}let M=!0;const U=[],$="pinia:mutations",z="pinia",{assign:H}=Object,q=e=>"🍍 "+e;function W(e,t){h({id:"dev.esm.pinia",label:"Pinia 🍍",logo:"https://pinia.vuejs.org/logo.svg",packageName:"pinia",homepage:"https://pinia.vuejs.org",componentStateTypes:U,app:e},(n=>{"function"!=typeof n.now&&N("You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html."),n.addTimelineLayer({id:$,label:"Pinia 🍍",color:15064968}),n.addInspector({id:z,label:"Pinia 🍍",icon:"storage",treeFilterPlaceholder:"Search stores",actions:[{icon:"content_copy",action:()=>{!async function(e){if(!T())try{await navigator.clipboard.writeText(JSON.stringify(e.state.value)),N("Global state copied to clipboard.")}catch(e){if(R(e))return;N("Failed to serialize the state. Check the console for more details.","error")}}(t)},tooltip:"Serialize and copy the state"},{icon:"content_paste",action:async()=>{await async function(e){if(!T())try{e.state.value=JSON.parse(await navigator.clipboard.readText()),N("Global state pasted from clipboard.")}catch(e){if(R(e))return;N("Failed to deserialize the state from clipboard. Check the console for more details.","error")}}(t),n.sendInspectorTree(z),n.sendInspectorState(z)},tooltip:"Replace the state with the content of your clipboard"},{icon:"save",action:()=>{!async function(e){try{C(new Blob([JSON.stringify(e.state.value)],{type:"text/plain;charset=utf-8"}),"pinia-state.json")}catch(e){N("Failed to export the state as JSON. Check the console for more details.","error")}}(t)},tooltip:"Save the state as a JSON file"},{icon:"folder_open",action:async()=>{await V(t),n.sendInspectorTree(z),n.sendInspectorState(z)},tooltip:"Import the state from a JSON file"}],nodeActions:[{icon:"restore",tooltip:"Reset the state (option store only)",action:e=>{const n=t._s.get(e);n?n._isOptionsAPI?(n.$reset(),N(`Store "${e}" reset.`)):N(`Cannot reset "${e}" store because it's a setup store.`,"warn"):N(`Cannot reset "${e}" store because it wasn't found.`,"warn")}}]}),n.on.inspectComponent(((e,t)=>{const n=e.componentInstance&&e.componentInstance.proxy;if(n&&n._pStores){const t=e.componentInstance.proxy._pStores;Object.values(t).forEach((t=>{e.instanceData.state.push({type:q(t.$id),key:"state",editable:!0,value:t._isOptionsAPI?{_custom:{value:(0,r.toRaw)(t.$state),actions:[{icon:"restore",tooltip:"Reset the state of this store",action:()=>t.$reset()}]}}:Object.keys(t.$state).reduce(((e,n)=>(e[n]=t.$state[n],e)),{})}),t._getters&&t._getters.length&&e.instanceData.state.push({type:q(t.$id),key:"getters",editable:!1,value:t._getters.reduce(((e,n)=>{try{e[n]=t[n]}catch(t){e[n]=t}return e}),{})})}))}})),n.on.getInspectorTree((n=>{if(n.app===e&&n.inspectorId===z){let e=[t];e=e.concat(Array.from(t._s.values())),n.rootNodes=(n.filter?e.filter((e=>"$id"in e?e.$id.toLowerCase().includes(n.filter.toLowerCase()):L.toLowerCase().includes(n.filter.toLowerCase()))):e).map(I)}})),n.on.getInspectorState((n=>{if(n.app===e&&n.inspectorId===z){const e=n.nodeId===B?t:t._s.get(n.nodeId);if(!e)return;e&&(n.state=function(e){if(P(e)){const t=Array.from(e._s.keys()),n=e._s,r={state:t.map((t=>({editable:!0,key:t,value:e.state.value[t]}))),getters:t.filter((e=>n.get(e)._getters)).map((e=>{const t=n.get(e);return{editable:!1,key:e,value:t._getters.reduce(((e,n)=>(e[n]=t[n],e)),{})}}))};return r}const t={state:Object.keys(e.$state).map((t=>({editable:!0,key:t,value:e.$state[t]})))};return e._getters&&e._getters.length&&(t.getters=e._getters.map((t=>({editable:!1,key:t,value:e[t]})))),e._customProperties.size&&(t.customProperties=Array.from(e._customProperties).map((t=>({editable:!0,key:t,value:e[t]})))),t}(e))}})),n.on.editInspectorState(((n,r)=>{if(n.app===e&&n.inspectorId===z){const e=n.nodeId===B?t:t._s.get(n.nodeId);if(!e)return N(`store "${n.nodeId}" not found`,"error");const{path:r}=n;P(e)?r.unshift("state"):1===r.length&&e._customProperties.has(r[0])&&!(r[0]in e.$state)||r.unshift("$state"),M=!1,n.set(e,r,n.state.value),M=!0}})),n.on.editComponentState((e=>{if(e.type.startsWith("🍍")){const n=e.type.replace(/^🍍\s*/,""),r=t._s.get(n);if(!r)return N(`store "${n}" not found`,"error");const{path:o}=e;if("state"!==o[0])return N(`Invalid path for store "${n}":\n${o}\nOnly state can be modified.`);o[0]="$state",M=!1,e.set(r,o,e.state.value),M=!0}}))}))}let K,G=0;function Y(e,t){const n=t.reduce(((t,n)=>(t[n]=(0,r.toRaw)(e)[n],t)),{});for(const t in n)e[t]=function(){const r=G,o=new Proxy(e,{get:(...e)=>(K=r,Reflect.get(...e)),set:(...e)=>(K=r,Reflect.set(...e))});return n[t].apply(o,arguments)}}function J({app:e,store:t,options:n}){if(!t.$id.startsWith("__hot:")){if(n.state&&(t._isOptionsAPI=!0),"function"==typeof n.state){Y(t,Object.keys(n.actions));const e=t._hotUpdate;(0,r.toRaw)(t)._hotUpdate=function(n){e.apply(this,arguments),Y(t,Object.keys(n._hmrPayload.actions))}}!function(e,t){U.includes(q(t.$id))||U.push(q(t.$id)),h({id:"dev.esm.pinia",label:"Pinia 🍍",logo:"https://pinia.vuejs.org/logo.svg",packageName:"pinia",homepage:"https://pinia.vuejs.org",componentStateTypes:U,app:e,settings:{logStoreChanges:{label:"Notify about new/deleted stores",type:"boolean",defaultValue:!0}}},(e=>{const n="function"==typeof e.now?e.now.bind(e):Date.now;t.$onAction((({after:r,onError:o,name:i,args:s})=>{const a=G++;e.addTimelineEvent({layerId:$,event:{time:n(),title:"🛫 "+i,subtitle:"start",data:{store:j(t.$id),action:j(i),args:s},groupId:a}}),r((r=>{K=void 0,e.addTimelineEvent({layerId:$,event:{time:n(),title:"🛬 "+i,subtitle:"end",data:{store:j(t.$id),action:j(i),args:s,result:r},groupId:a}})})),o((r=>{K=void 0,e.addTimelineEvent({layerId:$,event:{time:n(),logType:"error",title:"💥 "+i,subtitle:"end",data:{store:j(t.$id),action:j(i),args:s,error:r},groupId:a}})}))}),!0),t._customProperties.forEach((o=>{(0,r.watch)((()=>(0,r.unref)(t[o])),((t,r)=>{e.notifyComponentUpdate(),e.sendInspectorState(z),M&&e.addTimelineEvent({layerId:$,event:{time:n(),title:"Change",subtitle:o,data:{newValue:t,oldValue:r},groupId:K}})}),{deep:!0})})),t.$subscribe((({events:r,type:o},i)=>{if(e.notifyComponentUpdate(),e.sendInspectorState(z),!M)return;const s={time:n(),title:D(o),data:H({store:j(t.$id)},F(r)),groupId:K};K=void 0,o===y.patchFunction?s.subtitle="⤵️":o===y.patchObject?s.subtitle="🧩":r&&!Array.isArray(r)&&(s.subtitle=r.type),r&&(s.data["rawEvent(s)"]={_custom:{display:"DebuggerEvent",type:"object",tooltip:"raw DebuggerEvent[]",value:r}}),e.addTimelineEvent({layerId:$,event:s})}),{detached:!0,flush:"sync"});const o=t._hotUpdate;t._hotUpdate=(0,r.markRaw)((r=>{o(r),e.addTimelineEvent({layerId:$,event:{time:n(),title:"🔥 "+t.$id,subtitle:"HMR update",data:{store:j(t.$id),info:j("HMR update")}}}),e.notifyComponentUpdate(),e.sendInspectorTree(z),e.sendInspectorState(z)}));const{$dispose:i}=t;t.$dispose=()=>{i(),e.notifyComponentUpdate(),e.sendInspectorTree(z),e.sendInspectorState(z),e.getSettings().logStoreChanges&&N(`Disposed "${t.$id}" store 🗑`)},e.notifyComponentUpdate(),e.sendInspectorTree(z),e.sendInspectorState(z),e.getSettings().logStoreChanges&&N(`"${t.$id}" store installed 🆕`)}))}(e,t)}}const Q=()=>{};function Z(e,t,n,o=Q){e.push(t);const i=()=>{const n=e.indexOf(t);n>-1&&(e.splice(n,1),o())};return!n&&(0,r.getCurrentScope)()&&(0,r.onScopeDispose)(i),i}function X(e,...t){e.slice().forEach((e=>{e(...t)}))}function ee(e,t){e instanceof Map&&t instanceof Map&&t.forEach(((t,n)=>e.set(n,t))),e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const o=t[n],i=e[n];g(i)&&g(o)&&e.hasOwnProperty(n)&&!(0,r.isRef)(o)&&!(0,r.isReactive)(o)?e[n]=ee(i,o):e[n]=o}return e}const te=Symbol(),ne=new WeakMap;const{assign:re}=Object;function oe(e,t,n={},s,a,l){let c;const u=re({actions:{}},n);const f={deep:!0};let d,p;let h,m=(0,r.markRaw)([]),b=(0,r.markRaw)([]);const _=s.state.value[e];l||_||(o?i(s.state.value,e,{}):s.state.value[e]={});const E=(0,r.ref)({});let x;function k(t){let n;d=p=!1,"function"==typeof t?(t(s.state.value[e]),n={type:y.patchFunction,storeId:e,events:h}):(ee(s.state.value[e],t),n={type:y.patchObject,payload:t,storeId:e,events:h});const o=x=Symbol();(0,r.nextTick)().then((()=>{x===o&&(d=!0)})),p=!0,X(m,n,s.state.value[e])}const S=Q;function O(t,n){return function(){v(s);const r=Array.from(arguments),o=[],i=[];let a;X(b,{args:r,name:t,store:P,after:function(e){o.push(e)},onError:function(e){i.push(e)}});try{a=n.apply(this&&this.$id===e?this:P,r)}catch(e){throw X(i,e),e}return a instanceof Promise?a.then((e=>(X(o,e),e))).catch((e=>(X(i,e),Promise.reject(e)))):(X(o,a),a)}}const C=(0,r.markRaw)({actions:{},getters:{},state:[],hotState:E}),N={_p:s,$id:e,$onAction:Z.bind(null,b),$patch:k,$reset:S,$subscribe(t,n={}){const o=Z(m,t,n.detached,(()=>i())),i=c.run((()=>(0,r.watch)((()=>s.state.value[e]),(r=>{("sync"===n.flush?p:d)&&t({storeId:e,type:y.direct,events:h},r)}),re({},f,n))));return o},$dispose:function(){c.stop(),m=[],b=[],s._s.delete(e)}};o&&(N._r=!1);const P=(0,r.reactive)(w?re({_hmrPayload:C,_customProperties:(0,r.markRaw)(new Set)},N):N);s._s.set(e,P);const T=s._e.run((()=>(c=(0,r.effectScope)(),c.run((()=>t())))));for(const t in T){const n=T[t];if((0,r.isRef)(n)&&(A=n,!(0,r.isRef)(A)||!A.effect)||(0,r.isReactive)(n))l||(!_||(R=n,o?ne.has(R):g(R)&&R.hasOwnProperty(te))||((0,r.isRef)(n)?n.value=_[t]:ee(n,_[t])),o?i(s.state.value[e],t,n):s.state.value[e][t]=n);else if("function"==typeof n){const e=O(t,n);o?i(T,t,e):T[t]=e,u.actions[t]=n}else 0}var R,A;if(o?Object.keys(T).forEach((e=>{i(P,e,T[e])})):(re(P,T),re((0,r.toRaw)(P),T)),Object.defineProperty(P,"$state",{get:()=>s.state.value[e],set:e=>{k((t=>{re(t,e)}))}}),w){const e={writable:!0,configurable:!0,enumerable:!1};["_p","_hmrPayload","_getters","_customProperties"].forEach((t=>{Object.defineProperty(P,t,re({value:P[t]},e))}))}return o&&(P._r=!0),s._p.forEach((e=>{if(w){const t=c.run((()=>e({store:P,app:s._a,pinia:s,options:u})));Object.keys(t||{}).forEach((e=>P._customProperties.add(e))),re(P,t)}else re(P,c.run((()=>e({store:P,app:s._a,pinia:s,options:u}))))})),_&&l&&n.hydrate&&n.hydrate(P.$state,_),d=!0,p=!0,P}function ie(e,t,n){let s,a;const l="function"==typeof t;function c(e,n){const c=(0,r.getCurrentInstance)();(e=e||c&&(0,r.inject)(m,null))&&v(e),(e=f)._s.has(s)||(l?oe(s,t,a,e):function(e,t,n,s){const{state:a,actions:l,getters:c}=t,u=n.state.value[e];let f;f=oe(e,(function(){u||(o?i(n.state.value,e,a?a():{}):n.state.value[e]=a?a():{});const t=(0,r.toRefs)(n.state.value[e]);return re(t,l,Object.keys(c||{}).reduce(((t,i)=>(t[i]=(0,r.markRaw)((0,r.computed)((()=>{v(n);const t=n._s.get(e);if(!o||t._r)return c[i].call(t,t)}))),t)),{}))}),t,n,0,!0),f.$reset=function(){const e=a?a():{};this.$patch((t=>{re(t,e)}))}}(s,a,e));return e._s.get(s)}return"string"==typeof e?(s=e,a=l?n:t):(a=e,s=e.id),c.$id=s,c}function se(e,t){return function(){return e.apply(t,arguments)}}const{toString:ae}=Object.prototype,{getPrototypeOf:le}=Object,ce=(ue=Object.create(null),e=>{const t=ae.call(e);return ue[t]||(ue[t]=t.slice(8,-1).toLowerCase())});var ue;const fe=e=>(e=e.toLowerCase(),t=>ce(t)===e),de=e=>t=>typeof t===e,{isArray:pe}=Array,he=de("undefined");const ve=fe("ArrayBuffer");const me=de("string"),ge=de("function"),ye=de("number"),be=e=>null!==e&&"object"==typeof e,we=e=>{if("object"!==ce(e))return!1;const t=le(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},_e=fe("Date"),Ee=fe("File"),xe=fe("Blob"),ke=fe("FileList"),Se=fe("URLSearchParams");function Oe(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let r,o;if("object"!=typeof e&&(e=[e]),pe(e))for(r=0,o=e.length;r0;)if(r=n[o],t===r.toLowerCase())return r;return null}const Ne="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,Pe=e=>!he(e)&&e!==Ne;const Te=(Re="undefined"!=typeof Uint8Array&&le(Uint8Array),e=>Re&&e instanceof Re);var Re;const Ae=fe("HTMLFormElement"),Ve=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),je=fe("RegExp"),Le=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};Oe(n,((n,o)=>{!1!==t(n,o,e)&&(r[o]=n)})),Object.defineProperties(e,r)},Be="abcdefghijklmnopqrstuvwxyz",Ie="0123456789",Fe={DIGIT:Ie,ALPHA:Be,ALPHA_DIGIT:Be+Be.toUpperCase()+Ie};const De={isArray:pe,isArrayBuffer:ve,isBuffer:function(e){return null!==e&&!he(e)&&null!==e.constructor&&!he(e.constructor)&&ge(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{const t="[object FormData]";return e&&("function"==typeof FormData&&e instanceof FormData||ae.call(e)===t||ge(e.toString)&&e.toString()===t)},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&ve(e.buffer),t},isString:me,isNumber:ye,isBoolean:e=>!0===e||!1===e,isObject:be,isPlainObject:we,isUndefined:he,isDate:_e,isFile:Ee,isBlob:xe,isRegExp:je,isFunction:ge,isStream:e=>be(e)&&ge(e.pipe),isURLSearchParams:Se,isTypedArray:Te,isFileList:ke,forEach:Oe,merge:function e(){const{caseless:t}=Pe(this)&&this||{},n={},r=(r,o)=>{const i=t&&Ce(n,o)||o;we(n[i])&&we(r)?n[i]=e(n[i],r):we(r)?n[i]=e({},r):pe(r)?n[i]=r.slice():n[i]=r};for(let e=0,t=arguments.length;e(Oe(t,((t,r)=>{n&&ge(t)?e[r]=se(t,n):e[r]=t}),{allOwnKeys:r}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:(e,t,n,r)=>{let o,i,s;const a={};if(t=t||{},null==e)return t;do{for(o=Object.getOwnPropertyNames(e),i=o.length;i-- >0;)s=o[i],r&&!r(s,e,t)||a[s]||(t[s]=e[s],a[s]=!0);e=!1!==n&&le(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:ce,kindOfTest:fe,endsWith:(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return-1!==r&&r===n},toArray:e=>{if(!e)return null;if(pe(e))return e;let t=e.length;if(!ye(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[Symbol.iterator]).call(e);let r;for(;(r=n.next())&&!r.done;){const n=r.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let n;const r=[];for(;null!==(n=e.exec(t));)r.push(n);return r},isHTMLForm:Ae,hasOwnProperty:Ve,hasOwnProp:Ve,reduceDescriptors:Le,freezeMethods:e=>{Le(e,((t,n)=>{if(ge(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const r=e[n];ge(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))}))},toObjectSet:(e,t)=>{const n={},r=e=>{e.forEach((e=>{n[e]=!0}))};return pe(e)?r(e):r(String(e).split(t)),n},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,n){return t.toUpperCase()+n})),noop:()=>{},toFiniteNumber:(e,t)=>(e=+e,Number.isFinite(e)?e:t),findKey:Ce,global:Ne,isContextDefined:Pe,ALPHABET:Fe,generateString:(e=16,t=Fe.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n},isSpecCompliantForm:function(e){return!!(e&&ge(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),n=(e,r)=>{if(be(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[r]=e;const o=pe(e)?[]:{};return Oe(e,((e,t)=>{const i=n(e,r+1);!he(i)&&(o[t]=i)})),t[r]=void 0,o}}return e};return n(e,0)}};function Me(e,t,n,r,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),o&&(this.response=o)}De.inherits(Me,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:De.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const Ue=Me.prototype,$e={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{$e[e]={value:e}})),Object.defineProperties(Me,$e),Object.defineProperty(Ue,"isAxiosError",{value:!0}),Me.from=(e,t,n,r,o,i)=>{const s=Object.create(Ue);return De.toFlatObject(e,s,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),Me.call(s,e.message,t,n,r,o),s.cause=e,s.name=e.name,i&&Object.assign(s,i),s};const ze=Me,He=null;var qe=n(764).lW;function We(e){return De.isPlainObject(e)||De.isArray(e)}function Ke(e){return De.endsWith(e,"[]")?e.slice(0,-2):e}function Ge(e,t,n){return e?e.concat(t).map((function(e,t){return e=Ke(e),!n&&t?"["+e+"]":e})).join(n?".":""):t}const Ye=De.toFlatObject(De,{},null,(function(e){return/^is[A-Z]/.test(e)}));const Je=function(e,t,n){if(!De.isObject(e))throw new TypeError("target must be an object");t=t||new(He||FormData);const r=(n=De.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!De.isUndefined(t[e])}))).metaTokens,o=n.visitor||c,i=n.dots,s=n.indexes,a=(n.Blob||"undefined"!=typeof Blob&&Blob)&&De.isSpecCompliantForm(t);if(!De.isFunction(o))throw new TypeError("visitor must be a function");function l(e){if(null===e)return"";if(De.isDate(e))return e.toISOString();if(!a&&De.isBlob(e))throw new ze("Blob is not supported. Use a Buffer instead.");return De.isArrayBuffer(e)||De.isTypedArray(e)?a&&"function"==typeof Blob?new Blob([e]):qe.from(e):e}function c(e,n,o){let a=e;if(e&&!o&&"object"==typeof e)if(De.endsWith(n,"{}"))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(De.isArray(e)&&function(e){return De.isArray(e)&&!e.some(We)}(e)||(De.isFileList(e)||De.endsWith(n,"[]"))&&(a=De.toArray(e)))return n=Ke(n),a.forEach((function(e,r){!De.isUndefined(e)&&null!==e&&t.append(!0===s?Ge([n],r,i):null===s?n:n+"[]",l(e))})),!1;return!!We(e)||(t.append(Ge(o,n,i),l(e)),!1)}const u=[],f=Object.assign(Ye,{defaultVisitor:c,convertValue:l,isVisitable:We});if(!De.isObject(e))throw new TypeError("data must be an object");return function e(n,r){if(!De.isUndefined(n)){if(-1!==u.indexOf(n))throw Error("Circular reference detected in "+r.join("."));u.push(n),De.forEach(n,(function(n,i){!0===(!(De.isUndefined(n)||null===n)&&o.call(t,n,De.isString(i)?i.trim():i,r,f))&&e(n,r?r.concat(i):[i])})),u.pop()}}(e),t};function Qe(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function Ze(e,t){this._pairs=[],e&&Je(e,this,t)}const Xe=Ze.prototype;Xe.append=function(e,t){this._pairs.push([e,t])},Xe.toString=function(e){const t=e?function(t){return e.call(this,t,Qe)}:Qe;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};const et=Ze;function tt(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function nt(e,t,n){if(!t)return e;const r=n&&n.encode||tt,o=n&&n.serialize;let i;if(i=o?o(t,n):De.isURLSearchParams(t)?t.toString():new et(t,n).toString(r),i){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e}const rt=class{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){De.forEach(this.handlers,(function(t){null!==t&&e(t)}))}},ot={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},it="undefined"!=typeof URLSearchParams?URLSearchParams:et,st=FormData,at=(()=>{let e;return("undefined"==typeof navigator||"ReactNative"!==(e=navigator.product)&&"NativeScript"!==e&&"NS"!==e)&&("undefined"!=typeof window&&"undefined"!=typeof document)})(),lt="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,ct={isBrowser:!0,classes:{URLSearchParams:it,FormData:st,Blob},isStandardBrowserEnv:at,isStandardBrowserWebWorkerEnv:lt,protocols:["http","https","file","blob","url","data"]};const ut=function(e){function t(e,n,r,o){let i=e[o++];const s=Number.isFinite(+i),a=o>=e.length;if(i=!i&&De.isArray(r)?r.length:i,a)return De.hasOwnProp(r,i)?r[i]=[r[i],n]:r[i]=n,!s;r[i]&&De.isObject(r[i])||(r[i]=[]);return t(e,n,r[i],o)&&De.isArray(r[i])&&(r[i]=function(e){const t={},n=Object.keys(e);let r;const o=n.length;let i;for(r=0;r{t(function(e){return De.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),r,n,0)})),n}return null},ft={"Content-Type":void 0};const dt={transitional:ot,adapter:["xhr","http"],transformRequest:[function(e,t){const n=t.getContentType()||"",r=n.indexOf("application/json")>-1,o=De.isObject(e);o&&De.isHTMLForm(e)&&(e=new FormData(e));if(De.isFormData(e))return r&&r?JSON.stringify(ut(e)):e;if(De.isArrayBuffer(e)||De.isBuffer(e)||De.isStream(e)||De.isFile(e)||De.isBlob(e))return e;if(De.isArrayBufferView(e))return e.buffer;if(De.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let i;if(o){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return Je(e,new ct.classes.URLSearchParams,Object.assign({visitor:function(e,t,n,r){return ct.isNode&&De.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((i=De.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return Je(i?{"files[]":e}:e,t&&new t,this.formSerializer)}}return o||r?(t.setContentType("application/json",!1),function(e,t,n){if(De.isString(e))try{return(t||JSON.parse)(e),De.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||dt.transitional,n=t&&t.forcedJSONParsing,r="json"===this.responseType;if(e&&De.isString(e)&&(n&&!this.responseType||r)){const n=!(t&&t.silentJSONParsing)&&r;try{return JSON.parse(e)}catch(e){if(n){if("SyntaxError"===e.name)throw ze.from(e,ze.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:ct.classes.FormData,Blob:ct.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};De.forEach(["delete","get","head"],(function(e){dt.headers[e]={}})),De.forEach(["post","put","patch"],(function(e){dt.headers[e]=De.merge(ft)}));const pt=dt,ht=De.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),vt=Symbol("internals");function mt(e){return e&&String(e).trim().toLowerCase()}function gt(e){return!1===e||null==e?e:De.isArray(e)?e.map(gt):String(e)}function yt(e,t,n,r){return De.isFunction(r)?r.call(this,t,n):De.isString(t)?De.isString(r)?-1!==t.indexOf(r):De.isRegExp(r)?r.test(t):void 0:void 0}class bt{constructor(e){e&&this.set(e)}set(e,t,n){const r=this;function o(e,t,n){const o=mt(t);if(!o)throw new Error("header name must be a non-empty string");const i=De.findKey(r,o);(!i||void 0===r[i]||!0===n||void 0===n&&!1!==r[i])&&(r[i||t]=gt(e))}const i=(e,t)=>De.forEach(e,((e,n)=>o(e,n,t)));return De.isPlainObject(e)||e instanceof this.constructor?i(e,t):De.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z]+$/.test(e.trim())?i((e=>{const t={};let n,r,o;return e&&e.split("\n").forEach((function(e){o=e.indexOf(":"),n=e.substring(0,o).trim().toLowerCase(),r=e.substring(o+1).trim(),!n||t[n]&&ht[n]||("set-cookie"===n?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)})),t})(e),t):null!=e&&o(t,e,n),this}get(e,t){if(e=mt(e)){const n=De.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}(e);if(De.isFunction(t))return t.call(this,e,n);if(De.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=mt(e)){const n=De.findKey(this,e);return!(!n||void 0===this[n]||t&&!yt(0,this[n],n,t))}return!1}delete(e,t){const n=this;let r=!1;function o(e){if(e=mt(e)){const o=De.findKey(n,e);!o||t&&!yt(0,n[o],o,t)||(delete n[o],r=!0)}}return De.isArray(e)?e.forEach(o):o(e),r}clear(e){const t=Object.keys(this);let n=t.length,r=!1;for(;n--;){const o=t[n];e&&!yt(0,this[o],o,e)||(delete this[o],r=!0)}return r}normalize(e){const t=this,n={};return De.forEach(this,((r,o)=>{const i=De.findKey(n,o);if(i)return t[i]=gt(r),void delete t[o];const s=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,n)=>t.toUpperCase()+n))}(o):String(o).trim();s!==o&&delete t[o],t[s]=gt(r),n[s]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return De.forEach(this,((n,r)=>{null!=n&&!1!==n&&(t[r]=e&&De.isArray(n)?n.join(", "):n)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach((e=>n.set(e))),n}static accessor(e){const t=(this[vt]=this[vt]={accessors:{}}).accessors,n=this.prototype;function r(e){const r=mt(e);t[r]||(!function(e,t){const n=De.toCamelCase(" "+t);["get","set","has"].forEach((r=>{Object.defineProperty(e,r+n,{value:function(e,n,o){return this[r].call(this,t,e,n,o)},configurable:!0})}))}(n,e),t[r]=!0)}return De.isArray(e)?e.forEach(r):r(e),this}}bt.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),De.freezeMethods(bt.prototype),De.freezeMethods(bt);const wt=bt;function _t(e,t){const n=this||pt,r=t||n,o=wt.from(r.headers);let i=r.data;return De.forEach(e,(function(e){i=e.call(n,i,o.normalize(),t?t.status:void 0)})),o.normalize(),i}function Et(e){return!(!e||!e.__CANCEL__)}function xt(e,t,n){ze.call(this,null==e?"canceled":e,ze.ERR_CANCELED,t,n),this.name="CanceledError"}De.inherits(xt,ze,{__CANCEL__:!0});const kt=xt;const St=ct.isStandardBrowserEnv?{write:function(e,t,n,r,o,i){const s=[];s.push(e+"="+encodeURIComponent(t)),De.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),De.isString(r)&&s.push("path="+r),De.isString(o)&&s.push("domain="+o),!0===i&&s.push("secure"),document.cookie=s.join("; ")},read:function(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}};function Ot(e,t){return e&&!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)?function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const Ct=ct.isStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let n;function r(n){let r=n;return e&&(t.setAttribute("href",r),r=t.href),t.setAttribute("href",r),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return n=r(window.location.href),function(e){const t=De.isString(e)?r(e):e;return t.protocol===n.protocol&&t.host===n.host}}():function(){return!0};const Nt=function(e,t){e=e||10;const n=new Array(e),r=new Array(e);let o,i=0,s=0;return t=void 0!==t?t:1e3,function(a){const l=Date.now(),c=r[s];o||(o=l),n[i]=a,r[i]=l;let u=s,f=0;for(;u!==i;)f+=n[u++],u%=e;if(i=(i+1)%e,i===s&&(s=(s+1)%e),l-o{const i=o.loaded,s=o.lengthComputable?o.total:void 0,a=i-n,l=r(a);n=i;const c={loaded:i,total:s,progress:s?i/s:void 0,bytes:a,rate:l||void 0,estimated:l&&s&&i<=s?(s-i)/l:void 0,event:o};c[t?"download":"upload"]=!0,e(c)}}const Tt="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,n){let r=e.data;const o=wt.from(e.headers).normalize(),i=e.responseType;let s;function a(){e.cancelToken&&e.cancelToken.unsubscribe(s),e.signal&&e.signal.removeEventListener("abort",s)}De.isFormData(r)&&(ct.isStandardBrowserEnv||ct.isStandardBrowserWebWorkerEnv)&&o.setContentType(!1);let l=new XMLHttpRequest;if(e.auth){const t=e.auth.username||"",n=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";o.set("Authorization","Basic "+btoa(t+":"+n))}const c=Ot(e.baseURL,e.url);function u(){if(!l)return;const r=wt.from("getAllResponseHeaders"in l&&l.getAllResponseHeaders());!function(e,t,n){const r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(new ze("Request failed with status code "+n.status,[ze.ERR_BAD_REQUEST,ze.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}((function(e){t(e),a()}),(function(e){n(e),a()}),{data:i&&"text"!==i&&"json"!==i?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:r,config:e,request:l}),l=null}if(l.open(e.method.toUpperCase(),nt(c,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,"onloadend"in l?l.onloadend=u:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(u)},l.onabort=function(){l&&(n(new ze("Request aborted",ze.ECONNABORTED,e,l)),l=null)},l.onerror=function(){n(new ze("Network Error",ze.ERR_NETWORK,e,l)),l=null},l.ontimeout=function(){let t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const r=e.transitional||ot;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(new ze(t,r.clarifyTimeoutError?ze.ETIMEDOUT:ze.ECONNABORTED,e,l)),l=null},ct.isStandardBrowserEnv){const t=(e.withCredentials||Ct(c))&&e.xsrfCookieName&&St.read(e.xsrfCookieName);t&&o.set(e.xsrfHeaderName,t)}void 0===r&&o.setContentType(null),"setRequestHeader"in l&&De.forEach(o.toJSON(),(function(e,t){l.setRequestHeader(t,e)})),De.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),i&&"json"!==i&&(l.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",Pt(e.onDownloadProgress,!0)),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",Pt(e.onUploadProgress)),(e.cancelToken||e.signal)&&(s=t=>{l&&(n(!t||t.type?new kt(null,e,l):t),l.abort(),l=null)},e.cancelToken&&e.cancelToken.subscribe(s),e.signal&&(e.signal.aborted?s():e.signal.addEventListener("abort",s)));const f=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(c);f&&-1===ct.protocols.indexOf(f)?n(new ze("Unsupported protocol "+f+":",ze.ERR_BAD_REQUEST,e)):l.send(r||null)}))},Rt={http:He,xhr:Tt};De.forEach(Rt,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const At={getAdapter:e=>{e=De.isArray(e)?e:[e];const{length:t}=e;let n,r;for(let o=0;oe instanceof wt?e.toJSON():e;function Bt(e,t){t=t||{};const n={};function r(e,t,n){return De.isPlainObject(e)&&De.isPlainObject(t)?De.merge.call({caseless:n},e,t):De.isPlainObject(t)?De.merge({},t):De.isArray(t)?t.slice():t}function o(e,t,n){return De.isUndefined(t)?De.isUndefined(e)?void 0:r(void 0,e,n):r(e,t,n)}function i(e,t){if(!De.isUndefined(t))return r(void 0,t)}function s(e,t){return De.isUndefined(t)?De.isUndefined(e)?void 0:r(void 0,e):r(void 0,t)}function a(n,o,i){return i in t?r(n,o):i in e?r(void 0,n):void 0}const l={url:i,method:i,data:i,baseURL:s,transformRequest:s,transformResponse:s,paramsSerializer:s,timeout:s,timeoutMessage:s,withCredentials:s,adapter:s,responseType:s,xsrfCookieName:s,xsrfHeaderName:s,onUploadProgress:s,onDownloadProgress:s,decompress:s,maxContentLength:s,maxBodyLength:s,beforeRedirect:s,transport:s,httpAgent:s,httpsAgent:s,cancelToken:s,socketPath:s,responseEncoding:s,validateStatus:a,headers:(e,t)=>o(Lt(e),Lt(t),!0)};return De.forEach(Object.keys(e).concat(Object.keys(t)),(function(r){const i=l[r]||o,s=i(e[r],t[r],r);De.isUndefined(s)&&i!==a||(n[r]=s)})),n}const It="1.3.2",Ft={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{Ft[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));const Dt={};Ft.transitional=function(e,t,n){return(r,o,i)=>{if(!1===e)throw new ze(function(e,t){return"[Axios v"+It+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}(o," has been removed"+(t?" in "+t:"")),ze.ERR_DEPRECATED);return t&&!Dt[o]&&(Dt[o]=!0),!e||e(r,o,i)}};const Mt={assertOptions:function(e,t,n){if("object"!=typeof e)throw new ze("options must be an object",ze.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let o=r.length;for(;o-- >0;){const i=r[o],s=t[i];if(s){const t=e[i],n=void 0===t||s(t,i,e);if(!0!==n)throw new ze("option "+i+" must be "+n,ze.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new ze("Unknown option "+i,ze.ERR_BAD_OPTION)}},validators:Ft},Ut=Mt.validators;class $t{constructor(e){this.defaults=e,this.interceptors={request:new rt,response:new rt}}request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=Bt(this.defaults,t);const{transitional:n,paramsSerializer:r,headers:o}=t;let i;void 0!==n&&Mt.assertOptions(n,{silentJSONParsing:Ut.transitional(Ut.boolean),forcedJSONParsing:Ut.transitional(Ut.boolean),clarifyTimeoutError:Ut.transitional(Ut.boolean)},!1),void 0!==r&&Mt.assertOptions(r,{encode:Ut.function,serialize:Ut.function},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase(),i=o&&De.merge(o.common,o[t.method]),i&&De.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete o[e]})),t.headers=wt.concat(i,o);const s=[];let a=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(a=a&&e.synchronous,s.unshift(e.fulfilled,e.rejected))}));const l=[];let c;this.interceptors.response.forEach((function(e){l.push(e.fulfilled,e.rejected)}));let u,f=0;if(!a){const e=[jt.bind(this),void 0];for(e.unshift.apply(e,s),e.push.apply(e,l),u=e.length,c=Promise.resolve(t);f{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null})),this.promise.then=e=>{let t;const r=new Promise((e=>{n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e((function(e,r,o){n.reason||(n.reason=new kt(e,r,o),t(n.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;const t=new Ht((function(t){e=t}));return{token:t,cancel:e}}}const qt=Ht;const Wt={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Wt).forEach((([e,t])=>{Wt[t]=e}));const Kt=Wt;const Gt=function e(t){const n=new zt(t),r=se(zt.prototype.request,n);return De.extend(r,zt.prototype,n,{allOwnKeys:!0}),De.extend(r,n,null,{allOwnKeys:!0}),r.create=function(n){return e(Bt(t,n))},r}(pt);Gt.Axios=zt,Gt.CanceledError=kt,Gt.CancelToken=qt,Gt.isCancel=Et,Gt.VERSION=It,Gt.toFormData=Je,Gt.AxiosError=ze,Gt.Cancel=Gt.CanceledError,Gt.all=function(e){return Promise.all(e)},Gt.spread=function(e){return function(t){return e.apply(null,t)}},Gt.isAxiosError=function(e){return De.isObject(e)&&!0===e.isAxiosError},Gt.mergeConfig=Bt,Gt.AxiosHeaders=wt,Gt.formToJSON=e=>ut(De.isHTMLForm(e)?new FormData(e):e),Gt.HttpStatusCode=Kt,Gt.default=Gt;const Yt=Gt,Jt="undefined"!=typeof window;function Qt(e){return e.__esModule||"Module"===e[Symbol.toStringTag]}const Zt=Object.assign;function Xt(e,t){const n={};for(const r in t){const o=t[r];n[r]=tn(o)?o.map(e):e(o)}return n}const en=()=>{},tn=Array.isArray;const nn=/\/$/,rn=e=>e.replace(nn,"");function on(e,t,n="/"){let r,o={},i="",s="";const a=t.indexOf("#");let l=t.indexOf("?");return a=0&&(l=-1),l>-1&&(r=t.slice(0,l),i=t.slice(l+1,a>-1?a:t.length),o=e(i)),a>-1&&(r=r||t.slice(0,a),s=t.slice(a,t.length)),r=function(e,t){if(e.startsWith("/"))return e;0;if(!e)return t;const n=t.split("/"),r=e.split("/");let o,i,s=n.length-1;for(o=0;o1&&s--}return n.slice(0,s).join("/")+"/"+r.slice(o-(o===r.length?1:0)).join("/")}(null!=r?r:t,n),{fullPath:r+(i&&"?")+i+s,path:r,query:o,hash:s}}function sn(e,t){return t&&e.toLowerCase().startsWith(t.toLowerCase())?e.slice(t.length)||"/":e}function an(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function ln(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!cn(e[n],t[n]))return!1;return!0}function cn(e,t){return tn(e)?un(e,t):tn(t)?un(t,e):e===t}function un(e,t){return tn(t)?e.length===t.length&&e.every(((e,n)=>e===t[n])):1===e.length&&e[0]===t}var fn,dn;!function(e){e.pop="pop",e.push="push"}(fn||(fn={})),function(e){e.back="back",e.forward="forward",e.unknown=""}(dn||(dn={}));function pn(e){if(!e)if(Jt){const t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return"/"!==e[0]&&"#"!==e[0]&&(e="/"+e),rn(e)}const hn=/^[^#]+#/;function vn(e,t){return e.replace(hn,"#")+t}const mn=()=>({left:window.pageXOffset,top:window.pageYOffset});function gn(e){let t;if("el"in e){const n=e.el,r="string"==typeof n&&n.startsWith("#");0;const o="string"==typeof n?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=function(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(null!=t.left?t.left:window.pageXOffset,null!=t.top?t.top:window.pageYOffset)}function yn(e,t){return(history.state?history.state.position-t:-1)+e}const bn=new Map;let wn=()=>location.protocol+"//"+location.host;function _n(e,t){const{pathname:n,search:r,hash:o}=t,i=e.indexOf("#");if(i>-1){let t=o.includes(e.slice(i))?e.slice(i).length:1,n=o.slice(t);return"/"!==n[0]&&(n="/"+n),sn(n,"")}return sn(n,e)+r+o}function En(e,t,n,r=!1,o=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:o?mn():null}}function xn(e){const t=function(e){const{history:t,location:n}=window,r={value:_n(e,n)},o={value:t.state};function i(r,i,s){const a=e.indexOf("#"),l=a>-1?(n.host&&document.querySelector("base")?e:e.slice(a))+r:wn()+e+r;try{t[s?"replaceState":"pushState"](i,"",l),o.value=i}catch(e){n[s?"replace":"assign"](l)}}return o.value||i(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0),{location:r,state:o,push:function(e,n){const s=Zt({},o.value,t.state,{forward:e,scroll:mn()});i(s.current,s,!0),i(e,Zt({},En(r.value,e,null),{position:s.position+1},n),!1),r.value=e},replace:function(e,n){i(e,Zt({},t.state,En(o.value.back,e,o.value.forward,!0),n,{position:o.value.position}),!0),r.value=e}}}(e=pn(e)),n=function(e,t,n,r){let o=[],i=[],s=null;const a=({state:i})=>{const a=_n(e,location),l=n.value,c=t.value;let u=0;if(i){if(n.value=a,t.value=i,s&&s===l)return void(s=null);u=c?i.position-c.position:0}else r(a);o.forEach((e=>{e(n.value,l,{delta:u,type:fn.pop,direction:u?u>0?dn.forward:dn.back:dn.unknown})}))};function l(){const{history:e}=window;e.state&&e.replaceState(Zt({},e.state,{scroll:mn()}),"")}return window.addEventListener("popstate",a),window.addEventListener("beforeunload",l),{pauseListeners:function(){s=n.value},listen:function(e){o.push(e);const t=()=>{const t=o.indexOf(e);t>-1&&o.splice(t,1)};return i.push(t),t},destroy:function(){for(const e of i)e();i=[],window.removeEventListener("popstate",a),window.removeEventListener("beforeunload",l)}}}(e,t.state,t.location,t.replace);const r=Zt({location:"",base:e,go:function(e,t=!0){t||n.pauseListeners(),history.go(e)},createHref:vn.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}function kn(e){return"string"==typeof e||"symbol"==typeof e}const Sn={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},On=Symbol("");var Cn;!function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"}(Cn||(Cn={}));function Nn(e,t){return Zt(new Error,{type:e,[On]:!0},t)}function Pn(e,t){return e instanceof Error&&On in e&&(null==t||!!(e.type&t))}const Tn="[^/]+?",Rn={sensitive:!1,strict:!1,start:!0,end:!0},An=/[.+*?^${}()[\]/\\]/g;function Vn(e,t){let n=0;for(;nt.length?1===t.length&&80===t[0]?1:-1:0}function jn(e,t){let n=0;const r=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const Bn={type:0,value:""},In=/[a-zA-Z0-9_]/;function Fn(e,t,n){const r=function(e,t){const n=Zt({},Rn,t),r=[];let o=n.start?"^":"";const i=[];for(const t of e){const e=t.length?[]:[90];n.strict&&!t.length&&(o+="/");for(let r=0;r1&&("*"===a||"+"===a)&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),i.push({type:1,value:c,regexp:u,repeatable:"*"===a||"+"===a,optional:"*"===a||"?"===a})):t("Invalid state to consume buffer"),c="")}function d(){c+=a}for(;l{i(d)}:en}function i(e){if(kn(e)){const t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(i),t.alias.forEach(i))}else{const t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(i),e.alias.forEach(i))}}function s(e){let t=0;for(;t=0&&(e.record.path!==n[t].record.path||!qn(e,n[t]));)t++;n.splice(t,0,e),e.record.name&&!$n(e)&&r.set(e.record.name,e)}return t=Hn({strict:!1,end:!0,sensitive:!1},t),e.forEach((e=>o(e))),{addRoute:o,resolve:function(e,t){let o,i,s,a={};if("name"in e&&e.name){if(o=r.get(e.name),!o)throw Nn(1,{location:e});0,s=o.record.name,a=Zt(Mn(t.params,o.keys.filter((e=>!e.optional)).map((e=>e.name))),e.params&&Mn(e.params,o.keys.map((e=>e.name)))),i=o.stringify(a)}else if("path"in e)i=e.path,o=n.find((e=>e.re.test(i))),o&&(a=o.parse(i),s=o.record.name);else{if(o=t.name?r.get(t.name):n.find((e=>e.re.test(t.path))),!o)throw Nn(1,{location:e,currentLocation:t});s=o.record.name,a=Zt({},t.params,e.params),i=o.stringify(a)}const l=[];let c=o;for(;c;)l.unshift(c.record),c=c.parent;return{name:s,path:i,params:a,matched:l,meta:zn(l)}},removeRoute:i,getRoutes:function(){return n},getRecordMatcher:function(e){return r.get(e)}}}function Mn(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function Un(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]="boolean"==typeof n?n:n[r];return t}function $n(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function zn(e){return e.reduce(((e,t)=>Zt(e,t.meta)),{})}function Hn(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function qn(e,t){return t.children.some((t=>t===e||qn(e,t)))}const Wn=/#/g,Kn=/&/g,Gn=/\//g,Yn=/=/g,Jn=/\?/g,Qn=/\+/g,Zn=/%5B/g,Xn=/%5D/g,er=/%5E/g,tr=/%60/g,nr=/%7B/g,rr=/%7C/g,or=/%7D/g,ir=/%20/g;function sr(e){return encodeURI(""+e).replace(rr,"|").replace(Zn,"[").replace(Xn,"]")}function ar(e){return sr(e).replace(Qn,"%2B").replace(ir,"+").replace(Wn,"%23").replace(Kn,"%26").replace(tr,"`").replace(nr,"{").replace(or,"}").replace(er,"^")}function lr(e){return null==e?"":function(e){return sr(e).replace(Wn,"%23").replace(Jn,"%3F")}(e).replace(Gn,"%2F")}function cr(e){try{return decodeURIComponent(""+e)}catch(e){}return""+e}function ur(e){const t={};if(""===e||"?"===e)return t;const n=("?"===e[0]?e.slice(1):e).split("&");for(let e=0;ee&&ar(e))):[r&&ar(r)];o.forEach((e=>{void 0!==e&&(t+=(t.length?"&":"")+n,null!=e&&(t+="="+e))}))}return t}function dr(e){const t={};for(const n in e){const r=e[n];void 0!==r&&(t[n]=tn(r)?r.map((e=>null==e?null:""+e)):null==r?r:""+r)}return t}const pr=Symbol(""),hr=Symbol(""),vr=Symbol(""),mr=Symbol(""),gr=Symbol("");function yr(){let e=[];return{add:function(t){return e.push(t),()=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)}},list:()=>e,reset:function(){e=[]}}}function br(e,t,n,r,o){const i=r&&(r.enterCallbacks[o]=r.enterCallbacks[o]||[]);return()=>new Promise(((s,a)=>{const l=e=>{var l;!1===e?a(Nn(4,{from:n,to:t})):e instanceof Error?a(e):"string"==typeof(l=e)||l&&"object"==typeof l?a(Nn(2,{from:t,to:e})):(i&&r.enterCallbacks[o]===i&&"function"==typeof e&&i.push(e),s())},c=e.call(r&&r.instances[o],t,n,l);let u=Promise.resolve(c);e.length<3&&(u=u.then(l)),u.catch((e=>a(e)))}))}function wr(e,t,n,r){const o=[];for(const s of e){0;for(const e in s.components){let a=s.components[e];if("beforeRouteEnter"===t||s.instances[e])if("object"==typeof(i=a)||"displayName"in i||"props"in i||"__vccOpts"in i){const i=(a.__vccOpts||a)[t];i&&o.push(br(i,n,r,s,e))}else{let i=a();0,o.push((()=>i.then((o=>{if(!o)return Promise.reject(new Error(`Couldn't resolve component "${e}" at "${s.path}"`));const i=Qt(o)?o.default:o;s.components[e]=i;const a=(i.__vccOpts||i)[t];return a&&br(a,n,r,s,e)()}))))}}}var i;return o}function _r(e){const t=(0,r.inject)(vr),n=(0,r.inject)(mr),o=(0,r.computed)((()=>t.resolve((0,r.unref)(e.to)))),i=(0,r.computed)((()=>{const{matched:e}=o.value,{length:t}=e,r=e[t-1],i=n.matched;if(!r||!i.length)return-1;const s=i.findIndex(an.bind(null,r));if(s>-1)return s;const a=xr(e[t-2]);return t>1&&xr(r)===a&&i[i.length-1].path!==a?i.findIndex(an.bind(null,e[t-2])):s})),s=(0,r.computed)((()=>i.value>-1&&function(e,t){for(const n in t){const r=t[n],o=e[n];if("string"==typeof r){if(r!==o)return!1}else if(!tn(o)||o.length!==r.length||r.some(((e,t)=>e!==o[t])))return!1}return!0}(n.params,o.value.params))),a=(0,r.computed)((()=>i.value>-1&&i.value===n.matched.length-1&&ln(n.params,o.value.params)));return{route:o,href:(0,r.computed)((()=>o.value.href)),isActive:s,isExactActive:a,navigate:function(n={}){return function(e){if(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)return;if(e.defaultPrevented)return;if(void 0!==e.button&&0!==e.button)return;if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}e.preventDefault&&e.preventDefault();return!0}(n)?t[(0,r.unref)(e.replace)?"replace":"push"]((0,r.unref)(e.to)).catch(en):Promise.resolve()}}}const Er=(0,r.defineComponent)({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:_r,setup(e,{slots:t}){const n=(0,r.reactive)(_r(e)),{options:o}=(0,r.inject)(vr),i=(0,r.computed)((()=>({[kr(e.activeClass,o.linkActiveClass,"router-link-active")]:n.isActive,[kr(e.exactActiveClass,o.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive})));return()=>{const o=t.default&&t.default(n);return e.custom?o:(0,r.h)("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:i.value},o)}}});function xr(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const kr=(e,t,n)=>null!=e?e:null!=t?t:n;function Sr(e,t){if(!e)return null;const n=e(t);return 1===n.length?n[0]:n}const Or=(0,r.defineComponent)({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const o=(0,r.inject)(gr),i=(0,r.computed)((()=>e.route||o.value)),s=(0,r.inject)(hr,0),a=(0,r.computed)((()=>{let e=(0,r.unref)(s);const{matched:t}=i.value;let n;for(;(n=t[e])&&!n.components;)e++;return e})),l=(0,r.computed)((()=>i.value.matched[a.value]));(0,r.provide)(hr,(0,r.computed)((()=>a.value+1))),(0,r.provide)(pr,l),(0,r.provide)(gr,i);const c=(0,r.ref)();return(0,r.watch)((()=>[c.value,l.value,e.name]),(([e,t,n],[r,o,i])=>{t&&(t.instances[n]=e,o&&o!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=o.leaveGuards),t.updateGuards.size||(t.updateGuards=o.updateGuards))),!e||!t||o&&an(t,o)&&r||(t.enterCallbacks[n]||[]).forEach((t=>t(e)))}),{flush:"post"}),()=>{const o=i.value,s=e.name,a=l.value,u=a&&a.components[s];if(!u)return Sr(n.default,{Component:u,route:o});const f=a.props[s],d=f?!0===f?o.params:"function"==typeof f?f(o):f:null,p=(0,r.h)(u,Zt({},d,t,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(a.instances[s]=null)},ref:c}));return Sr(n.default,{Component:p,route:o})||p}}});function Cr(e){return e.reduce(((e,t)=>e.then((()=>t()))),Promise.resolve())}function Nr(){return(0,r.inject)(vr)}function Pr(){return(0,r.inject)(mr)}function Tr(e,t,...n){if(e in t){let r=t[e];return"function"==typeof r?r(...n):r}let r=new Error(`Tried to handle "${e}" but there is no handler defined. Only defined handlers are: ${Object.keys(t).map((e=>`"${e}"`)).join(", ")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(r,Tr),r}var Rr,Ar=((Rr=Ar||{})[Rr.None=0]="None",Rr[Rr.RenderStrategy=1]="RenderStrategy",Rr[Rr.Static=2]="Static",Rr),Vr=(e=>(e[e.Unmount=0]="Unmount",e[e.Hidden=1]="Hidden",e))(Vr||{});function jr({visible:e=!0,features:t=0,ourProps:n,theirProps:r,...o}){var i;let s=Ir(r,n),a=Object.assign(o,{props:s});if(e||2&t&&s.static)return Lr(a);if(1&t){return Tr(null==(i=s.unmount)||i?0:1,{0:()=>null,1:()=>Lr({...o,props:{...s,hidden:!0,style:{display:"none"}}})})}return Lr(a)}function Lr({props:e,attrs:t,slots:n,slot:o,name:i}){var s,a;let{as:l,...c}=Fr(e,["unmount","static"]),u=null==(s=n.default)?void 0:s.call(n,o),f={};if(o){let e=!1,t=[];for(let[n,r]of Object.entries(o))"boolean"==typeof r&&(e=!0),!0===r&&t.push(n);e&&(f["data-headlessui-state"]=t.join(" "))}if("template"===l){if(u=Br(null!=u?u:[]),Object.keys(c).length>0||Object.keys(t).length>0){let[e,...n]=null!=u?u:[];if(!function(e){return null!=e&&("string"==typeof e.type||"object"==typeof e.type||"function"==typeof e.type)}(e)||n.length>0)throw new Error(['Passing props on "template"!',"",`The current component <${i} /> is rendering a "template".`,"However we need to passthrough the following props:",Object.keys(c).concat(Object.keys(t)).map((e=>e.trim())).filter(((e,t,n)=>n.indexOf(e)===t)).sort(((e,t)=>e.localeCompare(t))).map((e=>` - ${e}`)).join("\n"),"","You can apply a few solutions:",['Add an `as="..."` prop, to ensure that we render an actual element instead of a "template".',"Render a single element as the child so that we can forward the props onto that element."].map((e=>` - ${e}`)).join("\n")].join("\n"));let o=Ir(null!=(a=e.props)?a:{},c),s=(0,r.cloneVNode)(e,o);for(let e in o)e.startsWith("on")&&(s.props||(s.props={}),s.props[e]=o[e]);return s}return Array.isArray(u)&&1===u.length?u[0]:u}return(0,r.h)(l,Object.assign({},c,f),{default:()=>u})}function Br(e){return e.flatMap((e=>e.type===r.Fragment?Br(e.children):[e]))}function Ir(...e){if(0===e.length)return{};if(1===e.length)return e[0];let t={},n={};for(let r of e)for(let e in r)e.startsWith("on")&&"function"==typeof r[e]?(null!=n[e]||(n[e]=[]),n[e].push(r[e])):t[e]=r[e];if(t.disabled||t["aria-disabled"])return Object.assign(t,Object.fromEntries(Object.keys(n).map((e=>[e,void 0]))));for(let e in n)Object.assign(t,{[e](t,...r){let o=n[e];for(let e of o){if(t instanceof Event&&t.defaultPrevented)return;e(t,...r)}}});return t}function Fr(e,t=[]){let n=Object.assign({},e);for(let e of t)e in n&&delete n[e];return n}let Dr=0;function Mr(){return++Dr}var Ur=(e=>(e.Space=" ",e.Enter="Enter",e.Escape="Escape",e.Backspace="Backspace",e.Delete="Delete",e.ArrowLeft="ArrowLeft",e.ArrowUp="ArrowUp",e.ArrowRight="ArrowRight",e.ArrowDown="ArrowDown",e.Home="Home",e.End="End",e.PageUp="PageUp",e.PageDown="PageDown",e.Tab="Tab",e))(Ur||{});var $r=(e=>(e[e.First=0]="First",e[e.Previous=1]="Previous",e[e.Next=2]="Next",e[e.Last=3]="Last",e[e.Specific=4]="Specific",e[e.Nothing=5]="Nothing",e))($r||{});function zr(e,t){let n=t.resolveItems();if(n.length<=0)return null;let r=t.resolveActiveIndex(),o=null!=r?r:-1,i=(()=>{switch(e.focus){case 0:return n.findIndex((e=>!t.resolveDisabled(e)));case 1:{let e=n.slice().reverse().findIndex(((e,n,r)=>!(-1!==o&&r.length-n-1>=o)&&!t.resolveDisabled(e)));return-1===e?e:n.length-1-e}case 2:return n.findIndex(((e,n)=>!(n<=o)&&!t.resolveDisabled(e)));case 3:{let e=n.slice().reverse().findIndex((e=>!t.resolveDisabled(e)));return-1===e?e:n.length-1-e}case 4:return n.findIndex((n=>t.resolveId(n)===e.id));case 5:return null;default:!function(e){throw new Error("Unexpected object: "+e)}(e)}})();return-1===i?r:i}function Hr(e){var t;return null==e||null==e.value?null:null!=(t=e.value.$el)?t:e.value}let qr=new class{constructor(){this.current=this.detect(),this.currentId=0}set(e){this.current!==e&&(this.currentId=0,this.current=e)}reset(){this.set(this.detect())}nextId(){return++this.currentId}get isServer(){return"server"===this.current}get isClient(){return"client"===this.current}detect(){return"undefined"==typeof window||"undefined"==typeof document?"server":"client"}};function Wr(e){if(qr.isServer)return null;if(e instanceof Node)return e.ownerDocument;if(null!=e&&e.hasOwnProperty("value")){let t=Hr(e);if(t)return t.ownerDocument}return document}let Kr=Symbol("Context");var Gr=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(Gr||{});function Yr(){return(0,r.inject)(Kr,null)}function Jr(e){(0,r.provide)(Kr,e)}function Qr(e,t){if(e)return e;let n=null!=t?t:"button";return"string"==typeof n&&"button"===n.toLowerCase()?"button":void 0}function Zr(e,t){let n=(0,r.ref)(Qr(e.value.type,e.value.as));return(0,r.onMounted)((()=>{n.value=Qr(e.value.type,e.value.as)})),(0,r.watchEffect)((()=>{var e;n.value||!Hr(t)||Hr(t)instanceof HTMLButtonElement&&(null==(e=Hr(t))||!e.hasAttribute("type"))&&(n.value="button")})),n}let Xr=["[contentEditable=true]","[tabindex]","a[href]","area[href]","button:not([disabled])","iframe","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].map((e=>`${e}:not([tabindex='-1'])`)).join(",");var eo=(e=>(e[e.First=1]="First",e[e.Previous=2]="Previous",e[e.Next=4]="Next",e[e.Last=8]="Last",e[e.WrapAround=16]="WrapAround",e[e.NoScroll=32]="NoScroll",e))(eo||{}),to=(e=>(e[e.Error=0]="Error",e[e.Overflow=1]="Overflow",e[e.Success=2]="Success",e[e.Underflow=3]="Underflow",e))(to||{}),no=(e=>(e[e.Previous=-1]="Previous",e[e.Next=1]="Next",e))(no||{});function ro(e=document.body){return null==e?[]:Array.from(e.querySelectorAll(Xr)).sort(((e,t)=>Math.sign((e.tabIndex||Number.MAX_SAFE_INTEGER)-(t.tabIndex||Number.MAX_SAFE_INTEGER))))}var oo=(e=>(e[e.Strict=0]="Strict",e[e.Loose=1]="Loose",e))(oo||{});function io(e,t=0){var n;return e!==(null==(n=Wr(e))?void 0:n.body)&&Tr(t,{0:()=>e.matches(Xr),1(){let t=e;for(;null!==t;){if(t.matches(Xr))return!0;t=t.parentElement}return!1}})}function so(e){let t=Wr(e);(0,r.nextTick)((()=>{t&&!io(t.activeElement,0)&&ao(e)}))}function ao(e){null==e||e.focus({preventScroll:!0})}let lo=["textarea","input"].join(",");function co(e,t=(e=>e)){return e.slice().sort(((e,n)=>{let r=t(e),o=t(n);if(null===r||null===o)return 0;let i=r.compareDocumentPosition(o);return i&Node.DOCUMENT_POSITION_FOLLOWING?-1:i&Node.DOCUMENT_POSITION_PRECEDING?1:0}))}function uo(e,t){return fo(ro(),t,{relativeTo:e})}function fo(e,t,{sorted:n=!0,relativeTo:r=null,skipElements:o=[]}={}){var i;let s=null!=(i=Array.isArray(e)?e.length>0?e[0].ownerDocument:document:null==e?void 0:e.ownerDocument)?i:document,a=Array.isArray(e)?n?co(e):e:ro(e);o.length>0&&a.length>1&&(a=a.filter((e=>!o.includes(e)))),r=null!=r?r:s.activeElement;let l,c=(()=>{if(5&t)return 1;if(10&t)return-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),u=(()=>{if(1&t)return 0;if(2&t)return Math.max(0,a.indexOf(r))-1;if(4&t)return Math.max(0,a.indexOf(r))+1;if(8&t)return a.length-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),f=32&t?{preventScroll:!0}:{},d=0,p=a.length;do{if(d>=p||d+p<=0)return 0;let e=u+d;if(16&t)e=(e+p)%p;else{if(e<0)return 3;if(e>=p)return 1}l=a[e],null==l||l.focus(f),d+=c}while(l!==s.activeElement);return 6&t&&function(e){var t,n;return null!=(n=null==(t=null==e?void 0:e.matches)?void 0:t.call(e,lo))&&n}(l)&&l.select(),l.hasAttribute("tabindex")||l.setAttribute("tabindex","0"),2}function po(e,t,n){qr.isServer||(0,r.watchEffect)((r=>{document.addEventListener(e,t,n),r((()=>document.removeEventListener(e,t,n)))}))}function ho(e,t,n=(0,r.computed)((()=>!0))){function o(r,o){if(!n.value||r.defaultPrevented)return;let i=o(r);if(null===i||!i.getRootNode().contains(i))return;let s=function e(t){return"function"==typeof t?e(t()):Array.isArray(t)||t instanceof Set?t:[t]}(e);for(let e of s){if(null===e)continue;let t=e instanceof HTMLElement?e:Hr(e);if(null!=t&&t.contains(i)||r.composed&&r.composedPath().includes(t))return}return!io(i,oo.Loose)&&-1!==i.tabIndex&&r.preventDefault(),t(r,i)}let i=(0,r.ref)(null);po("mousedown",(e=>{var t,r;n.value&&(i.value=(null==(r=null==(t=e.composedPath)?void 0:t.call(e))?void 0:r[0])||e.target)}),!0),po("click",(e=>{!i.value||(o(e,(()=>i.value)),i.value=null)}),!0),po("blur",(e=>o(e,(()=>window.document.activeElement instanceof HTMLIFrameElement?window.document.activeElement:null))),!0)}function vo(e){return[e.screenX,e.screenY]}function mo(){let e=(0,r.ref)([-1,-1]);return{wasMoved(t){let n=vo(t);return(e.value[0]!==n[0]||e.value[1]!==n[1])&&(e.value=n,!0)},update(t){e.value=vo(t)}}}var go=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(go||{}),yo=(e=>(e[e.Pointer=0]="Pointer",e[e.Other=1]="Other",e))(yo||{});let bo=Symbol("MenuContext");function wo(e){let t=(0,r.inject)(bo,null);if(null===t){let t=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,wo),t}return t}let _o=(0,r.defineComponent)({name:"Menu",props:{as:{type:[Object,String],default:"template"}},setup(e,{slots:t,attrs:n}){let o=(0,r.ref)(1),i=(0,r.ref)(null),s=(0,r.ref)(null),a=(0,r.ref)([]),l=(0,r.ref)(""),c=(0,r.ref)(null),u=(0,r.ref)(1);function f(e=(e=>e)){let t=null!==c.value?a.value[c.value]:null,n=co(e(a.value.slice()),(e=>Hr(e.dataRef.domRef))),r=t?n.indexOf(t):null;return-1===r&&(r=null),{items:n,activeItemIndex:r}}let d={menuState:o,buttonRef:i,itemsRef:s,items:a,searchQuery:l,activeItemIndex:c,activationTrigger:u,closeMenu:()=>{o.value=1,c.value=null},openMenu:()=>o.value=0,goToItem(e,t,n){let r=f(),o=zr(e===$r.Specific?{focus:$r.Specific,id:t}:{focus:e},{resolveItems:()=>r.items,resolveActiveIndex:()=>r.activeItemIndex,resolveId:e=>e.id,resolveDisabled:e=>e.dataRef.disabled});l.value="",c.value=o,u.value=null!=n?n:1,a.value=r.items},search(e){let t=""!==l.value?0:1;l.value+=e.toLowerCase();let n=(null!==c.value?a.value.slice(c.value+t).concat(a.value.slice(0,c.value+t)):a.value).find((e=>e.dataRef.textValue.startsWith(l.value)&&!e.dataRef.disabled)),r=n?a.value.indexOf(n):-1;-1===r||r===c.value||(c.value=r,u.value=1)},clearSearch(){l.value=""},registerItem(e,t){let n=f((n=>[...n,{id:e,dataRef:t}]));a.value=n.items,c.value=n.activeItemIndex,u.value=1},unregisterItem(e){let t=f((t=>{let n=t.findIndex((t=>t.id===e));return-1!==n&&t.splice(n,1),t}));a.value=t.items,c.value=t.activeItemIndex,u.value=1}};return ho([i,s],((e,t)=>{var n;d.closeMenu(),io(t,oo.Loose)||(e.preventDefault(),null==(n=Hr(i))||n.focus())}),(0,r.computed)((()=>0===o.value))),(0,r.provide)(bo,d),Jr((0,r.computed)((()=>Tr(o.value,{0:Gr.Open,1:Gr.Closed})))),()=>{let r={open:0===o.value,close:d.closeMenu};return jr({ourProps:{},theirProps:e,slot:r,slots:t,attrs:n,name:"Menu"})}}}),Eo=(0,r.defineComponent)({name:"MenuButton",props:{disabled:{type:Boolean,default:!1},as:{type:[Object,String],default:"button"},id:{type:String,default:()=>`headlessui-menu-button-${Mr()}`}},setup(e,{attrs:t,slots:n,expose:o}){let i=wo("MenuButton");function s(e){switch(e.key){case Ur.Space:case Ur.Enter:case Ur.ArrowDown:e.preventDefault(),e.stopPropagation(),i.openMenu(),(0,r.nextTick)((()=>{var e;null==(e=Hr(i.itemsRef))||e.focus({preventScroll:!0}),i.goToItem($r.First)}));break;case Ur.ArrowUp:e.preventDefault(),e.stopPropagation(),i.openMenu(),(0,r.nextTick)((()=>{var e;null==(e=Hr(i.itemsRef))||e.focus({preventScroll:!0}),i.goToItem($r.Last)}))}}function a(e){if(e.key===Ur.Space)e.preventDefault()}function l(t){e.disabled||(0===i.menuState.value?(i.closeMenu(),(0,r.nextTick)((()=>{var e;return null==(e=Hr(i.buttonRef))?void 0:e.focus({preventScroll:!0})}))):(t.preventDefault(),i.openMenu(),function(e){requestAnimationFrame((()=>requestAnimationFrame(e)))}((()=>{var e;return null==(e=Hr(i.itemsRef))?void 0:e.focus({preventScroll:!0})}))))}o({el:i.buttonRef,$el:i.buttonRef});let c=Zr((0,r.computed)((()=>({as:e.as,type:t.type}))),i.buttonRef);return()=>{var r;let o={open:0===i.menuState.value},{id:u,...f}=e;return jr({ourProps:{ref:i.buttonRef,id:u,type:c.value,"aria-haspopup":"menu","aria-controls":null==(r=Hr(i.itemsRef))?void 0:r.id,"aria-expanded":e.disabled?void 0:0===i.menuState.value,onKeydown:s,onKeyup:a,onClick:l},theirProps:f,slot:o,attrs:t,slots:n,name:"MenuButton"})}}}),xo=(0,r.defineComponent)({name:"MenuItems",props:{as:{type:[Object,String],default:"div"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},id:{type:String,default:()=>`headlessui-menu-items-${Mr()}`}},setup(e,{attrs:t,slots:n,expose:o}){let i=wo("MenuItems"),s=(0,r.ref)(null);function a(e){var t;switch(s.value&&clearTimeout(s.value),e.key){case Ur.Space:if(""!==i.searchQuery.value)return e.preventDefault(),e.stopPropagation(),i.search(e.key);case Ur.Enter:if(e.preventDefault(),e.stopPropagation(),null!==i.activeItemIndex.value){null==(t=Hr(i.items.value[i.activeItemIndex.value].dataRef.domRef))||t.click()}i.closeMenu(),so(Hr(i.buttonRef));break;case Ur.ArrowDown:return e.preventDefault(),e.stopPropagation(),i.goToItem($r.Next);case Ur.ArrowUp:return e.preventDefault(),e.stopPropagation(),i.goToItem($r.Previous);case Ur.Home:case Ur.PageUp:return e.preventDefault(),e.stopPropagation(),i.goToItem($r.First);case Ur.End:case Ur.PageDown:return e.preventDefault(),e.stopPropagation(),i.goToItem($r.Last);case Ur.Escape:e.preventDefault(),e.stopPropagation(),i.closeMenu(),(0,r.nextTick)((()=>{var e;return null==(e=Hr(i.buttonRef))?void 0:e.focus({preventScroll:!0})}));break;case Ur.Tab:e.preventDefault(),e.stopPropagation(),i.closeMenu(),(0,r.nextTick)((()=>uo(Hr(i.buttonRef),e.shiftKey?eo.Previous:eo.Next)));break;default:1===e.key.length&&(i.search(e.key),s.value=setTimeout((()=>i.clearSearch()),350))}}function l(e){if(e.key===Ur.Space)e.preventDefault()}o({el:i.itemsRef,$el:i.itemsRef}),function({container:e,accept:t,walk:n,enabled:o}){(0,r.watchEffect)((()=>{let r=e.value;if(!r||void 0!==o&&!o.value)return;let i=Wr(e);if(!i)return;let s=Object.assign((e=>t(e)),{acceptNode:t}),a=i.createTreeWalker(r,NodeFilter.SHOW_ELEMENT,s,!1);for(;a.nextNode();)n(a.currentNode)}))}({container:(0,r.computed)((()=>Hr(i.itemsRef))),enabled:(0,r.computed)((()=>0===i.menuState.value)),accept:e=>"menuitem"===e.getAttribute("role")?NodeFilter.FILTER_REJECT:e.hasAttribute("role")?NodeFilter.FILTER_SKIP:NodeFilter.FILTER_ACCEPT,walk(e){e.setAttribute("role","none")}});let c=Yr(),u=(0,r.computed)((()=>null!==c?c.value===Gr.Open:0===i.menuState.value));return()=>{var r,o;let s={open:0===i.menuState.value},{id:c,...f}=e;return jr({ourProps:{"aria-activedescendant":null===i.activeItemIndex.value||null==(r=i.items.value[i.activeItemIndex.value])?void 0:r.id,"aria-labelledby":null==(o=Hr(i.buttonRef))?void 0:o.id,id:c,onKeydown:a,onKeyup:l,role:"menu",tabIndex:0,ref:i.itemsRef},theirProps:f,slot:s,attrs:t,slots:n,features:Ar.RenderStrategy|Ar.Static,visible:u.value,name:"MenuItems"})}}}),ko=(0,r.defineComponent)({name:"MenuItem",inheritAttrs:!1,props:{as:{type:[Object,String],default:"template"},disabled:{type:Boolean,default:!1},id:{type:String,default:()=>`headlessui-menu-item-${Mr()}`}},setup(e,{slots:t,attrs:n,expose:o}){let i=wo("MenuItem"),s=(0,r.ref)(null);o({el:s,$el:s});let a=(0,r.computed)((()=>null!==i.activeItemIndex.value&&i.items.value[i.activeItemIndex.value].id===e.id)),l=(0,r.computed)((()=>({disabled:e.disabled,textValue:"",domRef:s})));function c(t){if(e.disabled)return t.preventDefault();i.closeMenu(),so(Hr(i.buttonRef))}function u(){if(e.disabled)return i.goToItem($r.Nothing);i.goToItem($r.Specific,e.id)}(0,r.onMounted)((()=>{var e,t;let n=null==(t=null==(e=Hr(s))?void 0:e.textContent)?void 0:t.toLowerCase().trim();void 0!==n&&(l.value.textValue=n)})),(0,r.onMounted)((()=>i.registerItem(e.id,l))),(0,r.onUnmounted)((()=>i.unregisterItem(e.id))),(0,r.watchEffect)((()=>{0===i.menuState.value&&(!a.value||0!==i.activationTrigger.value&&(0,r.nextTick)((()=>{var e,t;return null==(t=null==(e=Hr(s))?void 0:e.scrollIntoView)?void 0:t.call(e,{block:"nearest"})})))}));let f=mo();function d(e){f.update(e)}function p(t){!f.wasMoved(t)||e.disabled||a.value||i.goToItem($r.Specific,e.id,0)}function h(t){!f.wasMoved(t)||e.disabled||!a.value||i.goToItem($r.Nothing)}return()=>{let{disabled:r}=e,o={active:a.value,disabled:r,close:i.closeMenu},{id:l,...f}=e;return jr({ourProps:{id:l,ref:s,role:"menuitem",tabIndex:!0===r?void 0:-1,"aria-disabled":!0===r||void 0,disabled:void 0,onClick:c,onFocus:u,onPointerenter:d,onMouseenter:d,onPointermove:p,onMousemove:p,onPointerleave:h,onMouseleave:h},theirProps:{...n,...f},slot:o,attrs:n,slots:t,name:"MenuItem"})}}});var So=n(505),Oo=n(10),Co=n(706),No=n(558),Po=n(413),To=n(199),Ro=n(388),Ao=n(243),Vo=n(782),jo=n(156),Lo=n(488),Bo=ie({id:"hosts",state:function(){return{selectedHostIdentifier:null}},getters:{supportsHosts:function(){return LogViewer.supports_hosts},hosts:function(){return LogViewer.hosts||[]},hasRemoteHosts:function(){return this.hosts.some((function(e){return e.is_remote}))},selectedHost:function(){var e=this;return this.hosts.find((function(t){return t.identifier===e.selectedHostIdentifier}))},localHost:function(){return this.hosts.find((function(e){return!e.is_remote}))},hostQueryParam:function(){return this.selectedHost&&this.selectedHost.is_remote?this.selectedHost.identifier:void 0}},actions:{selectHost:function(e){var t;this.supportsHosts||(e=null),"string"==typeof e&&(e=this.hosts.find((function(t){return t.identifier===e}))),e||(e=this.hosts.find((function(e){return!e.is_remote}))),this.selectedHostIdentifier=(null===(t=e)||void 0===t?void 0:t.identifier)||null}}});var Io;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;const Fo="undefined"!=typeof window,Do=(Object.prototype.toString,e=>"function"==typeof e),Mo=e=>"string"==typeof e,Uo=()=>{};Fo&&(null==(Io=null==window?void 0:window.navigator)?void 0:Io.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function $o(e){return"function"==typeof e?e():(0,r.unref)(e)}function zo(e,t){return function(...n){return new Promise(((r,o)=>{Promise.resolve(e((()=>t.apply(this,n)),{fn:t,thisArg:this,args:n})).then(r).catch(o)}))}}const Ho=e=>e();function qo(e){return!!(0,r.getCurrentScope)()&&((0,r.onScopeDispose)(e),!0)}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var Wo=Object.getOwnPropertySymbols,Ko=Object.prototype.hasOwnProperty,Go=Object.prototype.propertyIsEnumerable,Yo=(e,t)=>{var n={};for(var r in e)Ko.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&Wo)for(var r of Wo(e))t.indexOf(r)<0&&Go.call(e,r)&&(n[r]=e[r]);return n};function Jo(e,t,n={}){const o=n,{eventFilter:i=Ho}=o,s=Yo(o,["eventFilter"]);return(0,r.watch)(e,zo(i,t),s)}Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var Qo=Object.defineProperty,Zo=Object.defineProperties,Xo=Object.getOwnPropertyDescriptors,ei=Object.getOwnPropertySymbols,ti=Object.prototype.hasOwnProperty,ni=Object.prototype.propertyIsEnumerable,ri=(e,t,n)=>t in e?Qo(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,oi=(e,t)=>{for(var n in t||(t={}))ti.call(t,n)&&ri(e,n,t[n]);if(ei)for(var n of ei(t))ni.call(t,n)&&ri(e,n,t[n]);return e},ii=(e,t)=>Zo(e,Xo(t)),si=(e,t)=>{var n={};for(var r in e)ti.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&ei)for(var r of ei(e))t.indexOf(r)<0&&ni.call(e,r)&&(n[r]=e[r]);return n};function ai(e,t,n={}){const o=n,{eventFilter:i}=o,s=si(o,["eventFilter"]),{eventFilter:a,pause:l,resume:c,isActive:u}=function(e=Ho){const t=(0,r.ref)(!0);return{isActive:(0,r.readonly)(t),pause:function(){t.value=!1},resume:function(){t.value=!0},eventFilter:(...n)=>{t.value&&e(...n)}}}(i);return{stop:Jo(e,t,ii(oi({},s),{eventFilter:a})),pause:l,resume:c,isActive:u}}Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;function li(e){var t;const n=$o(e);return null!=(t=null==n?void 0:n.$el)?t:n}const ci=Fo?window:void 0;Fo&&window.document,Fo&&window.navigator,Fo&&window.location;function ui(...e){let t,n,o,i;if(Mo(e[0])||Array.isArray(e[0])?([n,o,i]=e,t=ci):[t,n,o,i]=e,!t)return Uo;Array.isArray(n)||(n=[n]),Array.isArray(o)||(o=[o]);const s=[],a=()=>{s.forEach((e=>e())),s.length=0},l=(0,r.watch)((()=>li(t)),(e=>{a(),e&&s.push(...n.flatMap((t=>o.map((n=>((e,t,n)=>(e.addEventListener(t,n,i),()=>e.removeEventListener(t,n,i)))(e,t,n))))))}),{immediate:!0,flush:"post"}),c=()=>{l(),a()};return qo(c),c}Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;const fi="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},di="__vueuse_ssr_handlers__";fi[di]=fi[di]||{};const pi=fi[di];function hi(e,t){return pi[e]||t}function vi(e){return null==e?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":"boolean"==typeof e?"boolean":"string"==typeof e?"string":"object"==typeof e?"object":Number.isNaN(e)?"any":"number"}var mi=Object.defineProperty,gi=Object.getOwnPropertySymbols,yi=Object.prototype.hasOwnProperty,bi=Object.prototype.propertyIsEnumerable,wi=(e,t,n)=>t in e?mi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,_i=(e,t)=>{for(var n in t||(t={}))yi.call(t,n)&&wi(e,n,t[n]);if(gi)for(var n of gi(t))bi.call(t,n)&&wi(e,n,t[n]);return e};const Ei={boolean:{read:e=>"true"===e,write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}};function xi(e,t,n,o={}){var i;const{flush:s="pre",deep:a=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:u=!1,shallow:f,window:d=ci,eventFilter:p,onError:h=(e=>{})}=o,v=(f?r.shallowRef:r.ref)(t);if(!n)try{n=hi("getDefaultStorage",(()=>{var e;return null==(e=ci)?void 0:e.localStorage}))()}catch(e){h(e)}if(!n)return v;const m=$o(t),g=vi(m),y=null!=(i=o.serializer)?i:Ei[g],{pause:b,resume:w}=ai(v,(()=>function(t){try{if(null==t)n.removeItem(e);else{const r=y.write(t),o=n.getItem(e);o!==r&&(n.setItem(e,r),d&&(null==d||d.dispatchEvent(new StorageEvent("storage",{key:e,oldValue:o,newValue:r,storageArea:n}))))}}catch(e){h(e)}}(v.value)),{flush:s,deep:a,eventFilter:p});return d&&l&&ui(d,"storage",_),_(),v;function _(t){if(!t||t.storageArea===n)if(t&&null==t.key)v.value=m;else if(!t||t.key===e){b();try{v.value=function(t){const r=t?t.newValue:n.getItem(e);if(null==r)return c&&null!==m&&n.setItem(e,y.write(m)),m;if(!t&&u){const e=y.read(r);return Do(u)?u(e,m):"object"!==g||Array.isArray(e)?e:_i(_i({},m),e)}return"string"!=typeof r?r:y.read(r)}(t)}catch(e){h(e)}finally{t?(0,r.nextTick)(w):w()}}}}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;new Map;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;function ki(e,t,n={}){const{window:r=ci}=n;return xi(e,t,null==r?void 0:r.localStorage,n)}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var Si,Oi;(Oi=Si||(Si={})).UP="UP",Oi.RIGHT="RIGHT",Oi.DOWN="DOWN",Oi.LEFT="LEFT",Oi.NONE="NONE";Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var Ci=Object.defineProperty,Ni=Object.getOwnPropertySymbols,Pi=Object.prototype.hasOwnProperty,Ti=Object.prototype.propertyIsEnumerable,Ri=(e,t,n)=>t in e?Ci(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;((e,t)=>{for(var n in t||(t={}))Pi.call(t,n)&&Ri(e,n,t[n]);if(Ni)for(var n of Ni(t))Ti.call(t,n)&&Ri(e,n,t[n])})({linear:function(e){return e}},{easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]});var Ai=ie({id:"search",state:function(){return{query:"",searchMoreRoute:null,searching:!1,percentScanned:0,error:null}},getters:{hasQuery:function(e){return""!==String(e.query).trim()}},actions:{init:function(){this.checkSearchProgress()},setQuery:function(e){this.query=e},update:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this.query=e,this.error=t&&""!==t?t:null,this.searchMoreRoute=n,this.searching=r,this.percentScanned=o,this.searching&&this.checkSearchProgress()},checkSearchProgress:function(){var e=this,t=this.query;if(""!==t){var n="?"+new URLSearchParams({query:t});fetch(this.searchMoreRoute+n).then((function(e){return e.json()})).then((function(n){if(e.query===t){var r=e.searching;e.searching=n.hasMoreResults,e.percentScanned=n.percentScanned,e.searching?e.checkSearchProgress():r&&!e.searching&&window.dispatchEvent(new CustomEvent("reload-results"))}}))}}}}),Vi=ie({id:"pagination",state:function(){return{page:1,pagination:{}}},getters:{currentPage:function(e){return 1!==e.page?Number(e.page):null},links:function(e){var t;return((null===(t=e.pagination)||void 0===t?void 0:t.links)||[]).slice(1,-1)},linksShort:function(e){var t;return((null===(t=e.pagination)||void 0===t?void 0:t.links_short)||[]).slice(1,-1)},hasPages:function(e){var t;return(null===(t=e.pagination)||void 0===t?void 0:t.last_page)>1},hasMorePages:function(e){var t;return null!==(null===(t=e.pagination)||void 0===t?void 0:t.next_page_url)}},actions:{setPagination:function(e){var t,n;(this.pagination=e,(null===(t=this.pagination)||void 0===t?void 0:t.last_page)0}))},totalResults:function(){return this.levelsFound.reduce((function(e,t){return e+t.count}),0)},levelsSelected:function(){return this.levelsFound.filter((function(e){return e.selected}))},totalResultsSelected:function(){return this.levelsSelected.reduce((function(e,t){return e+t.count}),0)}},actions:{setLevelCounts:function(e){e.hasOwnProperty("length")?this.levelCounts=e:this.levelCounts=Object.values(e)},selectAllLevels:function(){this.selectedLevels=ji,this.levelCounts.forEach((function(e){return e.selected=!0}))},deselectAllLevels:function(){this.selectedLevels=[],this.levelCounts.forEach((function(e){return e.selected=!1}))},toggleLevel:function(e){var t=this.levelCounts.find((function(t){return t.level===e}))||{};this.selectedLevels.includes(e)?(this.selectedLevels=this.selectedLevels.filter((function(t){return t!==e})),t.selected=!1):(this.selectedLevels.push(e),t.selected=!0)}}}),Bi=n(486),Ii={System:"System",Light:"Light",Dark:"Dark"},Fi=ie({id:"logViewer",state:function(){return{theme:ki("logViewerTheme",Ii.System),shorterStackTraces:ki("logViewerShorterStackTraces",!1),direction:ki("logViewerDirection","desc"),resultsPerPage:ki("logViewerResultsPerPage",25),helpSlideOverOpen:!1,loading:!1,error:null,logs:[],levelCounts:[],performance:{},hasMoreResults:!1,percentScanned:100,abortController:null,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight,stacksOpen:[],stacksInView:[],stackTops:{},containerTop:0,showLevelsDropdown:!0}},getters:{selectedFile:function(){return Di().selectedFile},isOpen:function(e){return function(t){return e.stacksOpen.includes(t)}},isMobile:function(e){return e.viewportWidth<=1023},tableRowHeight:function(){return this.isMobile?29:36},headerHeight:function(){return this.isMobile?0:36},shouldBeSticky:function(e){var t=this;return function(n){return t.isOpen(n)&&e.stacksInView.includes(n)}},stickTopPosition:function(){var e=this;return function(t){var n=e.pixelsAboveFold(t);return n<0?Math.max(e.headerHeight-e.tableRowHeight,e.headerHeight+n)+"px":e.headerHeight+"px"}},pixelsAboveFold:function(e){var t=this;return function(n){var r=document.getElementById("tbody-"+n);if(!r)return!1;var o=r.getClientRects()[0];return o.top+o.height-t.tableRowHeight-t.headerHeight-e.containerTop}},isInViewport:function(){var e=this;return function(t){return e.pixelsAboveFold(t)>-e.tableRowHeight}}},actions:{setViewportDimensions:function(e,t){this.viewportWidth=e,this.viewportHeight=t;var n=document.querySelector(".log-item-container");n&&(this.containerTop=n.getBoundingClientRect().top)},toggleTheme:function(){switch(this.theme){case Ii.System:this.theme=Ii.Light;break;case Ii.Light:this.theme=Ii.Dark;break;default:this.theme=Ii.System}this.syncTheme()},syncTheme:function(){var e=this.theme;e===Ii.Dark||e===Ii.System&&window.matchMedia("(prefers-color-scheme: dark)").matches?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")},toggle:function(e){this.isOpen(e)?this.stacksOpen=this.stacksOpen.filter((function(t){return t!==e})):this.stacksOpen.push(e),this.onScroll()},onScroll:function(){var e=this;this.stacksOpen.forEach((function(t){e.isInViewport(t)?(e.stacksInView.includes(t)||e.stacksInView.push(t),e.stackTops[t]=e.stickTopPosition(t)):(e.stacksInView=e.stacksInView.filter((function(e){return e!==t})),delete e.stackTops[t])}))},reset:function(){this.stacksOpen=[],this.stacksInView=[],this.stackTops={};var e=document.querySelector(".log-item-container");e&&(this.containerTop=e.getBoundingClientRect().top,e.scrollTo(0,0))},loadLogs:(0,Bi.debounce)((function(){var e,t=this,n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).silently,o=void 0!==n&&n,i=Bo(),s=Di(),a=Ai(),l=Vi(),c=Li();if(0!==s.folders.length&&(this.abortController&&this.abortController.abort(),this.selectedFile||a.hasQuery)){this.abortController=new AbortController;var u={host:i.hostQueryParam,file:null===(e=this.selectedFile)||void 0===e?void 0:e.identifier,direction:this.direction,query:a.query,page:l.currentPage,per_page:this.resultsPerPage,levels:(0,r.toRaw)(c.selectedLevels.length>0?c.selectedLevels:"none"),shorter_stack_traces:this.shorterStackTraces};o||(this.loading=!0),Yt.get("".concat(LogViewer.basePath,"/api/logs"),{params:u,signal:this.abortController.signal}).then((function(e){var n=e.data;t.logs=u.host?n.logs.map((function(e){var t={host:u.host,file:e.file_identifier,query:"log-index:".concat(e.index)};return e.url="".concat(window.location.host).concat(LogViewer.basePath,"?").concat(new URLSearchParams(t)),e})):n.logs,t.hasMoreResults=n.hasMoreResults,t.percentScanned=n.percentScanned,t.error=n.error||null,t.performance=n.performance||{},c.setLevelCounts(n.levelCounts),l.setPagination(n.pagination),t.loading=!1,o||(0,r.nextTick)((function(){t.reset(),n.expandAutomatically&&t.stacksOpen.push(0)})),t.hasMoreResults&&t.loadLogs({silently:!0})})).catch((function(e){var n,r;if("ERR_CANCELED"===e.code)return t.hasMoreResults=!1,void(t.percentScanned=100);t.loading=!1,t.error=e.message,null!==(n=e.response)&&void 0!==n&&null!==(r=n.data)&&void 0!==r&&r.message&&(t.error+=": "+e.response.data.message)}))}}),10)}}),Di=ie({id:"files",state:function(){return{folders:[],direction:ki("fileViewerDirection","desc"),selectedFileIdentifier:null,error:null,clearingCache:{},cacheRecentlyCleared:{},deleting:{},abortController:null,loading:!1,checkBoxesVisibility:!1,filesChecked:[],openFolderIdentifiers:[],foldersInView:[],containerTop:0,sidebarOpen:!1}},getters:{selectedHost:function(){return Bo().selectedHost},hostQueryParam:function(){return Bo().hostQueryParam},files:function(e){return e.folders.flatMap((function(e){return e.files}))},selectedFile:function(e){return e.files.find((function(t){return t.identifier===e.selectedFileIdentifier}))},foldersOpen:function(e){return e.openFolderIdentifiers.map((function(t){return e.folders.find((function(e){return e.identifier===t}))}))},isOpen:function(){var e=this;return function(t){return e.foldersOpen.includes(t)}},isChecked:function(e){return function(t){return e.filesChecked.includes("string"==typeof t?t:t.identifier)}},shouldBeSticky:function(e){var t=this;return function(n){return t.isOpen(n)&&e.foldersInView.includes(n)}},isInViewport:function(){var e=this;return function(t){return e.pixelsAboveFold(t)>-36}},pixelsAboveFold:function(e){return function(t){var n=document.getElementById("folder-"+t);if(!n)return!1;var r=n.getClientRects()[0];return r.top+r.height-e.containerTop}},hasFilesChecked:function(e){return e.filesChecked.length>0}},actions:{setDirection:function(e){this.direction=e},selectFile:function(e){this.selectedFileIdentifier!==e&&(this.selectedFileIdentifier=e,this.openFolderForActiveFile())},openFolderForActiveFile:function(){var e=this;if(this.selectedFile){var t=this.folders.find((function(t){return t.files.some((function(t){return t.identifier===e.selectedFile.identifier}))}));t&&!this.isOpen(t)&&this.toggle(t)}},openRootFolderIfNoneOpen:function(){var e=this.folders.find((function(e){return e.is_root}));e&&0===this.openFolderIdentifiers.length&&this.openFolderIdentifiers.push(e.identifier)},loadFolders:function(){var e=this;return this.abortController&&this.abortController.abort(),this.selectedHost?(this.abortController=new AbortController,this.loading=!0,Yt.get("".concat(LogViewer.basePath,"/api/folders"),{params:{host:this.hostQueryParam,direction:this.direction},signal:this.abortController.signal}).then((function(t){var n=t.data;e.folders=n,e.error=n.error||null,e.loading=!1,0===e.openFolderIdentifiers.length&&(e.openFolderForActiveFile(),e.openRootFolderIfNoneOpen()),e.onScroll()})).catch((function(t){var n,r;"ERR_CANCELED"!==t.code&&(e.loading=!1,e.error=t.message,null!==(n=t.response)&&void 0!==n&&null!==(r=n.data)&&void 0!==r&&r.message&&(e.error+=": "+t.response.data.message))}))):(this.folders=[],this.error=null,void(this.loading=!1))},toggle:function(e){this.isOpen(e)?this.openFolderIdentifiers=this.openFolderIdentifiers.filter((function(t){return t!==e.identifier})):this.openFolderIdentifiers.push(e.identifier),this.onScroll()},onScroll:function(){var e=this;this.foldersOpen.forEach((function(t){e.isInViewport(t)?e.foldersInView.includes(t)||e.foldersInView.push(t):e.foldersInView=e.foldersInView.filter((function(e){return e!==t}))}))},reset:function(){this.openFolderIdentifiers=[],this.foldersInView=[];var e=document.getElementById("file-list-container");e&&(this.containerTop=e.getBoundingClientRect().top,e.scrollTo(0,0))},toggleSidebar:function(){this.sidebarOpen=!this.sidebarOpen},checkBoxToggle:function(e){this.isChecked(e)?this.filesChecked=this.filesChecked.filter((function(t){return t!==e})):this.filesChecked.push(e)},toggleCheckboxVisibility:function(){this.checkBoxesVisibility=!this.checkBoxesVisibility},resetChecks:function(){this.filesChecked=[],this.checkBoxesVisibility=!1},clearCacheForFile:function(e){var t=this;return this.clearingCache[e.identifier]=!0,Yt.post("".concat(LogViewer.basePath,"/api/files/").concat(e.identifier,"/clear-cache"),{},{params:{host:this.hostQueryParam}}).then((function(){e.identifier===t.selectedFileIdentifier&&Fi().loadLogs(),t.cacheRecentlyCleared[e.identifier]=!0,setTimeout((function(){return t.cacheRecentlyCleared[e.identifier]=!1}),2e3)})).catch((function(e){})).finally((function(){return t.clearingCache[e.identifier]=!1}))},deleteFile:function(e){var t=this;return Yt.delete("".concat(LogViewer.basePath,"/api/files/").concat(e.identifier),{params:{host:this.hostQueryParam}}).then((function(){return t.loadFolders()}))},clearCacheForFolder:function(e){var t=this;return this.clearingCache[e.identifier]=!0,Yt.post("".concat(LogViewer.basePath,"/api/folders/").concat(e.identifier,"/clear-cache"),{},{params:{host:this.hostQueryParam}}).then((function(){e.files.some((function(e){return e.identifier===t.selectedFileIdentifier}))&&Fi().loadLogs(),t.cacheRecentlyCleared[e.identifier]=!0,setTimeout((function(){return t.cacheRecentlyCleared[e.identifier]=!1}),2e3)})).catch((function(e){})).finally((function(){t.clearingCache[e.identifier]=!1}))},deleteFolder:function(e){var t=this;return this.deleting[e.identifier]=!0,Yt.delete("".concat(LogViewer.basePath,"/api/folders/").concat(e.identifier),{params:{host:this.hostQueryParam}}).then((function(){return t.loadFolders()})).catch((function(e){})).finally((function(){t.deleting[e.identifier]=!1}))},deleteSelectedFiles:function(){return Yt.post("".concat(LogViewer.basePath,"/api/delete-multiple-files"),{files:this.filesChecked},{params:{host:this.hostQueryParam}})},clearCacheForAllFiles:function(){var e=this;this.clearingCache["*"]=!0,Yt.post("".concat(LogViewer.basePath,"/api/clear-cache-all"),{},{params:{host:this.hostQueryParam}}).then((function(){e.cacheRecentlyCleared["*"]=!0,setTimeout((function(){return e.cacheRecentlyCleared["*"]=!1}),2e3),Fi().loadLogs()})).catch((function(e){})).finally((function(){return e.clearingCache["*"]=!1}))}}}),Mi=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(t)try{e=e.replace(new RegExp(t,"gi"),"$&")}catch(e){}return Ui(e).replace(/<mark>/g,"").replace(/<\/mark>/g,"")},Ui=function(e){var t={"&":"&","<":"<",">":">",'"':""","'":"'"};return e.replace(/[&<>"']/g,(function(e){return t[e]}))},$i=function(e){var t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="absolute",t.style.left="-9999px",document.body.appendChild(t);var n=document.getSelection().rangeCount>0&&document.getSelection().getRangeAt(0);t.select(),document.execCommand("copy"),document.body.removeChild(t),n&&(document.getSelection().removeAllRanges(),document.getSelection().addRange(n))},zi=function(e,t,n){var r=e.currentRoute.value,o={host:r.query.host||void 0,file:r.query.file||void 0,query:r.query.query||void 0,page:r.query.page||void 0};"host"===t?(o.file=void 0,o.page=void 0):"file"===t&&void 0!==o.page&&(o.page=void 0),o[t]=n?String(n):void 0,e.push({name:"home",query:o})},Hi=function(){var e=(0,r.ref)({});return{dropdownDirections:e,calculateDropdownDirection:function(t){e.value[t.dataset.toggleId]=function(e){window.innerWidth||document.documentElement.clientWidth;var t=window.innerHeight||document.documentElement.clientHeight;return e.getBoundingClientRect().bottom+190=0&&null===n[r].offsetParent;)r--;return n[r]?n[r]:null},ts=function(e,t){for(var n=Array.from(document.querySelectorAll(".".concat(t))),r=n.findIndex((function(t){return t===e}))+1;r0&&t[0].focus();else if(e.key===Xi.Hosts){e.preventDefault();var r=document.getElementById("hosts-toggle-button");null==r||r.click()}else if(e.key===Xi.Severity){e.preventDefault();var o=document.getElementById("severity-dropdown-toggle");null==o||o.click()}else if(e.key===Xi.Settings){e.preventDefault();var i=document.querySelector("#desktop-site-settings .menu-button");null==i||i.click()}else if(e.key===Xi.Search){e.preventDefault();var s=document.getElementById("query");null==s||s.focus()}else if(e.key===Xi.Refresh){e.preventDefault();var a=document.getElementById("reload-logs-button");null==a||a.click()}},os=function(e){if("ArrowLeft"===e.key)e.preventDefault(),function(){var e=document.querySelector(".file-item-container.active .file-item-info");if(e)e.nextElementSibling.focus();else{var t,n=document.querySelector(".file-item-container .file-item-info");null==n||null===(t=n.nextElementSibling)||void 0===t||t.focus()}}();else if("ArrowRight"===e.key){var t=ns(document.activeElement,Qi),n=Array.from(document.querySelectorAll(".".concat(Zi)));n.length>t&&(e.preventDefault(),n[t].focus())}else if("ArrowUp"===e.key){var r=es(document.activeElement,Qi);r&&(e.preventDefault(),r.focus())}else if("ArrowDown"===e.key){var o=ts(document.activeElement,Qi);o&&(e.preventDefault(),o.focus())}},is=function(e){if("ArrowLeft"===e.key){var t=ns(document.activeElement,Zi),n=Array.from(document.querySelectorAll(".".concat(Qi)));n.length>t&&(e.preventDefault(),n[t].focus())}else if("ArrowUp"===e.key){var r=es(document.activeElement,Zi);r&&(e.preventDefault(),r.focus())}else if("ArrowDown"===e.key){var o=ts(document.activeElement,Zi);o&&(e.preventDefault(),o.focus())}else if("Enter"===e.key||" "===e.key){e.preventDefault();var i=document.activeElement;i.click(),i.focus()}},ss=function(e){if("ArrowUp"===e.key){var t=es(document.activeElement,Ji);t&&(e.preventDefault(),t.focus())}else if("ArrowDown"===e.key){var n=ts(document.activeElement,Ji);n&&(e.preventDefault(),n.focus())}else"ArrowRight"===e.key&&(e.preventDefault(),document.activeElement.nextElementSibling.focus())},as=function(e){if("ArrowLeft"===e.key)e.preventDefault(),document.activeElement.previousElementSibling.focus();else if("ArrowRight"===e.key){e.preventDefault();var t=Array.from(document.querySelectorAll(".".concat(Qi)));t.length>0&&t[0].focus()}};function ls(e){return ls="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ls(e)}function cs(){cs=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",s=o.asyncIterator||"@@asyncIterator",a=o.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,n){return e[t]=n}}function c(e,t,n,o){var i=t&&t.prototype instanceof d?t:d,s=Object.create(i.prototype),a=new S(o||[]);return r(s,"_invoke",{value:_(e,n,a)}),s}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var f={};function d(){}function p(){}function h(){}var v={};l(v,i,(function(){return this}));var m=Object.getPrototypeOf,g=m&&m(m(O([])));g&&g!==t&&n.call(g,i)&&(v=g);var y=h.prototype=d.prototype=Object.create(v);function b(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function w(e,t){function o(r,i,s,a){var l=u(e[r],e,i);if("throw"!==l.type){var c=l.arg,f=c.value;return f&&"object"==ls(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){o("next",e,s,a)}),(function(e){o("throw",e,s,a)})):t.resolve(f).then((function(e){c.value=e,s(c)}),(function(e){return o("throw",e,s,a)}))}a(l.arg)}var i;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){o(e,n,t,r)}))}return i=i?i.then(r,r):r()}})}function _(e,t,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return C()}for(n.method=o,n.arg=i;;){var s=n.delegate;if(s){var a=E(s,n);if(a){if(a===f)continue;return a}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var l=u(e,t,n);if("normal"===l.type){if(r=n.done?"completed":"suspendedYield",l.arg===f)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(r="completed",n.method="throw",n.arg=l.arg)}}}function E(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,E(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),f;var o=u(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,f;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function x(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function k(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(x,this),this.reset(!0)}function O(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r=0;--o){var i=this.tryEntries[o],s=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var a=n.call(i,"catchLoc"),l=n.call(i,"finallyLoc");if(a&&l){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),k(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;k(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:O(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function us(e,t,n,r,o,i,s){try{var a=e[i](s),l=a.value}catch(e){return void n(e)}a.done?t(l):Promise.resolve(l).then(r,o)}var fs={class:"file-item group"},ds={key:0,class:"sr-only"},ps={key:1,class:"sr-only"},hs={key:2,class:"my-auto mr-2"},vs=["onClick","checked","value"],ms={class:"file-name"},gs=(0,r.createElementVNode)("span",{class:"sr-only"},"Name:",-1),ys={class:"file-size"},bs=(0,r.createElementVNode)("span",{class:"sr-only"},"Size:",-1),ws={class:"py-2"},_s={class:"text-brand-500"},Es=["href"],xs=(0,r.createElementVNode)("div",{class:"divider"},null,-1);const ks={__name:"FileListItem",props:{logFile:{type:Object,required:!0},showSelectToggle:{type:Boolean,default:!1}},emits:["selectForDeletion"],setup:function(e,t){t.emit;var n=e,o=Di(),i=Nr(),s=Hi(),a=s.dropdownDirections,l=s.calculateDropdownDirection,c=(0,r.computed)((function(){return o.selectedFile&&o.selectedFile.identifier===n.logFile.identifier})),u=function(){var e,t=(e=cs().mark((function e(){return cs().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!confirm("Are you sure you want to delete the log file '".concat(n.logFile.name,"'? THIS ACTION CANNOT BE UNDONE."))){e.next=6;break}return e.next=3,o.deleteFile(n.logFile);case 3:return n.logFile.identifier===o.selectedFileIdentifier&&zi(i,"file",null),e.next=6,o.loadFolders();case 6:case"end":return e.stop()}}),e)})),function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function s(e){us(i,r,o,s,a,"next",e)}function a(e){us(i,r,o,s,a,"throw",e)}s(void 0)}))});return function(){return t.apply(this,arguments)}}(),f=function(){o.checkBoxToggle(n.logFile.identifier)},d=function(){o.toggleCheckboxVisibility(),f()};return function(t,n){return(0,r.openBlock)(),(0,r.createElementBlock)("div",{class:(0,r.normalizeClass)(["file-item-container",[(0,r.unref)(c)?"active":""]])},[(0,r.createVNode)((0,r.unref)(_o),null,{default:(0,r.withCtx)((function(){return[(0,r.createElementVNode)("div",fs,[(0,r.createElementVNode)("button",{class:"file-item-info",onKeydown:n[0]||(n[0]=function(){return(0,r.unref)(ss)&&(0,r.unref)(ss).apply(void 0,arguments)})},[(0,r.unref)(c)?(0,r.createCommentVNode)("",!0):((0,r.openBlock)(),(0,r.createElementBlock)("span",ds,"Select log file")),(0,r.unref)(c)?((0,r.openBlock)(),(0,r.createElementBlock)("span",ps,"Deselect log file")):(0,r.createCommentVNode)("",!0),e.logFile.can_delete?(0,r.withDirectives)(((0,r.openBlock)(),(0,r.createElementBlock)("span",hs,[(0,r.createElementVNode)("input",{type:"checkbox",onClick:(0,r.withModifiers)(f,["stop"]),checked:(0,r.unref)(o).isChecked(e.logFile),value:(0,r.unref)(o).isChecked(e.logFile)},null,8,vs)],512)),[[r.vShow,(0,r.unref)(o).checkBoxesVisibility]]):(0,r.createCommentVNode)("",!0),(0,r.createElementVNode)("span",ms,[gs,(0,r.createTextVNode)((0,r.toDisplayString)(e.logFile.name),1)]),(0,r.createElementVNode)("span",ys,[bs,(0,r.createTextVNode)((0,r.toDisplayString)(e.logFile.size_formatted),1)])],32),(0,r.createVNode)((0,r.unref)(Eo),{as:"button",class:"file-dropdown-toggle group-hover:border-brand-600 group-hover:dark:border-brand-800","data-toggle-id":e.logFile.identifier,onKeydown:(0,r.unref)(as),onClick:n[1]||(n[1]=(0,r.withModifiers)((function(e){return(0,r.unref)(l)(e.target)}),["stop"]))},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(Ao),{class:"w-4 h-4 pointer-events-none"})]})),_:1},8,["data-toggle-id","onKeydown"])]),(0,r.createVNode)(r.Transition,{"leave-active-class":"transition ease-in duration-100","leave-from-class":"opacity-100 scale-100","leave-to-class":"opacity-0 scale-90","enter-active-class":"transition ease-out duration-100","enter-from-class":"opacity-0 scale-90","enter-to-class":"opacity-100 scale-100"},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(xo),{as:"div",class:(0,r.normalizeClass)(["dropdown w-48",[(0,r.unref)(a)[e.logFile.identifier]]])},{default:(0,r.withCtx)((function(){return[(0,r.createElementVNode)("div",ws,[(0,r.createVNode)((0,r.unref)(ko),{onClick:n[2]||(n[2]=(0,r.withModifiers)((function(t){return(0,r.unref)(o).clearCacheForFile(e.logFile)}),["stop","prevent"]))},{default:(0,r.withCtx)((function(t){var n=t.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([n?"active":""])},[(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(Vo),{class:"h-4 w-4 mr-2"},null,512),[[r.vShow,!(0,r.unref)(o).clearingCache[e.logFile.identifier]]]),(0,r.withDirectives)((0,r.createVNode)(Yi,null,null,512),[[r.vShow,(0,r.unref)(o).clearingCache[e.logFile.identifier]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",null,"Clear index",512),[[r.vShow,!(0,r.unref)(o).cacheRecentlyCleared[e.logFile.identifier]&&!(0,r.unref)(o).clearingCache[e.logFile.identifier]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",null,"Clearing...",512),[[r.vShow,!(0,r.unref)(o).cacheRecentlyCleared[e.logFile.identifier]&&(0,r.unref)(o).clearingCache[e.logFile.identifier]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",_s,"Index cleared",512),[[r.vShow,(0,r.unref)(o).cacheRecentlyCleared[e.logFile.identifier]]])],2)]})),_:1}),e.logFile.can_download?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(ko),{key:0,onClick:n[3]||(n[3]=(0,r.withModifiers)((function(){}),["stop"]))},{default:(0,r.withCtx)((function(t){var n=t.active;return[(0,r.createElementVNode)("a",{href:e.logFile.download_url,download:"",class:(0,r.normalizeClass)([n?"active":""])},[(0,r.createVNode)((0,r.unref)(jo),{class:"w-4 h-4 mr-2"}),(0,r.createTextVNode)(" Download ")],10,Es)]})),_:1})):(0,r.createCommentVNode)("",!0),e.logFile.can_delete?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:1},[xs,(0,r.createVNode)((0,r.unref)(ko),{onClick:(0,r.withModifiers)(u,["stop","prevent"])},{default:(0,r.withCtx)((function(e){var t=e.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([t?"active":""])},[(0,r.createVNode)((0,r.unref)(No),{class:"w-4 h-4 mr-2"}),(0,r.createTextVNode)(" Delete ")],2)]})),_:1},8,["onClick"]),(0,r.createVNode)((0,r.unref)(ko),{onClick:(0,r.withModifiers)(d,["stop"])},{default:(0,r.withCtx)((function(e){var t=e.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([t?"active":""])},[(0,r.createVNode)((0,r.unref)(No),{class:"w-4 h-4 mr-2"}),(0,r.createTextVNode)(" Delete Multiple ")],2)]})),_:1},8,["onClick"])],64)):(0,r.createCommentVNode)("",!0)])]})),_:1},8,["class"])]})),_:1})]})),_:1})],2)}}},Ss=ks;var Os=n(904),Cs=n(908),Ns=n(960),Ps=n(817),Ts=n(902),Rs=n(390),As=n(520),Vs={class:"checkmark inline-block w-[18px] h-[18px] bg-gray-50 dark:bg-gray-800 rounded border dark:border-gray-600 flex items-center justify-center"};const js={__name:"Checkmark",props:{checked:{type:Boolean,required:!0}},setup:function(e){return function(t,n){return(0,r.openBlock)(),(0,r.createElementBlock)("div",Vs,[e.checked?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(As),{key:0,width:"18",height:"18"})):(0,r.createCommentVNode)("",!0)])}}};var Ls=(0,r.createElementVNode)("span",{class:"sr-only"},"Settings dropdown",-1),Bs={class:"py-2"},Is=(0,r.createElementVNode)("div",{class:"label"},"Settings",-1),Fs=(0,r.createElementVNode)("span",{class:"ml-3"},"Shorter stack traces",-1),Ds=(0,r.createElementVNode)("div",{class:"divider"},null,-1),Ms=(0,r.createElementVNode)("div",{class:"label"},"Actions",-1),Us={class:"text-brand-500"},$s={class:"text-brand-500"},zs=(0,r.createElementVNode)("div",{class:"divider"},null,-1),Hs=["innerHTML"];const qs={__name:"SiteSettingsDropdown",setup:function(e){var t=Fi(),n=Di(),o=(0,r.ref)(!1),i=function(){$i(window.location.href),o.value=!0,setTimeout((function(){return o.value=!1}),2e3)};return(0,r.watch)((function(){return t.shorterStackTraces}),(function(){return t.loadLogs()})),function(e,s){return(0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(_o),{as:"div",class:"relative"},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(Eo),{as:"button",class:"menu-button"},{default:(0,r.withCtx)((function(){return[Ls,(0,r.createVNode)((0,r.unref)(Os),{class:"w-5 h-5"})]})),_:1}),(0,r.createVNode)(r.Transition,{"leave-active-class":"transition ease-in duration-100","leave-from-class":"opacity-100 scale-100","leave-to-class":"opacity-0 scale-90","enter-active-class":"transition ease-out duration-100","enter-from-class":"opacity-0 scale-90","enter-to-class":"opacity-100 scale-100"},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(xo),{as:"div",style:{"min-width":"250px"},class:"dropdown"},{default:(0,r.withCtx)((function(){return[(0,r.createElementVNode)("div",Bs,[Is,(0,r.createVNode)((0,r.unref)(ko),null,{default:(0,r.withCtx)((function(e){var n=e.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([n?"active":""]),onClick:s[0]||(s[0]=(0,r.withModifiers)((function(e){return(0,r.unref)(t).shorterStackTraces=!(0,r.unref)(t).shorterStackTraces}),["stop","prevent"]))},[(0,r.createVNode)(js,{checked:(0,r.unref)(t).shorterStackTraces},null,8,["checked"]),Fs],2)]})),_:1}),Ds,Ms,(0,r.createVNode)((0,r.unref)(ko),{onClick:(0,r.withModifiers)((0,r.unref)(n).clearCacheForAllFiles,["stop","prevent"])},{default:(0,r.withCtx)((function(e){var t=e.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([t?"active":""])},[(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(Vo),{class:"w-4 h-4 mr-1.5"},null,512),[[r.vShow,!(0,r.unref)(n).clearingCache["*"]]]),(0,r.withDirectives)((0,r.createVNode)(Yi,{class:"w-4 h-4 mr-1.5"},null,512),[[r.vShow,(0,r.unref)(n).clearingCache["*"]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",null,"Clear indices for all files",512),[[r.vShow,!(0,r.unref)(n).cacheRecentlyCleared["*"]&&!(0,r.unref)(n).clearingCache["*"]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",null,"Please wait...",512),[[r.vShow,!(0,r.unref)(n).cacheRecentlyCleared["*"]&&(0,r.unref)(n).clearingCache["*"]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",Us,"File indices cleared",512),[[r.vShow,(0,r.unref)(n).cacheRecentlyCleared["*"]]])],2)]})),_:1},8,["onClick"]),(0,r.createVNode)((0,r.unref)(ko),{onClick:(0,r.withModifiers)(i,["stop","prevent"])},{default:(0,r.withCtx)((function(e){var t=e.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([t?"active":""])},[(0,r.createVNode)((0,r.unref)(Cs),{class:"w-4 h-4"}),(0,r.withDirectives)((0,r.createElementVNode)("span",null,"Share this page",512),[[r.vShow,!o.value]]),(0,r.withDirectives)((0,r.createElementVNode)("span",$s,"Link copied!",512),[[r.vShow,o.value]])],2)]})),_:1},8,["onClick"]),zs,(0,r.createVNode)((0,r.unref)(ko),{onClick:s[1]||(s[1]=(0,r.withModifiers)((function(e){return(0,r.unref)(t).toggleTheme()}),["stop","prevent"]))},{default:(0,r.withCtx)((function(e){var n=e.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([n?"active":""])},[(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(Ns),{class:"w-4 h-4"},null,512),[[r.vShow,(0,r.unref)(t).theme===(0,r.unref)(Ii).System]]),(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(Ps),{class:"w-4 h-4"},null,512),[[r.vShow,(0,r.unref)(t).theme===(0,r.unref)(Ii).Light]]),(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(Ts),{class:"w-4 h-4"},null,512),[[r.vShow,(0,r.unref)(t).theme===(0,r.unref)(Ii).Dark]]),(0,r.createElementVNode)("span",null,[(0,r.createTextVNode)("Theme: "),(0,r.createElementVNode)("span",{innerHTML:(0,r.unref)(t).theme,class:"font-semibold"},null,8,Hs)])],2)]})),_:1}),(0,r.createVNode)((0,r.unref)(ko),null,{default:(0,r.withCtx)((function(e){var n=e.active;return[(0,r.createElementVNode)("button",{onClick:s[2]||(s[2]=function(e){return(0,r.unref)(t).helpSlideOverOpen=!0}),class:(0,r.normalizeClass)([n?"active":""])},[(0,r.createVNode)((0,r.unref)(Rs),{class:"w-4 h-4"}),(0,r.createTextVNode)(" Keyboard Shortcuts ")],2)]})),_:1})])]})),_:1})]})),_:1})]})),_:1})}}};var Ws=(e=>(e[e.None=1]="None",e[e.Focusable=2]="Focusable",e[e.Hidden=4]="Hidden",e))(Ws||{});let Ks=(0,r.defineComponent)({name:"Hidden",props:{as:{type:[Object,String],default:"div"},features:{type:Number,default:1}},setup:(e,{slots:t,attrs:n})=>()=>{let{features:r,...o}=e;return jr({ourProps:{"aria-hidden":2==(2&r)||void 0,style:{position:"fixed",top:1,left:1,width:1,height:0,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0",...4==(4&r)&&2!=(2&r)&&{display:"none"}}},theirProps:o,slot:{},attrs:n,slots:t,name:"Hidden"})}});function Gs(e={},t=null,n=[]){for(let[r,o]of Object.entries(e))Js(n,Ys(t,r),o);return n}function Ys(e,t){return e?e+"["+t+"]":t}function Js(e,t,n){if(Array.isArray(n))for(let[r,o]of n.entries())Js(e,Ys(t,r.toString()),o);else n instanceof Date?e.push([t,n.toISOString()]):"boolean"==typeof n?e.push([t,n?"1":"0"]):"string"==typeof n?e.push([t,n]):"number"==typeof n?e.push([t,`${n}`]):null==n?e.push([t,""]):Gs(n,t,e)}function Qs(e,t){return e===t}var Zs=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(Zs||{}),Xs=(e=>(e[e.Single=0]="Single",e[e.Multi=1]="Multi",e))(Xs||{}),ea=(e=>(e[e.Pointer=0]="Pointer",e[e.Other=1]="Other",e))(ea||{});let ta=Symbol("ListboxContext");function na(e){let t=(0,r.inject)(ta,null);if(null===t){let t=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,na),t}return t}let ra=(0,r.defineComponent)({name:"Listbox",emits:{"update:modelValue":e=>!0},props:{as:{type:[Object,String],default:"template"},disabled:{type:[Boolean],default:!1},by:{type:[String,Function],default:()=>Qs},horizontal:{type:[Boolean],default:!1},modelValue:{type:[Object,String,Number,Boolean],default:void 0},defaultValue:{type:[Object,String,Number,Boolean],default:void 0},name:{type:String,optional:!0},multiple:{type:[Boolean],default:!1}},inheritAttrs:!1,setup(e,{slots:t,attrs:n,emit:o}){let i=(0,r.ref)(1),s=(0,r.ref)(null),a=(0,r.ref)(null),l=(0,r.ref)(null),c=(0,r.ref)([]),u=(0,r.ref)(""),f=(0,r.ref)(null),d=(0,r.ref)(1);function p(e=(e=>e)){let t=null!==f.value?c.value[f.value]:null,n=co(e(c.value.slice()),(e=>Hr(e.dataRef.domRef))),r=t?n.indexOf(t):null;return-1===r&&(r=null),{options:n,activeOptionIndex:r}}let h=(0,r.computed)((()=>e.multiple?1:0)),[v,m]=function(e,t,n){let o=(0,r.ref)(null==n?void 0:n.value),i=(0,r.computed)((()=>void 0!==e.value));return[(0,r.computed)((()=>i.value?e.value:o.value)),function(e){return i.value||(o.value=e),null==t?void 0:t(e)}]}((0,r.computed)((()=>void 0===e.modelValue?Tr(h.value,{1:[],0:void 0}):e.modelValue)),(e=>o("update:modelValue",e)),(0,r.computed)((()=>e.defaultValue))),g={listboxState:i,value:v,mode:h,compare(t,n){if("string"==typeof e.by){let r=e.by;return(null==t?void 0:t[r])===(null==n?void 0:n[r])}return e.by(t,n)},orientation:(0,r.computed)((()=>e.horizontal?"horizontal":"vertical")),labelRef:s,buttonRef:a,optionsRef:l,disabled:(0,r.computed)((()=>e.disabled)),options:c,searchQuery:u,activeOptionIndex:f,activationTrigger:d,closeListbox(){e.disabled||1!==i.value&&(i.value=1,f.value=null)},openListbox(){e.disabled||0!==i.value&&(i.value=0)},goToOption(t,n,r){if(e.disabled||1===i.value)return;let o=p(),s=zr(t===$r.Specific?{focus:$r.Specific,id:n}:{focus:t},{resolveItems:()=>o.options,resolveActiveIndex:()=>o.activeOptionIndex,resolveId:e=>e.id,resolveDisabled:e=>e.dataRef.disabled});u.value="",f.value=s,d.value=null!=r?r:1,c.value=o.options},search(t){if(e.disabled||1===i.value)return;let n=""!==u.value?0:1;u.value+=t.toLowerCase();let r=(null!==f.value?c.value.slice(f.value+n).concat(c.value.slice(0,f.value+n)):c.value).find((e=>e.dataRef.textValue.startsWith(u.value)&&!e.dataRef.disabled)),o=r?c.value.indexOf(r):-1;-1===o||o===f.value||(f.value=o,d.value=1)},clearSearch(){e.disabled||1!==i.value&&""!==u.value&&(u.value="")},registerOption(e,t){let n=p((n=>[...n,{id:e,dataRef:t}]));c.value=n.options,f.value=n.activeOptionIndex},unregisterOption(e){let t=p((t=>{let n=t.findIndex((t=>t.id===e));return-1!==n&&t.splice(n,1),t}));c.value=t.options,f.value=t.activeOptionIndex,d.value=1},select(t){e.disabled||m(Tr(h.value,{0:()=>t,1:()=>{let e=(0,r.toRaw)(g.value.value).slice(),n=(0,r.toRaw)(t),o=e.findIndex((e=>g.compare(n,(0,r.toRaw)(e))));return-1===o?e.push(n):e.splice(o,1),e}}))}};ho([a,l],((e,t)=>{var n;g.closeListbox(),io(t,oo.Loose)||(e.preventDefault(),null==(n=Hr(a))||n.focus())}),(0,r.computed)((()=>0===i.value))),(0,r.provide)(ta,g),Jr((0,r.computed)((()=>Tr(i.value,{0:Gr.Open,1:Gr.Closed}))));let y=(0,r.computed)((()=>{var e;return null==(e=Hr(a))?void 0:e.closest("form")}));return(0,r.onMounted)((()=>{(0,r.watch)([y],(()=>{if(y.value&&void 0!==e.defaultValue)return y.value.addEventListener("reset",t),()=>{var e;null==(e=y.value)||e.removeEventListener("reset",t)};function t(){g.select(e.defaultValue)}}),{immediate:!0})})),()=>{let{name:o,modelValue:s,disabled:a,...l}=e,c={open:0===i.value,disabled:a,value:v.value};return(0,r.h)(r.Fragment,[...null!=o&&null!=v.value?Gs({[o]:v.value}).map((([e,t])=>(0,r.h)(Ks,function(e){let t=Object.assign({},e);for(let e in t)void 0===t[e]&&delete t[e];return t}({features:Ws.Hidden,key:e,as:"input",type:"hidden",hidden:!0,readOnly:!0,name:e,value:t})))):[],jr({ourProps:{},theirProps:{...n,...Fr(l,["defaultValue","onUpdate:modelValue","horizontal","multiple","by"])},slot:c,slots:t,attrs:n,name:"Listbox"})])}}}),oa=(0,r.defineComponent)({name:"ListboxLabel",props:{as:{type:[Object,String],default:"label"},id:{type:String,default:()=>`headlessui-listbox-label-${Mr()}`}},setup(e,{attrs:t,slots:n}){let r=na("ListboxLabel");function o(){var e;null==(e=Hr(r.buttonRef))||e.focus({preventScroll:!0})}return()=>{let i={open:0===r.listboxState.value,disabled:r.disabled.value},{id:s,...a}=e;return jr({ourProps:{id:s,ref:r.labelRef,onClick:o},theirProps:a,slot:i,attrs:t,slots:n,name:"ListboxLabel"})}}}),ia=(0,r.defineComponent)({name:"ListboxButton",props:{as:{type:[Object,String],default:"button"},id:{type:String,default:()=>`headlessui-listbox-button-${Mr()}`}},setup(e,{attrs:t,slots:n,expose:o}){let i=na("ListboxButton");function s(e){switch(e.key){case Ur.Space:case Ur.Enter:case Ur.ArrowDown:e.preventDefault(),i.openListbox(),(0,r.nextTick)((()=>{var e;null==(e=Hr(i.optionsRef))||e.focus({preventScroll:!0}),i.value.value||i.goToOption($r.First)}));break;case Ur.ArrowUp:e.preventDefault(),i.openListbox(),(0,r.nextTick)((()=>{var e;null==(e=Hr(i.optionsRef))||e.focus({preventScroll:!0}),i.value.value||i.goToOption($r.Last)}))}}function a(e){if(e.key===Ur.Space)e.preventDefault()}function l(e){i.disabled.value||(0===i.listboxState.value?(i.closeListbox(),(0,r.nextTick)((()=>{var e;return null==(e=Hr(i.buttonRef))?void 0:e.focus({preventScroll:!0})}))):(e.preventDefault(),i.openListbox(),function(e){requestAnimationFrame((()=>requestAnimationFrame(e)))}((()=>{var e;return null==(e=Hr(i.optionsRef))?void 0:e.focus({preventScroll:!0})}))))}o({el:i.buttonRef,$el:i.buttonRef});let c=Zr((0,r.computed)((()=>({as:e.as,type:t.type}))),i.buttonRef);return()=>{var r,o;let u={open:0===i.listboxState.value,disabled:i.disabled.value,value:i.value.value},{id:f,...d}=e;return jr({ourProps:{ref:i.buttonRef,id:f,type:c.value,"aria-haspopup":"listbox","aria-controls":null==(r=Hr(i.optionsRef))?void 0:r.id,"aria-expanded":i.disabled.value?void 0:0===i.listboxState.value,"aria-labelledby":i.labelRef.value?[null==(o=Hr(i.labelRef))?void 0:o.id,f].join(" "):void 0,disabled:!0===i.disabled.value||void 0,onKeydown:s,onKeyup:a,onClick:l},theirProps:d,slot:u,attrs:t,slots:n,name:"ListboxButton"})}}}),sa=(0,r.defineComponent)({name:"ListboxOptions",props:{as:{type:[Object,String],default:"ul"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},id:{type:String,default:()=>`headlessui-listbox-options-${Mr()}`}},setup(e,{attrs:t,slots:n,expose:o}){let i=na("ListboxOptions"),s=(0,r.ref)(null);function a(e){switch(s.value&&clearTimeout(s.value),e.key){case Ur.Space:if(""!==i.searchQuery.value)return e.preventDefault(),e.stopPropagation(),i.search(e.key);case Ur.Enter:if(e.preventDefault(),e.stopPropagation(),null!==i.activeOptionIndex.value){let e=i.options.value[i.activeOptionIndex.value];i.select(e.dataRef.value)}0===i.mode.value&&(i.closeListbox(),(0,r.nextTick)((()=>{var e;return null==(e=Hr(i.buttonRef))?void 0:e.focus({preventScroll:!0})})));break;case Tr(i.orientation.value,{vertical:Ur.ArrowDown,horizontal:Ur.ArrowRight}):return e.preventDefault(),e.stopPropagation(),i.goToOption($r.Next);case Tr(i.orientation.value,{vertical:Ur.ArrowUp,horizontal:Ur.ArrowLeft}):return e.preventDefault(),e.stopPropagation(),i.goToOption($r.Previous);case Ur.Home:case Ur.PageUp:return e.preventDefault(),e.stopPropagation(),i.goToOption($r.First);case Ur.End:case Ur.PageDown:return e.preventDefault(),e.stopPropagation(),i.goToOption($r.Last);case Ur.Escape:e.preventDefault(),e.stopPropagation(),i.closeListbox(),(0,r.nextTick)((()=>{var e;return null==(e=Hr(i.buttonRef))?void 0:e.focus({preventScroll:!0})}));break;case Ur.Tab:e.preventDefault(),e.stopPropagation();break;default:1===e.key.length&&(i.search(e.key),s.value=setTimeout((()=>i.clearSearch()),350))}}o({el:i.optionsRef,$el:i.optionsRef});let l=Yr(),c=(0,r.computed)((()=>null!==l?l.value===Gr.Open:0===i.listboxState.value));return()=>{var r,o,s,l;let u={open:0===i.listboxState.value},{id:f,...d}=e;return jr({ourProps:{"aria-activedescendant":null===i.activeOptionIndex.value||null==(r=i.options.value[i.activeOptionIndex.value])?void 0:r.id,"aria-multiselectable":1===i.mode.value||void 0,"aria-labelledby":null!=(l=null==(o=Hr(i.labelRef))?void 0:o.id)?l:null==(s=Hr(i.buttonRef))?void 0:s.id,"aria-orientation":i.orientation.value,id:f,onKeydown:a,role:"listbox",tabIndex:0,ref:i.optionsRef},theirProps:d,slot:u,attrs:t,slots:n,features:Ar.RenderStrategy|Ar.Static,visible:c.value,name:"ListboxOptions"})}}}),aa=(0,r.defineComponent)({name:"ListboxOption",props:{as:{type:[Object,String],default:"li"},value:{type:[Object,String,Number,Boolean]},disabled:{type:Boolean,default:!1},id:{type:String,default:()=>`headlessui-listbox.option-${Mr()}`}},setup(e,{slots:t,attrs:n,expose:o}){let i=na("ListboxOption"),s=(0,r.ref)(null);o({el:s,$el:s});let a=(0,r.computed)((()=>null!==i.activeOptionIndex.value&&i.options.value[i.activeOptionIndex.value].id===e.id)),l=(0,r.computed)((()=>Tr(i.mode.value,{0:()=>i.compare((0,r.toRaw)(i.value.value),(0,r.toRaw)(e.value)),1:()=>(0,r.toRaw)(i.value.value).some((t=>i.compare((0,r.toRaw)(t),(0,r.toRaw)(e.value))))}))),c=(0,r.computed)((()=>Tr(i.mode.value,{1:()=>{var t;let n=(0,r.toRaw)(i.value.value);return(null==(t=i.options.value.find((e=>n.some((t=>i.compare((0,r.toRaw)(t),(0,r.toRaw)(e.dataRef.value)))))))?void 0:t.id)===e.id},0:()=>l.value}))),u=(0,r.computed)((()=>({disabled:e.disabled,value:e.value,textValue:"",domRef:s})));function f(t){if(e.disabled)return t.preventDefault();i.select(e.value),0===i.mode.value&&(i.closeListbox(),(0,r.nextTick)((()=>{var e;return null==(e=Hr(i.buttonRef))?void 0:e.focus({preventScroll:!0})})))}function d(){if(e.disabled)return i.goToOption($r.Nothing);i.goToOption($r.Specific,e.id)}(0,r.onMounted)((()=>{var e,t;let n=null==(t=null==(e=Hr(s))?void 0:e.textContent)?void 0:t.toLowerCase().trim();void 0!==n&&(u.value.textValue=n)})),(0,r.onMounted)((()=>i.registerOption(e.id,u))),(0,r.onUnmounted)((()=>i.unregisterOption(e.id))),(0,r.onMounted)((()=>{(0,r.watch)([i.listboxState,l],(()=>{0===i.listboxState.value&&(!l.value||Tr(i.mode.value,{1:()=>{c.value&&i.goToOption($r.Specific,e.id)},0:()=>{i.goToOption($r.Specific,e.id)}}))}),{immediate:!0})})),(0,r.watchEffect)((()=>{0===i.listboxState.value&&(!a.value||0!==i.activationTrigger.value&&(0,r.nextTick)((()=>{var e,t;return null==(t=null==(e=Hr(s))?void 0:e.scrollIntoView)?void 0:t.call(e,{block:"nearest"})})))}));let p=mo();function h(e){p.update(e)}function v(t){!p.wasMoved(t)||e.disabled||a.value||i.goToOption($r.Specific,e.id,0)}function m(t){!p.wasMoved(t)||e.disabled||!a.value||i.goToOption($r.Nothing)}return()=>{let{disabled:r}=e,o={active:a.value,selected:l.value,disabled:r},{id:i,value:c,disabled:u,...p}=e;return jr({ourProps:{id:i,ref:s,role:"option",tabIndex:!0===r?void 0:-1,"aria-disabled":!0===r||void 0,"aria-selected":l.value,disabled:void 0,onClick:f,onFocus:d,onPointerenter:h,onMouseenter:h,onPointermove:v,onMousemove:v,onPointerleave:m,onMouseleave:m},theirProps:p,slot:o,attrs:n,slots:t,name:"ListboxOption"})}}});var la=n(889),ca={class:"relative mt-1"},ua={class:"block truncate"},fa={class:"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2"};const da={__name:"HostSelector",setup:function(e){var t=Nr(),n=Bo();return(0,r.watch)((function(){return n.selectedHost}),(function(e){zi(t,"host",null!=e&&e.is_remote?e.identifier:null)})),function(e,t){return(0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(ra),{as:"div",modelValue:(0,r.unref)(n).selectedHostIdentifier,"onUpdate:modelValue":t[0]||(t[0]=function(e){return(0,r.unref)(n).selectedHostIdentifier=e})},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(oa),{class:"ml-1 block text-sm text-gray-500 dark:text-gray-400"},{default:(0,r.withCtx)((function(){return[(0,r.createTextVNode)("Select host")]})),_:1}),(0,r.createElementVNode)("div",ca,[(0,r.createVNode)((0,r.unref)(ia),{id:"hosts-toggle-button",class:"cursor-pointer relative text-gray-800 dark:text-gray-200 w-full cursor-default rounded-md border border-gray-300 dark:border-gray-700 bg-white dark:bg-gray-800 py-2 pl-4 pr-10 text-left hover:border-brand-600 hover:dark:border-brand-800 focus:border-brand-500 focus:outline-none focus:ring-1 focus:ring-brand-500 text-sm"},{default:(0,r.withCtx)((function(){var e;return[(0,r.createElementVNode)("span",ua,(0,r.toDisplayString)((null===(e=(0,r.unref)(n).selectedHost)||void 0===e?void 0:e.name)||"Please select a server"),1),(0,r.createElementVNode)("span",fa,[(0,r.createVNode)((0,r.unref)(la),{class:"h-5 w-5 text-gray-400","aria-hidden":"true"})])]})),_:1}),(0,r.createVNode)(r.Transition,{"leave-active-class":"transition ease-in duration-100","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(sa),{class:"absolute z-20 mt-1 max-h-60 w-full overflow-auto rounded-md shadow-md bg-white dark:bg-gray-800 py-1 border border-gray-200 dark:border-gray-700 ring-1 ring-brand ring-opacity-5 focus:outline-none text-sm"},{default:(0,r.withCtx)((function(){return[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)((0,r.unref)(n).hosts,(function(e){return(0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(aa),{as:"template",key:e.identifier,value:e.identifier},{default:(0,r.withCtx)((function(t){var n=t.active,o=t.selected;return[(0,r.createElementVNode)("li",{class:(0,r.normalizeClass)([n?"text-white bg-brand-600":"text-gray-900 dark:text-gray-300","relative cursor-default select-none py-2 pl-3 pr-9"])},[(0,r.createElementVNode)("span",{class:(0,r.normalizeClass)([o?"font-semibold":"font-normal","block truncate"])},(0,r.toDisplayString)(e.name),3),o?((0,r.openBlock)(),(0,r.createElementBlock)("span",{key:0,class:(0,r.normalizeClass)([n?"text-white":"text-brand-600","absolute inset-y-0 right-0 flex items-center pr-4"])},[(0,r.createVNode)((0,r.unref)(As),{class:"h-5 w-5","aria-hidden":"true"})],2)):(0,r.createCommentVNode)("",!0)],2)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1})])]})),_:1},8,["modelValue"])}}},pa=da;function ha(e){return ha="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ha(e)}function va(){va=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",s=o.asyncIterator||"@@asyncIterator",a=o.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,n){return e[t]=n}}function c(e,t,n,o){var i=t&&t.prototype instanceof d?t:d,s=Object.create(i.prototype),a=new S(o||[]);return r(s,"_invoke",{value:_(e,n,a)}),s}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var f={};function d(){}function p(){}function h(){}var v={};l(v,i,(function(){return this}));var m=Object.getPrototypeOf,g=m&&m(m(O([])));g&&g!==t&&n.call(g,i)&&(v=g);var y=h.prototype=d.prototype=Object.create(v);function b(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function w(e,t){function o(r,i,s,a){var l=u(e[r],e,i);if("throw"!==l.type){var c=l.arg,f=c.value;return f&&"object"==ha(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){o("next",e,s,a)}),(function(e){o("throw",e,s,a)})):t.resolve(f).then((function(e){c.value=e,s(c)}),(function(e){return o("throw",e,s,a)}))}a(l.arg)}var i;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){o(e,n,t,r)}))}return i=i?i.then(r,r):r()}})}function _(e,t,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return C()}for(n.method=o,n.arg=i;;){var s=n.delegate;if(s){var a=E(s,n);if(a){if(a===f)continue;return a}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var l=u(e,t,n);if("normal"===l.type){if(r=n.done?"completed":"suspendedYield",l.arg===f)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(r="completed",n.method="throw",n.arg=l.arg)}}}function E(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,E(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),f;var o=u(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,f;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function x(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function k(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(x,this),this.reset(!0)}function O(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r=0;--o){var i=this.tryEntries[o],s=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var a=n.call(i,"catchLoc"),l=n.call(i,"finallyLoc");if(a&&l){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),k(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;k(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:O(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function ma(e,t,n,r,o,i,s){try{var a=e[i](s),l=a.value}catch(e){return void n(e)}a.done?t(l):Promise.resolve(l).then(r,o)}function ga(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function s(e){ma(i,r,o,s,a,"next",e)}function a(e){ma(i,r,o,s,a,"throw",e)}s(void 0)}))}}var ya={class:"flex flex-col h-full py-5"},ba={class:"mx-3 md:mx-0 mb-1"},wa={class:"sm:flex sm:flex-col-reverse"},_a={class:"font-semibold text-brand-700 dark:text-brand-600 text-2xl flex items-center"},Ea={class:"md:hidden flex-1 flex justify-end"},xa={type:"button",class:"menu-button"},ka={key:0},Sa=["href"],Oa={key:0,class:"bg-yellow-100 dark:bg-yellow-900 bg-opacity-75 dark:bg-opacity-40 border border-yellow-300 dark:border-yellow-800 rounded-md px-2 py-1 mt-2 text-xs leading-5 text-yellow-700 dark:text-yellow-400"},Ca=(0,r.createElementVNode)("code",{class:"font-mono px-2 py-1 bg-gray-100 dark:bg-gray-900 rounded"},"php artisan log-viewer:publish",-1),Na={key:2,class:"flex justify-between items-baseline mt-6"},Pa={class:"ml-1 block text-sm text-gray-500 dark:text-gray-400 truncate"},Ta={class:"text-sm text-gray-500 dark:text-gray-400"},Ra=(0,r.createElementVNode)("label",{for:"file-sort-direction",class:"sr-only"},"Sort direction",-1),Aa=[(0,r.createElementVNode)("option",{value:"desc"},"Newest first",-1),(0,r.createElementVNode)("option",{value:"asc"},"Oldest first",-1)],Va={key:3,class:"mx-1 mt-1 text-red-600 text-xs"},ja=(0,r.createElementVNode)("p",{class:"text-sm text-gray-600 dark:text-gray-400"},"Please select files to delete and confirm or cancel deletion.",-1),La=["onClick"],Ba={id:"file-list-container",class:"relative h-full overflow-hidden"},Ia=["id"],Fa=["onClick"],Da={class:"file-item group"},Ma={key:0,class:"sr-only"},Ua={key:1,class:"sr-only"},$a={class:"file-icon group-hover:hidden group-focus:hidden"},za={class:"file-icon hidden group-hover:inline-block group-focus:inline-block"},Ha={class:"file-name"},qa={key:0},Wa=(0,r.createElementVNode)("span",{class:"text-gray-500 dark:text-gray-400"},"root",-1),Ka={key:1},Ga=(0,r.createElementVNode)("span",{class:"sr-only"},"Open folder options",-1),Ya={class:"py-2"},Ja={class:"text-brand-500"},Qa=["href"],Za=(0,r.createElementVNode)("div",{class:"divider"},null,-1),Xa=["onClick","disabled"],el={class:"folder-files pl-3 ml-1 border-l border-gray-200 dark:border-gray-800"},tl={key:0,class:"text-center text-sm text-gray-600 dark:text-gray-400"},nl=(0,r.createElementVNode)("p",{class:"mb-5"},"No log files were found.",-1),rl={class:"flex items-center justify-center px-1"},ol=(0,r.createElementVNode)("div",{class:"pointer-events-none absolute z-10 bottom-0 h-4 w-full bg-gradient-to-t from-gray-100 dark:from-gray-900 to-transparent"},null,-1),il={class:"absolute inset-y-0 left-3 right-7 lg:left-0 lg:right-0 z-10"},sl={class:"rounded-md bg-white text-gray-800 dark:bg-gray-700 dark:text-gray-200 opacity-90 w-full h-full flex items-center justify-center"};const al={__name:"FileList",setup:function(e){var t=Nr(),n=Pr(),o=Bo(),i=Di(),s=Hi(),a=s.dropdownDirections,l=s.calculateDropdownDirection,c=function(){var e=ga(va().mark((function e(n){return va().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!confirm("Are you sure you want to delete the log folder '".concat(n.path,"'? THIS ACTION CANNOT BE UNDONE."))){e.next=4;break}return e.next=3,i.deleteFolder(n);case 3:n.files.some((function(e){return e.identifier===i.selectedFileIdentifier}))&&zi(t,"file",null);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),u=function(){var e=ga(va().mark((function e(){return va().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!confirm("Are you sure you want to delete selected log files? THIS ACTION CANNOT BE UNDONE.")){e.next=7;break}return e.next=3,i.deleteSelectedFiles();case 3:return i.filesChecked.includes(i.selectedFileIdentifier)&&zi(t,"file",null),i.resetChecks(),e.next=7,i.loadFolders();case 7:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return(0,r.onMounted)(ga(va().mark((function e(){return va().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:o.selectHost(n.query.host||null);case 1:case"end":return e.stop()}}),e)})))),(0,r.watch)((function(){return i.direction}),(function(){return i.loadFolders()})),function(e,s){var f,d;return(0,r.openBlock)(),(0,r.createElementBlock)("nav",ya,[(0,r.createElementVNode)("div",ba,[(0,r.createElementVNode)("div",wa,[(0,r.createElementVNode)("h1",_a,[(0,r.createTextVNode)(" Log Viewer "),(0,r.createElementVNode)("span",Ea,[(0,r.createVNode)(qs,{class:"ml-2"}),(0,r.createElementVNode)("button",xa,[(0,r.createVNode)((0,r.unref)(So),{class:"w-5 h-5 ml-2",onClick:(0,r.unref)(i).toggleSidebar},null,8,["onClick"])])])]),e.LogViewer.back_to_system_url?((0,r.openBlock)(),(0,r.createElementBlock)("div",ka,[(0,r.createElementVNode)("a",{href:e.LogViewer.back_to_system_url,class:"rounded shrink inline-flex items-center text-sm text-gray-500 dark:text-gray-400 hover:text-brand-800 dark:hover:text-brand-600 focus:outline-none focus:ring-2 focus:ring-brand-500 dark:focus:ring-brand-700 mt-0"},[(0,r.createVNode)((0,r.unref)(Oo),{class:"h-3 w-3 mr-1.5"}),(0,r.createTextVNode)(" "+(0,r.toDisplayString)(e.LogViewer.back_to_system_label||"Back to ".concat(e.LogViewer.app_name)),1)],8,Sa)])):(0,r.createCommentVNode)("",!0)]),e.LogViewer.assets_outdated?((0,r.openBlock)(),(0,r.createElementBlock)("div",Oa,[(0,r.createVNode)((0,r.unref)(Co),{class:"h-4 w-4 mr-1 inline"}),(0,r.createTextVNode)(" Front-end assets are outdated. To update, please run "),Ca])):(0,r.createCommentVNode)("",!0),(0,r.unref)(o).supportsHosts&&(0,r.unref)(o).hasRemoteHosts?((0,r.openBlock)(),(0,r.createBlock)(pa,{key:1,class:"mb-8 mt-6"})):(0,r.createCommentVNode)("",!0),(null===(f=(0,r.unref)(i).folders)||void 0===f?void 0:f.length)>0?((0,r.openBlock)(),(0,r.createElementBlock)("div",Na,[(0,r.createElementVNode)("div",Pa,"Log files on "+(0,r.toDisplayString)(null===(d=(0,r.unref)(i).selectedHost)||void 0===d?void 0:d.name),1),(0,r.createElementVNode)("div",Ta,[Ra,(0,r.withDirectives)((0,r.createElementVNode)("select",{id:"file-sort-direction",class:"select","onUpdate:modelValue":s[0]||(s[0]=function(e){return(0,r.unref)(i).direction=e})},Aa,512),[[r.vModelSelect,(0,r.unref)(i).direction]])])])):(0,r.createCommentVNode)("",!0),(0,r.unref)(i).error?((0,r.openBlock)(),(0,r.createElementBlock)("p",Va,(0,r.toDisplayString)((0,r.unref)(i).error),1)):(0,r.createCommentVNode)("",!0)]),(0,r.withDirectives)((0,r.createElementVNode)("div",null,[ja,(0,r.createElementVNode)("div",{class:(0,r.normalizeClass)(["grid grid-flow-col pr-4 mt-2",[(0,r.unref)(i).hasFilesChecked?"justify-between":"justify-end"]])},[(0,r.withDirectives)((0,r.createElementVNode)("button",{onClick:(0,r.withModifiers)(u,["stop"]),class:"button inline-flex"},[(0,r.createVNode)((0,r.unref)(No),{class:"w-5 mr-1"}),(0,r.createTextVNode)(" Delete selected files ")],8,La),[[r.vShow,(0,r.unref)(i).hasFilesChecked]]),(0,r.createElementVNode)("button",{class:"button inline-flex",onClick:s[1]||(s[1]=(0,r.withModifiers)((function(e){return(0,r.unref)(i).resetChecks()}),["stop"]))},[(0,r.createTextVNode)(" Cancel "),(0,r.createVNode)((0,r.unref)(So),{class:"w-5 ml-1"})])],2)],512),[[r.vShow,(0,r.unref)(i).checkBoxesVisibility]]),(0,r.createElementVNode)("div",Ba,[(0,r.createElementVNode)("div",{class:"file-list",onScroll:s[6]||(s[6]=function(e){return(0,r.unref)(i).onScroll(e)})},[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)((0,r.unref)(i).folders,(function(e){return(0,r.openBlock)(),(0,r.createElementBlock)("div",{key:e.identifier,id:"folder-".concat(e.identifier),class:"relative folder-container"},[(0,r.createVNode)((0,r.unref)(_o),null,{default:(0,r.withCtx)((function(t){var n=t.open;return[(0,r.createElementVNode)("div",{class:(0,r.normalizeClass)(["folder-item-container",[(0,r.unref)(i).isOpen(e)?"active-folder":"",(0,r.unref)(i).shouldBeSticky(e)?"sticky "+(n?"z-20":"z-10"):""]]),onClick:function(t){return(0,r.unref)(i).toggle(e)}},[(0,r.createElementVNode)("div",Da,[(0,r.createElementVNode)("button",{class:"file-item-info group",onKeydown:s[2]||(s[2]=function(){return(0,r.unref)(ss)&&(0,r.unref)(ss).apply(void 0,arguments)})},[(0,r.unref)(i).isOpen(e)?(0,r.createCommentVNode)("",!0):((0,r.openBlock)(),(0,r.createElementBlock)("span",Ma,"Open folder")),(0,r.unref)(i).isOpen(e)?((0,r.openBlock)(),(0,r.createElementBlock)("span",Ua,"Close folder")):(0,r.createCommentVNode)("",!0),(0,r.createElementVNode)("span",$a,[(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(Po),{class:"w-5 h-5"},null,512),[[r.vShow,!(0,r.unref)(i).isOpen(e)]]),(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(To),{class:"w-5 h-5"},null,512),[[r.vShow,(0,r.unref)(i).isOpen(e)]])]),(0,r.createElementVNode)("span",za,[(0,r.createVNode)((0,r.unref)(Ro),{class:(0,r.normalizeClass)([(0,r.unref)(i).isOpen(e)?"rotate-90":"","transition duration-100"])},null,8,["class"])]),(0,r.createElementVNode)("span",Ha,[String(e.clean_path||"").startsWith("root")?((0,r.openBlock)(),(0,r.createElementBlock)("span",qa,[Wa,(0,r.createTextVNode)((0,r.toDisplayString)(String(e.clean_path).substring(4)),1)])):((0,r.openBlock)(),(0,r.createElementBlock)("span",Ka,(0,r.toDisplayString)(e.clean_path),1))])],32),(0,r.createVNode)((0,r.unref)(Eo),{as:"button",class:"file-dropdown-toggle group-hover:border-brand-600 group-hover:dark:border-brand-800","data-toggle-id":e.identifier,onKeydown:(0,r.unref)(as),onClick:s[3]||(s[3]=(0,r.withModifiers)((function(e){return(0,r.unref)(l)(e.target)}),["stop"]))},{default:(0,r.withCtx)((function(){return[Ga,(0,r.createVNode)((0,r.unref)(Ao),{class:"w-4 h-4 pointer-events-none"})]})),_:2},1032,["data-toggle-id","onKeydown"])]),(0,r.createVNode)(r.Transition,{"leave-active-class":"transition ease-in duration-100","leave-from-class":"opacity-100 scale-100","leave-to-class":"opacity-0 scale-90","enter-active-class":"transition ease-out duration-100","enter-from-class":"opacity-0 scale-90","enter-to-class":"opacity-100 scale-100"},{default:(0,r.withCtx)((function(){return[(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(xo),{static:"",as:"div",class:(0,r.normalizeClass)(["dropdown w-48",[(0,r.unref)(a)[e.identifier]]])},{default:(0,r.withCtx)((function(){return[(0,r.createElementVNode)("div",Ya,[(0,r.createVNode)((0,r.unref)(ko),{onClick:(0,r.withModifiers)((function(t){return(0,r.unref)(i).clearCacheForFolder(e)}),["stop","prevent"])},{default:(0,r.withCtx)((function(t){var n=t.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([n?"active":""])},[(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(Vo),{class:"w-4 h-4 mr-2"},null,512),[[r.vShow,!(0,r.unref)(i).clearingCache[e.identifier]]]),(0,r.withDirectives)((0,r.createVNode)(Yi,{class:"w-4 h-4 mr-2"},null,512),[[r.vShow,(0,r.unref)(i).clearingCache[e.identifier]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",null,"Clear indices",512),[[r.vShow,!(0,r.unref)(i).cacheRecentlyCleared[e.identifier]&&!(0,r.unref)(i).clearingCache[e.identifier]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",null,"Clearing...",512),[[r.vShow,!(0,r.unref)(i).cacheRecentlyCleared[e.identifier]&&(0,r.unref)(i).clearingCache[e.identifier]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",Ja,"Indices cleared",512),[[r.vShow,(0,r.unref)(i).cacheRecentlyCleared[e.identifier]]])],2)]})),_:2},1032,["onClick"]),e.can_download?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(ko),{key:0},{default:(0,r.withCtx)((function(t){var n=t.active;return[(0,r.createElementVNode)("a",{href:e.download_url,download:"",onClick:s[4]||(s[4]=(0,r.withModifiers)((function(){}),["stop"])),class:(0,r.normalizeClass)([n?"active":""])},[(0,r.createVNode)((0,r.unref)(jo),{class:"w-4 h-4 mr-2"}),(0,r.createTextVNode)(" Download ")],10,Qa)]})),_:2},1024)):(0,r.createCommentVNode)("",!0),e.can_delete?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:1},[Za,(0,r.createVNode)((0,r.unref)(ko),null,{default:(0,r.withCtx)((function(t){var n=t.active;return[(0,r.createElementVNode)("button",{onClick:(0,r.withModifiers)((function(t){return c(e)}),["stop"]),disabled:(0,r.unref)(i).deleting[e.identifier],class:(0,r.normalizeClass)([n?"active":""])},[(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(No),{class:"w-4 h-4 mr-2"},null,512),[[r.vShow,!(0,r.unref)(i).deleting[e.identifier]]]),(0,r.withDirectives)((0,r.createVNode)(Yi,null,null,512),[[r.vShow,(0,r.unref)(i).deleting[e.identifier]]]),(0,r.createTextVNode)(" Delete ")],10,Xa)]})),_:2},1024)],64)):(0,r.createCommentVNode)("",!0)])]})),_:2},1032,["class"]),[[r.vShow,n]])]})),_:2},1024)],10,Fa)]})),_:2},1024),(0,r.withDirectives)((0,r.createElementVNode)("div",el,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(e.files||[],(function(e){return(0,r.openBlock)(),(0,r.createBlock)(Ss,{key:e.identifier,"log-file":e,onClick:function(r){return o=e.identifier,void(n.query.file&&n.query.file===o?zi(t,"file",null):zi(t,"file",o));var o}},null,8,["log-file","onClick"])})),128))],512),[[r.vShow,(0,r.unref)(i).isOpen(e)]])],8,Ia)})),128)),0===(0,r.unref)(i).folders.length?((0,r.openBlock)(),(0,r.createElementBlock)("div",tl,[nl,(0,r.createElementVNode)("div",rl,[(0,r.createElementVNode)("button",{onClick:s[5]||(s[5]=(0,r.withModifiers)((function(e){return(0,r.unref)(i).loadFolders()}),["prevent"])),class:"inline-flex items-center px-4 py-2 text-left text-sm bg-white hover:bg-gray-50 outline-brand-500 dark:outline-brand-800 text-gray-900 dark:text-gray-200 rounded-md dark:bg-gray-700 dark:hover:bg-gray-600"},[(0,r.createVNode)((0,r.unref)(Lo),{class:"w-4 h-4 mr-1.5"}),(0,r.createTextVNode)(" Refresh file list ")])])])):(0,r.createCommentVNode)("",!0)],32),ol,(0,r.withDirectives)((0,r.createElementVNode)("div",il,[(0,r.createElementVNode)("div",sl,[(0,r.createVNode)(Yi,{class:"w-14 h-14"})])],512),[[r.vShow,(0,r.unref)(i).loading]])])])}}},ll=al;var cl=n(598),ul=n(462),fl=n(640),dl=n(307),pl=n(36),hl=n(452),vl=n(683),ml={class:"pagination"},gl={class:"previous"},yl=["disabled"],bl=(0,r.createElementVNode)("span",{class:"sm:hidden"},"Previous page",-1),wl={class:"sm:hidden border-transparent text-gray-500 dark:text-gray-400 border-t-2 pt-3 px-4 inline-flex items-center text-sm font-medium"},_l={class:"pages"},El={key:0,class:"border-brand-500 text-brand-600 dark:border-brand-600 dark:text-brand-500","aria-current":"page"},xl={key:1},kl=["onClick"],Sl={class:"next"},Ol=["disabled"],Cl=(0,r.createElementVNode)("span",{class:"sm:hidden"},"Next page",-1);const Nl={__name:"Pagination",props:{loading:{type:Boolean,required:!0},short:{type:Boolean,default:!1}},setup:function(e){var t=Vi(),n=Nr(),o=Pr(),i=((0,r.computed)((function(){return Number(o.query.page)||1})),function(e){e<1&&(e=1),t.pagination&&e>t.pagination.last_page&&(e=t.pagination.last_page),zi(n,"page",e>1?Number(e):null)}),s=function(){return i(t.page+1)},a=function(){return i(t.page-1)};return function(n,o){return(0,r.openBlock)(),(0,r.createElementBlock)("nav",ml,[(0,r.createElementVNode)("div",gl,[1!==(0,r.unref)(t).page?((0,r.openBlock)(),(0,r.createElementBlock)("button",{key:0,onClick:a,disabled:e.loading,rel:"prev"},[(0,r.createVNode)((0,r.unref)(Oo),{class:"h-5 w-5"}),bl],8,yl)):(0,r.createCommentVNode)("",!0)]),(0,r.createElementVNode)("div",wl,[(0,r.createElementVNode)("span",null,(0,r.toDisplayString)((0,r.unref)(t).page),1)]),(0,r.createElementVNode)("div",_l,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(e.short?(0,r.unref)(t).linksShort:(0,r.unref)(t).links,(function(e){return(0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,null,[e.active?((0,r.openBlock)(),(0,r.createElementBlock)("button",El,(0,r.toDisplayString)(Number(e.label).toLocaleString()),1)):"..."===e.label?((0,r.openBlock)(),(0,r.createElementBlock)("span",xl,(0,r.toDisplayString)(e.label),1)):((0,r.openBlock)(),(0,r.createElementBlock)("button",{key:2,onClick:function(t){return i(Number(e.label))},class:"border-transparent text-gray-500 dark:text-gray-400 hover:text-gray-700 hover:border-gray-300 dark:hover:text-gray-300 dark:hover:border-gray-400"},(0,r.toDisplayString)(Number(e.label).toLocaleString()),9,kl))],64)})),256))]),(0,r.createElementVNode)("div",Sl,[(0,r.unref)(t).hasMorePages?((0,r.openBlock)(),(0,r.createElementBlock)("button",{key:0,onClick:s,disabled:e.loading,rel:"next"},[Cl,(0,r.createVNode)((0,r.unref)(vl),{class:"h-5 w-5"})],8,Ol)):(0,r.createCommentVNode)("",!0)])])}}},Pl=Nl;var Tl=n(246),Rl={class:"flex items-center"},Al={class:"opacity-90 mr-1"},Vl={class:"font-semibold"},jl={class:"opacity-90 mr-1"},Ll={class:"font-semibold"},Bl={key:2,class:"opacity-90"},Il={key:3,class:"opacity-90"},Fl={class:"py-2"},Dl={class:"label flex justify-between"},Ml={key:0,class:"no-results"},Ul={class:"flex-1 inline-flex justify-between"},$l={class:"log-count"};const zl={__name:"LevelButtons",setup:function(e){var t=Fi(),n=Li();return(0,r.watch)((function(){return n.selectedLevels}),(function(){return t.loadLogs()})),function(e,o){return(0,r.openBlock)(),(0,r.createElementBlock)("div",Rl,[(0,r.createVNode)((0,r.unref)(_o),{as:"div",class:"mr-5 relative log-levels-selector"},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(Eo),{as:"button",id:"severity-dropdown-toggle",class:(0,r.normalizeClass)(["dropdown-toggle badge none",(0,r.unref)(n).levelsSelected.length>0?"active":""])},{default:(0,r.withCtx)((function(){return[(0,r.unref)(n).levelsSelected.length>2?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:0},[(0,r.createElementVNode)("span",Al,(0,r.toDisplayString)((0,r.unref)(n).totalResultsSelected.toLocaleString()+((0,r.unref)(t).hasMoreResults?"+":""))+" entries in",1),(0,r.createElementVNode)("strong",Vl,(0,r.toDisplayString)((0,r.unref)(n).levelsSelected[0].level_name)+" + "+(0,r.toDisplayString)((0,r.unref)(n).levelsSelected.length-1)+" more",1)],64)):(0,r.unref)(n).levelsSelected.length>0?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:1},[(0,r.createElementVNode)("span",jl,(0,r.toDisplayString)((0,r.unref)(n).totalResultsSelected.toLocaleString()+((0,r.unref)(t).hasMoreResults?"+":""))+" entries in",1),(0,r.createElementVNode)("strong",Ll,(0,r.toDisplayString)((0,r.unref)(n).levelsSelected.map((function(e){return e.level_name})).join(", ")),1)],64)):(0,r.unref)(n).levelsFound.length>0?((0,r.openBlock)(),(0,r.createElementBlock)("span",Bl,(0,r.toDisplayString)((0,r.unref)(n).totalResults.toLocaleString()+((0,r.unref)(t).hasMoreResults?"+":""))+" entries found. None selected",1)):((0,r.openBlock)(),(0,r.createElementBlock)("span",Il,"No entries found")),(0,r.createVNode)((0,r.unref)(Tl),{class:"w-4 h-4"})]})),_:1},8,["class"]),(0,r.createVNode)(r.Transition,{"leave-active-class":"transition ease-in duration-100","leave-from-class":"opacity-100 scale-100","leave-to-class":"opacity-0 scale-90","enter-active-class":"transition ease-out duration-100","enter-from-class":"opacity-0 scale-90","enter-to-class":"opacity-100 scale-100"},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(xo),{as:"div",class:"dropdown down left min-w-[240px]"},{default:(0,r.withCtx)((function(){return[(0,r.createElementVNode)("div",Fl,[(0,r.createElementVNode)("div",Dl,[(0,r.createTextVNode)(" Severity "),(0,r.unref)(n).levelsFound.length>0?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:0},[(0,r.unref)(n).levelsSelected.length===(0,r.unref)(n).levelsFound.length?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(ko),{key:0,onClick:(0,r.withModifiers)((0,r.unref)(n).deselectAllLevels,["stop"])},{default:(0,r.withCtx)((function(e){var t=e.active;return[(0,r.createElementVNode)("a",{class:(0,r.normalizeClass)(["inline-link px-2 -mr-2 py-1 -my-1 rounded-md cursor-pointer text-brand-700 dark:text-brand-500 font-normal",[t?"active":""]])}," Deselect all ",2)]})),_:1},8,["onClick"])):((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(ko),{key:1,onClick:(0,r.withModifiers)((0,r.unref)(n).selectAllLevels,["stop"])},{default:(0,r.withCtx)((function(e){var t=e.active;return[(0,r.createElementVNode)("a",{class:(0,r.normalizeClass)(["inline-link px-2 -mr-2 py-1 -my-1 rounded-md cursor-pointer text-brand-700 dark:text-brand-500 font-normal",[t?"active":""]])}," Select all ",2)]})),_:1},8,["onClick"]))],64)):(0,r.createCommentVNode)("",!0)]),0===(0,r.unref)(n).levelsFound.length?((0,r.openBlock)(),(0,r.createElementBlock)("div",Ml,"There are no severity filters to display because no entries have been found.")):((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,{key:1},(0,r.renderList)((0,r.unref)(n).levelsFound,(function(e){return(0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(ko),{onClick:(0,r.withModifiers)((function(t){return(0,r.unref)(n).toggleLevel(e.level)}),["stop","prevent"])},{default:(0,r.withCtx)((function(t){var n=t.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([n?"active":""])},[(0,r.createVNode)(js,{class:"checkmark mr-2.5",checked:e.selected},null,8,["checked"]),(0,r.createElementVNode)("span",Ul,[(0,r.createElementVNode)("span",{class:(0,r.normalizeClass)(["log-level",e.level_class])},(0,r.toDisplayString)(e.level_name),3),(0,r.createElementVNode)("span",$l,(0,r.toDisplayString)(Number(e.count).toLocaleString()),1)])],2)]})),_:2},1032,["onClick"])})),256))])]})),_:1})]})),_:1})]})),_:1})])}}};var Hl=n(447),ql={class:"flex-1"},Wl={class:"prefix-icon"},Kl=(0,r.createElementVNode)("label",{for:"query",class:"sr-only"},"Search",-1),Gl={class:"relative flex-1 m-1"},Yl=["onKeydown"],Jl={class:"clear-search"},Ql={class:"submit-search"},Zl={key:0,disabled:"disabled"},Xl={class:"hidden xl:inline ml-1"},ec={class:"hidden xl:inline ml-1"},tc={class:"relative h-0 w-full overflow-visible"},nc=["innerHTML"];const rc={__name:"SearchInput",setup:function(e){var t=Ai(),n=Fi(),o=Nr(),i=Pr(),s=(0,r.computed)((function(){return n.selectedFile})),a=(0,r.ref)(i.query.query||""),l=function(){var e;zi(o,"query",""===a.value?null:a.value),null===(e=document.getElementById("query-submit"))||void 0===e||e.focus()},c=function(){a.value="",l()};return(0,r.watch)((function(){return i.query.query}),(function(e){return a.value=e||""})),function(e,o){return(0,r.openBlock)(),(0,r.createElementBlock)("div",ql,[(0,r.createElementVNode)("div",{class:(0,r.normalizeClass)(["search",{"has-error":(0,r.unref)(n).error}])},[(0,r.createElementVNode)("div",Wl,[Kl,(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(Hl),{class:"h-4 w-4"},null,512),[[r.vShow,!(0,r.unref)(n).hasMoreResults]]),(0,r.withDirectives)((0,r.createVNode)(Yi,{class:"w-4 h-4"},null,512),[[r.vShow,(0,r.unref)(n).hasMoreResults]])]),(0,r.createElementVNode)("div",Gl,[(0,r.withDirectives)((0,r.createElementVNode)("input",{"onUpdate:modelValue":o[0]||(o[0]=function(e){return a.value=e}),name:"query",id:"query",type:"text",onKeydown:[(0,r.withKeys)(l,["enter"]),o[1]||(o[1]=(0,r.withKeys)((function(e){return e.target.blur()}),["esc"]))]},null,40,Yl),[[r.vModelText,a.value]]),(0,r.withDirectives)((0,r.createElementVNode)("div",Jl,[(0,r.createElementVNode)("button",{onClick:c},[(0,r.createVNode)((0,r.unref)(So),{class:"h-4 w-4"})])],512),[[r.vShow,(0,r.unref)(t).hasQuery]])]),(0,r.createElementVNode)("div",Ql,[(0,r.unref)(n).hasMoreResults?((0,r.openBlock)(),(0,r.createElementBlock)("button",Zl,[(0,r.createElementVNode)("span",null,[(0,r.createTextVNode)("Searching"),(0,r.createElementVNode)("span",Xl,(0,r.toDisplayString)((0,r.unref)(s)?(0,r.unref)(s).name:"all files"),1),(0,r.createTextVNode)("...")])])):((0,r.openBlock)(),(0,r.createElementBlock)("button",{key:1,onClick:l,id:"query-submit"},[(0,r.createElementVNode)("span",null,[(0,r.createTextVNode)("Search"),(0,r.createElementVNode)("span",ec,(0,r.toDisplayString)((0,r.unref)(s)?'in "'+(0,r.unref)(s).name+'"':"all files"),1)]),(0,r.createVNode)((0,r.unref)(vl),{class:"h-4 w-4"})]))])],2),(0,r.createElementVNode)("div",tc,[(0,r.withDirectives)((0,r.createElementVNode)("div",{class:"search-progress-bar",style:(0,r.normalizeStyle)({width:(0,r.unref)(n).percentScanned+"%"})},null,4),[[r.vShow,(0,r.unref)(n).hasMoreResults]])]),(0,r.withDirectives)((0,r.createElementVNode)("p",{class:"mt-1 text-red-600 text-xs",innerHTML:(0,r.unref)(n).error},null,8,nc),[[r.vShow,(0,r.unref)(n).error]])])}}},oc=rc;var ic=n(923),sc=n(69),ac=["onClick"],lc={class:"sr-only"},cc={class:"text-green-600 dark:text-green-500 hidden md:inline"};const uc={__name:"LogCopyButton",props:{log:{type:Object,required:!0}},setup:function(e){var t=e,n=(0,r.ref)(!1),o=function(){$i(t.log.url),n.value=!0,setTimeout((function(){return n.value=!1}),1e3)};return function(t,i){return(0,r.openBlock)(),(0,r.createElementBlock)("button",{class:"log-link group",onClick:(0,r.withModifiers)(o,["stop"]),onKeydown:i[0]||(i[0]=function(){return(0,r.unref)(is)&&(0,r.unref)(is).apply(void 0,arguments)}),title:"Copy link to this log entry"},[(0,r.createElementVNode)("span",lc,"Log index "+(0,r.toDisplayString)(e.log.index)+". Click the button to copy link to this log entry.",1),(0,r.withDirectives)((0,r.createElementVNode)("span",{class:"hidden md:inline group-hover:underline"},(0,r.toDisplayString)(Number(e.log.index).toLocaleString()),513),[[r.vShow,!n.value]]),(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(ic),{class:"md:opacity-75 group-hover:opacity-100"},null,512),[[r.vShow,!n.value]]),(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(sc),{class:"text-green-600 dark:text-green-500 md:hidden"},null,512),[[r.vShow,n.value]]),(0,r.withDirectives)((0,r.createElementVNode)("span",cc,"Copied!",512),[[r.vShow,n.value]])],40,ac)}}};var fc={class:"h-full w-full py-5 log-list"},dc={class:"flex flex-col h-full w-full md:mx-3 mb-4"},pc={class:"md:px-4 mb-4 flex flex-col-reverse lg:flex-row items-start"},hc={key:0,class:"flex items-center mr-5 mt-3 md:mt-0"},vc={class:"w-full lg:w-auto flex-1 flex justify-end min-h-[38px]"},mc={class:"hidden md:block ml-5"},gc={class:"hidden md:block"},yc={class:"md:hidden"},bc={type:"button",class:"menu-button"},wc={key:0,class:"relative overflow-hidden h-full text-sm"},_c={class:"mx-2 mt-1 mb-2 text-right lg:mx-0 lg:mt-0 lg:mb-0 lg:absolute lg:top-2 lg:right-6 z-20 text-sm text-gray-500 dark:text-gray-400"},Ec=(0,r.createElementVNode)("label",{for:"log-sort-direction",class:"sr-only"},"Sort direction",-1),xc=[(0,r.createElementVNode)("option",{value:"desc"},"Newest first",-1),(0,r.createElementVNode)("option",{value:"asc"},"Oldest first",-1)],kc=(0,r.createElementVNode)("label",{for:"items-per-page",class:"sr-only"},"Items per page",-1),Sc=[(0,r.createStaticVNode)('',6)],Oc={class:"inline-block min-w-full max-w-full align-middle"},Cc={class:"table-fixed min-w-full max-w-full border-separate",style:{"border-spacing":"0"}},Nc=(0,r.createElementVNode)("thead",{class:"bg-gray-50"},[(0,r.createElementVNode)("tr",null,[(0,r.createElementVNode)("th",{scope:"col",class:"w-[120px] hidden lg:table-cell"},[(0,r.createElementVNode)("div",{class:"pl-2"},"Level")]),(0,r.createElementVNode)("th",{scope:"col",class:"w-[180px] hidden lg:table-cell"},"Time"),(0,r.createElementVNode)("th",{scope:"col",class:"w-[110px] hidden lg:table-cell"},"Env"),(0,r.createElementVNode)("th",{scope:"col",class:"hidden lg:table-cell"},"Description"),(0,r.createElementVNode)("th",{scope:"col",class:"hidden lg:table-cell"},[(0,r.createElementVNode)("span",{class:"sr-only"},"Log index")])])],-1),Pc=["id","data-index"],Tc=["onClick"],Rc={class:"log-level truncate"},Ac={class:"flex items-center lg:pl-2"},Vc=["aria-expanded"],jc={key:0,class:"sr-only"},Lc={key:1,class:"sr-only"},Bc={class:"w-full h-full group-hover:hidden group-focus:hidden"},Ic={class:"w-full h-full hidden group-hover:inline-block group-focus:inline-block"},Fc={class:"whitespace-nowrap text-gray-900 dark:text-gray-200"},Dc=["innerHTML"],Mc={class:"lg:hidden"},Uc=["innerHTML"],$c=["innerHTML"],zc={class:"whitespace-nowrap text-gray-500 dark:text-gray-300 dark:opacity-90 text-xs hidden lg:table-cell"},Hc={colspan:"6"},qc={class:"lg:hidden flex justify-between px-2 pt-2 pb-1 text-xs"},Wc={class:"flex-1"},Kc=(0,r.createElementVNode)("span",{class:"font-semibold"},"Time:",-1),Gc={class:"flex-1"},Yc=(0,r.createElementVNode)("span",{class:"font-semibold"},"Env:",-1),Jc=["innerHTML"],Qc={key:0,class:"py-4 px-8 text-gray-500 italic"},Zc={key:1,class:"log-group"},Xc={colspan:"6"},eu={class:"bg-white text-gray-600 dark:bg-gray-800 dark:text-gray-200 p-12"},tu=(0,r.createElementVNode)("div",{class:"text-center font-semibold"},"No results",-1),nu={class:"text-center mt-6"},ru=["onClick"],ou={class:"absolute inset-0 top-9 md:px-4 z-20"},iu={class:"rounded-md bg-white text-gray-800 dark:bg-gray-700 dark:text-gray-200 opacity-90 w-full h-full flex items-center justify-center"},su={key:1,class:"flex h-full items-center justify-center text-gray-600 dark:text-gray-400"},au={key:0},lu={key:1},cu={key:2,class:"md:px-4"},uu={class:"hidden lg:block"},fu={class:"lg:hidden"};const du={__name:"LogList",setup:function(e){var t=Nr(),n=Di(),o=Fi(),i=Ai(),s=Vi(),a=Li(),l=(0,r.computed)((function(){return n.selectedFile||String(i.query||"").trim().length>0})),c=(0,r.computed)((function(){return o.logs&&(o.logs.length>0||!o.hasMoreResults)&&(o.selectedFile||i.hasQuery)})),u=function(){zi(t,"file",null)},f=function(){zi(t,"query",null)};return(0,r.watch)([function(){return o.direction},function(){return o.resultsPerPage}],(function(){return o.loadLogs()})),function(e,t){var d,p;return(0,r.openBlock)(),(0,r.createElementBlock)("div",fc,[(0,r.createElementVNode)("div",dc,[(0,r.createElementVNode)("div",pc,[(0,r.unref)(l)?((0,r.openBlock)(),(0,r.createElementBlock)("div",hc,[(0,r.createVNode)(zl)])):(0,r.createCommentVNode)("",!0),(0,r.createElementVNode)("div",vc,[(0,r.createVNode)(oc),(0,r.createElementVNode)("div",mc,[(0,r.createElementVNode)("button",{onClick:t[0]||(t[0]=function(e){return(0,r.unref)(o).loadLogs()}),id:"reload-logs-button",title:"Reload current results",class:"menu-button"},[(0,r.createVNode)((0,r.unref)(cl),{class:"w-5 h-5"})])]),(0,r.createElementVNode)("div",gc,[(0,r.createVNode)(qs,{class:"ml-2",id:"desktop-site-settings"})]),(0,r.createElementVNode)("div",yc,[(0,r.createElementVNode)("button",bc,[(0,r.createVNode)((0,r.unref)(ul),{class:"w-5 h-5 ml-2",onClick:(0,r.unref)(n).toggleSidebar},null,8,["onClick"])])])])]),(0,r.unref)(c)?((0,r.openBlock)(),(0,r.createElementBlock)("div",wc,[(0,r.createElementVNode)("div",_c,[Ec,(0,r.withDirectives)((0,r.createElementVNode)("select",{id:"log-sort-direction","onUpdate:modelValue":t[1]||(t[1]=function(e){return(0,r.unref)(o).direction=e}),class:"select mr-4"},xc,512),[[r.vModelSelect,(0,r.unref)(o).direction]]),kc,(0,r.withDirectives)((0,r.createElementVNode)("select",{id:"items-per-page","onUpdate:modelValue":t[2]||(t[2]=function(e){return(0,r.unref)(o).resultsPerPage=e}),class:"select"},Sc,512),[[r.vModelSelect,(0,r.unref)(o).resultsPerPage]])]),(0,r.createElementVNode)("div",{class:"log-item-container h-full overflow-y-auto md:px-4",onScroll:t[5]||(t[5]=function(e){return(0,r.unref)(o).onScroll(e)})},[(0,r.createElementVNode)("div",Oc,[(0,r.createElementVNode)("table",Cc,[Nc,(0,r.unref)(o).logs&&(0,r.unref)(o).logs.length>0?((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,{key:0},(0,r.renderList)((0,r.unref)(o).logs,(function(n,s){return(0,r.openBlock)(),(0,r.createElementBlock)("tbody",{key:s,class:(0,r.normalizeClass)([0===s?"first":"","log-group"]),id:"tbody-".concat(s),"data-index":s},[(0,r.createElementVNode)("tr",{onClick:function(e){return(0,r.unref)(o).toggle(s)},class:(0,r.normalizeClass)(["log-item group",n.level_class,(0,r.unref)(o).isOpen(s)?"active":"",(0,r.unref)(o).shouldBeSticky(s)?"sticky z-2":""]),style:(0,r.normalizeStyle)({top:(0,r.unref)(o).stackTops[s]||0})},[(0,r.createElementVNode)("td",Rc,[(0,r.createElementVNode)("div",Ac,[(0,r.createElementVNode)("button",{"aria-expanded":(0,r.unref)(o).isOpen(s),onKeydown:t[3]||(t[3]=function(){return(0,r.unref)(os)&&(0,r.unref)(os).apply(void 0,arguments)}),class:"log-level-icon mr-2 opacity-75 w-5 h-5 hidden lg:block group focus:opacity-100 focus:outline-none focus:ring-2 focus:ring-brand-500 rounded-md"},[(0,r.unref)(o).isOpen(s)?(0,r.createCommentVNode)("",!0):((0,r.openBlock)(),(0,r.createElementBlock)("span",jc,"Expand log entry")),(0,r.unref)(o).isOpen(s)?((0,r.openBlock)(),(0,r.createElementBlock)("span",Lc,"Collapse log entry")):(0,r.createCommentVNode)("",!0),(0,r.createElementVNode)("span",Bc,["danger"===n.level_class?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(fl),{key:0})):"warning"===n.level_class?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(dl),{key:1})):((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(pl),{key:2}))]),(0,r.createElementVNode)("span",Ic,[(0,r.createVNode)((0,r.unref)(hl),{class:(0,r.normalizeClass)([(0,r.unref)(o).isOpen(s)?"rotate-90":"","transition duration-100"])},null,8,["class"])])],40,Vc),(0,r.createElementVNode)("span",null,(0,r.toDisplayString)(n.level_name),1)])]),(0,r.createElementVNode)("td",Fc,[(0,r.createElementVNode)("span",{class:"hidden lg:inline",innerHTML:(0,r.unref)(Mi)(n.datetime,(0,r.unref)(i).query)},null,8,Dc),(0,r.createElementVNode)("span",Mc,(0,r.toDisplayString)(n.time),1)]),(0,r.createElementVNode)("td",{class:"whitespace-nowrap text-gray-500 dark:text-gray-300 dark:opacity-90 hidden lg:table-cell",innerHTML:(0,r.unref)(Mi)(n.environment,(0,r.unref)(i).query)},null,8,Uc),(0,r.createElementVNode)("td",{class:"max-w-[1px] w-full truncate text-gray-500 dark:text-gray-300 dark:opacity-90",innerHTML:(0,r.unref)(Mi)(n.text,(0,r.unref)(i).query)},null,8,$c),(0,r.createElementVNode)("td",zc,[(0,r.createVNode)(uc,{log:n,class:"pr-2 large-screen"},null,8,["log"])])],14,Tc),(0,r.withDirectives)((0,r.createElementVNode)("tr",null,[(0,r.createElementVNode)("td",Hc,[(0,r.createElementVNode)("div",qc,[(0,r.createElementVNode)("div",Wc,[Kc,(0,r.createTextVNode)(" "+(0,r.toDisplayString)(n.datetime),1)]),(0,r.createElementVNode)("div",Gc,[Yc,(0,r.createTextVNode)(" "+(0,r.toDisplayString)(n.environment),1)]),(0,r.createElementVNode)("div",null,[(0,r.createVNode)(uc,{log:n},null,8,["log"])])]),(0,r.createElementVNode)("pre",{class:"log-stack",innerHTML:(0,r.unref)(Mi)(n.full_text,(0,r.unref)(i).query)},null,8,Jc),n.full_text_incomplete?((0,r.openBlock)(),(0,r.createElementBlock)("div",Qc,[(0,r.createTextVNode)(" The contents of this log have been cut short to the first "+(0,r.toDisplayString)(e.LogViewer.max_log_size_formatted)+". The full size of this log entry is ",1),(0,r.createElementVNode)("strong",null,(0,r.toDisplayString)(n.full_text_length_formatted),1)])):(0,r.createCommentVNode)("",!0)])],512),[[r.vShow,(0,r.unref)(o).isOpen(s)]])],10,Pc)})),128)):((0,r.openBlock)(),(0,r.createElementBlock)("tbody",Zc,[(0,r.createElementVNode)("tr",null,[(0,r.createElementVNode)("td",Xc,[(0,r.createElementVNode)("div",eu,[tu,(0,r.createElementVNode)("div",nu,[(null===(d=(0,r.unref)(i).query)||void 0===d?void 0:d.length)>0?((0,r.openBlock)(),(0,r.createElementBlock)("button",{key:0,class:"px-3 py-2 border dark:border-gray-700 text-gray-800 dark:text-gray-200 hover:border-brand-600 dark:hover:border-brand-700 rounded-md",onClick:f},"Clear search query ")):(0,r.createCommentVNode)("",!0),(null===(p=(0,r.unref)(i).query)||void 0===p?void 0:p.length)>0&&(0,r.unref)(n).selectedFile?((0,r.openBlock)(),(0,r.createElementBlock)("button",{key:1,class:"px-3 ml-3 py-2 border dark:border-gray-700 text-gray-800 dark:text-gray-200 hover:border-brand-600 dark:hover:border-brand-700 rounded-md",onClick:(0,r.withModifiers)(u,["prevent"])},"Search all files ",8,ru)):(0,r.createCommentVNode)("",!0),(0,r.unref)(a).levelsFound.length>0&&0===(0,r.unref)(a).levelsSelected.length?((0,r.openBlock)(),(0,r.createElementBlock)("button",{key:2,class:"px-3 ml-3 py-2 border dark:border-gray-700 text-gray-800 dark:text-gray-200 hover:border-brand-600 dark:hover:border-brand-700 rounded-md",onClick:t[4]||(t[4]=function(){var e;return(0,r.unref)(a).selectAllLevels&&(e=(0,r.unref)(a)).selectAllLevels.apply(e,arguments)})},"Select all severities ")):(0,r.createCommentVNode)("",!0)])])])])]))])])],32),(0,r.withDirectives)((0,r.createElementVNode)("div",ou,[(0,r.createElementVNode)("div",iu,[(0,r.createVNode)(Yi,{class:"w-14 h-14"})])],512),[[r.vShow,(0,r.unref)(o).loading&&(!(0,r.unref)(o).isMobile||!(0,r.unref)(n).sidebarOpen)]])])):((0,r.openBlock)(),(0,r.createElementBlock)("div",su,[(0,r.unref)(o).hasMoreResults?((0,r.openBlock)(),(0,r.createElementBlock)("span",au,"Searching...")):((0,r.openBlock)(),(0,r.createElementBlock)("span",lu,"Select a file or start searching..."))])),(0,r.unref)(c)&&(0,r.unref)(s).hasPages?((0,r.openBlock)(),(0,r.createElementBlock)("div",cu,[(0,r.createElementVNode)("div",uu,[(0,r.createVNode)(Pl,{loading:(0,r.unref)(o).loading},null,8,["loading"])]),(0,r.createElementVNode)("div",fu,[(0,r.createVNode)(Pl,{loading:(0,r.unref)(o).loading,short:!0},null,8,["loading"])])])):(0,r.createCommentVNode)("",!0)])])}}},pu=du;function hu(){let e=[],t=[],n={enqueue(e){t.push(e)},addEventListener:(e,t,r,o)=>(e.addEventListener(t,r,o),n.add((()=>e.removeEventListener(t,r,o)))),requestAnimationFrame(...e){let t=requestAnimationFrame(...e);n.add((()=>cancelAnimationFrame(t)))},nextFrame(...e){n.requestAnimationFrame((()=>{n.requestAnimationFrame(...e)}))},setTimeout(...e){let t=setTimeout(...e);n.add((()=>clearTimeout(t)))},add(t){e.push(t)},style(e,t,n){let r=e.style.getPropertyValue(t);return Object.assign(e.style,{[t]:n}),this.add((()=>{Object.assign(e.style,{[t]:r})}))},dispose(){for(let t of e.splice(0))t()},async workQueue(){for(let e of t.splice(0))await e()}};return n}function vu(e,...t){e&&t.length>0&&e.classList.add(...t)}function mu(e,...t){e&&t.length>0&&e.classList.remove(...t)}var gu=(e=>(e.Finished="finished",e.Cancelled="cancelled",e))(gu||{});function yu(e,t,n,r,o,i){let s=hu(),a=void 0!==i?function(e){let t={called:!1};return(...n)=>{if(!t.called)return t.called=!0,e(...n)}}(i):()=>{};return mu(e,...o),vu(e,...t,...n),s.nextFrame((()=>{mu(e,...n),vu(e,...r),s.add(function(e,t){let n=hu();if(!e)return n.dispose;let{transitionDuration:r,transitionDelay:o}=getComputedStyle(e),[i,s]=[r,o].map((e=>{let[t=0]=e.split(",").filter(Boolean).map((e=>e.includes("ms")?parseFloat(e):1e3*parseFloat(e))).sort(((e,t)=>t-e));return t}));return 0!==i?n.setTimeout((()=>t("finished")),i+s):t("finished"),n.add((()=>t("cancelled"))),n.dispose}(e,(n=>(mu(e,...r,...t),vu(e,...o),a(n)))))})),s.add((()=>mu(e,...t,...n,...r,...o))),s.add((()=>a("cancelled"))),s.dispose}function bu(e=""){return e.split(" ").filter((e=>e.trim().length>1))}let wu=Symbol("TransitionContext");var _u=(e=>(e.Visible="visible",e.Hidden="hidden",e))(_u||{});let Eu=Symbol("NestingContext");function xu(e){return"children"in e?xu(e.children):e.value.filter((({state:e})=>"visible"===e)).length>0}function ku(e){let t=(0,r.ref)([]),n=(0,r.ref)(!1);function o(r,o=Vr.Hidden){let i=t.value.findIndex((({id:e})=>e===r));-1!==i&&(Tr(o,{[Vr.Unmount](){t.value.splice(i,1)},[Vr.Hidden](){t.value[i].state="hidden"}}),!xu(t)&&n.value&&(null==e||e()))}return(0,r.onMounted)((()=>n.value=!0)),(0,r.onUnmounted)((()=>n.value=!1)),{children:t,register:function(e){let n=t.value.find((({id:t})=>t===e));return n?"visible"!==n.state&&(n.state="visible"):t.value.push({id:e,state:"visible"}),()=>o(e,Vr.Unmount)},unregister:o}}let Su=Ar.RenderStrategy,Ou=(0,r.defineComponent)({props:{as:{type:[Object,String],default:"div"},show:{type:[Boolean],default:null},unmount:{type:[Boolean],default:!0},appear:{type:[Boolean],default:!1},enter:{type:[String],default:""},enterFrom:{type:[String],default:""},enterTo:{type:[String],default:""},entered:{type:[String],default:""},leave:{type:[String],default:""},leaveFrom:{type:[String],default:""},leaveTo:{type:[String],default:""}},emits:{beforeEnter:()=>!0,afterEnter:()=>!0,beforeLeave:()=>!0,afterLeave:()=>!0},setup(e,{emit:t,attrs:n,slots:o,expose:i}){if(null===(0,r.inject)(wu,null)&&null!==Yr())return()=>(0,r.h)(Nu,{...e,onBeforeEnter:()=>t("beforeEnter"),onAfterEnter:()=>t("afterEnter"),onBeforeLeave:()=>t("beforeLeave"),onAfterLeave:()=>t("afterLeave")},o);let s=(0,r.ref)(null),a=(0,r.ref)("visible"),l=(0,r.computed)((()=>e.unmount?Vr.Unmount:Vr.Hidden));i({el:s,$el:s});let{show:c,appear:u}=function(){let e=(0,r.inject)(wu,null);if(null===e)throw new Error("A is used but it is missing a parent .");return e}(),{register:f,unregister:d}=function(){let e=(0,r.inject)(Eu,null);if(null===e)throw new Error("A is used but it is missing a parent .");return e}(),p={value:!0},h=Mr(),v={value:!1},m=ku((()=>{v.value||(a.value="hidden",d(h),t("afterLeave"))}));(0,r.onMounted)((()=>{let e=f(h);(0,r.onUnmounted)(e)})),(0,r.watchEffect)((()=>{if(l.value===Vr.Hidden&&h){if(c&&"visible"!==a.value)return void(a.value="visible");Tr(a.value,{hidden:()=>d(h),visible:()=>f(h)})}}));let g=bu(e.enter),y=bu(e.enterFrom),b=bu(e.enterTo),w=bu(e.entered),_=bu(e.leave),E=bu(e.leaveFrom),x=bu(e.leaveTo);return(0,r.onMounted)((()=>{(0,r.watchEffect)((()=>{if("visible"===a.value){let e=Hr(s);if(e instanceof Comment&&""===e.data)throw new Error("Did you forget to passthrough the `ref` to the actual DOM node?")}}))})),(0,r.onMounted)((()=>{(0,r.watch)([c],((e,n,r)=>{(function(e){let n=p.value&&!u.value,r=Hr(s);!r||!(r instanceof HTMLElement)||n||(v.value=!0,c.value&&t("beforeEnter"),c.value||t("beforeLeave"),e(c.value?yu(r,g,y,b,w,(e=>{v.value=!1,e===gu.Finished&&t("afterEnter")})):yu(r,_,E,x,w,(e=>{v.value=!1,e===gu.Finished&&(xu(m)||(a.value="hidden",d(h),t("afterLeave")))}))))})(r),p.value=!1}),{immediate:!0})})),(0,r.provide)(Eu,m),Jr((0,r.computed)((()=>Tr(a.value,{visible:Gr.Open,hidden:Gr.Closed})))),()=>{let{appear:t,show:i,enter:l,enterFrom:f,enterTo:d,entered:p,leave:h,leaveFrom:v,leaveTo:m,...b}=e,w={ref:s};return jr({theirProps:{...b,...u&&c&&qr.isServer?{class:(0,r.normalizeClass)([b.class,...g,...y])}:{}},ourProps:w,slot:{},slots:o,attrs:n,features:Su,visible:"visible"===a.value,name:"TransitionChild"})}}}),Cu=Ou,Nu=(0,r.defineComponent)({inheritAttrs:!1,props:{as:{type:[Object,String],default:"div"},show:{type:[Boolean],default:null},unmount:{type:[Boolean],default:!0},appear:{type:[Boolean],default:!1},enter:{type:[String],default:""},enterFrom:{type:[String],default:""},enterTo:{type:[String],default:""},entered:{type:[String],default:""},leave:{type:[String],default:""},leaveFrom:{type:[String],default:""},leaveTo:{type:[String],default:""}},emits:{beforeEnter:()=>!0,afterEnter:()=>!0,beforeLeave:()=>!0,afterLeave:()=>!0},setup(e,{emit:t,attrs:n,slots:o}){let i=Yr(),s=(0,r.computed)((()=>null===e.show&&null!==i?Tr(i.value,{[Gr.Open]:!0,[Gr.Closed]:!1}):e.show));(0,r.watchEffect)((()=>{if(![!0,!1].includes(s.value))throw new Error('A is used but it is missing a `:show="true | false"` prop.')}));let a=(0,r.ref)(s.value?"visible":"hidden"),l=ku((()=>{a.value="hidden"})),c=(0,r.ref)(!0),u={show:s,appear:(0,r.computed)((()=>e.appear||!c.value))};return(0,r.onMounted)((()=>{(0,r.watchEffect)((()=>{c.value=!1,s.value?a.value="visible":xu(l)||(a.value="hidden")}))})),(0,r.provide)(Eu,l),(0,r.provide)(wu,u),()=>{let i=Fr(e,["show","appear","unmount","onBeforeEnter","onBeforeLeave","onAfterEnter","onAfterLeave"]),s={unmount:e.unmount};return jr({ourProps:{...s,as:"template"},theirProps:{},slot:{},slots:{...o,default:()=>[(0,r.h)(Cu,{onBeforeEnter:()=>t("beforeEnter"),onAfterEnter:()=>t("afterEnter"),onBeforeLeave:()=>t("beforeLeave"),onAfterLeave:()=>t("afterLeave"),...n,...s,...i},o.default)]},attrs:{},features:Su,visible:"visible"===a.value,name:"Transition"})}}});var Pu=(e=>(e[e.Forwards=0]="Forwards",e[e.Backwards=1]="Backwards",e))(Pu||{});function Tu(){let e=(0,r.ref)(0);return function(e,t,n){qr.isServer||(0,r.watchEffect)((r=>{window.addEventListener(e,t,n),r((()=>window.removeEventListener(e,t,n)))}))}("keydown",(t=>{"Tab"===t.key&&(e.value=t.shiftKey?1:0)})),e}function Ru(e,t,n,o){qr.isServer||(0,r.watchEffect)((r=>{(e=null!=e?e:window).addEventListener(t,n,o),r((()=>e.removeEventListener(t,n,o)))}))}var Au=(e=>(e[e.None=1]="None",e[e.InitialFocus=2]="InitialFocus",e[e.TabLock=4]="TabLock",e[e.FocusLock=8]="FocusLock",e[e.RestoreFocus=16]="RestoreFocus",e[e.All=30]="All",e))(Au||{});let Vu=Object.assign((0,r.defineComponent)({name:"FocusTrap",props:{as:{type:[Object,String],default:"div"},initialFocus:{type:Object,default:null},features:{type:Number,default:30},containers:{type:Object,default:(0,r.ref)(new Set)}},inheritAttrs:!1,setup(e,{attrs:t,slots:n,expose:o}){let i=(0,r.ref)(null);o({el:i,$el:i});let s=(0,r.computed)((()=>Wr(i)));!function({ownerDocument:e},t){let n=(0,r.ref)(null);function o(){var t;n.value||(n.value=null==(t=e.value)?void 0:t.activeElement)}function i(){!n.value||(ao(n.value),n.value=null)}(0,r.onMounted)((()=>{(0,r.watch)(t,((e,t)=>{e!==t&&(e?o():i())}),{immediate:!0})})),(0,r.onUnmounted)(i)}({ownerDocument:s},(0,r.computed)((()=>Boolean(16&e.features))));let a=function({ownerDocument:e,container:t,initialFocus:n},o){let i=(0,r.ref)(null),s=(0,r.ref)(!1);return(0,r.onMounted)((()=>s.value=!0)),(0,r.onUnmounted)((()=>s.value=!1)),(0,r.onMounted)((()=>{(0,r.watch)([t,n,o],((r,a)=>{if(r.every(((e,t)=>(null==a?void 0:a[t])===e))||!o.value)return;let l=Hr(t);!l||function(e){"function"==typeof queueMicrotask?queueMicrotask(e):Promise.resolve().then(e).catch((e=>setTimeout((()=>{throw e}))))}((()=>{var t,r;if(!s.value)return;let o=Hr(n),a=null==(t=e.value)?void 0:t.activeElement;if(o){if(o===a)return void(i.value=a)}else if(l.contains(a))return void(i.value=a);o?ao(o):(fo(l,eo.First|eo.NoScroll),to.Error),i.value=null==(r=e.value)?void 0:r.activeElement}))}),{immediate:!0,flush:"post"})})),i}({ownerDocument:s,container:i,initialFocus:(0,r.computed)((()=>e.initialFocus))},(0,r.computed)((()=>Boolean(2&e.features))));!function({ownerDocument:e,container:t,containers:n,previousActiveElement:r},o){var i;Ru(null==(i=e.value)?void 0:i.defaultView,"focus",(e=>{if(!o.value)return;let i=new Set(null==n?void 0:n.value);i.add(t);let s=r.value;if(!s)return;let a=e.target;a&&a instanceof HTMLElement?ju(i,a)?(r.value=a,ao(a)):(e.preventDefault(),e.stopPropagation(),ao(s)):ao(r.value)}),!0)}({ownerDocument:s,container:i,containers:e.containers,previousActiveElement:a},(0,r.computed)((()=>Boolean(8&e.features))));let l=Tu();function c(e){let t=Hr(i);t&&Tr(l.value,{[Pu.Forwards]:()=>{fo(t,eo.First,{skipElements:[e.relatedTarget]})},[Pu.Backwards]:()=>{fo(t,eo.Last,{skipElements:[e.relatedTarget]})}})}let u=(0,r.ref)(!1);function f(e){"Tab"===e.key&&(u.value=!0,requestAnimationFrame((()=>{u.value=!1})))}function d(t){var n;let r=new Set(null==(n=e.containers)?void 0:n.value);r.add(i);let o=t.relatedTarget;o instanceof HTMLElement&&"true"!==o.dataset.headlessuiFocusGuard&&(ju(r,o)||(u.value?fo(Hr(i),Tr(l.value,{[Pu.Forwards]:()=>eo.Next,[Pu.Backwards]:()=>eo.Previous})|eo.WrapAround,{relativeTo:t.target}):t.target instanceof HTMLElement&&ao(t.target)))}return()=>{let o={ref:i,onKeydown:f,onFocusout:d},{features:s,initialFocus:a,containers:l,...u}=e;return(0,r.h)(r.Fragment,[Boolean(4&s)&&(0,r.h)(Ks,{as:"button",type:"button","data-headlessui-focus-guard":!0,onFocus:c,features:Ws.Focusable}),jr({ourProps:o,theirProps:{...t,...u},slot:{},attrs:t,slots:n,name:"FocusTrap"}),Boolean(4&s)&&(0,r.h)(Ks,{as:"button",type:"button","data-headlessui-focus-guard":!0,onFocus:c,features:Ws.Focusable})])}}}),{features:Au});function ju(e,t){var n;for(let r of e)if(null!=(n=r.value)&&n.contains(t))return!0;return!1}let Lu="body > *",Bu=new Set,Iu=new Map;function Fu(e){e.setAttribute("aria-hidden","true"),e.inert=!0}function Du(e){let t=Iu.get(e);!t||(null===t["aria-hidden"]?e.removeAttribute("aria-hidden"):e.setAttribute("aria-hidden",t["aria-hidden"]),e.inert=t.inert)}function Mu(e,t=(0,r.ref)(!0)){(0,r.watchEffect)((n=>{if(!t.value||!e.value)return;let r=e.value,o=Wr(r);if(o){Bu.add(r);for(let e of Iu.keys())e.contains(r)&&(Du(e),Iu.delete(e));o.querySelectorAll(Lu).forEach((e=>{if(e instanceof HTMLElement){for(let t of Bu)if(e.contains(t))return;1===Bu.size&&(Iu.set(e,{"aria-hidden":e.getAttribute("aria-hidden"),inert:e.inert}),Fu(e))}})),n((()=>{if(Bu.delete(r),Bu.size>0)o.querySelectorAll(Lu).forEach((e=>{if(e instanceof HTMLElement&&!Iu.has(e)){for(let t of Bu)if(e.contains(t))return;Iu.set(e,{"aria-hidden":e.getAttribute("aria-hidden"),inert:e.inert}),Fu(e)}}));else for(let e of Iu.keys())Du(e),Iu.delete(e)}))}}))}let Uu=Symbol("ForcePortalRootContext");let $u=(0,r.defineComponent)({name:"ForcePortalRoot",props:{as:{type:[Object,String],default:"template"},force:{type:Boolean,default:!1}},setup:(e,{slots:t,attrs:n})=>((0,r.provide)(Uu,e.force),()=>{let{force:r,...o}=e;return jr({theirProps:o,ourProps:{},slot:{},slots:t,attrs:n,name:"ForcePortalRoot"})})});let zu=(0,r.defineComponent)({name:"Portal",props:{as:{type:[Object,String],default:"div"}},setup(e,{slots:t,attrs:n}){let o=(0,r.ref)(null),i=(0,r.computed)((()=>Wr(o))),s=(0,r.inject)(Uu,!1),a=(0,r.inject)(Hu,null),l=(0,r.ref)(!0===s||null==a?function(e){let t=Wr(e);if(!t){if(null===e)return null;throw new Error(`[Headless UI]: Cannot find ownerDocument for contextElement: ${e}`)}let n=t.getElementById("headlessui-portal-root");if(n)return n;let r=t.createElement("div");return r.setAttribute("id","headlessui-portal-root"),t.body.appendChild(r)}(o.value):a.resolveTarget());return(0,r.watchEffect)((()=>{s||null!=a&&(l.value=a.resolveTarget())})),(0,r.onUnmounted)((()=>{var e,t;let n=null==(e=i.value)?void 0:e.getElementById("headlessui-portal-root");!n||l.value===n&&l.value.children.length<=0&&(null==(t=l.value.parentElement)||t.removeChild(l.value))})),()=>{if(null===l.value)return null;let i={ref:o,"data-headlessui-portal":""};return(0,r.h)(r.Teleport,{to:l.value},jr({ourProps:i,theirProps:e,slot:{},attrs:n,slots:t,name:"Portal"}))}}}),Hu=Symbol("PortalGroupContext"),qu=(0,r.defineComponent)({name:"PortalGroup",props:{as:{type:[Object,String],default:"template"},target:{type:Object,default:null}},setup(e,{attrs:t,slots:n}){let o=(0,r.reactive)({resolveTarget:()=>e.target});return(0,r.provide)(Hu,o),()=>{let{target:r,...o}=e;return jr({theirProps:o,ourProps:{},slot:{},attrs:t,slots:n,name:"PortalGroup"})}}}),Wu=Symbol("StackContext");var Ku=(e=>(e[e.Add=0]="Add",e[e.Remove=1]="Remove",e))(Ku||{});function Gu({type:e,enabled:t,element:n,onUpdate:o}){let i=(0,r.inject)(Wu,(()=>{}));function s(...e){null==o||o(...e),i(...e)}(0,r.onMounted)((()=>{(0,r.watch)(t,((t,r)=>{t?s(0,e,n):!0===r&&s(1,e,n)}),{immediate:!0,flush:"sync"})})),(0,r.onUnmounted)((()=>{t.value&&s(1,e,n)})),(0,r.provide)(Wu,s)}let Yu=Symbol("DescriptionContext");(0,r.defineComponent)({name:"Description",props:{as:{type:[Object,String],default:"p"},id:{type:String,default:()=>`headlessui-description-${Mr()}`}},setup(e,{attrs:t,slots:n}){let o=function(){let e=(0,r.inject)(Yu,null);if(null===e)throw new Error("Missing parent");return e}();return(0,r.onMounted)((()=>(0,r.onUnmounted)(o.register(e.id)))),()=>{let{name:i="Description",slot:s=(0,r.ref)({}),props:a={}}=o,{id:l,...c}=e,u={...Object.entries(a).reduce(((e,[t,n])=>Object.assign(e,{[t]:(0,r.unref)(n)})),{}),id:l};return jr({ourProps:u,theirProps:c,slot:s.value,attrs:t,slots:n,name:i})}}});function Ju(){let e;return{before({doc:t}){var n;let r=t.documentElement;e=(null!=(n=t.defaultView)?n:window).innerWidth-r.clientWidth},after({doc:t,d:n}){let r=t.documentElement,o=r.clientWidth-r.offsetWidth,i=e-o;n.style(r,"paddingRight",`${i}px`)}}}function Qu(){if(!(/iPhone/gi.test(window.navigator.platform)||/Mac/gi.test(window.navigator.platform)&&window.navigator.maxTouchPoints>0))return{};let e;return{before(){e=window.pageYOffset},after({doc:t,d:n,meta:r}){function o(e){return r.containers.flatMap((e=>e())).some((t=>t.contains(e)))}n.style(t.body,"marginTop",`-${e}px`),window.scrollTo(0,0);let i=null;n.addEventListener(t,"click",(e=>{if(e.target instanceof HTMLElement)try{let n=e.target.closest("a");if(!n)return;let{hash:r}=new URL(n.href),s=t.querySelector(r);s&&!o(s)&&(i=s)}catch{}}),!0),n.addEventListener(t,"touchmove",(e=>{e.target instanceof HTMLElement&&!o(e.target)&&e.preventDefault()}),{passive:!1}),n.add((()=>{window.scrollTo(0,window.pageYOffset+e),i&&i.isConnected&&(i.scrollIntoView({block:"nearest"}),i=null)}))}}}function Zu(e){let t={};for(let n of e)Object.assign(t,n(t));return t}let Xu=function(e,t){let n=e(),r=new Set;return{getSnapshot:()=>n,subscribe:e=>(r.add(e),()=>r.delete(e)),dispatch(e,...o){let i=t[e].call(n,...o);i&&(n=i,r.forEach((e=>e())))}}}((()=>new Map),{PUSH(e,t){var n;let r=null!=(n=this.get(e))?n:{doc:e,count:0,d:hu(),meta:new Set};return r.count++,r.meta.add(t),this.set(e,r),this},POP(e,t){let n=this.get(e);return n&&(n.count--,n.meta.delete(t)),this},SCROLL_PREVENT({doc:e,d:t,meta:n}){let r={doc:e,d:t,meta:Zu(n)},o=[Qu(),Ju(),{before({doc:e,d:t}){t.style(e.documentElement,"overflow","hidden")}}];o.forEach((({before:e})=>null==e?void 0:e(r))),o.forEach((({after:e})=>null==e?void 0:e(r)))},SCROLL_ALLOW({d:e}){e.dispose()},TEARDOWN({doc:e}){this.delete(e)}});function ef(e,t,n){let o=function(e){let t=(0,r.shallowRef)(e.getSnapshot());return(0,r.onUnmounted)(e.subscribe((()=>{t.value=e.getSnapshot()}))),t}(Xu),i=(0,r.computed)((()=>{let t=e.value?o.value.get(e.value):void 0;return!!t&&t.count>0}));return(0,r.watch)([e,t],(([e,t],[r],o)=>{if(!e||!t)return;Xu.dispatch("PUSH",e,n);let i=!1;o((()=>{i||(Xu.dispatch("POP",null!=r?r:e,n),i=!0)}))}),{immediate:!0}),i}Xu.subscribe((()=>{let e=Xu.getSnapshot(),t=new Map;for(let[n]of e)t.set(n,n.documentElement.style.overflow);for(let n of e.values()){let e="hidden"===t.get(n.doc),r=0!==n.count;(r&&!e||!r&&e)&&Xu.dispatch(n.count>0?"SCROLL_PREVENT":"SCROLL_ALLOW",n),0===n.count&&Xu.dispatch("TEARDOWN",n)}}));var tf=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(tf||{});let nf=Symbol("DialogContext");function rf(e){let t=(0,r.inject)(nf,null);if(null===t){let t=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,rf),t}return t}let of="DC8F892D-2EBD-447C-A4C8-A03058436FF4",sf=(0,r.defineComponent)({name:"Dialog",inheritAttrs:!1,props:{as:{type:[Object,String],default:"div"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},open:{type:[Boolean,String],default:of},initialFocus:{type:Object,default:null},id:{type:String,default:()=>`headlessui-dialog-${Mr()}`}},emits:{close:e=>!0},setup(e,{emit:t,attrs:n,slots:o,expose:i}){var s;let a=(0,r.ref)(!1);(0,r.onMounted)((()=>{a.value=!0}));let l=(0,r.ref)(0),c=Yr(),u=(0,r.computed)((()=>e.open===of&&null!==c?Tr(c.value,{[Gr.Open]:!0,[Gr.Closed]:!1}):e.open)),f=(0,r.ref)(new Set),d=(0,r.ref)(null),p=(0,r.ref)(null),h=(0,r.computed)((()=>Wr(d)));if(i({el:d,$el:d}),e.open===of&&null===c)throw new Error("You forgot to provide an `open` prop to the `Dialog`.");if("boolean"!=typeof u.value)throw new Error(`You provided an \`open\` prop to the \`Dialog\`, but the value is not a boolean. Received: ${u.value===of?void 0:e.open}`);let v=(0,r.computed)((()=>a.value&&u.value?0:1)),m=(0,r.computed)((()=>0===v.value)),g=(0,r.computed)((()=>l.value>1)),y=((0,r.inject)(nf,null),(0,r.computed)((()=>g.value?"parent":"leaf")));Mu(d,(0,r.computed)((()=>!!g.value&&m.value))),Gu({type:"Dialog",enabled:(0,r.computed)((()=>0===v.value)),element:d,onUpdate:(e,t,n)=>{if("Dialog"===t)return Tr(e,{[Ku.Add](){f.value.add(n),l.value+=1},[Ku.Remove](){f.value.delete(n),l.value-=1}})}});let b=function({slot:e=(0,r.ref)({}),name:t="Description",props:n={}}={}){let o=(0,r.ref)([]);return(0,r.provide)(Yu,{register:function(e){return o.value.push(e),()=>{let t=o.value.indexOf(e);-1!==t&&o.value.splice(t,1)}},slot:e,name:t,props:n}),(0,r.computed)((()=>o.value.length>0?o.value.join(" "):void 0))}({name:"DialogDescription",slot:(0,r.computed)((()=>({open:u.value})))}),w=(0,r.ref)(null),_={titleId:w,panelRef:(0,r.ref)(null),dialogState:v,setTitleId(e){w.value!==e&&(w.value=e)},close(){t("close",!1)}};function E(){var e,t,n;return[...Array.from(null!=(t=null==(e=h.value)?void 0:e.querySelectorAll("html > *, body > *, [data-headlessui-portal]"))?t:[]).filter((e=>!(e===document.body||e===document.head||!(e instanceof HTMLElement)||e.contains(Hr(p))||_.panelRef.value&&e.contains(_.panelRef.value)))),null!=(n=_.panelRef.value)?n:d.value]}return(0,r.provide)(nf,_),ho((()=>E()),((e,t)=>{_.close(),(0,r.nextTick)((()=>null==t?void 0:t.focus()))}),(0,r.computed)((()=>0===v.value&&!g.value))),Ru(null==(s=h.value)?void 0:s.defaultView,"keydown",(e=>{e.defaultPrevented||e.key===Ur.Escape&&0===v.value&&(g.value||(e.preventDefault(),e.stopPropagation(),_.close()))})),ef(h,m,(e=>{var t;return{containers:[...null!=(t=e.containers)?t:[],E]}})),(0,r.watchEffect)((e=>{if(0!==v.value)return;let t=Hr(d);if(!t)return;let n=new IntersectionObserver((e=>{for(let t of e)0===t.boundingClientRect.x&&0===t.boundingClientRect.y&&0===t.boundingClientRect.width&&0===t.boundingClientRect.height&&_.close()}));n.observe(t),e((()=>n.disconnect()))})),()=>{let{id:t,open:i,initialFocus:s,...a}=e,l={...n,ref:d,id:t,role:"dialog","aria-modal":0===v.value||void 0,"aria-labelledby":w.value,"aria-describedby":b.value},c={open:0===v.value};return(0,r.h)($u,{force:!0},(()=>[(0,r.h)(zu,(()=>(0,r.h)(qu,{target:d.value},(()=>(0,r.h)($u,{force:!1},(()=>(0,r.h)(Vu,{initialFocus:s,containers:f,features:m.value?Tr(y.value,{parent:Vu.features.RestoreFocus,leaf:Vu.features.All&~Vu.features.FocusLock}):Vu.features.None},(()=>jr({ourProps:l,theirProps:a,slot:c,attrs:n,slots:o,visible:0===v.value,features:Ar.RenderStrategy|Ar.Static,name:"Dialog"}))))))))),(0,r.h)(Ks,{features:Ws.Hidden,ref:p})]))}}}),af=((0,r.defineComponent)({name:"DialogOverlay",props:{as:{type:[Object,String],default:"div"},id:{type:String,default:()=>`headlessui-dialog-overlay-${Mr()}`}},setup(e,{attrs:t,slots:n}){let r=rf("DialogOverlay");function o(e){e.target===e.currentTarget&&(e.preventDefault(),e.stopPropagation(),r.close())}return()=>{let{id:i,...s}=e;return jr({ourProps:{id:i,"aria-hidden":!0,onClick:o},theirProps:s,slot:{open:0===r.dialogState.value},attrs:t,slots:n,name:"DialogOverlay"})}}}),(0,r.defineComponent)({name:"DialogBackdrop",props:{as:{type:[Object,String],default:"div"},id:{type:String,default:()=>`headlessui-dialog-backdrop-${Mr()}`}},inheritAttrs:!1,setup(e,{attrs:t,slots:n,expose:o}){let i=rf("DialogBackdrop"),s=(0,r.ref)(null);return o({el:s,$el:s}),(0,r.onMounted)((()=>{if(null===i.panelRef.value)throw new Error("A component is being used, but a component is missing.")})),()=>{let{id:o,...a}=e,l={id:o,ref:s,"aria-hidden":!0};return(0,r.h)($u,{force:!0},(()=>(0,r.h)(zu,(()=>jr({ourProps:l,theirProps:{...t,...a},slot:{open:0===i.dialogState.value},attrs:t,slots:n,name:"DialogBackdrop"})))))}}}),(0,r.defineComponent)({name:"DialogPanel",props:{as:{type:[Object,String],default:"div"},id:{type:String,default:()=>`headlessui-dialog-panel-${Mr()}`}},setup(e,{attrs:t,slots:n,expose:r}){let o=rf("DialogPanel");function i(e){e.stopPropagation()}return r({el:o.panelRef,$el:o.panelRef}),()=>{let{id:r,...s}=e;return jr({ourProps:{id:r,ref:o.panelRef,onClick:i},theirProps:s,slot:{open:0===o.dialogState.value},attrs:t,slots:n,name:"DialogPanel"})}}})),lf=(0,r.defineComponent)({name:"DialogTitle",props:{as:{type:[Object,String],default:"h2"},id:{type:String,default:()=>`headlessui-dialog-title-${Mr()}`}},setup(e,{attrs:t,slots:n}){let o=rf("DialogTitle");return(0,r.onMounted)((()=>{o.setTitleId(e.id),(0,r.onUnmounted)((()=>o.setTitleId(null)))})),()=>{let{id:r,...i}=e;return jr({ourProps:{id:r},theirProps:i,slot:{open:0===o.dialogState.value},attrs:t,slots:n,name:"DialogTitle"})}}});var cf=(0,r.createElementVNode)("div",{class:"fixed inset-0"},null,-1),uf={class:"fixed inset-0 overflow-hidden"},ff={class:"absolute inset-0 overflow-hidden"},df={class:"pointer-events-none fixed inset-y-0 right-0 flex max-w-full pl-10"},pf={class:"flex h-full flex-col overflow-y-scroll bg-white py-6 shadow-xl"},hf={class:"px-4 sm:px-6"},vf={class:"flex items-start justify-between"},mf={class:"ml-3 flex h-7 items-center"},gf=(0,r.createElementVNode)("span",{class:"sr-only"},"Close panel",-1),yf={class:"relative mt-6 flex-1 px-4 sm:px-6"},bf={class:"keyboard-shortcut"},wf={class:"shortcut"},_f=(0,r.createElementVNode)("span",{class:"description"},"Select a host",-1),Ef={class:"keyboard-shortcut"},xf={class:"shortcut"},kf=(0,r.createElementVNode)("span",{class:"description"},"Jump to file selection",-1),Sf={class:"keyboard-shortcut"},Of={class:"shortcut"},Cf=(0,r.createElementVNode)("span",{class:"description"},"Jump to logs",-1),Nf={class:"keyboard-shortcut"},Pf={class:"shortcut"},Tf=(0,r.createElementVNode)("span",{class:"description"},"Severity selection",-1),Rf={class:"keyboard-shortcut"},Af={class:"shortcut"},Vf=(0,r.createElementVNode)("span",{class:"description"},"Settings",-1),jf={class:"keyboard-shortcut"},Lf={class:"shortcut"},Bf=(0,r.createElementVNode)("span",{class:"description"},"Search",-1),If={class:"keyboard-shortcut"},Ff={class:"shortcut"},Df=(0,r.createElementVNode)("span",{class:"description"},"Refresh logs",-1),Mf={class:"keyboard-shortcut"},Uf={class:"shortcut"},$f=(0,r.createElementVNode)("span",{class:"description"},"Keyboard shortcuts help",-1);const zf={__name:"KeyboardShortcutsOverlay",setup:function(e){var t=Fi();return function(e,n){return(0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(Nu),{as:"template",show:(0,r.unref)(t).helpSlideOverOpen},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(sf),{as:"div",class:"relative z-20",onClose:n[1]||(n[1]=function(e){return(0,r.unref)(t).helpSlideOverOpen=!1})},{default:(0,r.withCtx)((function(){return[cf,(0,r.createElementVNode)("div",uf,[(0,r.createElementVNode)("div",ff,[(0,r.createElementVNode)("div",df,[(0,r.createVNode)((0,r.unref)(Ou),{as:"template",enter:"transform transition ease-in-out duration-200 sm:duration-300","enter-from":"translate-x-full","enter-to":"translate-x-0",leave:"transform transition ease-in-out duration-200 sm:duration-300","leave-from":"translate-x-0","leave-to":"translate-x-full"},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(af),{class:"pointer-events-auto w-screen max-w-md"},{default:(0,r.withCtx)((function(){return[(0,r.createElementVNode)("div",pf,[(0,r.createElementVNode)("div",hf,[(0,r.createElementVNode)("div",vf,[(0,r.createVNode)((0,r.unref)(lf),{class:"text-base font-semibold leading-6 text-gray-900"},{default:(0,r.withCtx)((function(){return[(0,r.createTextVNode)("Keyboard Shortcuts")]})),_:1}),(0,r.createElementVNode)("div",mf,[(0,r.createElementVNode)("button",{type:"button",class:"rounded-md bg-white text-gray-400 hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-brand-500 focus:ring-offset-2",onClick:n[0]||(n[0]=function(e){return(0,r.unref)(t).helpSlideOverOpen=!1})},[gf,(0,r.createVNode)((0,r.unref)(So),{class:"h-6 w-6","aria-hidden":"true"})])])])]),(0,r.createElementVNode)("div",yf,[(0,r.createElementVNode)("div",bf,[(0,r.createElementVNode)("span",wf,(0,r.toDisplayString)((0,r.unref)(Xi).Hosts),1),_f]),(0,r.createElementVNode)("div",Ef,[(0,r.createElementVNode)("span",xf,(0,r.toDisplayString)((0,r.unref)(Xi).Files),1),kf]),(0,r.createElementVNode)("div",Sf,[(0,r.createElementVNode)("span",Of,(0,r.toDisplayString)((0,r.unref)(Xi).Logs),1),Cf]),(0,r.createElementVNode)("div",Nf,[(0,r.createElementVNode)("span",Pf,(0,r.toDisplayString)((0,r.unref)(Xi).Severity),1),Tf]),(0,r.createElementVNode)("div",Rf,[(0,r.createElementVNode)("span",Af,(0,r.toDisplayString)((0,r.unref)(Xi).Settings),1),Vf]),(0,r.createElementVNode)("div",jf,[(0,r.createElementVNode)("span",Lf,(0,r.toDisplayString)((0,r.unref)(Xi).Search),1),Bf]),(0,r.createElementVNode)("div",If,[(0,r.createElementVNode)("span",Ff,(0,r.toDisplayString)((0,r.unref)(Xi).Refresh),1),Df]),(0,r.createElementVNode)("div",Mf,[(0,r.createElementVNode)("span",Uf,(0,r.toDisplayString)((0,r.unref)(Xi).ShortcutHelp),1),$f])])])]})),_:1})]})),_:1})])])])]})),_:1})]})),_:1},8,["show"])}}};function Hf(e){return Hf="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Hf(e)}function qf(){qf=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",s=o.asyncIterator||"@@asyncIterator",a=o.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,n){return e[t]=n}}function c(e,t,n,o){var i=t&&t.prototype instanceof d?t:d,s=Object.create(i.prototype),a=new S(o||[]);return r(s,"_invoke",{value:_(e,n,a)}),s}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var f={};function d(){}function p(){}function h(){}var v={};l(v,i,(function(){return this}));var m=Object.getPrototypeOf,g=m&&m(m(O([])));g&&g!==t&&n.call(g,i)&&(v=g);var y=h.prototype=d.prototype=Object.create(v);function b(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function w(e,t){function o(r,i,s,a){var l=u(e[r],e,i);if("throw"!==l.type){var c=l.arg,f=c.value;return f&&"object"==Hf(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){o("next",e,s,a)}),(function(e){o("throw",e,s,a)})):t.resolve(f).then((function(e){c.value=e,s(c)}),(function(e){return o("throw",e,s,a)}))}a(l.arg)}var i;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){o(e,n,t,r)}))}return i=i?i.then(r,r):r()}})}function _(e,t,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return C()}for(n.method=o,n.arg=i;;){var s=n.delegate;if(s){var a=E(s,n);if(a){if(a===f)continue;return a}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var l=u(e,t,n);if("normal"===l.type){if(r=n.done?"completed":"suspendedYield",l.arg===f)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(r="completed",n.method="throw",n.arg=l.arg)}}}function E(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,E(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),f;var o=u(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,f;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function x(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function k(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(x,this),this.reset(!0)}function O(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r=0;--o){var i=this.tryEntries[o],s=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var a=n.call(i,"catchLoc"),l=n.call(i,"finallyLoc");if(a&&l){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),k(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;k(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:O(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function Wf(e,t,n,r,o,i,s){try{var a=e[i](s),l=a.value}catch(e){return void n(e)}a.done?t(l):Promise.resolve(l).then(r,o)}var Kf={class:"md:pl-88 flex flex-col flex-1 min-h-screen max-h-screen max-w-full"},Gf={class:"absolute bottom-4 right-4 flex items-center"},Yf={class:"text-xs text-gray-500 dark:text-gray-400 mr-5 -mb-0.5"},Jf=(0,r.createElementVNode)("span",{class:"hidden md:inline"},"Memory: ",-1),Qf={class:"font-semibold"},Zf=(0,r.createElementVNode)("span",{class:"mx-1.5"},"·",-1),Xf=(0,r.createElementVNode)("span",{class:"hidden md:inline"},"Duration: ",-1),ed={class:"font-semibold"},td=(0,r.createElementVNode)("span",{class:"mx-1.5"},"·",-1),nd=(0,r.createElementVNode)("span",{class:"hidden md:inline"},"Version: ",-1),rd={class:"font-semibold"};const od={__name:"Home",setup:function(e){var t=Bo(),n=Fi(),o=Di(),i=Ai(),s=Vi(),a=Pr(),l=Nr();return(0,r.onBeforeMount)((function(){n.syncTheme(),document.addEventListener("keydown",rs)})),(0,r.onBeforeUnmount)((function(){document.removeEventListener("keydown",rs)})),(0,r.onMounted)((function(){setInterval(n.syncTheme,1e3)})),(0,r.watch)((function(){return a.query}),(function(e){o.selectFile(e.file||null),s.setPage(e.page||1),i.setQuery(e.query||""),n.loadLogs()}),{immediate:!0}),(0,r.watch)((function(){return a.query.host}),function(){var e,r=(e=qf().mark((function e(r){return qf().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.selectHost(r||null),r&&!t.selectedHostIdentifier&&zi(l,"host",null),o.reset(),e.next=5,o.loadFolders();case 5:n.loadLogs();case 6:case"end":return e.stop()}}),e)})),function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function s(e){Wf(i,r,o,s,a,"next",e)}function a(e){Wf(i,r,o,s,a,"throw",e)}s(void 0)}))});return function(e){return r.apply(this,arguments)}}(),{immediate:!0}),(0,r.onMounted)((function(){window.onresize=function(){n.setViewportDimensions(window.innerWidth,window.innerHeight)}})),function(e,t){var i;return(0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,null,[(0,r.createElementVNode)("div",{class:(0,r.normalizeClass)(["absolute z-20 top-0 bottom-10 bg-gray-100 dark:bg-gray-900 md:left-0 md:flex md:w-88 md:flex-col md:fixed md:inset-y-0",[(0,r.unref)(o).sidebarOpen?"left-0 right-0 md:left-auto md:right-auto":"-left-[200%] right-[200%] md:left-auto md:right-auto"]])},[(0,r.createVNode)(ll)],2),(0,r.createElementVNode)("div",Kf,[(0,r.createVNode)(pu,{class:"pb-16 md:pb-12"})]),(0,r.createElementVNode)("div",Gf,[(0,r.createElementVNode)("p",Yf,[null!==(i=(0,r.unref)(n).performance)&&void 0!==i&&i.requestTime?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:0},[(0,r.createElementVNode)("span",null,[Jf,(0,r.createElementVNode)("span",Qf,(0,r.toDisplayString)((0,r.unref)(n).performance.memoryUsage),1)]),Zf,(0,r.createElementVNode)("span",null,[Xf,(0,r.createElementVNode)("span",ed,(0,r.toDisplayString)((0,r.unref)(n).performance.requestTime),1)]),td],64)):(0,r.createCommentVNode)("",!0),(0,r.createElementVNode)("span",null,[nd,(0,r.createElementVNode)("span",rd,(0,r.toDisplayString)(e.LogViewer.version),1)])])]),(0,r.createVNode)(zf)],64)}}},id=od;function sd(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,s,a=[],l=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(a.push(r.value),a.length!==t);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw o}}return a}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return ad(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ad(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ad(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n""+e)),d=Xt.bind(null,lr),p=Xt.bind(null,cr);function h(e,r){if(r=Zt({},r||c.value),"string"==typeof e){const o=on(n,e,r.path),s=t.resolve({path:o.path},r),a=i.createHref(o.fullPath);return Zt(o,s,{params:p(s.params),hash:cr(o.hash),redirectedFrom:void 0,href:a})}let s;if("path"in e)s=Zt({},e,{path:on(n,e.path,r.path).path});else{const t=Zt({},e.params);for(const e in t)null==t[e]&&delete t[e];s=Zt({},e,{params:d(e.params)}),r.params=d(r.params)}const a=t.resolve(s,r),l=e.hash||"";a.params=f(p(a.params));const u=function(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}(o,Zt({},e,{hash:(h=l,sr(h).replace(nr,"{").replace(or,"}").replace(er,"^")),path:a.path}));var h;const v=i.createHref(u);return Zt({fullPath:u,hash:l,query:o===fr?dr(e.query):e.query||{}},a,{redirectedFrom:void 0,href:v})}function v(e){return"string"==typeof e?on(n,e,c.value.path):Zt({},e)}function m(e,t){if(u!==e)return Nn(8,{from:t,to:e})}function g(e){return b(e)}function y(e){const t=e.matched[e.matched.length-1];if(t&&t.redirect){const{redirect:n}=t;let r="function"==typeof n?n(e):n;return"string"==typeof r&&(r=r.includes("?")||r.includes("#")?r=v(r):{path:r},r.params={}),Zt({query:e.query,hash:e.hash,params:"path"in r?{}:e.params},r)}}function b(e,t){const n=u=h(e),r=c.value,i=e.state,s=e.force,a=!0===e.replace,l=y(n);if(l)return b(Zt(v(l),{state:"object"==typeof l?Zt({},i,l.state):i,force:s,replace:a}),t||n);const f=n;let d;return f.redirectedFrom=t,!s&&function(e,t,n){const r=t.matched.length-1,o=n.matched.length-1;return r>-1&&r===o&&an(t.matched[r],n.matched[o])&&ln(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}(o,r,n)&&(d=Nn(16,{to:f,from:r}),R(r,r,!0,!1)),(d?Promise.resolve(d):_(f,r)).catch((e=>Pn(e)?Pn(e,2)?e:T(e):P(e,f,r))).then((e=>{if(e){if(Pn(e,2))return b(Zt({replace:a},v(e.to),{state:"object"==typeof e.to?Zt({},i,e.to.state):i,force:s}),t||f)}else e=x(f,r,!0,a,i);return E(f,r,e),e}))}function w(e,t){const n=m(e,t);return n?Promise.reject(n):Promise.resolve()}function _(e,t){let n;const[r,o,i]=function(e,t){const n=[],r=[],o=[],i=Math.max(t.matched.length,e.matched.length);for(let s=0;san(e,i)))?r.push(i):n.push(i));const a=e.matched[s];a&&(t.matched.find((e=>an(e,a)))||o.push(a))}return[n,r,o]}(e,t);n=wr(r.reverse(),"beforeRouteLeave",e,t);for(const o of r)o.leaveGuards.forEach((r=>{n.push(br(r,e,t))}));const l=w.bind(null,e,t);return n.push(l),Cr(n).then((()=>{n=[];for(const r of s.list())n.push(br(r,e,t));return n.push(l),Cr(n)})).then((()=>{n=wr(o,"beforeRouteUpdate",e,t);for(const r of o)r.updateGuards.forEach((r=>{n.push(br(r,e,t))}));return n.push(l),Cr(n)})).then((()=>{n=[];for(const r of e.matched)if(r.beforeEnter&&!t.matched.includes(r))if(tn(r.beforeEnter))for(const o of r.beforeEnter)n.push(br(o,e,t));else n.push(br(r.beforeEnter,e,t));return n.push(l),Cr(n)})).then((()=>(e.matched.forEach((e=>e.enterCallbacks={})),n=wr(i,"beforeRouteEnter",e,t),n.push(l),Cr(n)))).then((()=>{n=[];for(const r of a.list())n.push(br(r,e,t));return n.push(l),Cr(n)})).catch((e=>Pn(e,8)?e:Promise.reject(e)))}function E(e,t,n){for(const r of l.list())r(e,t,n)}function x(e,t,n,r,o){const s=m(e,t);if(s)return s;const a=t===Sn,l=Jt?history.state:{};n&&(r||a?i.replace(e.fullPath,Zt({scroll:a&&l&&l.scroll},o)):i.push(e.fullPath,o)),c.value=e,R(e,t,n,a),T()}let k;function S(){k||(k=i.listen(((e,t,n)=>{if(!L.listening)return;const r=h(e),o=y(r);if(o)return void b(Zt(o,{replace:!0}),r).catch(en);u=r;const s=c.value;Jt&&function(e,t){bn.set(e,t)}(yn(s.fullPath,n.delta),mn()),_(r,s).catch((e=>Pn(e,12)?e:Pn(e,2)?(b(e.to,r).then((e=>{Pn(e,20)&&!n.delta&&n.type===fn.pop&&i.go(-1,!1)})).catch(en),Promise.reject()):(n.delta&&i.go(-n.delta,!1),P(e,r,s)))).then((e=>{(e=e||x(r,s,!1))&&(n.delta&&!Pn(e,8)?i.go(-n.delta,!1):n.type===fn.pop&&Pn(e,20)&&i.go(-1,!1)),E(r,s,e)})).catch(en)})))}let O,C=yr(),N=yr();function P(e,t,n){T(e);const r=N.list();return r.length&&r.forEach((r=>r(e,t,n))),Promise.reject(e)}function T(e){return O||(O=!e,S(),C.list().forEach((([t,n])=>e?n(e):t())),C.reset()),e}function R(t,n,o,i){const{scrollBehavior:s}=e;if(!Jt||!s)return Promise.resolve();const a=!o&&function(e){const t=bn.get(e);return bn.delete(e),t}(yn(t.fullPath,0))||(i||!o)&&history.state&&history.state.scroll||null;return(0,r.nextTick)().then((()=>s(t,n,a))).then((e=>e&&gn(e))).catch((e=>P(e,t,n)))}const A=e=>i.go(e);let V;const j=new Set,L={currentRoute:c,listening:!0,addRoute:function(e,n){let r,o;return kn(e)?(r=t.getRecordMatcher(e),o=n):o=e,t.addRoute(o,r)},removeRoute:function(e){const n=t.getRecordMatcher(e);n&&t.removeRoute(n)},hasRoute:function(e){return!!t.getRecordMatcher(e)},getRoutes:function(){return t.getRoutes().map((e=>e.record))},resolve:h,options:e,push:g,replace:function(e){return g(Zt(v(e),{replace:!0}))},go:A,back:()=>A(-1),forward:()=>A(1),beforeEach:s.add,beforeResolve:a.add,afterEach:l.add,onError:N.add,isReady:function(){return O&&c.value!==Sn?Promise.resolve():new Promise(((e,t)=>{C.add([e,t])}))},install(e){e.component("RouterLink",Er),e.component("RouterView",Or),e.config.globalProperties.$router=this,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>(0,r.unref)(c)}),Jt&&!V&&c.value===Sn&&(V=!0,g(i.location).catch((e=>{0})));const t={};for(const e in Sn)t[e]=(0,r.computed)((()=>c.value[e]));e.provide(vr,this),e.provide(mr,(0,r.reactive)(t)),e.provide(gr,c);const n=e.unmount;j.add(e),e.unmount=function(){j.delete(e),j.size<1&&(u=Sn,k&&k(),k=null,c.value=Sn,V=!1,O=!1),n()}}};return L}({routes:[{path:LogViewer.basePath,name:"home",component:id}],history:xn(),base:hd}),md=function(){const e=(0,r.effectScope)(!0),t=e.run((()=>(0,r.ref)({})));let n=[],i=[];const s=(0,r.markRaw)({install(e){v(s),o||(s._a=e,e.provide(m,s),e.config.globalProperties.$pinia=s,w&&W(e,s),i.forEach((e=>n.push(e))),i=[])},use(e){return this._a||o?n.push(e):i.push(e),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return w&&"undefined"!=typeof Proxy&&s.use(J),s}(),gd=(0,r.createApp)({router:vd});gd.use(vd),gd.use(md),gd.mixin({computed:{LogViewer:function(){return window.LogViewer}}}),gd.mount("#log-viewer")},742:(e,t)=>{"use strict";t.byteLength=function(e){var t=l(e),n=t[0],r=t[1];return 3*(n+r)/4-r},t.toByteArray=function(e){var t,n,i=l(e),s=i[0],a=i[1],c=new o(function(e,t,n){return 3*(t+n)/4-n}(0,s,a)),u=0,f=a>0?s-4:s;for(n=0;n>16&255,c[u++]=t>>8&255,c[u++]=255&t;2===a&&(t=r[e.charCodeAt(n)]<<2|r[e.charCodeAt(n+1)]>>4,c[u++]=255&t);1===a&&(t=r[e.charCodeAt(n)]<<10|r[e.charCodeAt(n+1)]<<4|r[e.charCodeAt(n+2)]>>2,c[u++]=t>>8&255,c[u++]=255&t);return c},t.fromByteArray=function(e){for(var t,r=e.length,o=r%3,i=[],s=16383,a=0,l=r-o;al?l:a+s));1===o?(t=e[r-1],i.push(n[t>>2]+n[t<<4&63]+"==")):2===o&&(t=(e[r-2]<<8)+e[r-1],i.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+"="));return i.join("")};for(var n=[],r=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,a=i.length;s0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function c(e,t,r){for(var o,i,s=[],a=t;a>18&63]+n[i>>12&63]+n[i>>6&63]+n[63&i]);return s.join("")}r["-".charCodeAt(0)]=62,r["_".charCodeAt(0)]=63},764:(e,t,n)=>{"use strict";var r=n(742),o=n(645),i=n(826);function s(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(e,t){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|e}function h(e,t){if(l.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return U(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return $(e).length;default:if(r)return U(e).length;t=(""+t).toLowerCase(),r=!0}}function v(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return T(this,t,n);case"utf8":case"utf-8":return O(this,t,n);case"ascii":return N(this,t,n);case"latin1":case"binary":return P(this,t,n);case"base64":return S(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function m(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function g(e,t,n,r,o){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=o?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(o)return-1;n=e.length-1}else if(n<0){if(!o)return-1;n=0}if("string"==typeof t&&(t=l.from(t,r)),l.isBuffer(t))return 0===t.length?-1:y(e,t,n,r,o);if("number"==typeof t)return t&=255,l.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):y(e,[t],n,r,o);throw new TypeError("val must be string, number or Buffer")}function y(e,t,n,r,o){var i,s=1,a=e.length,l=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;s=2,a/=2,l/=2,n/=2}function c(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(o){var u=-1;for(i=n;ia&&(n=a-l),i=n;i>=0;i--){for(var f=!0,d=0;do&&(r=o):r=o;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var s=0;s>8,o=n%256,i.push(o),i.push(r);return i}(t,e.length-n),e,n,r)}function S(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function O(e,t,n){n=Math.min(e.length,n);for(var r=[],o=t;o239?4:c>223?3:c>191?2:1;if(o+f<=n)switch(f){case 1:c<128&&(u=c);break;case 2:128==(192&(i=e[o+1]))&&(l=(31&c)<<6|63&i)>127&&(u=l);break;case 3:i=e[o+1],s=e[o+2],128==(192&i)&&128==(192&s)&&(l=(15&c)<<12|(63&i)<<6|63&s)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:i=e[o+1],s=e[o+2],a=e[o+3],128==(192&i)&&128==(192&s)&&128==(192&a)&&(l=(15&c)<<18|(63&i)<<12|(63&s)<<6|63&a)>65535&&l<1114112&&(u=l)}null===u?(u=65533,f=1):u>65535&&(u-=65536,r.push(u>>>10&1023|55296),u=56320|1023&u),r.push(u),o+=f}return function(e){var t=e.length;if(t<=C)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),""},l.prototype.compare=function(e,t,n,r,o){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),t<0||n>e.length||r<0||o>this.length)throw new RangeError("out of range index");if(r>=o&&t>=n)return 0;if(r>=o)return-1;if(t>=n)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(r>>>=0),s=(n>>>=0)-(t>>>=0),a=Math.min(i,s),c=this.slice(r,o),u=e.slice(t,n),f=0;fo)&&(n=o),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return b(this,e,t,n);case"utf8":case"utf-8":return w(this,e,t,n);case"ascii":return _(this,e,t,n);case"latin1":case"binary":return E(this,e,t,n);case"base64":return x(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return k(this,e,t,n);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var C=4096;function N(e,t,n){var r="";n=Math.min(e.length,n);for(var o=t;or)&&(n=r);for(var o="",i=t;in)throw new RangeError("Trying to access beyond buffer length")}function V(e,t,n,r,o,i){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function j(e,t,n,r){t<0&&(t=65535+t+1);for(var o=0,i=Math.min(e.length-n,2);o>>8*(r?o:1-o)}function L(e,t,n,r){t<0&&(t=4294967295+t+1);for(var o=0,i=Math.min(e.length-n,4);o>>8*(r?o:3-o)&255}function B(e,t,n,r,o,i){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function I(e,t,n,r,i){return i||B(e,0,n,4),o.write(e,t,n,r,23,4),n+4}function F(e,t,n,r,i){return i||B(e,0,n,8),o.write(e,t,n,r,52,8),n+8}l.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t0&&(o*=256);)r+=this[e+--t]*o;return r},l.prototype.readUInt8=function(e,t){return t||A(e,1,this.length),this[e]},l.prototype.readUInt16LE=function(e,t){return t||A(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUInt16BE=function(e,t){return t||A(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUInt32LE=function(e,t){return t||A(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUInt32BE=function(e,t){return t||A(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||A(e,t,this.length);for(var r=this[e],o=1,i=0;++i=(o*=128)&&(r-=Math.pow(2,8*t)),r},l.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||A(e,t,this.length);for(var r=t,o=1,i=this[e+--r];r>0&&(o*=256);)i+=this[e+--r]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},l.prototype.readInt8=function(e,t){return t||A(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){t||A(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt16BE=function(e,t){t||A(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt32LE=function(e,t){return t||A(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return t||A(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return t||A(e,4,this.length),o.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return t||A(e,4,this.length),o.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return t||A(e,8,this.length),o.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return t||A(e,8,this.length),o.read(this,e,!1,52,8)},l.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||V(this,e,t,n,Math.pow(2,8*n)-1,0);var o=1,i=0;for(this[t]=255&e;++i=0&&(i*=256);)this[t+o]=e/i&255;return t+n},l.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||V(this,e,t,1,255,0),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},l.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||V(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):j(this,e,t,!0),t+2},l.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||V(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):j(this,e,t,!1),t+2},l.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||V(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):L(this,e,t,!0),t+4},l.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||V(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):L(this,e,t,!1),t+4},l.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);V(this,e,t,n,o-1,-o)}var i=0,s=1,a=0;for(this[t]=255&e;++i>0)-a&255;return t+n},l.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);V(this,e,t,n,o-1,-o)}var i=n-1,s=1,a=0;for(this[t+i]=255&e;--i>=0&&(s*=256);)e<0&&0===a&&0!==this[t+i+1]&&(a=1),this[t+i]=(e/s>>0)-a&255;return t+n},l.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||V(this,e,t,1,127,-128),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||V(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):j(this,e,t,!0),t+2},l.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||V(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):j(this,e,t,!1),t+2},l.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||V(this,e,t,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):L(this,e,t,!0),t+4},l.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||V(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):L(this,e,t,!1),t+4},l.prototype.writeFloatLE=function(e,t,n){return I(this,e,t,!0,n)},l.prototype.writeFloatBE=function(e,t,n){return I(this,e,t,!1,n)},l.prototype.writeDoubleLE=function(e,t,n){return F(this,e,t,!0,n)},l.prototype.writeDoubleBE=function(e,t,n){return F(this,e,t,!1,n)},l.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--o)e[o+t]=this[o+n];else if(i<1e3||!l.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i55295&&n<57344){if(!o){if(n>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(s+1===r){(t-=3)>-1&&i.push(239,191,189);continue}o=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),o=n;continue}n=65536+(o-55296<<10|n-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function $(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(D,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function z(e,t,n,r){for(var o=0;o=t.length||o>=e.length);++o)t[o+n]=e[o];return o}},645:(e,t)=>{t.read=function(e,t,n,r,o){var i,s,a=8*o-r-1,l=(1<>1,u=-7,f=n?o-1:0,d=n?-1:1,p=e[t+f];for(f+=d,i=p&(1<<-u)-1,p>>=-u,u+=a;u>0;i=256*i+e[t+f],f+=d,u-=8);for(s=i&(1<<-u)-1,i>>=-u,u+=r;u>0;s=256*s+e[t+f],f+=d,u-=8);if(0===i)i=1-c;else{if(i===l)return s?NaN:1/0*(p?-1:1);s+=Math.pow(2,r),i-=c}return(p?-1:1)*s*Math.pow(2,i-r)},t.write=function(e,t,n,r,o,i){var s,a,l,c=8*i-o-1,u=(1<>1,d=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?0:i-1,h=r?1:-1,v=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=u):(s=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-s))<1&&(s--,l*=2),(t+=s+f>=1?d/l:d*Math.pow(2,1-f))*l>=2&&(s++,l/=2),s+f>=u?(a=0,s=u):s+f>=1?(a=(t*l-1)*Math.pow(2,o),s+=f):(a=t*Math.pow(2,f-1)*Math.pow(2,o),s=0));o>=8;e[n+p]=255&a,p+=h,a/=256,o-=8);for(s=s<0;e[n+p]=255&s,p+=h,s/=256,c-=8);e[n+p-h]|=128*v}},826:e=>{var t={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==t.call(e)}},486:function(e,t,n){var r;e=n.nmd(e),function(){var o,i=200,s="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",a="Expected a function",l="Invalid `variable` option passed into `_.template`",c="__lodash_hash_undefined__",u=500,f="__lodash_placeholder__",d=1,p=2,h=4,v=1,m=2,g=1,y=2,b=4,w=8,_=16,E=32,x=64,k=128,S=256,O=512,C=30,N="...",P=800,T=16,R=1,A=2,V=1/0,j=9007199254740991,L=17976931348623157e292,B=NaN,I=4294967295,F=I-1,D=I>>>1,M=[["ary",k],["bind",g],["bindKey",y],["curry",w],["curryRight",_],["flip",O],["partial",E],["partialRight",x],["rearg",S]],U="[object Arguments]",$="[object Array]",z="[object AsyncFunction]",H="[object Boolean]",q="[object Date]",W="[object DOMException]",K="[object Error]",G="[object Function]",Y="[object GeneratorFunction]",J="[object Map]",Q="[object Number]",Z="[object Null]",X="[object Object]",ee="[object Promise]",te="[object Proxy]",ne="[object RegExp]",re="[object Set]",oe="[object String]",ie="[object Symbol]",se="[object Undefined]",ae="[object WeakMap]",le="[object WeakSet]",ce="[object ArrayBuffer]",ue="[object DataView]",fe="[object Float32Array]",de="[object Float64Array]",pe="[object Int8Array]",he="[object Int16Array]",ve="[object Int32Array]",me="[object Uint8Array]",ge="[object Uint8ClampedArray]",ye="[object Uint16Array]",be="[object Uint32Array]",we=/\b__p \+= '';/g,_e=/\b(__p \+=) '' \+/g,Ee=/(__e\(.*?\)|\b__t\)) \+\n'';/g,xe=/&(?:amp|lt|gt|quot|#39);/g,ke=/[&<>"']/g,Se=RegExp(xe.source),Oe=RegExp(ke.source),Ce=/<%-([\s\S]+?)%>/g,Ne=/<%([\s\S]+?)%>/g,Pe=/<%=([\s\S]+?)%>/g,Te=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Re=/^\w*$/,Ae=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ve=/[\\^$.*+?()[\]{}|]/g,je=RegExp(Ve.source),Le=/^\s+/,Be=/\s/,Ie=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Fe=/\{\n\/\* \[wrapped with (.+)\] \*/,De=/,? & /,Me=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Ue=/[()=,{}\[\]\/\s]/,$e=/\\(\\)?/g,ze=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,He=/\w*$/,qe=/^[-+]0x[0-9a-f]+$/i,We=/^0b[01]+$/i,Ke=/^\[object .+?Constructor\]$/,Ge=/^0o[0-7]+$/i,Ye=/^(?:0|[1-9]\d*)$/,Je=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Qe=/($^)/,Ze=/['\n\r\u2028\u2029\\]/g,Xe="\\ud800-\\udfff",et="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",tt="\\u2700-\\u27bf",nt="a-z\\xdf-\\xf6\\xf8-\\xff",rt="A-Z\\xc0-\\xd6\\xd8-\\xde",ot="\\ufe0e\\ufe0f",it="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",st="['’]",at="["+Xe+"]",lt="["+it+"]",ct="["+et+"]",ut="\\d+",ft="["+tt+"]",dt="["+nt+"]",pt="[^"+Xe+it+ut+tt+nt+rt+"]",ht="\\ud83c[\\udffb-\\udfff]",vt="[^"+Xe+"]",mt="(?:\\ud83c[\\udde6-\\uddff]){2}",gt="[\\ud800-\\udbff][\\udc00-\\udfff]",yt="["+rt+"]",bt="\\u200d",wt="(?:"+dt+"|"+pt+")",_t="(?:"+yt+"|"+pt+")",Et="(?:['’](?:d|ll|m|re|s|t|ve))?",xt="(?:['’](?:D|LL|M|RE|S|T|VE))?",kt="(?:"+ct+"|"+ht+")"+"?",St="["+ot+"]?",Ot=St+kt+("(?:"+bt+"(?:"+[vt,mt,gt].join("|")+")"+St+kt+")*"),Ct="(?:"+[ft,mt,gt].join("|")+")"+Ot,Nt="(?:"+[vt+ct+"?",ct,mt,gt,at].join("|")+")",Pt=RegExp(st,"g"),Tt=RegExp(ct,"g"),Rt=RegExp(ht+"(?="+ht+")|"+Nt+Ot,"g"),At=RegExp([yt+"?"+dt+"+"+Et+"(?="+[lt,yt,"$"].join("|")+")",_t+"+"+xt+"(?="+[lt,yt+wt,"$"].join("|")+")",yt+"?"+wt+"+"+Et,yt+"+"+xt,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",ut,Ct].join("|"),"g"),Vt=RegExp("["+bt+Xe+et+ot+"]"),jt=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Lt=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Bt=-1,It={};It[fe]=It[de]=It[pe]=It[he]=It[ve]=It[me]=It[ge]=It[ye]=It[be]=!0,It[U]=It[$]=It[ce]=It[H]=It[ue]=It[q]=It[K]=It[G]=It[J]=It[Q]=It[X]=It[ne]=It[re]=It[oe]=It[ae]=!1;var Ft={};Ft[U]=Ft[$]=Ft[ce]=Ft[ue]=Ft[H]=Ft[q]=Ft[fe]=Ft[de]=Ft[pe]=Ft[he]=Ft[ve]=Ft[J]=Ft[Q]=Ft[X]=Ft[ne]=Ft[re]=Ft[oe]=Ft[ie]=Ft[me]=Ft[ge]=Ft[ye]=Ft[be]=!0,Ft[K]=Ft[G]=Ft[ae]=!1;var Dt={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Mt=parseFloat,Ut=parseInt,$t="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,zt="object"==typeof self&&self&&self.Object===Object&&self,Ht=$t||zt||Function("return this")(),qt=t&&!t.nodeType&&t,Wt=qt&&e&&!e.nodeType&&e,Kt=Wt&&Wt.exports===qt,Gt=Kt&&$t.process,Yt=function(){try{var e=Wt&&Wt.require&&Wt.require("util").types;return e||Gt&&Gt.binding&&Gt.binding("util")}catch(e){}}(),Jt=Yt&&Yt.isArrayBuffer,Qt=Yt&&Yt.isDate,Zt=Yt&&Yt.isMap,Xt=Yt&&Yt.isRegExp,en=Yt&&Yt.isSet,tn=Yt&&Yt.isTypedArray;function nn(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function rn(e,t,n,r){for(var o=-1,i=null==e?0:e.length;++o-1}function un(e,t,n){for(var r=-1,o=null==e?0:e.length;++r-1;);return n}function Vn(e,t){for(var n=e.length;n--&&bn(t,e[n],0)>-1;);return n}var jn=kn({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"}),Ln=kn({"&":"&","<":"<",">":">",'"':""","'":"'"});function Bn(e){return"\\"+Dt[e]}function In(e){return Vt.test(e)}function Fn(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}function Dn(e,t){return function(n){return e(t(n))}}function Mn(e,t){for(var n=-1,r=e.length,o=0,i=[];++n",""":'"',"'":"'"});var Kn=function e(t){var n,r=(t=null==t?Ht:Kn.defaults(Ht.Object(),t,Kn.pick(Ht,Lt))).Array,Be=t.Date,Xe=t.Error,et=t.Function,tt=t.Math,nt=t.Object,rt=t.RegExp,ot=t.String,it=t.TypeError,st=r.prototype,at=et.prototype,lt=nt.prototype,ct=t["__core-js_shared__"],ut=at.toString,ft=lt.hasOwnProperty,dt=0,pt=(n=/[^.]+$/.exec(ct&&ct.keys&&ct.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",ht=lt.toString,vt=ut.call(nt),mt=Ht._,gt=rt("^"+ut.call(ft).replace(Ve,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),yt=Kt?t.Buffer:o,bt=t.Symbol,wt=t.Uint8Array,_t=yt?yt.allocUnsafe:o,Et=Dn(nt.getPrototypeOf,nt),xt=nt.create,kt=lt.propertyIsEnumerable,St=st.splice,Ot=bt?bt.isConcatSpreadable:o,Ct=bt?bt.iterator:o,Nt=bt?bt.toStringTag:o,Rt=function(){try{var e=$i(nt,"defineProperty");return e({},"",{}),e}catch(e){}}(),Vt=t.clearTimeout!==Ht.clearTimeout&&t.clearTimeout,Dt=Be&&Be.now!==Ht.Date.now&&Be.now,$t=t.setTimeout!==Ht.setTimeout&&t.setTimeout,zt=tt.ceil,qt=tt.floor,Wt=nt.getOwnPropertySymbols,Gt=yt?yt.isBuffer:o,Yt=t.isFinite,mn=st.join,kn=Dn(nt.keys,nt),Gn=tt.max,Yn=tt.min,Jn=Be.now,Qn=t.parseInt,Zn=tt.random,Xn=st.reverse,er=$i(t,"DataView"),tr=$i(t,"Map"),nr=$i(t,"Promise"),rr=$i(t,"Set"),or=$i(t,"WeakMap"),ir=$i(nt,"create"),sr=or&&new or,ar={},lr=hs(er),cr=hs(tr),ur=hs(nr),fr=hs(rr),dr=hs(or),pr=bt?bt.prototype:o,hr=pr?pr.valueOf:o,vr=pr?pr.toString:o;function mr(e){if(Ra(e)&&!wa(e)&&!(e instanceof wr)){if(e instanceof br)return e;if(ft.call(e,"__wrapped__"))return vs(e)}return new br(e)}var gr=function(){function e(){}return function(t){if(!Ta(t))return{};if(xt)return xt(t);e.prototype=t;var n=new e;return e.prototype=o,n}}();function yr(){}function br(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=o}function wr(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=I,this.__views__=[]}function _r(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t=t?e:t)),e}function Fr(e,t,n,r,i,s){var a,l=t&d,c=t&p,u=t&h;if(n&&(a=i?n(e,r,i,s):n(e)),a!==o)return a;if(!Ta(e))return e;var f=wa(e);if(f){if(a=function(e){var t=e.length,n=new e.constructor(t);t&&"string"==typeof e[0]&&ft.call(e,"index")&&(n.index=e.index,n.input=e.input);return n}(e),!l)return si(e,a)}else{var v=qi(e),m=v==G||v==Y;if(ka(e))return ei(e,l);if(v==X||v==U||m&&!i){if(a=c||m?{}:Ki(e),!l)return c?function(e,t){return ai(e,Hi(e),t)}(e,function(e,t){return e&&ai(t,ll(t),e)}(a,e)):function(e,t){return ai(e,zi(e),t)}(e,jr(a,e))}else{if(!Ft[v])return i?e:{};a=function(e,t,n){var r=e.constructor;switch(t){case ce:return ti(e);case H:case q:return new r(+e);case ue:return function(e,t){var n=t?ti(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case fe:case de:case pe:case he:case ve:case me:case ge:case ye:case be:return ni(e,n);case J:return new r;case Q:case oe:return new r(e);case ne:return function(e){var t=new e.constructor(e.source,He.exec(e));return t.lastIndex=e.lastIndex,t}(e);case re:return new r;case ie:return o=e,hr?nt(hr.call(o)):{}}var o}(e,v,l)}}s||(s=new Sr);var g=s.get(e);if(g)return g;s.set(e,a),Ba(e)?e.forEach((function(r){a.add(Fr(r,t,n,r,e,s))})):Aa(e)&&e.forEach((function(r,o){a.set(o,Fr(r,t,n,o,e,s))}));var y=f?o:(u?c?Li:ji:c?ll:al)(e);return on(y||e,(function(r,o){y&&(r=e[o=r]),Rr(a,o,Fr(r,t,n,o,e,s))})),a}function Dr(e,t,n){var r=n.length;if(null==e)return!r;for(e=nt(e);r--;){var i=n[r],s=t[i],a=e[i];if(a===o&&!(i in e)||!s(a))return!1}return!0}function Mr(e,t,n){if("function"!=typeof e)throw new it(a);return as((function(){e.apply(o,n)}),t)}function Ur(e,t,n,r){var o=-1,s=cn,a=!0,l=e.length,c=[],u=t.length;if(!l)return c;n&&(t=fn(t,Pn(n))),r?(s=un,a=!1):t.length>=i&&(s=Rn,a=!1,t=new kr(t));e:for(;++o-1},Er.prototype.set=function(e,t){var n=this.__data__,r=Ar(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},xr.prototype.clear=function(){this.size=0,this.__data__={hash:new _r,map:new(tr||Er),string:new _r}},xr.prototype.delete=function(e){var t=Mi(this,e).delete(e);return this.size-=t?1:0,t},xr.prototype.get=function(e){return Mi(this,e).get(e)},xr.prototype.has=function(e){return Mi(this,e).has(e)},xr.prototype.set=function(e,t){var n=Mi(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},kr.prototype.add=kr.prototype.push=function(e){return this.__data__.set(e,c),this},kr.prototype.has=function(e){return this.__data__.has(e)},Sr.prototype.clear=function(){this.__data__=new Er,this.size=0},Sr.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Sr.prototype.get=function(e){return this.__data__.get(e)},Sr.prototype.has=function(e){return this.__data__.has(e)},Sr.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Er){var r=n.__data__;if(!tr||r.length0&&n(a)?t>1?Kr(a,t-1,n,r,o):dn(o,a):r||(o[o.length]=a)}return o}var Gr=fi(),Yr=fi(!0);function Jr(e,t){return e&&Gr(e,t,al)}function Qr(e,t){return e&&Yr(e,t,al)}function Zr(e,t){return ln(t,(function(t){return Ca(e[t])}))}function Xr(e,t){for(var n=0,r=(t=Jo(t,e)).length;null!=e&&nt}function ro(e,t){return null!=e&&ft.call(e,t)}function oo(e,t){return null!=e&&t in nt(e)}function io(e,t,n){for(var i=n?un:cn,s=e[0].length,a=e.length,l=a,c=r(a),u=1/0,f=[];l--;){var d=e[l];l&&t&&(d=fn(d,Pn(t))),u=Yn(d.length,u),c[l]=!n&&(t||s>=120&&d.length>=120)?new kr(l&&d):o}d=e[0];var p=-1,h=c[0];e:for(;++p=a?l:l*("desc"==n[r]?-1:1)}return e.index-t.index}(e,t,n)}))}function Eo(e,t,n){for(var r=-1,o=t.length,i={};++r-1;)a!==e&&St.call(a,l,1),St.call(e,l,1);return e}function ko(e,t){for(var n=e?t.length:0,r=n-1;n--;){var o=t[n];if(n==r||o!==i){var i=o;Yi(o)?St.call(e,o,1):$o(e,o)}}return e}function So(e,t){return e+qt(Zn()*(t-e+1))}function Oo(e,t){var n="";if(!e||t<1||t>j)return n;do{t%2&&(n+=e),(t=qt(t/2))&&(e+=e)}while(t);return n}function Co(e,t){return ls(rs(e,t,Vl),e+"")}function No(e){return Cr(ml(e))}function Po(e,t){var n=ml(e);return fs(n,Ir(t,0,n.length))}function To(e,t,n,r){if(!Ta(e))return e;for(var i=-1,s=(t=Jo(t,e)).length,a=s-1,l=e;null!=l&&++ii?0:i+t),(n=n>i?i:n)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var s=r(i);++o>>1,s=e[i];null!==s&&!Fa(s)&&(n?s<=t:s=i){var u=t?null:Oi(e);if(u)return Un(u);a=!1,o=Rn,c=new kr}else c=t?[]:l;e:for(;++r=r?e:jo(e,t,n)}var Xo=Vt||function(e){return Ht.clearTimeout(e)};function ei(e,t){if(t)return e.slice();var n=e.length,r=_t?_t(n):new e.constructor(n);return e.copy(r),r}function ti(e){var t=new e.constructor(e.byteLength);return new wt(t).set(new wt(e)),t}function ni(e,t){var n=t?ti(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function ri(e,t){if(e!==t){var n=e!==o,r=null===e,i=e==e,s=Fa(e),a=t!==o,l=null===t,c=t==t,u=Fa(t);if(!l&&!u&&!s&&e>t||s&&a&&c&&!l&&!u||r&&a&&c||!n&&c||!i)return 1;if(!r&&!s&&!u&&e1?n[i-1]:o,a=i>2?n[2]:o;for(s=e.length>3&&"function"==typeof s?(i--,s):o,a&&Ji(n[0],n[1],a)&&(s=i<3?o:s,i=1),t=nt(t);++r-1?i[s?t[a]:a]:o}}function mi(e){return Vi((function(t){var n=t.length,r=n,i=br.prototype.thru;for(e&&t.reverse();r--;){var s=t[r];if("function"!=typeof s)throw new it(a);if(i&&!l&&"wrapper"==Ii(s))var l=new br([],!0)}for(r=l?r:n;++r1&&w.reverse(),d&&ul))return!1;var u=s.get(e),f=s.get(t);if(u&&f)return u==t&&f==e;var d=-1,p=!0,h=n&m?new kr:o;for(s.set(e,t),s.set(t,e);++d-1&&e%1==0&&e1?"& ":"")+t[r],t=t.join(n>2?", ":" "),e.replace(Ie,"{\n/* [wrapped with "+t+"] */\n")}(r,function(e,t){return on(M,(function(n){var r="_."+n[0];t&n[1]&&!cn(e,r)&&e.push(r)})),e.sort()}(function(e){var t=e.match(Fe);return t?t[1].split(De):[]}(r),n)))}function us(e){var t=0,n=0;return function(){var r=Jn(),i=T-(r-n);if(n=r,i>0){if(++t>=P)return arguments[0]}else t=0;return e.apply(o,arguments)}}function fs(e,t){var n=-1,r=e.length,i=r-1;for(t=t===o?r:t;++n1?e[t-1]:o;return n="function"==typeof n?(e.pop(),n):o,Ls(e,n)}));function $s(e){var t=mr(e);return t.__chain__=!0,t}function zs(e,t){return t(e)}var Hs=Vi((function(e){var t=e.length,n=t?e[0]:0,r=this.__wrapped__,i=function(t){return Br(t,e)};return!(t>1||this.__actions__.length)&&r instanceof wr&&Yi(n)?((r=r.slice(n,+n+(t?1:0))).__actions__.push({func:zs,args:[i],thisArg:o}),new br(r,this.__chain__).thru((function(e){return t&&!e.length&&e.push(o),e}))):this.thru(i)}));var qs=li((function(e,t,n){ft.call(e,n)?++e[n]:Lr(e,n,1)}));var Ws=vi(bs),Ks=vi(ws);function Gs(e,t){return(wa(e)?on:$r)(e,Di(t,3))}function Ys(e,t){return(wa(e)?sn:zr)(e,Di(t,3))}var Js=li((function(e,t,n){ft.call(e,n)?e[n].push(t):Lr(e,n,[t])}));var Qs=Co((function(e,t,n){var o=-1,i="function"==typeof t,s=Ea(e)?r(e.length):[];return $r(e,(function(e){s[++o]=i?nn(t,e,n):so(e,t,n)})),s})),Zs=li((function(e,t,n){Lr(e,n,t)}));function Xs(e,t){return(wa(e)?fn:mo)(e,Di(t,3))}var ea=li((function(e,t,n){e[n?0:1].push(t)}),(function(){return[[],[]]}));var ta=Co((function(e,t){if(null==e)return[];var n=t.length;return n>1&&Ji(e,t[0],t[1])?t=[]:n>2&&Ji(t[0],t[1],t[2])&&(t=[t[0]]),_o(e,Kr(t,1),[])})),na=Dt||function(){return Ht.Date.now()};function ra(e,t,n){return t=n?o:t,t=e&&null==t?e.length:t,Ni(e,k,o,o,o,o,t)}function oa(e,t){var n;if("function"!=typeof t)throw new it(a);return e=Ha(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=o),n}}var ia=Co((function(e,t,n){var r=g;if(n.length){var o=Mn(n,Fi(ia));r|=E}return Ni(e,r,t,n,o)})),sa=Co((function(e,t,n){var r=g|y;if(n.length){var o=Mn(n,Fi(sa));r|=E}return Ni(t,r,e,n,o)}));function aa(e,t,n){var r,i,s,l,c,u,f=0,d=!1,p=!1,h=!0;if("function"!=typeof e)throw new it(a);function v(t){var n=r,s=i;return r=i=o,f=t,l=e.apply(s,n)}function m(e){var n=e-u;return u===o||n>=t||n<0||p&&e-f>=s}function g(){var e=na();if(m(e))return y(e);c=as(g,function(e){var n=t-(e-u);return p?Yn(n,s-(e-f)):n}(e))}function y(e){return c=o,h&&r?v(e):(r=i=o,l)}function b(){var e=na(),n=m(e);if(r=arguments,i=this,u=e,n){if(c===o)return function(e){return f=e,c=as(g,t),d?v(e):l}(u);if(p)return Xo(c),c=as(g,t),v(u)}return c===o&&(c=as(g,t)),l}return t=Wa(t)||0,Ta(n)&&(d=!!n.leading,s=(p="maxWait"in n)?Gn(Wa(n.maxWait)||0,t):s,h="trailing"in n?!!n.trailing:h),b.cancel=function(){c!==o&&Xo(c),f=0,r=u=i=c=o},b.flush=function(){return c===o?l:y(na())},b}var la=Co((function(e,t){return Mr(e,1,t)})),ca=Co((function(e,t,n){return Mr(e,Wa(t)||0,n)}));function ua(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new it(a);var n=function(){var r=arguments,o=t?t.apply(this,r):r[0],i=n.cache;if(i.has(o))return i.get(o);var s=e.apply(this,r);return n.cache=i.set(o,s)||i,s};return n.cache=new(ua.Cache||xr),n}function fa(e){if("function"!=typeof e)throw new it(a);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}ua.Cache=xr;var da=Qo((function(e,t){var n=(t=1==t.length&&wa(t[0])?fn(t[0],Pn(Di())):fn(Kr(t,1),Pn(Di()))).length;return Co((function(r){for(var o=-1,i=Yn(r.length,n);++o=t})),ba=ao(function(){return arguments}())?ao:function(e){return Ra(e)&&ft.call(e,"callee")&&!kt.call(e,"callee")},wa=r.isArray,_a=Jt?Pn(Jt):function(e){return Ra(e)&&to(e)==ce};function Ea(e){return null!=e&&Pa(e.length)&&!Ca(e)}function xa(e){return Ra(e)&&Ea(e)}var ka=Gt||Wl,Sa=Qt?Pn(Qt):function(e){return Ra(e)&&to(e)==q};function Oa(e){if(!Ra(e))return!1;var t=to(e);return t==K||t==W||"string"==typeof e.message&&"string"==typeof e.name&&!ja(e)}function Ca(e){if(!Ta(e))return!1;var t=to(e);return t==G||t==Y||t==z||t==te}function Na(e){return"number"==typeof e&&e==Ha(e)}function Pa(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=j}function Ta(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Ra(e){return null!=e&&"object"==typeof e}var Aa=Zt?Pn(Zt):function(e){return Ra(e)&&qi(e)==J};function Va(e){return"number"==typeof e||Ra(e)&&to(e)==Q}function ja(e){if(!Ra(e)||to(e)!=X)return!1;var t=Et(e);if(null===t)return!0;var n=ft.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&ut.call(n)==vt}var La=Xt?Pn(Xt):function(e){return Ra(e)&&to(e)==ne};var Ba=en?Pn(en):function(e){return Ra(e)&&qi(e)==re};function Ia(e){return"string"==typeof e||!wa(e)&&Ra(e)&&to(e)==oe}function Fa(e){return"symbol"==typeof e||Ra(e)&&to(e)==ie}var Da=tn?Pn(tn):function(e){return Ra(e)&&Pa(e.length)&&!!It[to(e)]};var Ma=xi(vo),Ua=xi((function(e,t){return e<=t}));function $a(e){if(!e)return[];if(Ea(e))return Ia(e)?Hn(e):si(e);if(Ct&&e[Ct])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[Ct]());var t=qi(e);return(t==J?Fn:t==re?Un:ml)(e)}function za(e){return e?(e=Wa(e))===V||e===-V?(e<0?-1:1)*L:e==e?e:0:0===e?e:0}function Ha(e){var t=za(e),n=t%1;return t==t?n?t-n:t:0}function qa(e){return e?Ir(Ha(e),0,I):0}function Wa(e){if("number"==typeof e)return e;if(Fa(e))return B;if(Ta(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Ta(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=Nn(e);var n=We.test(e);return n||Ge.test(e)?Ut(e.slice(2),n?2:8):qe.test(e)?B:+e}function Ka(e){return ai(e,ll(e))}function Ga(e){return null==e?"":Mo(e)}var Ya=ci((function(e,t){if(es(t)||Ea(t))ai(t,al(t),e);else for(var n in t)ft.call(t,n)&&Rr(e,n,t[n])})),Ja=ci((function(e,t){ai(t,ll(t),e)})),Qa=ci((function(e,t,n,r){ai(t,ll(t),e,r)})),Za=ci((function(e,t,n,r){ai(t,al(t),e,r)})),Xa=Vi(Br);var el=Co((function(e,t){e=nt(e);var n=-1,r=t.length,i=r>2?t[2]:o;for(i&&Ji(t[0],t[1],i)&&(r=1);++n1),t})),ai(e,Li(e),n),r&&(n=Fr(n,d|p|h,Ri));for(var o=t.length;o--;)$o(n,t[o]);return n}));var dl=Vi((function(e,t){return null==e?{}:function(e,t){return Eo(e,t,(function(t,n){return rl(e,n)}))}(e,t)}));function pl(e,t){if(null==e)return{};var n=fn(Li(e),(function(e){return[e]}));return t=Di(t),Eo(e,n,(function(e,n){return t(e,n[0])}))}var hl=Ci(al),vl=Ci(ll);function ml(e){return null==e?[]:Tn(e,al(e))}var gl=pi((function(e,t,n){return t=t.toLowerCase(),e+(n?yl(t):t)}));function yl(e){return Ol(Ga(e).toLowerCase())}function bl(e){return(e=Ga(e))&&e.replace(Je,jn).replace(Tt,"")}var wl=pi((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()})),_l=pi((function(e,t,n){return e+(n?" ":"")+t.toLowerCase()})),El=di("toLowerCase");var xl=pi((function(e,t,n){return e+(n?"_":"")+t.toLowerCase()}));var kl=pi((function(e,t,n){return e+(n?" ":"")+Ol(t)}));var Sl=pi((function(e,t,n){return e+(n?" ":"")+t.toUpperCase()})),Ol=di("toUpperCase");function Cl(e,t,n){return e=Ga(e),(t=n?o:t)===o?function(e){return jt.test(e)}(e)?function(e){return e.match(At)||[]}(e):function(e){return e.match(Me)||[]}(e):e.match(t)||[]}var Nl=Co((function(e,t){try{return nn(e,o,t)}catch(e){return Oa(e)?e:new Xe(e)}})),Pl=Vi((function(e,t){return on(t,(function(t){t=ps(t),Lr(e,t,ia(e[t],e))})),e}));function Tl(e){return function(){return e}}var Rl=mi(),Al=mi(!0);function Vl(e){return e}function jl(e){return fo("function"==typeof e?e:Fr(e,d))}var Ll=Co((function(e,t){return function(n){return so(n,e,t)}})),Bl=Co((function(e,t){return function(n){return so(e,n,t)}}));function Il(e,t,n){var r=al(t),o=Zr(t,r);null!=n||Ta(t)&&(o.length||!r.length)||(n=t,t=e,e=this,o=Zr(t,al(t)));var i=!(Ta(n)&&"chain"in n&&!n.chain),s=Ca(e);return on(o,(function(n){var r=t[n];e[n]=r,s&&(e.prototype[n]=function(){var t=this.__chain__;if(i||t){var n=e(this.__wrapped__);return(n.__actions__=si(this.__actions__)).push({func:r,args:arguments,thisArg:e}),n.__chain__=t,n}return r.apply(e,dn([this.value()],arguments))})})),e}function Fl(){}var Dl=wi(fn),Ml=wi(an),Ul=wi(vn);function $l(e){return Qi(e)?xn(ps(e)):function(e){return function(t){return Xr(t,e)}}(e)}var zl=Ei(),Hl=Ei(!0);function ql(){return[]}function Wl(){return!1}var Kl=bi((function(e,t){return e+t}),0),Gl=Si("ceil"),Yl=bi((function(e,t){return e/t}),1),Jl=Si("floor");var Ql,Zl=bi((function(e,t){return e*t}),1),Xl=Si("round"),ec=bi((function(e,t){return e-t}),0);return mr.after=function(e,t){if("function"!=typeof t)throw new it(a);return e=Ha(e),function(){if(--e<1)return t.apply(this,arguments)}},mr.ary=ra,mr.assign=Ya,mr.assignIn=Ja,mr.assignInWith=Qa,mr.assignWith=Za,mr.at=Xa,mr.before=oa,mr.bind=ia,mr.bindAll=Pl,mr.bindKey=sa,mr.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return wa(e)?e:[e]},mr.chain=$s,mr.chunk=function(e,t,n){t=(n?Ji(e,t,n):t===o)?1:Gn(Ha(t),0);var i=null==e?0:e.length;if(!i||t<1)return[];for(var s=0,a=0,l=r(zt(i/t));si?0:i+n),(r=r===o||r>i?i:Ha(r))<0&&(r+=i),r=n>r?0:qa(r);n>>0)?(e=Ga(e))&&("string"==typeof t||null!=t&&!La(t))&&!(t=Mo(t))&&In(e)?Zo(Hn(e),0,n):e.split(t,n):[]},mr.spread=function(e,t){if("function"!=typeof e)throw new it(a);return t=null==t?0:Gn(Ha(t),0),Co((function(n){var r=n[t],o=Zo(n,0,t);return r&&dn(o,r),nn(e,this,o)}))},mr.tail=function(e){var t=null==e?0:e.length;return t?jo(e,1,t):[]},mr.take=function(e,t,n){return e&&e.length?jo(e,0,(t=n||t===o?1:Ha(t))<0?0:t):[]},mr.takeRight=function(e,t,n){var r=null==e?0:e.length;return r?jo(e,(t=r-(t=n||t===o?1:Ha(t)))<0?0:t,r):[]},mr.takeRightWhile=function(e,t){return e&&e.length?Ho(e,Di(t,3),!1,!0):[]},mr.takeWhile=function(e,t){return e&&e.length?Ho(e,Di(t,3)):[]},mr.tap=function(e,t){return t(e),e},mr.throttle=function(e,t,n){var r=!0,o=!0;if("function"!=typeof e)throw new it(a);return Ta(n)&&(r="leading"in n?!!n.leading:r,o="trailing"in n?!!n.trailing:o),aa(e,t,{leading:r,maxWait:t,trailing:o})},mr.thru=zs,mr.toArray=$a,mr.toPairs=hl,mr.toPairsIn=vl,mr.toPath=function(e){return wa(e)?fn(e,ps):Fa(e)?[e]:si(ds(Ga(e)))},mr.toPlainObject=Ka,mr.transform=function(e,t,n){var r=wa(e),o=r||ka(e)||Da(e);if(t=Di(t,4),null==n){var i=e&&e.constructor;n=o?r?new i:[]:Ta(e)&&Ca(i)?gr(Et(e)):{}}return(o?on:Jr)(e,(function(e,r,o){return t(n,e,r,o)})),n},mr.unary=function(e){return ra(e,1)},mr.union=Rs,mr.unionBy=As,mr.unionWith=Vs,mr.uniq=function(e){return e&&e.length?Uo(e):[]},mr.uniqBy=function(e,t){return e&&e.length?Uo(e,Di(t,2)):[]},mr.uniqWith=function(e,t){return t="function"==typeof t?t:o,e&&e.length?Uo(e,o,t):[]},mr.unset=function(e,t){return null==e||$o(e,t)},mr.unzip=js,mr.unzipWith=Ls,mr.update=function(e,t,n){return null==e?e:zo(e,t,Yo(n))},mr.updateWith=function(e,t,n,r){return r="function"==typeof r?r:o,null==e?e:zo(e,t,Yo(n),r)},mr.values=ml,mr.valuesIn=function(e){return null==e?[]:Tn(e,ll(e))},mr.without=Bs,mr.words=Cl,mr.wrap=function(e,t){return pa(Yo(t),e)},mr.xor=Is,mr.xorBy=Fs,mr.xorWith=Ds,mr.zip=Ms,mr.zipObject=function(e,t){return Ko(e||[],t||[],Rr)},mr.zipObjectDeep=function(e,t){return Ko(e||[],t||[],To)},mr.zipWith=Us,mr.entries=hl,mr.entriesIn=vl,mr.extend=Ja,mr.extendWith=Qa,Il(mr,mr),mr.add=Kl,mr.attempt=Nl,mr.camelCase=gl,mr.capitalize=yl,mr.ceil=Gl,mr.clamp=function(e,t,n){return n===o&&(n=t,t=o),n!==o&&(n=(n=Wa(n))==n?n:0),t!==o&&(t=(t=Wa(t))==t?t:0),Ir(Wa(e),t,n)},mr.clone=function(e){return Fr(e,h)},mr.cloneDeep=function(e){return Fr(e,d|h)},mr.cloneDeepWith=function(e,t){return Fr(e,d|h,t="function"==typeof t?t:o)},mr.cloneWith=function(e,t){return Fr(e,h,t="function"==typeof t?t:o)},mr.conformsTo=function(e,t){return null==t||Dr(e,t,al(t))},mr.deburr=bl,mr.defaultTo=function(e,t){return null==e||e!=e?t:e},mr.divide=Yl,mr.endsWith=function(e,t,n){e=Ga(e),t=Mo(t);var r=e.length,i=n=n===o?r:Ir(Ha(n),0,r);return(n-=t.length)>=0&&e.slice(n,i)==t},mr.eq=ma,mr.escape=function(e){return(e=Ga(e))&&Oe.test(e)?e.replace(ke,Ln):e},mr.escapeRegExp=function(e){return(e=Ga(e))&&je.test(e)?e.replace(Ve,"\\$&"):e},mr.every=function(e,t,n){var r=wa(e)?an:Hr;return n&&Ji(e,t,n)&&(t=o),r(e,Di(t,3))},mr.find=Ws,mr.findIndex=bs,mr.findKey=function(e,t){return gn(e,Di(t,3),Jr)},mr.findLast=Ks,mr.findLastIndex=ws,mr.findLastKey=function(e,t){return gn(e,Di(t,3),Qr)},mr.floor=Jl,mr.forEach=Gs,mr.forEachRight=Ys,mr.forIn=function(e,t){return null==e?e:Gr(e,Di(t,3),ll)},mr.forInRight=function(e,t){return null==e?e:Yr(e,Di(t,3),ll)},mr.forOwn=function(e,t){return e&&Jr(e,Di(t,3))},mr.forOwnRight=function(e,t){return e&&Qr(e,Di(t,3))},mr.get=nl,mr.gt=ga,mr.gte=ya,mr.has=function(e,t){return null!=e&&Wi(e,t,ro)},mr.hasIn=rl,mr.head=Es,mr.identity=Vl,mr.includes=function(e,t,n,r){e=Ea(e)?e:ml(e),n=n&&!r?Ha(n):0;var o=e.length;return n<0&&(n=Gn(o+n,0)),Ia(e)?n<=o&&e.indexOf(t,n)>-1:!!o&&bn(e,t,n)>-1},mr.indexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var o=null==n?0:Ha(n);return o<0&&(o=Gn(r+o,0)),bn(e,t,o)},mr.inRange=function(e,t,n){return t=za(t),n===o?(n=t,t=0):n=za(n),function(e,t,n){return e>=Yn(t,n)&&e=-j&&e<=j},mr.isSet=Ba,mr.isString=Ia,mr.isSymbol=Fa,mr.isTypedArray=Da,mr.isUndefined=function(e){return e===o},mr.isWeakMap=function(e){return Ra(e)&&qi(e)==ae},mr.isWeakSet=function(e){return Ra(e)&&to(e)==le},mr.join=function(e,t){return null==e?"":mn.call(e,t)},mr.kebabCase=wl,mr.last=Os,mr.lastIndexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r;return n!==o&&(i=(i=Ha(n))<0?Gn(r+i,0):Yn(i,r-1)),t==t?function(e,t,n){for(var r=n+1;r--;)if(e[r]===t)return r;return r}(e,t,i):yn(e,_n,i,!0)},mr.lowerCase=_l,mr.lowerFirst=El,mr.lt=Ma,mr.lte=Ua,mr.max=function(e){return e&&e.length?qr(e,Vl,no):o},mr.maxBy=function(e,t){return e&&e.length?qr(e,Di(t,2),no):o},mr.mean=function(e){return En(e,Vl)},mr.meanBy=function(e,t){return En(e,Di(t,2))},mr.min=function(e){return e&&e.length?qr(e,Vl,vo):o},mr.minBy=function(e,t){return e&&e.length?qr(e,Di(t,2),vo):o},mr.stubArray=ql,mr.stubFalse=Wl,mr.stubObject=function(){return{}},mr.stubString=function(){return""},mr.stubTrue=function(){return!0},mr.multiply=Zl,mr.nth=function(e,t){return e&&e.length?wo(e,Ha(t)):o},mr.noConflict=function(){return Ht._===this&&(Ht._=mt),this},mr.noop=Fl,mr.now=na,mr.pad=function(e,t,n){e=Ga(e);var r=(t=Ha(t))?zn(e):0;if(!t||r>=t)return e;var o=(t-r)/2;return _i(qt(o),n)+e+_i(zt(o),n)},mr.padEnd=function(e,t,n){e=Ga(e);var r=(t=Ha(t))?zn(e):0;return t&&rt){var r=e;e=t,t=r}if(n||e%1||t%1){var i=Zn();return Yn(e+i*(t-e+Mt("1e-"+((i+"").length-1))),t)}return So(e,t)},mr.reduce=function(e,t,n){var r=wa(e)?pn:Sn,o=arguments.length<3;return r(e,Di(t,4),n,o,$r)},mr.reduceRight=function(e,t,n){var r=wa(e)?hn:Sn,o=arguments.length<3;return r(e,Di(t,4),n,o,zr)},mr.repeat=function(e,t,n){return t=(n?Ji(e,t,n):t===o)?1:Ha(t),Oo(Ga(e),t)},mr.replace=function(){var e=arguments,t=Ga(e[0]);return e.length<3?t:t.replace(e[1],e[2])},mr.result=function(e,t,n){var r=-1,i=(t=Jo(t,e)).length;for(i||(i=1,e=o);++rj)return[];var n=I,r=Yn(e,I);t=Di(t),e-=I;for(var o=Cn(r,t);++n=s)return e;var l=n-zn(r);if(l<1)return r;var c=a?Zo(a,0,l).join(""):e.slice(0,l);if(i===o)return c+r;if(a&&(l+=c.length-l),La(i)){if(e.slice(l).search(i)){var u,f=c;for(i.global||(i=rt(i.source,Ga(He.exec(i))+"g")),i.lastIndex=0;u=i.exec(f);)var d=u.index;c=c.slice(0,d===o?l:d)}}else if(e.indexOf(Mo(i),l)!=l){var p=c.lastIndexOf(i);p>-1&&(c=c.slice(0,p))}return c+r},mr.unescape=function(e){return(e=Ga(e))&&Se.test(e)?e.replace(xe,Wn):e},mr.uniqueId=function(e){var t=++dt;return Ga(e)+t},mr.upperCase=Sl,mr.upperFirst=Ol,mr.each=Gs,mr.eachRight=Ys,mr.first=Es,Il(mr,(Ql={},Jr(mr,(function(e,t){ft.call(mr.prototype,t)||(Ql[t]=e)})),Ql),{chain:!1}),mr.VERSION="4.17.21",on(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(e){mr[e].placeholder=mr})),on(["drop","take"],(function(e,t){wr.prototype[e]=function(n){n=n===o?1:Gn(Ha(n),0);var r=this.__filtered__&&!t?new wr(this):this.clone();return r.__filtered__?r.__takeCount__=Yn(n,r.__takeCount__):r.__views__.push({size:Yn(n,I),type:e+(r.__dir__<0?"Right":"")}),r},wr.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}})),on(["filter","map","takeWhile"],(function(e,t){var n=t+1,r=n==R||3==n;wr.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:Di(e,3),type:n}),t.__filtered__=t.__filtered__||r,t}})),on(["head","last"],(function(e,t){var n="take"+(t?"Right":"");wr.prototype[e]=function(){return this[n](1).value()[0]}})),on(["initial","tail"],(function(e,t){var n="drop"+(t?"":"Right");wr.prototype[e]=function(){return this.__filtered__?new wr(this):this[n](1)}})),wr.prototype.compact=function(){return this.filter(Vl)},wr.prototype.find=function(e){return this.filter(e).head()},wr.prototype.findLast=function(e){return this.reverse().find(e)},wr.prototype.invokeMap=Co((function(e,t){return"function"==typeof e?new wr(this):this.map((function(n){return so(n,e,t)}))})),wr.prototype.reject=function(e){return this.filter(fa(Di(e)))},wr.prototype.slice=function(e,t){e=Ha(e);var n=this;return n.__filtered__&&(e>0||t<0)?new wr(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),t!==o&&(n=(t=Ha(t))<0?n.dropRight(-t):n.take(t-e)),n)},wr.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},wr.prototype.toArray=function(){return this.take(I)},Jr(wr.prototype,(function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),i=mr[r?"take"+("last"==t?"Right":""):t],s=r||/^find/.test(t);i&&(mr.prototype[t]=function(){var t=this.__wrapped__,a=r?[1]:arguments,l=t instanceof wr,c=a[0],u=l||wa(t),f=function(e){var t=i.apply(mr,dn([e],a));return r&&d?t[0]:t};u&&n&&"function"==typeof c&&1!=c.length&&(l=u=!1);var d=this.__chain__,p=!!this.__actions__.length,h=s&&!d,v=l&&!p;if(!s&&u){t=v?t:new wr(this);var m=e.apply(t,a);return m.__actions__.push({func:zs,args:[f],thisArg:o}),new br(m,d)}return h&&v?e.apply(this,a):(m=this.thru(f),h?r?m.value()[0]:m.value():m)})})),on(["pop","push","shift","sort","splice","unshift"],(function(e){var t=st[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",r=/^(?:pop|shift)$/.test(e);mr.prototype[e]=function(){var e=arguments;if(r&&!this.__chain__){var o=this.value();return t.apply(wa(o)?o:[],e)}return this[n]((function(n){return t.apply(wa(n)?n:[],e)}))}})),Jr(wr.prototype,(function(e,t){var n=mr[t];if(n){var r=n.name+"";ft.call(ar,r)||(ar[r]=[]),ar[r].push({name:t,func:n})}})),ar[gi(o,y).name]=[{name:"wrapper",func:o}],wr.prototype.clone=function(){var e=new wr(this.__wrapped__);return e.__actions__=si(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=si(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=si(this.__views__),e},wr.prototype.reverse=function(){if(this.__filtered__){var e=new wr(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},wr.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=wa(e),r=t<0,o=n?e.length:0,i=function(e,t,n){var r=-1,o=n.length;for(;++r=this.__values__.length;return{done:e,value:e?o:this.__values__[this.__index__++]}},mr.prototype.plant=function(e){for(var t,n=this;n instanceof yr;){var r=vs(n);r.__index__=0,r.__values__=o,t?i.__wrapped__=r:t=r;var i=r;n=n.__wrapped__}return i.__wrapped__=e,t},mr.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof wr){var t=e;return this.__actions__.length&&(t=new wr(this)),(t=t.reverse()).__actions__.push({func:zs,args:[Ts],thisArg:o}),new br(t,this.__chain__)}return this.thru(Ts)},mr.prototype.toJSON=mr.prototype.valueOf=mr.prototype.value=function(){return qo(this.__wrapped__,this.__actions__)},mr.prototype.first=mr.prototype.head,Ct&&(mr.prototype[Ct]=function(){return this}),mr}();Ht._=Kn,(r=function(){return Kn}.call(t,n,t,e))===o||(e.exports=r)}.call(this)},378:()=>{},744:(e,t)=>{"use strict";t.Z=(e,t)=>{const n=e.__vccOpts||e;for(const[e,r]of t)n[e]=r;return n}},821:(e,t,n)=>{"use strict";n.r(t),n.d(t,{BaseTransition:()=>vr,Comment:()=>li,EffectScope:()=>pe,Fragment:()=>si,KeepAlive:()=>Cr,ReactiveEffect:()=>Ne,Static:()=>ci,Suspense:()=>Jn,Teleport:()=>oi,Text:()=>ai,Transition:()=>Qs,TransitionGroup:()=>ma,VueElement:()=>Hs,assertNumber:()=>an,callWithAsyncErrorHandling:()=>cn,callWithErrorHandling:()=>ln,camelize:()=>ee,capitalize:()=>re,cloneVNode:()=>Ti,compatUtils:()=>Ss,compile:()=>Uf,computed:()=>is,createApp:()=>Ga,createBlock:()=>bi,createCommentVNode:()=>Vi,createElementBlock:()=>yi,createElementVNode:()=>Oi,createHydrationRenderer:()=>Yo,createPropsRestProxy:()=>hs,createRenderer:()=>Go,createSSRApp:()=>Ya,createSlots:()=>oo,createStaticVNode:()=>Ai,createTextVNode:()=>Ri,createVNode:()=>Ci,customRef:()=>Xt,defineAsyncComponent:()=>kr,defineComponent:()=>Er,defineCustomElement:()=>Us,defineEmits:()=>as,defineExpose:()=>ls,defineProps:()=>ss,defineSSRCustomElement:()=>$s,devtools:()=>Pn,effect:()=>Te,effectScope:()=>he,getCurrentInstance:()=>zi,getCurrentScope:()=>me,getTransitionRawChildren:()=>_r,guardReactiveProps:()=>Pi,h:()=>ms,handleError:()=>un,hydrate:()=>Ka,initCustomFormatter:()=>bs,initDirectivesForSSR:()=>Za,inject:()=>rr,isMemoSame:()=>_s,isProxy:()=>Bt,isReactive:()=>Vt,isReadonly:()=>jt,isRef:()=>zt,isRuntimeOnly:()=>Xi,isShallow:()=>Lt,isVNode:()=>wi,markRaw:()=>Ft,mergeDefaults:()=>ps,mergeProps:()=>Ii,nextTick:()=>wn,normalizeClass:()=>d,normalizeProps:()=>p,normalizeStyle:()=>a,onActivated:()=>Pr,onBeforeMount:()=>Ir,onBeforeUnmount:()=>Ur,onBeforeUpdate:()=>Dr,onDeactivated:()=>Tr,onErrorCaptured:()=>Wr,onMounted:()=>Fr,onRenderTracked:()=>qr,onRenderTriggered:()=>Hr,onScopeDispose:()=>ge,onServerPrefetch:()=>zr,onUnmounted:()=>$r,onUpdated:()=>Mr,openBlock:()=>di,popScopeId:()=>Mn,provide:()=>nr,proxyRefs:()=>Qt,pushScopeId:()=>Dn,queuePostFlushCb:()=>xn,reactive:()=>Nt,readonly:()=>Tt,ref:()=>Ht,registerRuntimeCompiler:()=>Zi,render:()=>Wa,renderList:()=>ro,renderSlot:()=>io,resolveComponent:()=>Qr,resolveDirective:()=>eo,resolveDynamicComponent:()=>Xr,resolveFilter:()=>ks,resolveTransitionHooks:()=>gr,setBlockTracking:()=>mi,setDevtoolsHook:()=>An,setTransitionHooks:()=>wr,shallowReactive:()=>Pt,shallowReadonly:()=>Rt,shallowRef:()=>qt,ssrContextKey:()=>gs,ssrUtils:()=>xs,stop:()=>Re,toDisplayString:()=>E,toHandlerKey:()=>oe,toHandlers:()=>ao,toRaw:()=>It,toRef:()=>nn,toRefs:()=>en,transformVNodeArgs:()=>Ei,triggerRef:()=>Gt,unref:()=>Yt,useAttrs:()=>fs,useCssModule:()=>qs,useCssVars:()=>Ws,useSSRContext:()=>ys,useSlots:()=>us,useTransitionState:()=>pr,vModelCheckbox:()=>ka,vModelDynamic:()=>Ra,vModelRadio:()=>Oa,vModelSelect:()=>Ca,vModelText:()=>xa,vShow:()=>Da,version:()=>Es,warn:()=>sn,watch:()=>lr,watchEffect:()=>or,watchPostEffect:()=>ir,watchSyncEffect:()=>sr,withAsyncContext:()=>vs,withCtx:()=>$n,withDefaults:()=>cs,withDirectives:()=>Kr,withKeys:()=>Fa,withMemo:()=>ws,withModifiers:()=>Ba,withScopeId:()=>Un});var r={};function o(e,t){const n=Object.create(null),r=e.split(",");for(let e=0;e!!n[e.toLowerCase()]:e=>!!n[e]}n.r(r),n.d(r,{BaseTransition:()=>vr,Comment:()=>li,EffectScope:()=>pe,Fragment:()=>si,KeepAlive:()=>Cr,ReactiveEffect:()=>Ne,Static:()=>ci,Suspense:()=>Jn,Teleport:()=>oi,Text:()=>ai,Transition:()=>Qs,TransitionGroup:()=>ma,VueElement:()=>Hs,assertNumber:()=>an,callWithAsyncErrorHandling:()=>cn,callWithErrorHandling:()=>ln,camelize:()=>ee,capitalize:()=>re,cloneVNode:()=>Ti,compatUtils:()=>Ss,computed:()=>is,createApp:()=>Ga,createBlock:()=>bi,createCommentVNode:()=>Vi,createElementBlock:()=>yi,createElementVNode:()=>Oi,createHydrationRenderer:()=>Yo,createPropsRestProxy:()=>hs,createRenderer:()=>Go,createSSRApp:()=>Ya,createSlots:()=>oo,createStaticVNode:()=>Ai,createTextVNode:()=>Ri,createVNode:()=>Ci,customRef:()=>Xt,defineAsyncComponent:()=>kr,defineComponent:()=>Er,defineCustomElement:()=>Us,defineEmits:()=>as,defineExpose:()=>ls,defineProps:()=>ss,defineSSRCustomElement:()=>$s,devtools:()=>Pn,effect:()=>Te,effectScope:()=>he,getCurrentInstance:()=>zi,getCurrentScope:()=>me,getTransitionRawChildren:()=>_r,guardReactiveProps:()=>Pi,h:()=>ms,handleError:()=>un,hydrate:()=>Ka,initCustomFormatter:()=>bs,initDirectivesForSSR:()=>Za,inject:()=>rr,isMemoSame:()=>_s,isProxy:()=>Bt,isReactive:()=>Vt,isReadonly:()=>jt,isRef:()=>zt,isRuntimeOnly:()=>Xi,isShallow:()=>Lt,isVNode:()=>wi,markRaw:()=>Ft,mergeDefaults:()=>ps,mergeProps:()=>Ii,nextTick:()=>wn,normalizeClass:()=>d,normalizeProps:()=>p,normalizeStyle:()=>a,onActivated:()=>Pr,onBeforeMount:()=>Ir,onBeforeUnmount:()=>Ur,onBeforeUpdate:()=>Dr,onDeactivated:()=>Tr,onErrorCaptured:()=>Wr,onMounted:()=>Fr,onRenderTracked:()=>qr,onRenderTriggered:()=>Hr,onScopeDispose:()=>ge,onServerPrefetch:()=>zr,onUnmounted:()=>$r,onUpdated:()=>Mr,openBlock:()=>di,popScopeId:()=>Mn,provide:()=>nr,proxyRefs:()=>Qt,pushScopeId:()=>Dn,queuePostFlushCb:()=>xn,reactive:()=>Nt,readonly:()=>Tt,ref:()=>Ht,registerRuntimeCompiler:()=>Zi,render:()=>Wa,renderList:()=>ro,renderSlot:()=>io,resolveComponent:()=>Qr,resolveDirective:()=>eo,resolveDynamicComponent:()=>Xr,resolveFilter:()=>ks,resolveTransitionHooks:()=>gr,setBlockTracking:()=>mi,setDevtoolsHook:()=>An,setTransitionHooks:()=>wr,shallowReactive:()=>Pt,shallowReadonly:()=>Rt,shallowRef:()=>qt,ssrContextKey:()=>gs,ssrUtils:()=>xs,stop:()=>Re,toDisplayString:()=>E,toHandlerKey:()=>oe,toHandlers:()=>ao,toRaw:()=>It,toRef:()=>nn,toRefs:()=>en,transformVNodeArgs:()=>Ei,triggerRef:()=>Gt,unref:()=>Yt,useAttrs:()=>fs,useCssModule:()=>qs,useCssVars:()=>Ws,useSSRContext:()=>ys,useSlots:()=>us,useTransitionState:()=>pr,vModelCheckbox:()=>ka,vModelDynamic:()=>Ra,vModelRadio:()=>Oa,vModelSelect:()=>Ca,vModelText:()=>xa,vShow:()=>Da,version:()=>Es,warn:()=>sn,watch:()=>lr,watchEffect:()=>or,watchPostEffect:()=>ir,watchSyncEffect:()=>sr,withAsyncContext:()=>vs,withCtx:()=>$n,withDefaults:()=>cs,withDirectives:()=>Kr,withKeys:()=>Fa,withMemo:()=>ws,withModifiers:()=>Ba,withScopeId:()=>Un});const i={1:"TEXT",2:"CLASS",4:"STYLE",8:"PROPS",16:"FULL_PROPS",32:"HYDRATE_EVENTS",64:"STABLE_FRAGMENT",128:"KEYED_FRAGMENT",256:"UNKEYED_FRAGMENT",512:"NEED_PATCH",1024:"DYNAMIC_SLOTS",2048:"DEV_ROOT_FRAGMENT",[-1]:"HOISTED",[-2]:"BAIL"},s=o("Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt");function a(e){if(L(e)){const t={};for(let n=0;n{if(e){const n=e.split(c);n.length>1&&(t[n[0].trim()]=n[1].trim())}})),t}function d(e){let t="";if(U(e))t=e;else if(L(e))for(let n=0;nw(e,t)))}const E=e=>U(e)?e:null==e?"":L(e)||z(e)&&(e.toString===q||!M(e.toString))?JSON.stringify(e,x,2):String(e),x=(e,t)=>t&&t.__v_isRef?x(e,t.value):B(t)?{[`Map(${t.size})`]:[...t.entries()].reduce(((e,[t,n])=>(e[`${t} =>`]=n,e)),{})}:I(t)?{[`Set(${t.size})`]:[...t.values()]}:!z(t)||L(t)||G(t)?t:String(t),k={},S=[],O=()=>{},C=()=>!1,N=/^on[^a-z]/,P=e=>N.test(e),T=e=>e.startsWith("onUpdate:"),R=Object.assign,A=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},V=Object.prototype.hasOwnProperty,j=(e,t)=>V.call(e,t),L=Array.isArray,B=e=>"[object Map]"===W(e),I=e=>"[object Set]"===W(e),F=e=>"[object Date]"===W(e),D=e=>"[object RegExp]"===W(e),M=e=>"function"==typeof e,U=e=>"string"==typeof e,$=e=>"symbol"==typeof e,z=e=>null!==e&&"object"==typeof e,H=e=>z(e)&&M(e.then)&&M(e.catch),q=Object.prototype.toString,W=e=>q.call(e),K=e=>W(e).slice(8,-1),G=e=>"[object Object]"===W(e),Y=e=>U(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,J=o(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Q=o("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),Z=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},X=/-(\w)/g,ee=Z((e=>e.replace(X,((e,t)=>t?t.toUpperCase():"")))),te=/\B([A-Z])/g,ne=Z((e=>e.replace(te,"-$1").toLowerCase())),re=Z((e=>e.charAt(0).toUpperCase()+e.slice(1))),oe=Z((e=>e?`on${re(e)}`:"")),ie=(e,t)=>!Object.is(e,t),se=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},le=e=>{const t=parseFloat(e);return isNaN(t)?e:t},ce=e=>{const t=U(e)?Number(e):NaN;return isNaN(t)?e:t};let ue;const fe=()=>ue||(ue="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n.g?n.g:{});let de;class pe{constructor(e=!1){this.detached=e,this._active=!0,this.effects=[],this.cleanups=[],this.parent=de,!e&&de&&(this.index=(de.scopes||(de.scopes=[])).push(this)-1)}get active(){return this._active}run(e){if(this._active){const t=de;try{return de=this,e()}finally{de=t}}else 0}on(){de=this}off(){de=this.parent}stop(e){if(this._active){let t,n;for(t=0,n=this.effects.length;t{const t=new Set(e);return t.w=0,t.n=0,t},be=e=>(e.w&xe)>0,we=e=>(e.n&xe)>0,_e=new WeakMap;let Ee=0,xe=1;const ke=30;let Se;const Oe=Symbol(""),Ce=Symbol("");class Ne{constructor(e,t=null,n){this.fn=e,this.scheduler=t,this.active=!0,this.deps=[],this.parent=void 0,ve(this,n)}run(){if(!this.active)return this.fn();let e=Se,t=Ae;for(;e;){if(e===this)return;e=e.parent}try{return this.parent=Se,Se=this,Ae=!0,xe=1<<++Ee,Ee<=ke?(({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{("length"===n||n>=e)&&a.push(t)}))}else switch(void 0!==n&&a.push(s.get(n)),t){case"add":L(e)?Y(n)&&a.push(s.get("length")):(a.push(s.get(Oe)),B(e)&&a.push(s.get(Ce)));break;case"delete":L(e)||(a.push(s.get(Oe)),B(e)&&a.push(s.get(Ce)));break;case"set":B(e)&&a.push(s.get(Oe))}if(1===a.length)a[0]&&De(a[0]);else{const e=[];for(const t of a)t&&e.push(...t);De(ye(e))}}function De(e,t){const n=L(e)?e:[...e];for(const e of n)e.computed&&Me(e,t);for(const e of n)e.computed||Me(e,t)}function Me(e,t){(e!==Se||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const Ue=o("__proto__,__v_isRef,__isVue"),$e=new Set(Object.getOwnPropertyNames(Symbol).filter((e=>"arguments"!==e&&"caller"!==e)).map((e=>Symbol[e])).filter($)),ze=Je(),He=Je(!1,!0),qe=Je(!0),We=Je(!0,!0),Ke=Ge();function Ge(){const e={};return["includes","indexOf","lastIndexOf"].forEach((t=>{e[t]=function(...e){const n=It(this);for(let e=0,t=this.length;e{e[t]=function(...e){je();const n=It(this)[t].apply(this,e);return Le(),n}})),e}function Ye(e){const t=It(this);return Be(t,0,e),t.hasOwnProperty(e)}function Je(e=!1,t=!1){return function(n,r,o){if("__v_isReactive"===r)return!e;if("__v_isReadonly"===r)return e;if("__v_isShallow"===r)return t;if("__v_raw"===r&&o===(e?t?Ct:Ot:t?St:kt).get(n))return n;const i=L(n);if(!e){if(i&&j(Ke,r))return Reflect.get(Ke,r,o);if("hasOwnProperty"===r)return Ye}const s=Reflect.get(n,r,o);return($(r)?$e.has(r):Ue(r))?s:(e||Be(n,0,r),t?s:zt(s)?i&&Y(r)?s:s.value:z(s)?e?Tt(s):Nt(s):s)}}function Qe(e=!1){return function(t,n,r,o){let i=t[n];if(jt(i)&&zt(i)&&!zt(r))return!1;if(!e&&(Lt(r)||jt(r)||(i=It(i),r=It(r)),!L(t)&&zt(i)&&!zt(r)))return i.value=r,!0;const s=L(t)&&Y(n)?Number(n)!0,deleteProperty:(e,t)=>!0},et=R({},Ze,{get:He,set:Qe(!0)}),tt=R({},Xe,{get:We}),nt=e=>e,rt=e=>Reflect.getPrototypeOf(e);function ot(e,t,n=!1,r=!1){const o=It(e=e.__v_raw),i=It(t);n||(t!==i&&Be(o,0,t),Be(o,0,i));const{has:s}=rt(o),a=r?nt:n?Mt:Dt;return s.call(o,t)?a(e.get(t)):s.call(o,i)?a(e.get(i)):void(e!==o&&e.get(t))}function it(e,t=!1){const n=this.__v_raw,r=It(n),o=It(e);return t||(e!==o&&Be(r,0,e),Be(r,0,o)),e===o?n.has(e):n.has(e)||n.has(o)}function st(e,t=!1){return e=e.__v_raw,!t&&Be(It(e),0,Oe),Reflect.get(e,"size",e)}function at(e){e=It(e);const t=It(this);return rt(t).has.call(t,e)||(t.add(e),Fe(t,"add",e,e)),this}function lt(e,t){t=It(t);const n=It(this),{has:r,get:o}=rt(n);let i=r.call(n,e);i||(e=It(e),i=r.call(n,e));const s=o.call(n,e);return n.set(e,t),i?ie(t,s)&&Fe(n,"set",e,t):Fe(n,"add",e,t),this}function ct(e){const t=It(this),{has:n,get:r}=rt(t);let o=n.call(t,e);o||(e=It(e),o=n.call(t,e));r&&r.call(t,e);const i=t.delete(e);return o&&Fe(t,"delete",e,void 0),i}function ut(){const e=It(this),t=0!==e.size,n=e.clear();return t&&Fe(e,"clear",void 0,void 0),n}function ft(e,t){return function(n,r){const o=this,i=o.__v_raw,s=It(i),a=t?nt:e?Mt:Dt;return!e&&Be(s,0,Oe),i.forEach(((e,t)=>n.call(r,a(e),a(t),o)))}}function dt(e,t,n){return function(...r){const o=this.__v_raw,i=It(o),s=B(i),a="entries"===e||e===Symbol.iterator&&s,l="keys"===e&&s,c=o[e](...r),u=n?nt:t?Mt:Dt;return!t&&Be(i,0,l?Ce:Oe),{next(){const{value:e,done:t}=c.next();return t?{value:e,done:t}:{value:a?[u(e[0]),u(e[1])]:u(e),done:t}},[Symbol.iterator](){return this}}}}function pt(e){return function(...t){return"delete"!==e&&this}}function ht(){const e={get(e){return ot(this,e)},get size(){return st(this)},has:it,add:at,set:lt,delete:ct,clear:ut,forEach:ft(!1,!1)},t={get(e){return ot(this,e,!1,!0)},get size(){return st(this)},has:it,add:at,set:lt,delete:ct,clear:ut,forEach:ft(!1,!0)},n={get(e){return ot(this,e,!0)},get size(){return st(this,!0)},has(e){return it.call(this,e,!0)},add:pt("add"),set:pt("set"),delete:pt("delete"),clear:pt("clear"),forEach:ft(!0,!1)},r={get(e){return ot(this,e,!0,!0)},get size(){return st(this,!0)},has(e){return it.call(this,e,!0)},add:pt("add"),set:pt("set"),delete:pt("delete"),clear:pt("clear"),forEach:ft(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach((o=>{e[o]=dt(o,!1,!1),n[o]=dt(o,!0,!1),t[o]=dt(o,!1,!0),r[o]=dt(o,!0,!0)})),[e,n,t,r]}const[vt,mt,gt,yt]=ht();function bt(e,t){const n=t?e?yt:gt:e?mt:vt;return(t,r,o)=>"__v_isReactive"===r?!e:"__v_isReadonly"===r?e:"__v_raw"===r?t:Reflect.get(j(n,r)&&r in t?n:t,r,o)}const wt={get:bt(!1,!1)},_t={get:bt(!1,!0)},Et={get:bt(!0,!1)},xt={get:bt(!0,!0)};const kt=new WeakMap,St=new WeakMap,Ot=new WeakMap,Ct=new WeakMap;function Nt(e){return jt(e)?e:At(e,!1,Ze,wt,kt)}function Pt(e){return At(e,!1,et,_t,St)}function Tt(e){return At(e,!0,Xe,Et,Ot)}function Rt(e){return At(e,!0,tt,xt,Ct)}function At(e,t,n,r,o){if(!z(e))return e;if(e.__v_raw&&(!t||!e.__v_isReactive))return e;const i=o.get(e);if(i)return i;const s=(a=e).__v_skip||!Object.isExtensible(a)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}(K(a));var a;if(0===s)return e;const l=new Proxy(e,2===s?r:n);return o.set(e,l),l}function Vt(e){return jt(e)?Vt(e.__v_raw):!(!e||!e.__v_isReactive)}function jt(e){return!(!e||!e.__v_isReadonly)}function Lt(e){return!(!e||!e.__v_isShallow)}function Bt(e){return Vt(e)||jt(e)}function It(e){const t=e&&e.__v_raw;return t?It(t):e}function Ft(e){return ae(e,"__v_skip",!0),e}const Dt=e=>z(e)?Nt(e):e,Mt=e=>z(e)?Tt(e):e;function Ut(e){Ae&&Se&&Ie((e=It(e)).dep||(e.dep=ye()))}function $t(e,t){const n=(e=It(e)).dep;n&&De(n)}function zt(e){return!(!e||!0!==e.__v_isRef)}function Ht(e){return Wt(e,!1)}function qt(e){return Wt(e,!0)}function Wt(e,t){return zt(e)?e:new Kt(e,t)}class Kt{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?e:It(e),this._value=t?e:Dt(e)}get value(){return Ut(this),this._value}set value(e){const t=this.__v_isShallow||Lt(e)||jt(e);e=t?e:It(e),ie(e,this._rawValue)&&(this._rawValue=e,this._value=t?e:Dt(e),$t(this))}}function Gt(e){$t(e)}function Yt(e){return zt(e)?e.value:e}const Jt={get:(e,t,n)=>Yt(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return zt(o)&&!zt(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function Qt(e){return Vt(e)?e:new Proxy(e,Jt)}class Zt{constructor(e){this.dep=void 0,this.__v_isRef=!0;const{get:t,set:n}=e((()=>Ut(this)),(()=>$t(this)));this._get=t,this._set=n}get value(){return this._get()}set value(e){this._set(e)}}function Xt(e){return new Zt(e)}function en(e){const t=L(e)?new Array(e.length):{};for(const n in e)t[n]=nn(e,n);return t}class tn{constructor(e,t,n){this._object=e,this._key=t,this._defaultValue=n,this.__v_isRef=!0}get value(){const e=this._object[this._key];return void 0===e?this._defaultValue:e}set value(e){this._object[this._key]=e}get dep(){return function(e,t){var n;return null===(n=_e.get(e))||void 0===n?void 0:n.get(t)}(It(this._object),this._key)}}function nn(e,t,n){const r=e[t];return zt(r)?r:new tn(e,t,n)}var rn;class on{constructor(e,t,n,r){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this[rn]=!1,this._dirty=!0,this.effect=new Ne(e,(()=>{this._dirty||(this._dirty=!0,$t(this))})),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=n}get value(){const e=It(this);return Ut(e),!e._dirty&&e._cacheable||(e._dirty=!1,e._value=e.effect.run()),e._value}set value(e){this._setter(e)}}rn="__v_isReadonly";function sn(e,...t){}function an(e,t){}function ln(e,t,n,r){let o;try{o=r?e(...r):e()}catch(e){un(e,t,n)}return o}function cn(e,t,n,r){if(M(e)){const o=ln(e,t,n,r);return o&&H(o)&&o.catch((e=>{un(e,t,n)})),o}const o=[];for(let i=0;i>>1;On(pn[r])On(e)-On(t))),gn=0;gnnull==e.id?1/0:e.id,Cn=(e,t)=>{const n=On(e)-On(t);if(0===n){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Nn(e){dn=!1,fn=!0,pn.sort(Cn);try{for(hn=0;hnPn.emit(e,...t))),Tn=[];else if("undefined"!=typeof window&&window.HTMLElement&&!(null===(r=null===(n=window.navigator)||void 0===n?void 0:n.userAgent)||void 0===r?void 0:r.includes("jsdom"))){(t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push((e=>{An(e,t)})),setTimeout((()=>{Pn||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,Rn=!0,Tn=[])}),3e3)}else Rn=!0,Tn=[]}function Vn(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||k;let o=n;const i=t.startsWith("update:"),s=i&&t.slice(7);if(s&&s in r){const e=`${"modelValue"===s?"model":s}Modifiers`,{number:t,trim:i}=r[e]||k;i&&(o=n.map((e=>U(e)?e.trim():e))),t&&(o=n.map(le))}let a;let l=r[a=oe(t)]||r[a=oe(ee(t))];!l&&i&&(l=r[a=oe(ne(t))]),l&&cn(l,e,6,o);const c=r[a+"Once"];if(c){if(e.emitted){if(e.emitted[a])return}else e.emitted={};e.emitted[a]=!0,cn(c,e,6,o)}}function jn(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(void 0!==o)return o;const i=e.emits;let s={},a=!1;if(!M(e)){const r=e=>{const n=jn(e,t,!0);n&&(a=!0,R(s,n))};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}return i||a?(L(i)?i.forEach((e=>s[e]=null)):R(s,i),z(e)&&r.set(e,s),s):(z(e)&&r.set(e,null),null)}function Ln(e,t){return!(!e||!P(t))&&(t=t.slice(2).replace(/Once$/,""),j(e,t[0].toLowerCase()+t.slice(1))||j(e,ne(t))||j(e,t))}let Bn=null,In=null;function Fn(e){const t=Bn;return Bn=e,In=e&&e.type.__scopeId||null,t}function Dn(e){In=e}function Mn(){In=null}const Un=e=>$n;function $n(e,t=Bn,n){if(!t)return e;if(e._n)return e;const r=(...n)=>{r._d&&mi(-1);const o=Fn(t);let i;try{i=e(...n)}finally{Fn(o),r._d&&mi(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function zn(e){const{type:t,vnode:n,proxy:r,withProxy:o,props:i,propsOptions:[s],slots:a,attrs:l,emit:c,render:u,renderCache:f,data:d,setupState:p,ctx:h,inheritAttrs:v}=e;let m,g;const y=Fn(e);try{if(4&n.shapeFlag){const e=o||r;m=ji(u.call(e,e,f,i,p,d,h)),g=l}else{const e=t;0,m=ji(e.length>1?e(i,{attrs:l,slots:a,emit:c}):e(i,null)),g=t.props?l:qn(l)}}catch(t){ui.length=0,un(t,e,1),m=Ci(li)}let b=m;if(g&&!1!==v){const e=Object.keys(g),{shapeFlag:t}=b;e.length&&7&t&&(s&&e.some(T)&&(g=Wn(g,s)),b=Ti(b,g))}return n.dirs&&(b=Ti(b),b.dirs=b.dirs?b.dirs.concat(n.dirs):n.dirs),n.transition&&(b.transition=n.transition),m=b,Fn(y),m}function Hn(e){let t;for(let n=0;n{let t;for(const n in e)("class"===n||"style"===n||P(n))&&((t||(t={}))[n]=e[n]);return t},Wn=(e,t)=>{const n={};for(const r in e)T(r)&&r.slice(9)in t||(n[r]=e[r]);return n};function Kn(e,t,n){const r=Object.keys(t);if(r.length!==Object.keys(e).length)return!0;for(let o=0;oe.__isSuspense,Jn={name:"Suspense",__isSuspense:!0,process(e,t,n,r,o,i,s,a,l,c){null==e?function(e,t,n,r,o,i,s,a,l){const{p:c,o:{createElement:u}}=l,f=u("div"),d=e.suspense=Zn(e,o,r,t,f,n,i,s,a,l);c(null,d.pendingBranch=e.ssContent,f,null,r,d,i,s),d.deps>0?(Qn(e,"onPending"),Qn(e,"onFallback"),c(null,e.ssFallback,t,n,r,null,i,s),tr(d,e.ssFallback)):d.resolve()}(t,n,r,o,i,s,a,l,c):function(e,t,n,r,o,i,s,a,{p:l,um:c,o:{createElement:u}}){const f=t.suspense=e.suspense;f.vnode=t,t.el=e.el;const d=t.ssContent,p=t.ssFallback,{activeBranch:h,pendingBranch:v,isInFallback:m,isHydrating:g}=f;if(v)f.pendingBranch=d,_i(d,v)?(l(v,d,f.hiddenContainer,null,o,f,i,s,a),f.deps<=0?f.resolve():m&&(l(h,p,n,r,o,null,i,s,a),tr(f,p))):(f.pendingId++,g?(f.isHydrating=!1,f.activeBranch=v):c(v,o,f),f.deps=0,f.effects.length=0,f.hiddenContainer=u("div"),m?(l(null,d,f.hiddenContainer,null,o,f,i,s,a),f.deps<=0?f.resolve():(l(h,p,n,r,o,null,i,s,a),tr(f,p))):h&&_i(d,h)?(l(h,d,n,r,o,f,i,s,a),f.resolve(!0)):(l(null,d,f.hiddenContainer,null,o,f,i,s,a),f.deps<=0&&f.resolve()));else if(h&&_i(d,h))l(h,d,n,r,o,f,i,s,a),tr(f,d);else if(Qn(t,"onPending"),f.pendingBranch=d,f.pendingId++,l(null,d,f.hiddenContainer,null,o,f,i,s,a),f.deps<=0)f.resolve();else{const{timeout:e,pendingId:t}=f;e>0?setTimeout((()=>{f.pendingId===t&&f.fallback(p)}),e):0===e&&f.fallback(p)}}(e,t,n,r,o,s,a,l,c)},hydrate:function(e,t,n,r,o,i,s,a,l){const c=t.suspense=Zn(t,r,n,e.parentNode,document.createElement("div"),null,o,i,s,a,!0),u=l(e,c.pendingBranch=t.ssContent,n,c,i,s);0===c.deps&&c.resolve();return u},create:Zn,normalize:function(e){const{shapeFlag:t,children:n}=e,r=32&t;e.ssContent=Xn(r?n.default:n),e.ssFallback=r?Xn(n.fallback):Ci(li)}};function Qn(e,t){const n=e.props&&e.props[t];M(n)&&n()}function Zn(e,t,n,r,o,i,s,a,l,c,u=!1){const{p:f,m:d,um:p,n:h,o:{parentNode:v,remove:m}}=c,g=e.props?ce(e.props.timeout):void 0;const y={vnode:e,parent:t,parentComponent:n,isSVG:s,container:r,hiddenContainer:o,anchor:i,deps:0,pendingId:0,timeout:"number"==typeof g?g:-1,activeBranch:null,pendingBranch:null,isInFallback:!0,isHydrating:u,isUnmounted:!1,effects:[],resolve(e=!1){const{vnode:t,activeBranch:n,pendingBranch:r,pendingId:o,effects:i,parentComponent:s,container:a}=y;if(y.isHydrating)y.isHydrating=!1;else if(!e){const e=n&&r.transition&&"out-in"===r.transition.mode;e&&(n.transition.afterLeave=()=>{o===y.pendingId&&d(r,a,t,0)});let{anchor:t}=y;n&&(t=h(n),p(n,s,y,!0)),e||d(r,a,t,0)}tr(y,r),y.pendingBranch=null,y.isInFallback=!1;let l=y.parent,c=!1;for(;l;){if(l.pendingBranch){l.effects.push(...i),c=!0;break}l=l.parent}c||xn(i),y.effects=[],Qn(t,"onResolve")},fallback(e){if(!y.pendingBranch)return;const{vnode:t,activeBranch:n,parentComponent:r,container:o,isSVG:i}=y;Qn(t,"onFallback");const s=h(n),c=()=>{y.isInFallback&&(f(null,e,o,s,r,null,i,a,l),tr(y,e))},u=e.transition&&"out-in"===e.transition.mode;u&&(n.transition.afterLeave=c),y.isInFallback=!0,p(n,r,null,!0),u||c()},move(e,t,n){y.activeBranch&&d(y.activeBranch,e,t,n),y.container=e},next:()=>y.activeBranch&&h(y.activeBranch),registerDep(e,t){const n=!!y.pendingBranch;n&&y.deps++;const r=e.vnode.el;e.asyncDep.catch((t=>{un(t,e,0)})).then((o=>{if(e.isUnmounted||y.isUnmounted||y.pendingId!==e.suspenseId)return;e.asyncResolved=!0;const{vnode:i}=e;Qi(e,o,!1),r&&(i.el=r);const a=!r&&e.subTree.el;t(e,i,v(r||e.subTree.el),r?null:h(e.subTree),y,s,l),a&&m(a),Gn(e,i.el),n&&0==--y.deps&&y.resolve()}))},unmount(e,t){y.isUnmounted=!0,y.activeBranch&&p(y.activeBranch,n,e,t),y.pendingBranch&&p(y.pendingBranch,n,e,t)}};return y}function Xn(e){let t;if(M(e)){const n=vi&&e._c;n&&(e._d=!1,di()),e=e(),n&&(e._d=!0,t=fi,pi())}if(L(e)){const t=Hn(e);0,e=t}return e=ji(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter((t=>t!==e))),e}function er(e,t){t&&t.pendingBranch?L(e)?t.effects.push(...e):t.effects.push(e):xn(e)}function tr(e,t){e.activeBranch=t;const{vnode:n,parentComponent:r}=e,o=n.el=t.el;r&&r.subTree===n&&(r.vnode.el=o,Gn(r,o))}function nr(e,t){if($i){let n=$i.provides;const r=$i.parent&&$i.parent.provides;r===n&&(n=$i.provides=Object.create(r)),n[e]=t}else 0}function rr(e,t,n=!1){const r=$i||Bn;if(r){const o=null==r.parent?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(o&&e in o)return o[e];if(arguments.length>1)return n&&M(t)?t.call(r.proxy):t}else 0}function or(e,t){return cr(e,null,t)}function ir(e,t){return cr(e,null,{flush:"post"})}function sr(e,t){return cr(e,null,{flush:"sync"})}const ar={};function lr(e,t,n){return cr(e,t,n)}function cr(e,t,{immediate:n,deep:r,flush:o,onTrack:i,onTrigger:s}=k){const a=me()===(null==$i?void 0:$i.scope)?$i:null;let l,c,u=!1,f=!1;if(zt(e)?(l=()=>e.value,u=Lt(e)):Vt(e)?(l=()=>e,r=!0):L(e)?(f=!0,u=e.some((e=>Vt(e)||Lt(e))),l=()=>e.map((e=>zt(e)?e.value:Vt(e)?dr(e):M(e)?ln(e,a,2):void 0))):l=M(e)?t?()=>ln(e,a,2):()=>{if(!a||!a.isUnmounted)return c&&c(),cn(e,a,3,[p])}:O,t&&r){const e=l;l=()=>dr(e())}let d,p=e=>{c=g.onStop=()=>{ln(e,a,4)}};if(Yi){if(p=O,t?n&&cn(t,a,3,[l(),f?[]:void 0,p]):l(),"sync"!==o)return O;{const e=ys();d=e.__watcherHandles||(e.__watcherHandles=[])}}let h=f?new Array(e.length).fill(ar):ar;const v=()=>{if(g.active)if(t){const e=g.run();(r||u||(f?e.some(((e,t)=>ie(e,h[t]))):ie(e,h)))&&(c&&c(),cn(t,a,3,[e,h===ar?void 0:f&&h[0]===ar?[]:h,p]),h=e)}else g.run()};let m;v.allowRecurse=!!t,"sync"===o?m=v:"post"===o?m=()=>Ko(v,a&&a.suspense):(v.pre=!0,a&&(v.id=a.uid),m=()=>_n(v));const g=new Ne(l,m);t?n?v():h=g.run():"post"===o?Ko(g.run.bind(g),a&&a.suspense):g.run();const y=()=>{g.stop(),a&&a.scope&&A(a.scope.effects,g)};return d&&d.push(y),y}function ur(e,t,n){const r=this.proxy,o=U(e)?e.includes(".")?fr(r,e):()=>r[e]:e.bind(r,r);let i;M(t)?i=t:(i=t.handler,n=t);const s=$i;Hi(this);const a=cr(o,i.bind(r),n);return s?Hi(s):qi(),a}function fr(e,t){const n=t.split(".");return()=>{let t=e;for(let e=0;e{dr(e,t)}));else if(G(e))for(const n in e)dr(e[n],t);return e}function pr(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Fr((()=>{e.isMounted=!0})),Ur((()=>{e.isUnmounting=!0})),e}const hr=[Function,Array],vr={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:hr,onEnter:hr,onAfterEnter:hr,onEnterCancelled:hr,onBeforeLeave:hr,onLeave:hr,onAfterLeave:hr,onLeaveCancelled:hr,onBeforeAppear:hr,onAppear:hr,onAfterAppear:hr,onAppearCancelled:hr},setup(e,{slots:t}){const n=zi(),r=pr();let o;return()=>{const i=t.default&&_r(t.default(),!0);if(!i||!i.length)return;let s=i[0];if(i.length>1){let e=!1;for(const t of i)if(t.type!==li){0,s=t,e=!0;break}}const a=It(e),{mode:l}=a;if(r.isLeaving)return yr(s);const c=br(s);if(!c)return yr(s);const u=gr(c,a,r,n);wr(c,u);const f=n.subTree,d=f&&br(f);let p=!1;const{getTransitionKey:h}=c.type;if(h){const e=h();void 0===o?o=e:e!==o&&(o=e,p=!0)}if(d&&d.type!==li&&(!_i(c,d)||p)){const e=gr(d,a,r,n);if(wr(d,e),"out-in"===l)return r.isLeaving=!0,e.afterLeave=()=>{r.isLeaving=!1,!1!==n.update.active&&n.update()},yr(s);"in-out"===l&&c.type!==li&&(e.delayLeave=(e,t,n)=>{mr(r,d)[String(d.key)]=d,e._leaveCb=()=>{t(),e._leaveCb=void 0,delete u.delayedLeave},u.delayedLeave=n})}return s}}};function mr(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function gr(e,t,n,r){const{appear:o,mode:i,persisted:s=!1,onBeforeEnter:a,onEnter:l,onAfterEnter:c,onEnterCancelled:u,onBeforeLeave:f,onLeave:d,onAfterLeave:p,onLeaveCancelled:h,onBeforeAppear:v,onAppear:m,onAfterAppear:g,onAppearCancelled:y}=t,b=String(e.key),w=mr(n,e),_=(e,t)=>{e&&cn(e,r,9,t)},E=(e,t)=>{const n=t[1];_(e,t),L(e)?e.every((e=>e.length<=1))&&n():e.length<=1&&n()},x={mode:i,persisted:s,beforeEnter(t){let r=a;if(!n.isMounted){if(!o)return;r=v||a}t._leaveCb&&t._leaveCb(!0);const i=w[b];i&&_i(e,i)&&i.el._leaveCb&&i.el._leaveCb(),_(r,[t])},enter(e){let t=l,r=c,i=u;if(!n.isMounted){if(!o)return;t=m||l,r=g||c,i=y||u}let s=!1;const a=e._enterCb=t=>{s||(s=!0,_(t?i:r,[e]),x.delayedLeave&&x.delayedLeave(),e._enterCb=void 0)};t?E(t,[e,a]):a()},leave(t,r){const o=String(e.key);if(t._enterCb&&t._enterCb(!0),n.isUnmounting)return r();_(f,[t]);let i=!1;const s=t._leaveCb=n=>{i||(i=!0,r(),_(n?h:p,[t]),t._leaveCb=void 0,w[o]===e&&delete w[o])};w[o]=e,d?E(d,[t,s]):s()},clone:e=>gr(e,t,n,r)};return x}function yr(e){if(Or(e))return(e=Ti(e)).children=null,e}function br(e){return Or(e)?e.children?e.children[0]:void 0:e}function wr(e,t){6&e.shapeFlag&&e.component?wr(e.component.subTree,t):128&e.shapeFlag?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function _r(e,t=!1,n){let r=[],o=0;for(let i=0;i1)for(let e=0;e!!e.type.__asyncLoader;function kr(e){M(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:o=200,timeout:i,suspensible:s=!0,onError:a}=e;let l,c=null,u=0;const f=()=>{let e;return c||(e=c=t().catch((e=>{if(e=e instanceof Error?e:new Error(String(e)),a)return new Promise(((t,n)=>{a(e,(()=>t((u++,c=null,f()))),(()=>n(e)),u+1)}));throw e})).then((t=>e!==c&&c?c:(t&&(t.__esModule||"Module"===t[Symbol.toStringTag])&&(t=t.default),l=t,t))))};return Er({name:"AsyncComponentWrapper",__asyncLoader:f,get __asyncResolved(){return l},setup(){const e=$i;if(l)return()=>Sr(l,e);const t=t=>{c=null,un(t,e,13,!r)};if(s&&e.suspense||Yi)return f().then((t=>()=>Sr(t,e))).catch((e=>(t(e),()=>r?Ci(r,{error:e}):null)));const a=Ht(!1),u=Ht(),d=Ht(!!o);return o&&setTimeout((()=>{d.value=!1}),o),null!=i&&setTimeout((()=>{if(!a.value&&!u.value){const e=new Error(`Async component timed out after ${i}ms.`);t(e),u.value=e}}),i),f().then((()=>{a.value=!0,e.parent&&Or(e.parent.vnode)&&_n(e.parent.update)})).catch((e=>{t(e),u.value=e})),()=>a.value&&l?Sr(l,e):u.value&&r?Ci(r,{error:u.value}):n&&!d.value?Ci(n):void 0}})}function Sr(e,t){const{ref:n,props:r,children:o,ce:i}=t.vnode,s=Ci(e,r,o);return s.ref=n,s.ce=i,delete t.vnode.ce,s}const Or=e=>e.type.__isKeepAlive,Cr={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=zi(),r=n.ctx;if(!r.renderer)return()=>{const e=t.default&&t.default();return e&&1===e.length?e[0]:e};const o=new Map,i=new Set;let s=null;const a=n.suspense,{renderer:{p:l,m:c,um:u,o:{createElement:f}}}=r,d=f("div");function p(e){Vr(e),u(e,n,a,!0)}function h(e){o.forEach(((t,n)=>{const r=rs(t.type);!r||e&&e(r)||v(n)}))}function v(e){const t=o.get(e);s&&_i(t,s)?s&&Vr(s):p(t),o.delete(e),i.delete(e)}r.activate=(e,t,n,r,o)=>{const i=e.component;c(e,t,n,0,a),l(i.vnode,e,t,n,i,a,r,e.slotScopeIds,o),Ko((()=>{i.isDeactivated=!1,i.a&&se(i.a);const t=e.props&&e.props.onVnodeMounted;t&&Fi(t,i.parent,e)}),a)},r.deactivate=e=>{const t=e.component;c(e,d,null,1,a),Ko((()=>{t.da&&se(t.da);const n=e.props&&e.props.onVnodeUnmounted;n&&Fi(n,t.parent,e),t.isDeactivated=!0}),a)},lr((()=>[e.include,e.exclude]),(([e,t])=>{e&&h((t=>Nr(e,t))),t&&h((e=>!Nr(t,e)))}),{flush:"post",deep:!0});let m=null;const g=()=>{null!=m&&o.set(m,jr(n.subTree))};return Fr(g),Mr(g),Ur((()=>{o.forEach((e=>{const{subTree:t,suspense:r}=n,o=jr(t);if(e.type!==o.type||e.key!==o.key)p(e);else{Vr(o);const e=o.component.da;e&&Ko(e,r)}}))})),()=>{if(m=null,!t.default)return null;const n=t.default(),r=n[0];if(n.length>1)return s=null,n;if(!(wi(r)&&(4&r.shapeFlag||128&r.shapeFlag)))return s=null,r;let a=jr(r);const l=a.type,c=rs(xr(a)?a.type.__asyncResolved||{}:l),{include:u,exclude:f,max:d}=e;if(u&&(!c||!Nr(u,c))||f&&c&&Nr(f,c))return s=a,r;const p=null==a.key?l:a.key,h=o.get(p);return a.el&&(a=Ti(a),128&r.shapeFlag&&(r.ssContent=a)),m=p,h?(a.el=h.el,a.component=h.component,a.transition&&wr(a,a.transition),a.shapeFlag|=512,i.delete(p),i.add(p)):(i.add(p),d&&i.size>parseInt(d,10)&&v(i.values().next().value)),a.shapeFlag|=256,s=a,Yn(r.type)?r:a}}};function Nr(e,t){return L(e)?e.some((e=>Nr(e,t))):U(e)?e.split(",").includes(t):!!D(e)&&e.test(t)}function Pr(e,t){Rr(e,"a",t)}function Tr(e,t){Rr(e,"da",t)}function Rr(e,t,n=$i){const r=e.__wdc||(e.__wdc=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()});if(Lr(t,r,n),n){let e=n.parent;for(;e&&e.parent;)Or(e.parent.vnode)&&Ar(r,t,n,e),e=e.parent}}function Ar(e,t,n,r){const o=Lr(t,e,r,!0);$r((()=>{A(r[t],o)}),n)}function Vr(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function jr(e){return 128&e.shapeFlag?e.ssContent:e}function Lr(e,t,n=$i,r=!1){if(n){const o=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...r)=>{if(n.isUnmounted)return;je(),Hi(n);const o=cn(t,n,e,r);return qi(),Le(),o});return r?o.unshift(i):o.push(i),i}}const Br=e=>(t,n=$i)=>(!Yi||"sp"===e)&&Lr(e,((...e)=>t(...e)),n),Ir=Br("bm"),Fr=Br("m"),Dr=Br("bu"),Mr=Br("u"),Ur=Br("bum"),$r=Br("um"),zr=Br("sp"),Hr=Br("rtg"),qr=Br("rtc");function Wr(e,t=$i){Lr("ec",e,t)}function Kr(e,t){const n=Bn;if(null===n)return e;const r=ns(n)||n.proxy,o=e.dirs||(e.dirs=[]);for(let e=0;et(e,n,void 0,i&&i[n])));else{const n=Object.keys(e);o=new Array(n.length);for(let r=0,s=n.length;r{const t=r.fn(...e);return t&&(t.key=r.key),t}:r.fn)}return e}function io(e,t,n={},r,o){if(Bn.isCE||Bn.parent&&xr(Bn.parent)&&Bn.parent.isCE)return"default"!==t&&(n.name=t),Ci("slot",n,r&&r());let i=e[t];i&&i._c&&(i._d=!1),di();const s=i&&so(i(n)),a=bi(si,{key:n.key||s&&s.key||`_${t}`},s||(r?r():[]),s&&1===e._?64:-2);return!o&&a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),i&&i._c&&(i._d=!0),a}function so(e){return e.some((e=>!wi(e)||e.type!==li&&!(e.type===si&&!so(e.children))))?e:null}function ao(e,t){const n={};for(const r in e)n[t&&/[A-Z]/.test(r)?`on:${r}`:oe(r)]=e[r];return n}const lo=e=>e?Wi(e)?ns(e)||e.proxy:lo(e.parent):null,co=R(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>lo(e.parent),$root:e=>lo(e.root),$emit:e=>e.emit,$options:e=>yo(e),$forceUpdate:e=>e.f||(e.f=()=>_n(e.update)),$nextTick:e=>e.n||(e.n=wn.bind(e.proxy)),$watch:e=>ur.bind(e)}),uo=(e,t)=>e!==k&&!e.__isScriptSetup&&j(e,t),fo={get({_:e},t){const{ctx:n,setupState:r,data:o,props:i,accessCache:s,type:a,appContext:l}=e;let c;if("$"!==t[0]){const a=s[t];if(void 0!==a)switch(a){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return i[t]}else{if(uo(r,t))return s[t]=1,r[t];if(o!==k&&j(o,t))return s[t]=2,o[t];if((c=e.propsOptions[0])&&j(c,t))return s[t]=3,i[t];if(n!==k&&j(n,t))return s[t]=4,n[t];ho&&(s[t]=0)}}const u=co[t];let f,d;return u?("$attrs"===t&&Be(e,0,t),u(e)):(f=a.__cssModules)&&(f=f[t])?f:n!==k&&j(n,t)?(s[t]=4,n[t]):(d=l.config.globalProperties,j(d,t)?d[t]:void 0)},set({_:e},t,n){const{data:r,setupState:o,ctx:i}=e;return uo(o,t)?(o[t]=n,!0):r!==k&&j(r,t)?(r[t]=n,!0):!j(e.props,t)&&(("$"!==t[0]||!(t.slice(1)in e))&&(i[t]=n,!0))},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:i}},s){let a;return!!n[s]||e!==k&&j(e,s)||uo(t,s)||(a=i[0])&&j(a,s)||j(r,s)||j(co,s)||j(o.config.globalProperties,s)},defineProperty(e,t,n){return null!=n.get?e._.accessCache[t]=0:j(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};const po=R({},fo,{get(e,t){if(t!==Symbol.unscopables)return fo.get(e,t,e)},has:(e,t)=>"_"!==t[0]&&!s(t)});let ho=!0;function vo(e){const t=yo(e),n=e.proxy,r=e.ctx;ho=!1,t.beforeCreate&&mo(t.beforeCreate,e,"bc");const{data:o,computed:i,methods:s,watch:a,provide:l,inject:c,created:u,beforeMount:f,mounted:d,beforeUpdate:p,updated:h,activated:v,deactivated:m,beforeDestroy:g,beforeUnmount:y,destroyed:b,unmounted:w,render:_,renderTracked:E,renderTriggered:x,errorCaptured:k,serverPrefetch:S,expose:C,inheritAttrs:N,components:P,directives:T,filters:R}=t;if(c&&function(e,t,n=O,r=!1){L(e)&&(e=Eo(e));for(const n in e){const o=e[n];let i;i=z(o)?"default"in o?rr(o.from||n,o.default,!0):rr(o.from||n):rr(o),zt(i)&&r?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e}):t[n]=i}}(c,r,null,e.appContext.config.unwrapInjectedRef),s)for(const e in s){const t=s[e];M(t)&&(r[e]=t.bind(n))}if(o){0;const t=o.call(n,n);0,z(t)&&(e.data=Nt(t))}if(ho=!0,i)for(const e in i){const t=i[e],o=M(t)?t.bind(n,n):M(t.get)?t.get.bind(n,n):O;0;const s=!M(t)&&M(t.set)?t.set.bind(n):O,a=is({get:o,set:s});Object.defineProperty(r,e,{enumerable:!0,configurable:!0,get:()=>a.value,set:e=>a.value=e})}if(a)for(const e in a)go(a[e],r,n,e);if(l){const e=M(l)?l.call(n):l;Reflect.ownKeys(e).forEach((t=>{nr(t,e[t])}))}function A(e,t){L(t)?t.forEach((t=>e(t.bind(n)))):t&&e(t.bind(n))}if(u&&mo(u,e,"c"),A(Ir,f),A(Fr,d),A(Dr,p),A(Mr,h),A(Pr,v),A(Tr,m),A(Wr,k),A(qr,E),A(Hr,x),A(Ur,y),A($r,w),A(zr,S),L(C))if(C.length){const t=e.exposed||(e.exposed={});C.forEach((e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t})}))}else e.exposed||(e.exposed={});_&&e.render===O&&(e.render=_),null!=N&&(e.inheritAttrs=N),P&&(e.components=P),T&&(e.directives=T)}function mo(e,t,n){cn(L(e)?e.map((e=>e.bind(t.proxy))):e.bind(t.proxy),t,n)}function go(e,t,n,r){const o=r.includes(".")?fr(n,r):()=>n[r];if(U(e)){const n=t[e];M(n)&&lr(o,n)}else if(M(e))lr(o,e.bind(n));else if(z(e))if(L(e))e.forEach((e=>go(e,t,n,r)));else{const r=M(e.handler)?e.handler.bind(n):t[e.handler];M(r)&&lr(o,r,e)}else 0}function yo(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:i,config:{optionMergeStrategies:s}}=e.appContext,a=i.get(t);let l;return a?l=a:o.length||n||r?(l={},o.length&&o.forEach((e=>bo(l,e,s,!0))),bo(l,t,s)):l=t,z(t)&&i.set(t,l),l}function bo(e,t,n,r=!1){const{mixins:o,extends:i}=t;i&&bo(e,i,n,!0),o&&o.forEach((t=>bo(e,t,n,!0)));for(const o in t)if(r&&"expose"===o);else{const r=wo[o]||n&&n[o];e[o]=r?r(e[o],t[o]):t[o]}return e}const wo={data:_o,props:ko,emits:ko,methods:ko,computed:ko,beforeCreate:xo,created:xo,beforeMount:xo,mounted:xo,beforeUpdate:xo,updated:xo,beforeDestroy:xo,beforeUnmount:xo,destroyed:xo,unmounted:xo,activated:xo,deactivated:xo,errorCaptured:xo,serverPrefetch:xo,components:ko,directives:ko,watch:function(e,t){if(!e)return t;if(!t)return e;const n=R(Object.create(null),e);for(const r in t)n[r]=xo(e[r],t[r]);return n},provide:_o,inject:function(e,t){return ko(Eo(e),Eo(t))}};function _o(e,t){return t?e?function(){return R(M(e)?e.call(this,this):e,M(t)?t.call(this,this):t)}:t:e}function Eo(e){if(L(e)){const t={};for(let n=0;n{l=!0;const[n,r]=Co(e,t,!0);R(s,n),r&&a.push(...r)};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}if(!i&&!l)return z(e)&&r.set(e,S),S;if(L(i))for(let e=0;e-1,r[1]=n<0||e-1||j(r,"default"))&&a.push(t)}}}}const c=[s,a];return z(e)&&r.set(e,c),c}function No(e){return"$"!==e[0]}function Po(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:null===e?"null":""}function To(e,t){return Po(e)===Po(t)}function Ro(e,t){return L(t)?t.findIndex((t=>To(t,e))):M(t)&&To(t,e)?0:-1}const Ao=e=>"_"===e[0]||"$stable"===e,Vo=e=>L(e)?e.map(ji):[ji(e)],jo=(e,t,n)=>{if(t._n)return t;const r=$n(((...e)=>Vo(t(...e))),n);return r._c=!1,r},Lo=(e,t,n)=>{const r=e._ctx;for(const n in e){if(Ao(n))continue;const o=e[n];if(M(o))t[n]=jo(0,o,r);else if(null!=o){0;const e=Vo(o);t[n]=()=>e}}},Bo=(e,t)=>{const n=Vo(t);e.slots.default=()=>n},Io=(e,t)=>{if(32&e.vnode.shapeFlag){const n=t._;n?(e.slots=It(t),ae(t,"_",n)):Lo(t,e.slots={})}else e.slots={},t&&Bo(e,t);ae(e.slots,xi,1)},Fo=(e,t,n)=>{const{vnode:r,slots:o}=e;let i=!0,s=k;if(32&r.shapeFlag){const e=t._;e?n&&1===e?i=!1:(R(o,t),n||1!==e||delete o._):(i=!t.$stable,Lo(t,o)),s=t}else t&&(Bo(e,t),s={default:1});if(i)for(const e in o)Ao(e)||e in s||delete o[e]};function Do(){return{app:null,config:{isNativeTag:C,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Mo=0;function Uo(e,t){return function(n,r=null){M(n)||(n=Object.assign({},n)),null==r||z(r)||(r=null);const o=Do(),i=new Set;let s=!1;const a=o.app={_uid:Mo++,_component:n,_props:r,_container:null,_context:o,_instance:null,version:Es,get config(){return o.config},set config(e){0},use:(e,...t)=>(i.has(e)||(e&&M(e.install)?(i.add(e),e.install(a,...t)):M(e)&&(i.add(e),e(a,...t))),a),mixin:e=>(o.mixins.includes(e)||o.mixins.push(e),a),component:(e,t)=>t?(o.components[e]=t,a):o.components[e],directive:(e,t)=>t?(o.directives[e]=t,a):o.directives[e],mount(i,l,c){if(!s){0;const u=Ci(n,r);return u.appContext=o,l&&t?t(u,i):e(u,i,c),s=!0,a._container=i,i.__vue_app__=a,ns(u.component)||u.component.proxy}},unmount(){s&&(e(null,a._container),delete a._container.__vue_app__)},provide:(e,t)=>(o.provides[e]=t,a)};return a}}function $o(e,t,n,r,o=!1){if(L(e))return void e.forEach(((e,i)=>$o(e,t&&(L(t)?t[i]:t),n,r,o)));if(xr(r)&&!o)return;const i=4&r.shapeFlag?ns(r.component)||r.component.proxy:r.el,s=o?null:i,{i:a,r:l}=e;const c=t&&t.r,u=a.refs===k?a.refs={}:a.refs,f=a.setupState;if(null!=c&&c!==l&&(U(c)?(u[c]=null,j(f,c)&&(f[c]=null)):zt(c)&&(c.value=null)),M(l))ln(l,a,12,[s,u]);else{const t=U(l),r=zt(l);if(t||r){const a=()=>{if(e.f){const n=t?j(f,l)?f[l]:u[l]:l.value;o?L(n)&&A(n,i):L(n)?n.includes(i)||n.push(i):t?(u[l]=[i],j(f,l)&&(f[l]=u[l])):(l.value=[i],e.k&&(u[e.k]=l.value))}else t?(u[l]=s,j(f,l)&&(f[l]=s)):r&&(l.value=s,e.k&&(u[e.k]=s))};s?(a.id=-1,Ko(a,n)):a()}else 0}}let zo=!1;const Ho=e=>/svg/.test(e.namespaceURI)&&"foreignObject"!==e.tagName,qo=e=>8===e.nodeType;function Wo(e){const{mt:t,p:n,o:{patchProp:r,createText:o,nextSibling:i,parentNode:s,remove:a,insert:l,createComment:c}}=e,u=(n,r,a,c,m,g=!1)=>{const y=qo(n)&&"["===n.data,b=()=>h(n,r,a,c,m,y),{type:w,ref:_,shapeFlag:E,patchFlag:x}=r;let k=n.nodeType;r.el=n,-2===x&&(g=!1,r.dynamicChildren=null);let S=null;switch(w){case ai:3!==k?""===r.children?(l(r.el=o(""),s(n),n),S=n):S=b():(n.data!==r.children&&(zo=!0,n.data=r.children),S=i(n));break;case li:S=8!==k||y?b():i(n);break;case ci:if(y&&(k=(n=i(n)).nodeType),1===k||3===k){S=n;const e=!r.children.length;for(let t=0;t{s=s||!!t.dynamicChildren;const{type:l,props:c,patchFlag:u,shapeFlag:f,dirs:p}=t,h="input"===l&&p||"option"===l;if(h||-1!==u){if(p&&Gr(t,null,n,"created"),c)if(h||!s||48&u)for(const t in c)(h&&t.endsWith("value")||P(t)&&!J(t))&&r(e,t,null,c[t],!1,void 0,n);else c.onClick&&r(e,"onClick",null,c.onClick,!1,void 0,n);let l;if((l=c&&c.onVnodeBeforeMount)&&Fi(l,n,t),p&&Gr(t,null,n,"beforeMount"),((l=c&&c.onVnodeMounted)||p)&&er((()=>{l&&Fi(l,n,t),p&&Gr(t,null,n,"mounted")}),o),16&f&&(!c||!c.innerHTML&&!c.textContent)){let r=d(e.firstChild,t,e,n,o,i,s);for(;r;){zo=!0;const e=r;r=r.nextSibling,a(e)}}else 8&f&&e.textContent!==t.children&&(zo=!0,e.textContent=t.children)}return e.nextSibling},d=(e,t,r,o,i,s,a)=>{a=a||!!t.dynamicChildren;const l=t.children,c=l.length;for(let t=0;t{const{slotScopeIds:u}=t;u&&(o=o?o.concat(u):u);const f=s(e),p=d(i(e),t,f,n,r,o,a);return p&&qo(p)&&"]"===p.data?i(t.anchor=p):(zo=!0,l(t.anchor=c("]"),f,p),p)},h=(e,t,r,o,l,c)=>{if(zo=!0,t.el=null,c){const t=v(e);for(;;){const n=i(e);if(!n||n===t)break;a(n)}}const u=i(e),f=s(e);return a(e),n(null,t,f,u,r,o,Ho(f),l),u},v=e=>{let t=0;for(;e;)if((e=i(e))&&qo(e)&&("["===e.data&&t++,"]"===e.data)){if(0===t)return i(e);t--}return e};return[(e,t)=>{if(!t.hasChildNodes())return n(null,e,t),Sn(),void(t._vnode=e);zo=!1,u(t.firstChild,e,null,null,null),Sn(),t._vnode=e},u]}const Ko=er;function Go(e){return Jo(e)}function Yo(e){return Jo(e,Wo)}function Jo(e,t){fe().__VUE__=!0;const{insert:n,remove:r,patchProp:o,createElement:i,createText:s,createComment:a,setText:l,setElementText:c,parentNode:u,nextSibling:f,setScopeId:d=O,insertStaticContent:p}=e,h=(e,t,n,r=null,o=null,i=null,s=!1,a=null,l=!!t.dynamicChildren)=>{if(e===t)return;e&&!_i(e,t)&&(r=q(e),M(e,o,i,!0),e=null),-2===t.patchFlag&&(l=!1,t.dynamicChildren=null);const{type:c,ref:u,shapeFlag:f}=t;switch(c){case ai:v(e,t,n,r);break;case li:m(e,t,n,r);break;case ci:null==e&&g(t,n,r,s);break;case si:P(e,t,n,r,o,i,s,a,l);break;default:1&f?b(e,t,n,r,o,i,s,a,l):6&f?T(e,t,n,r,o,i,s,a,l):(64&f||128&f)&&c.process(e,t,n,r,o,i,s,a,l,K)}null!=u&&o&&$o(u,e&&e.ref,i,t||e,!t)},v=(e,t,r,o)=>{if(null==e)n(t.el=s(t.children),r,o);else{const n=t.el=e.el;t.children!==e.children&&l(n,t.children)}},m=(e,t,r,o)=>{null==e?n(t.el=a(t.children||""),r,o):t.el=e.el},g=(e,t,n,r)=>{[e.el,e.anchor]=p(e.children,t,n,r,e.el,e.anchor)},y=({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=f(e),r(e),e=n;r(t)},b=(e,t,n,r,o,i,s,a,l)=>{s=s||"svg"===t.type,null==e?w(t,n,r,o,i,s,a,l):x(e,t,o,i,s,a,l)},w=(e,t,r,s,a,l,u,f)=>{let d,p;const{type:h,props:v,shapeFlag:m,transition:g,dirs:y}=e;if(d=e.el=i(e.type,l,v&&v.is,v),8&m?c(d,e.children):16&m&&E(e.children,d,null,s,a,l&&"foreignObject"!==h,u,f),y&&Gr(e,null,s,"created"),_(d,e,e.scopeId,u,s),v){for(const t in v)"value"===t||J(t)||o(d,t,null,v[t],l,e.children,s,a,H);"value"in v&&o(d,"value",null,v.value),(p=v.onVnodeBeforeMount)&&Fi(p,s,e)}y&&Gr(e,null,s,"beforeMount");const b=(!a||a&&!a.pendingBranch)&&g&&!g.persisted;b&&g.beforeEnter(d),n(d,t,r),((p=v&&v.onVnodeMounted)||b||y)&&Ko((()=>{p&&Fi(p,s,e),b&&g.enter(d),y&&Gr(e,null,s,"mounted")}),a)},_=(e,t,n,r,o)=>{if(n&&d(e,n),r)for(let t=0;t{for(let c=l;c{const l=t.el=e.el;let{patchFlag:u,dynamicChildren:f,dirs:d}=t;u|=16&e.patchFlag;const p=e.props||k,h=t.props||k;let v;n&&Qo(n,!1),(v=h.onVnodeBeforeUpdate)&&Fi(v,n,t,e),d&&Gr(t,e,n,"beforeUpdate"),n&&Qo(n,!0);const m=i&&"foreignObject"!==t.type;if(f?C(e.dynamicChildren,f,l,n,r,m,s):a||B(e,t,l,null,n,r,m,s,!1),u>0){if(16&u)N(l,t,p,h,n,r,i);else if(2&u&&p.class!==h.class&&o(l,"class",null,h.class,i),4&u&&o(l,"style",p.style,h.style,i),8&u){const s=t.dynamicProps;for(let t=0;t{v&&Fi(v,n,t,e),d&&Gr(t,e,n,"updated")}),r)},C=(e,t,n,r,o,i,s)=>{for(let a=0;a{if(n!==r){if(n!==k)for(const l in n)J(l)||l in r||o(e,l,n[l],null,a,t.children,i,s,H);for(const l in r){if(J(l))continue;const c=r[l],u=n[l];c!==u&&"value"!==l&&o(e,l,u,c,a,t.children,i,s,H)}"value"in r&&o(e,"value",n.value,r.value)}},P=(e,t,r,o,i,a,l,c,u)=>{const f=t.el=e?e.el:s(""),d=t.anchor=e?e.anchor:s("");let{patchFlag:p,dynamicChildren:h,slotScopeIds:v}=t;v&&(c=c?c.concat(v):v),null==e?(n(f,r,o),n(d,r,o),E(t.children,r,d,i,a,l,c,u)):p>0&&64&p&&h&&e.dynamicChildren?(C(e.dynamicChildren,h,r,i,a,l,c),(null!=t.key||i&&t===i.subTree)&&Zo(e,t,!0)):B(e,t,r,d,i,a,l,c,u)},T=(e,t,n,r,o,i,s,a,l)=>{t.slotScopeIds=a,null==e?512&t.shapeFlag?o.ctx.activate(t,n,r,s,l):R(t,n,r,o,i,s,l):A(e,t,l)},R=(e,t,n,r,o,i,s)=>{const a=e.component=Ui(e,r,o);if(Or(e)&&(a.ctx.renderer=K),Ji(a),a.asyncDep){if(o&&o.registerDep(a,V),!e.el){const e=a.subTree=Ci(li);m(null,e,t,n)}}else V(a,e,t,n,o,i,s)},A=(e,t,n)=>{const r=t.component=e.component;if(function(e,t,n){const{props:r,children:o,component:i}=e,{props:s,children:a,patchFlag:l}=t,c=i.emitsOptions;if(t.dirs||t.transition)return!0;if(!(n&&l>=0))return!(!o&&!a||a&&a.$stable)||r!==s&&(r?!s||Kn(r,s,c):!!s);if(1024&l)return!0;if(16&l)return r?Kn(r,s,c):!!s;if(8&l){const e=t.dynamicProps;for(let t=0;thn&&pn.splice(t,1)}(r.update),r.update()}else t.el=e.el,r.vnode=t},V=(e,t,n,r,o,i,s)=>{const a=e.effect=new Ne((()=>{if(e.isMounted){let t,{next:n,bu:r,u:a,parent:l,vnode:c}=e,f=n;0,Qo(e,!1),n?(n.el=c.el,L(e,n,s)):n=c,r&&se(r),(t=n.props&&n.props.onVnodeBeforeUpdate)&&Fi(t,l,n,c),Qo(e,!0);const d=zn(e);0;const p=e.subTree;e.subTree=d,h(p,d,u(p.el),q(p),e,o,i),n.el=d.el,null===f&&Gn(e,d.el),a&&Ko(a,o),(t=n.props&&n.props.onVnodeUpdated)&&Ko((()=>Fi(t,l,n,c)),o)}else{let s;const{el:a,props:l}=t,{bm:c,m:u,parent:f}=e,d=xr(t);if(Qo(e,!1),c&&se(c),!d&&(s=l&&l.onVnodeBeforeMount)&&Fi(s,f,t),Qo(e,!0),a&&Y){const n=()=>{e.subTree=zn(e),Y(a,e.subTree,e,o,null)};d?t.type.__asyncLoader().then((()=>!e.isUnmounted&&n())):n()}else{0;const s=e.subTree=zn(e);0,h(null,s,n,r,e,o,i),t.el=s.el}if(u&&Ko(u,o),!d&&(s=l&&l.onVnodeMounted)){const e=t;Ko((()=>Fi(s,f,e)),o)}(256&t.shapeFlag||f&&xr(f.vnode)&&256&f.vnode.shapeFlag)&&e.a&&Ko(e.a,o),e.isMounted=!0,t=n=r=null}}),(()=>_n(l)),e.scope),l=e.update=()=>a.run();l.id=e.uid,Qo(e,!0),l()},L=(e,t,n)=>{t.component=e;const r=e.vnode.props;e.vnode=t,e.next=null,function(e,t,n,r){const{props:o,attrs:i,vnode:{patchFlag:s}}=e,a=It(o),[l]=e.propsOptions;let c=!1;if(!(r||s>0)||16&s){let r;So(e,t,o,i)&&(c=!0);for(const i in a)t&&(j(t,i)||(r=ne(i))!==i&&j(t,r))||(l?!n||void 0===n[i]&&void 0===n[r]||(o[i]=Oo(l,a,i,void 0,e,!0)):delete o[i]);if(i!==a)for(const e in i)t&&j(t,e)||(delete i[e],c=!0)}else if(8&s){const n=e.vnode.dynamicProps;for(let r=0;r{const u=e&&e.children,f=e?e.shapeFlag:0,d=t.children,{patchFlag:p,shapeFlag:h}=t;if(p>0){if(128&p)return void F(u,d,n,r,o,i,s,a,l);if(256&p)return void I(u,d,n,r,o,i,s,a,l)}8&h?(16&f&&H(u,o,i),d!==u&&c(n,d)):16&f?16&h?F(u,d,n,r,o,i,s,a,l):H(u,o,i,!0):(8&f&&c(n,""),16&h&&E(d,n,r,o,i,s,a,l))},I=(e,t,n,r,o,i,s,a,l)=>{t=t||S;const c=(e=e||S).length,u=t.length,f=Math.min(c,u);let d;for(d=0;du?H(e,o,i,!0,!1,f):E(t,n,r,o,i,s,a,l,f)},F=(e,t,n,r,o,i,s,a,l)=>{let c=0;const u=t.length;let f=e.length-1,d=u-1;for(;c<=f&&c<=d;){const r=e[c],u=t[c]=l?Li(t[c]):ji(t[c]);if(!_i(r,u))break;h(r,u,n,null,o,i,s,a,l),c++}for(;c<=f&&c<=d;){const r=e[f],c=t[d]=l?Li(t[d]):ji(t[d]);if(!_i(r,c))break;h(r,c,n,null,o,i,s,a,l),f--,d--}if(c>f){if(c<=d){const e=d+1,f=ed)for(;c<=f;)M(e[c],o,i,!0),c++;else{const p=c,v=c,m=new Map;for(c=v;c<=d;c++){const e=t[c]=l?Li(t[c]):ji(t[c]);null!=e.key&&m.set(e.key,c)}let g,y=0;const b=d-v+1;let w=!1,_=0;const E=new Array(b);for(c=0;c=b){M(r,o,i,!0);continue}let u;if(null!=r.key)u=m.get(r.key);else for(g=v;g<=d;g++)if(0===E[g-v]&&_i(r,t[g])){u=g;break}void 0===u?M(r,o,i,!0):(E[u-v]=c+1,u>=_?_=u:w=!0,h(r,t[u],n,null,o,i,s,a,l),y++)}const x=w?function(e){const t=e.slice(),n=[0];let r,o,i,s,a;const l=e.length;for(r=0;r>1,e[n[a]]0&&(t[r]=n[i-1]),n[i]=r)}}i=n.length,s=n[i-1];for(;i-- >0;)n[i]=s,s=t[s];return n}(E):S;for(g=x.length-1,c=b-1;c>=0;c--){const e=v+c,f=t[e],d=e+1{const{el:s,type:a,transition:l,children:c,shapeFlag:u}=e;if(6&u)return void D(e.component.subTree,t,r,o);if(128&u)return void e.suspense.move(t,r,o);if(64&u)return void a.move(e,t,r,K);if(a===si){n(s,t,r);for(let e=0;e{let i;for(;e&&e!==t;)i=f(e),n(e,r,o),e=i;n(t,r,o)})(e,t,r);if(2!==o&&1&u&&l)if(0===o)l.beforeEnter(s),n(s,t,r),Ko((()=>l.enter(s)),i);else{const{leave:e,delayLeave:o,afterLeave:i}=l,a=()=>n(s,t,r),c=()=>{e(s,(()=>{a(),i&&i()}))};o?o(s,a,c):c()}else n(s,t,r)},M=(e,t,n,r=!1,o=!1)=>{const{type:i,props:s,ref:a,children:l,dynamicChildren:c,shapeFlag:u,patchFlag:f,dirs:d}=e;if(null!=a&&$o(a,null,n,e,!0),256&u)return void t.ctx.deactivate(e);const p=1&u&&d,h=!xr(e);let v;if(h&&(v=s&&s.onVnodeBeforeUnmount)&&Fi(v,t,e),6&u)z(e.component,n,r);else{if(128&u)return void e.suspense.unmount(n,r);p&&Gr(e,null,t,"beforeUnmount"),64&u?e.type.remove(e,t,n,o,K,r):c&&(i!==si||f>0&&64&f)?H(c,t,n,!1,!0):(i===si&&384&f||!o&&16&u)&&H(l,t,n),r&&U(e)}(h&&(v=s&&s.onVnodeUnmounted)||p)&&Ko((()=>{v&&Fi(v,t,e),p&&Gr(e,null,t,"unmounted")}),n)},U=e=>{const{type:t,el:n,anchor:o,transition:i}=e;if(t===si)return void $(n,o);if(t===ci)return void y(e);const s=()=>{r(n),i&&!i.persisted&&i.afterLeave&&i.afterLeave()};if(1&e.shapeFlag&&i&&!i.persisted){const{leave:t,delayLeave:r}=i,o=()=>t(n,s);r?r(e.el,s,o):o()}else s()},$=(e,t)=>{let n;for(;e!==t;)n=f(e),r(e),e=n;r(t)},z=(e,t,n)=>{const{bum:r,scope:o,update:i,subTree:s,um:a}=e;r&&se(r),o.stop(),i&&(i.active=!1,M(s,e,t,n)),a&&Ko(a,t),Ko((()=>{e.isUnmounted=!0}),t),t&&t.pendingBranch&&!t.isUnmounted&&e.asyncDep&&!e.asyncResolved&&e.suspenseId===t.pendingId&&(t.deps--,0===t.deps&&t.resolve())},H=(e,t,n,r=!1,o=!1,i=0)=>{for(let s=i;s6&e.shapeFlag?q(e.component.subTree):128&e.shapeFlag?e.suspense.next():f(e.anchor||e.el),W=(e,t,n)=>{null==e?t._vnode&&M(t._vnode,null,null,!0):h(t._vnode||null,e,t,null,null,null,n),kn(),Sn(),t._vnode=e},K={p:h,um:M,m:D,r:U,mt:R,mc:E,pc:B,pbc:C,n:q,o:e};let G,Y;return t&&([G,Y]=t(K)),{render:W,hydrate:G,createApp:Uo(W,G)}}function Qo({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Zo(e,t,n=!1){const r=e.children,o=t.children;if(L(r)&&L(o))for(let e=0;ee.__isTeleport,ei=e=>e&&(e.disabled||""===e.disabled),ti=e=>"undefined"!=typeof SVGElement&&e instanceof SVGElement,ni=(e,t)=>{const n=e&&e.to;if(U(n)){if(t){const e=t(n);return e}return null}return n};function ri(e,t,n,{o:{insert:r},m:o},i=2){0===i&&r(e.targetAnchor,t,n);const{el:s,anchor:a,shapeFlag:l,children:c,props:u}=e,f=2===i;if(f&&r(s,t,n),(!f||ei(u))&&16&l)for(let e=0;e{16&y&&u(b,e,t,o,i,s,a,l)};g?m(n,c):f&&m(f,d)}else{t.el=e.el;const r=t.anchor=e.anchor,u=t.target=e.target,p=t.targetAnchor=e.targetAnchor,v=ei(e.props),m=v?n:u,y=v?r:p;if(s=s||ti(u),w?(d(e.dynamicChildren,w,m,o,i,s,a),Zo(e,t,!0)):l||f(e,t,m,y,o,i,s,a,!1),g)v||ri(t,n,r,c,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const e=t.target=ni(t.props,h);e&&ri(t,e,null,c,0)}else v&&ri(t,u,p,c,1)}ii(t)},remove(e,t,n,r,{um:o,o:{remove:i}},s){const{shapeFlag:a,children:l,anchor:c,targetAnchor:u,target:f,props:d}=e;if(f&&i(u),(s||!ei(d))&&(i(c),16&a))for(let e=0;e0?fi||S:null,pi(),vi>0&&fi&&fi.push(e),e}function yi(e,t,n,r,o,i){return gi(Oi(e,t,n,r,o,i,!0))}function bi(e,t,n,r,o){return gi(Ci(e,t,n,r,o,!0))}function wi(e){return!!e&&!0===e.__v_isVNode}function _i(e,t){return e.type===t.type&&e.key===t.key}function Ei(e){hi=e}const xi="__vInternal",ki=({key:e})=>null!=e?e:null,Si=({ref:e,ref_key:t,ref_for:n})=>null!=e?U(e)||zt(e)||M(e)?{i:Bn,r:e,k:t,f:!!n}:e:null;function Oi(e,t=null,n=null,r=0,o=null,i=(e===si?0:1),s=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ki(t),ref:t&&Si(t),scopeId:In,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:Bn};return a?(Bi(l,n),128&i&&e.normalize(l)):n&&(l.shapeFlag|=U(n)?8:16),vi>0&&!s&&fi&&(l.patchFlag>0||6&i)&&32!==l.patchFlag&&fi.push(l),l}const Ci=Ni;function Ni(e,t=null,n=null,r=0,o=null,i=!1){if(e&&e!==Zr||(e=li),wi(e)){const r=Ti(e,t,!0);return n&&Bi(r,n),vi>0&&!i&&fi&&(6&r.shapeFlag?fi[fi.indexOf(e)]=r:fi.push(r)),r.patchFlag|=-2,r}if(os(e)&&(e=e.__vccOpts),t){t=Pi(t);let{class:e,style:n}=t;e&&!U(e)&&(t.class=d(e)),z(n)&&(Bt(n)&&!L(n)&&(n=R({},n)),t.style=a(n))}return Oi(e,t,n,r,o,U(e)?1:Yn(e)?128:Xo(e)?64:z(e)?4:M(e)?2:0,i,!0)}function Pi(e){return e?Bt(e)||xi in e?R({},e):e:null}function Ti(e,t,n=!1){const{props:r,ref:o,patchFlag:i,children:s}=e,a=t?Ii(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&ki(a),ref:t&&t.ref?n&&o?L(o)?o.concat(Si(t)):[o,Si(t)]:Si(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==si?-1===i?16:16|i:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Ti(e.ssContent),ssFallback:e.ssFallback&&Ti(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Ri(e=" ",t=0){return Ci(ai,null,e,t)}function Ai(e,t){const n=Ci(ci,null,e);return n.staticCount=t,n}function Vi(e="",t=!1){return t?(di(),bi(li,null,e)):Ci(li,null,e)}function ji(e){return null==e||"boolean"==typeof e?Ci(li):L(e)?Ci(si,null,e.slice()):"object"==typeof e?Li(e):Ci(ai,null,String(e))}function Li(e){return null===e.el&&-1!==e.patchFlag||e.memo?e:Ti(e)}function Bi(e,t){let n=0;const{shapeFlag:r}=e;if(null==t)t=null;else if(L(t))n=16;else if("object"==typeof t){if(65&r){const n=t.default;return void(n&&(n._c&&(n._d=!1),Bi(e,n()),n._c&&(n._d=!0)))}{n=32;const r=t._;r||xi in t?3===r&&Bn&&(1===Bn.slots._?t._=1:(t._=2,e.patchFlag|=1024)):t._ctx=Bn}}else M(t)?(t={default:t,_ctx:Bn},n=32):(t=String(t),64&r?(n=16,t=[Ri(t)]):n=8);e.children=t,e.shapeFlag|=n}function Ii(...e){const t={};for(let n=0;n$i||Bn,Hi=e=>{$i=e,e.scope.on()},qi=()=>{$i&&$i.scope.off(),$i=null};function Wi(e){return 4&e.vnode.shapeFlag}let Ki,Gi,Yi=!1;function Ji(e,t=!1){Yi=t;const{props:n,children:r}=e.vnode,o=Wi(e);!function(e,t,n,r=!1){const o={},i={};ae(i,xi,1),e.propsDefaults=Object.create(null),So(e,t,o,i);for(const t in e.propsOptions[0])t in o||(o[t]=void 0);n?e.props=r?o:Pt(o):e.type.props?e.props=o:e.props=i,e.attrs=i}(e,n,o,t),Io(e,r);const i=o?function(e,t){const n=e.type;0;e.accessCache=Object.create(null),e.proxy=Ft(new Proxy(e.ctx,fo)),!1;const{setup:r}=n;if(r){const n=e.setupContext=r.length>1?ts(e):null;Hi(e),je();const o=ln(r,e,0,[e.props,n]);if(Le(),qi(),H(o)){if(o.then(qi,qi),t)return o.then((n=>{Qi(e,n,t)})).catch((t=>{un(t,e,0)}));e.asyncDep=o}else Qi(e,o,t)}else es(e,t)}(e,t):void 0;return Yi=!1,i}function Qi(e,t,n){M(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:z(t)&&(e.setupState=Qt(t)),es(e,n)}function Zi(e){Ki=e,Gi=e=>{e.render._rc&&(e.withProxy=new Proxy(e.ctx,po))}}const Xi=()=>!Ki;function es(e,t,n){const r=e.type;if(!e.render){if(!t&&Ki&&!r.render){const t=r.template||yo(e).template;if(t){0;const{isCustomElement:n,compilerOptions:o}=e.appContext.config,{delimiters:i,compilerOptions:s}=r,a=R(R({isCustomElement:n,delimiters:i},o),s);r.render=Ki(t,a)}}e.render=r.render||O,Gi&&Gi(e)}Hi(e),je(),vo(e),Le(),qi()}function ts(e){const t=t=>{e.exposed=t||{}};let n;return{get attrs(){return n||(n=function(e){return new Proxy(e.attrs,{get:(t,n)=>(Be(e,0,"$attrs"),t[n])})}(e))},slots:e.slots,emit:e.emit,expose:t}}function ns(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Qt(Ft(e.exposed)),{get:(t,n)=>n in t?t[n]:n in co?co[n](e):void 0,has:(e,t)=>t in e||t in co}))}function rs(e,t=!0){return M(e)?e.displayName||e.name:e.name||t&&e.__name}function os(e){return M(e)&&"__vccOpts"in e}const is=(e,t)=>function(e,t,n=!1){let r,o;const i=M(e);return i?(r=e,o=O):(r=e.get,o=e.set),new on(r,o,i||!o,n)}(e,0,Yi);function ss(){return null}function as(){return null}function ls(e){0}function cs(e,t){return null}function us(){return ds().slots}function fs(){return ds().attrs}function ds(){const e=zi();return e.setupContext||(e.setupContext=ts(e))}function ps(e,t){const n=L(e)?e.reduce(((e,t)=>(e[t]={},e)),{}):e;for(const e in t){const r=n[e];r?L(r)||M(r)?n[e]={type:r,default:t[e]}:r.default=t[e]:null===r&&(n[e]={default:t[e]})}return n}function hs(e,t){const n={};for(const r in e)t.includes(r)||Object.defineProperty(n,r,{enumerable:!0,get:()=>e[r]});return n}function vs(e){const t=zi();let n=e();return qi(),H(n)&&(n=n.catch((e=>{throw Hi(t),e}))),[n,()=>Hi(t)]}function ms(e,t,n){const r=arguments.length;return 2===r?z(t)&&!L(t)?wi(t)?Ci(e,null,[t]):Ci(e,t):Ci(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):3===r&&wi(n)&&(n=[n]),Ci(e,t,n))}const gs=Symbol(""),ys=()=>{{const e=rr(gs);return e}};function bs(){return void 0}function ws(e,t,n,r){const o=n[r];if(o&&_s(o,e))return o;const i=t();return i.memo=e.slice(),n[r]=i}function _s(e,t){const n=e.memo;if(n.length!=t.length)return!1;for(let e=0;e0&&fi&&fi.push(e),!0}const Es="3.2.47",xs={createComponentInstance:Ui,setupComponent:Ji,renderComponentRoot:zn,setCurrentRenderingInstance:Fn,isVNode:wi,normalizeVNode:ji},ks=null,Ss=null,Os="undefined"!=typeof document?document:null,Cs=Os&&Os.createElement("template"),Ns={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t?Os.createElementNS("http://www.w3.org/2000/svg",e):Os.createElement(e,n?{is:n}:void 0);return"select"===e&&r&&null!=r.multiple&&o.setAttribute("multiple",r.multiple),o},createText:e=>Os.createTextNode(e),createComment:e=>Os.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Os.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,i){const s=n?n.previousSibling:t.lastChild;if(o&&(o===i||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),o!==i&&(o=o.nextSibling););else{Cs.innerHTML=r?`${e}`:e;const o=Cs.content;if(r){const e=o.firstChild;for(;e.firstChild;)o.appendChild(e.firstChild);o.removeChild(e)}t.insertBefore(o,n)}return[s?s.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};const Ps=/\s*!important$/;function Ts(e,t,n){if(L(n))n.forEach((n=>Ts(e,t,n)));else if(null==n&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=function(e,t){const n=As[t];if(n)return n;let r=ee(t);if("filter"!==r&&r in e)return As[t]=r;r=re(r);for(let n=0;n{if(e._vts){if(e._vts<=n.attached)return}else e._vts=Date.now();cn(function(e,t){if(L(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map((e=>t=>!t._stopped&&e&&e(t)))}return t}(e,n.value),t,5,[e])};return n.value=e,n.attached=Ds(),n}(r,o);js(e,n,s,a)}else s&&(!function(e,t,n,r){e.removeEventListener(t,n,r)}(e,n,s,a),i[t]=void 0)}}const Bs=/(?:Once|Passive|Capture)$/;let Is=0;const Fs=Promise.resolve(),Ds=()=>Is||(Fs.then((()=>Is=0)),Is=Date.now());const Ms=/^on[a-z]/;function Us(e,t){const n=Er(e);class r extends Hs{constructor(e){super(n,e,t)}}return r.def=n,r}const $s=e=>Us(e,Ka),zs="undefined"!=typeof HTMLElement?HTMLElement:class{};class Hs extends zs{constructor(e,t={},n){super(),this._def=e,this._props=t,this._instance=null,this._connected=!1,this._resolved=!1,this._numberProps=null,this.shadowRoot&&n?n(this._createVNode(),this.shadowRoot):(this.attachShadow({mode:"open"}),this._def.__asyncLoader||this._resolveProps(this._def))}connectedCallback(){this._connected=!0,this._instance||(this._resolved?this._update():this._resolveDef())}disconnectedCallback(){this._connected=!1,wn((()=>{this._connected||(Wa(null,this.shadowRoot),this._instance=null)}))}_resolveDef(){this._resolved=!0;for(let e=0;e{for(const t of e)this._setAttr(t.attributeName)})).observe(this,{attributes:!0});const e=(e,t=!1)=>{const{props:n,styles:r}=e;let o;if(n&&!L(n))for(const e in n){const t=n[e];(t===Number||t&&t.type===Number)&&(e in this._props&&(this._props[e]=ce(this._props[e])),(o||(o=Object.create(null)))[ee(e)]=!0)}this._numberProps=o,t&&this._resolveProps(e),this._applyStyles(r),this._update()},t=this._def.__asyncLoader;t?t().then((t=>e(t,!0))):e(this._def)}_resolveProps(e){const{props:t}=e,n=L(t)?t:Object.keys(t||{});for(const e of Object.keys(this))"_"!==e[0]&&n.includes(e)&&this._setProp(e,this[e],!0,!1);for(const e of n.map(ee))Object.defineProperty(this,e,{get(){return this._getProp(e)},set(t){this._setProp(e,t)}})}_setAttr(e){let t=this.getAttribute(e);const n=ee(e);this._numberProps&&this._numberProps[n]&&(t=ce(t)),this._setProp(n,t,!1)}_getProp(e){return this._props[e]}_setProp(e,t,n=!0,r=!0){t!==this._props[e]&&(this._props[e]=t,r&&this._instance&&this._update(),n&&(!0===t?this.setAttribute(ne(e),""):"string"==typeof t||"number"==typeof t?this.setAttribute(ne(e),t+""):t||this.removeAttribute(ne(e))))}_update(){Wa(this._createVNode(),this.shadowRoot)}_createVNode(){const e=Ci(this._def,R({},this._props));return this._instance||(e.ce=e=>{this._instance=e,e.isCE=!0;const t=(e,t)=>{this.dispatchEvent(new CustomEvent(e,{detail:t}))};e.emit=(e,...n)=>{t(e,n),ne(e)!==e&&t(ne(e),n)};let n=this;for(;n=n&&(n.parentNode||n.host);)if(n instanceof Hs){e.parent=n._instance,e.provides=n._instance.provides;break}}),e}_applyStyles(e){e&&e.forEach((e=>{const t=document.createElement("style");t.textContent=e,this.shadowRoot.appendChild(t)}))}}function qs(e="$style"){{const t=zi();if(!t)return k;const n=t.type.__cssModules;if(!n)return k;const r=n[e];return r||k}}function Ws(e){const t=zi();if(!t)return;const n=t.ut=(n=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach((e=>Gs(e,n)))},r=()=>{const r=e(t.proxy);Ks(t.subTree,r),n(r)};ir(r),Fr((()=>{const e=new MutationObserver(r);e.observe(t.subTree.el.parentNode,{childList:!0}),$r((()=>e.disconnect()))}))}function Ks(e,t){if(128&e.shapeFlag){const n=e.suspense;e=n.activeBranch,n.pendingBranch&&!n.isHydrating&&n.effects.push((()=>{Ks(n.activeBranch,t)}))}for(;e.component;)e=e.component.subTree;if(1&e.shapeFlag&&e.el)Gs(e.el,t);else if(e.type===si)e.children.forEach((e=>Ks(e,t)));else if(e.type===ci){let{el:n,anchor:r}=e;for(;n&&(Gs(n,t),n!==r);)n=n.nextSibling}}function Gs(e,t){if(1===e.nodeType){const n=e.style;for(const e in t)n.setProperty(`--${e}`,t[e])}}const Ys="transition",Js="animation",Qs=(e,{slots:t})=>ms(vr,na(e),t);Qs.displayName="Transition";const Zs={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Xs=Qs.props=R({},vr.props,Zs),ea=(e,t=[])=>{L(e)?e.forEach((e=>e(...t))):e&&e(...t)},ta=e=>!!e&&(L(e)?e.some((e=>e.length>1)):e.length>1);function na(e){const t={};for(const n in e)n in Zs||(t[n]=e[n]);if(!1===e.css)return t;const{name:n="v",type:r,duration:o,enterFromClass:i=`${n}-enter-from`,enterActiveClass:s=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:l=i,appearActiveClass:c=s,appearToClass:u=a,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:p=`${n}-leave-to`}=e,h=function(e){if(null==e)return null;if(z(e))return[ra(e.enter),ra(e.leave)];{const t=ra(e);return[t,t]}}(o),v=h&&h[0],m=h&&h[1],{onBeforeEnter:g,onEnter:y,onEnterCancelled:b,onLeave:w,onLeaveCancelled:_,onBeforeAppear:E=g,onAppear:x=y,onAppearCancelled:k=b}=t,S=(e,t,n)=>{ia(e,t?u:a),ia(e,t?c:s),n&&n()},O=(e,t)=>{e._isLeaving=!1,ia(e,f),ia(e,p),ia(e,d),t&&t()},C=e=>(t,n)=>{const o=e?x:y,s=()=>S(t,e,n);ea(o,[t,s]),sa((()=>{ia(t,e?l:i),oa(t,e?u:a),ta(o)||la(t,r,v,s)}))};return R(t,{onBeforeEnter(e){ea(g,[e]),oa(e,i),oa(e,s)},onBeforeAppear(e){ea(E,[e]),oa(e,l),oa(e,c)},onEnter:C(!1),onAppear:C(!0),onLeave(e,t){e._isLeaving=!0;const n=()=>O(e,t);oa(e,f),da(),oa(e,d),sa((()=>{e._isLeaving&&(ia(e,f),oa(e,p),ta(w)||la(e,r,m,n))})),ea(w,[e,n])},onEnterCancelled(e){S(e,!1),ea(b,[e])},onAppearCancelled(e){S(e,!0),ea(k,[e])},onLeaveCancelled(e){O(e),ea(_,[e])}})}function ra(e){return ce(e)}function oa(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.add(t))),(e._vtc||(e._vtc=new Set)).add(t)}function ia(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.remove(t)));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function sa(e){requestAnimationFrame((()=>{requestAnimationFrame(e)}))}let aa=0;function la(e,t,n,r){const o=e._endId=++aa,i=()=>{o===e._endId&&r()};if(n)return setTimeout(i,n);const{type:s,timeout:a,propCount:l}=ca(e,t);if(!s)return r();const c=s+"end";let u=0;const f=()=>{e.removeEventListener(c,d),i()},d=t=>{t.target===e&&++u>=l&&f()};setTimeout((()=>{u(n[e]||"").split(", "),o=r(`${Ys}Delay`),i=r(`${Ys}Duration`),s=ua(o,i),a=r(`${Js}Delay`),l=r(`${Js}Duration`),c=ua(a,l);let u=null,f=0,d=0;t===Ys?s>0&&(u=Ys,f=s,d=i.length):t===Js?c>0&&(u=Js,f=c,d=l.length):(f=Math.max(s,c),u=f>0?s>c?Ys:Js:null,d=u?u===Ys?i.length:l.length:0);return{type:u,timeout:f,propCount:d,hasTransform:u===Ys&&/\b(transform|all)(,|$)/.test(r(`${Ys}Property`).toString())}}function ua(e,t){for(;e.lengthfa(t)+fa(e[n]))))}function fa(e){return 1e3*Number(e.slice(0,-1).replace(",","."))}function da(){return document.body.offsetHeight}const pa=new WeakMap,ha=new WeakMap,va={name:"TransitionGroup",props:R({},Xs,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=zi(),r=pr();let o,i;return Mr((()=>{if(!o.length)return;const t=e.moveClass||`${e.name||"v"}-move`;if(!function(e,t,n){const r=e.cloneNode();e._vtc&&e._vtc.forEach((e=>{e.split(/\s+/).forEach((e=>e&&r.classList.remove(e)))}));n.split(/\s+/).forEach((e=>e&&r.classList.add(e))),r.style.display="none";const o=1===t.nodeType?t:t.parentNode;o.appendChild(r);const{hasTransform:i}=ca(r);return o.removeChild(r),i}(o[0].el,n.vnode.el,t))return;o.forEach(ga),o.forEach(ya);const r=o.filter(ba);da(),r.forEach((e=>{const n=e.el,r=n.style;oa(n,t),r.transform=r.webkitTransform=r.transitionDuration="";const o=n._moveCb=e=>{e&&e.target!==n||e&&!/transform$/.test(e.propertyName)||(n.removeEventListener("transitionend",o),n._moveCb=null,ia(n,t))};n.addEventListener("transitionend",o)}))})),()=>{const s=It(e),a=na(s);let l=s.tag||si;o=i,i=t.default?_r(t.default()):[];for(let e=0;e{const t=e.props["onUpdate:modelValue"]||!1;return L(t)?e=>se(t,e):t};function _a(e){e.target.composing=!0}function Ea(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const xa={created(e,{modifiers:{lazy:t,trim:n,number:r}},o){e._assign=wa(o);const i=r||o.props&&"number"===o.props.type;js(e,t?"change":"input",(t=>{if(t.target.composing)return;let r=e.value;n&&(r=r.trim()),i&&(r=le(r)),e._assign(r)})),n&&js(e,"change",(()=>{e.value=e.value.trim()})),t||(js(e,"compositionstart",_a),js(e,"compositionend",Ea),js(e,"change",Ea))},mounted(e,{value:t}){e.value=null==t?"":t},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:r,number:o}},i){if(e._assign=wa(i),e.composing)return;if(document.activeElement===e&&"range"!==e.type){if(n)return;if(r&&e.value.trim()===t)return;if((o||"number"===e.type)&&le(e.value)===t)return}const s=null==t?"":t;e.value!==s&&(e.value=s)}},ka={deep:!0,created(e,t,n){e._assign=wa(n),js(e,"change",(()=>{const t=e._modelValue,n=Pa(e),r=e.checked,o=e._assign;if(L(t)){const e=_(t,n),i=-1!==e;if(r&&!i)o(t.concat(n));else if(!r&&i){const n=[...t];n.splice(e,1),o(n)}}else if(I(t)){const e=new Set(t);r?e.add(n):e.delete(n),o(e)}else o(Ta(e,r))}))},mounted:Sa,beforeUpdate(e,t,n){e._assign=wa(n),Sa(e,t,n)}};function Sa(e,{value:t,oldValue:n},r){e._modelValue=t,L(t)?e.checked=_(t,r.props.value)>-1:I(t)?e.checked=t.has(r.props.value):t!==n&&(e.checked=w(t,Ta(e,!0)))}const Oa={created(e,{value:t},n){e.checked=w(t,n.props.value),e._assign=wa(n),js(e,"change",(()=>{e._assign(Pa(e))}))},beforeUpdate(e,{value:t,oldValue:n},r){e._assign=wa(r),t!==n&&(e.checked=w(t,r.props.value))}},Ca={deep:!0,created(e,{value:t,modifiers:{number:n}},r){const o=I(t);js(e,"change",(()=>{const t=Array.prototype.filter.call(e.options,(e=>e.selected)).map((e=>n?le(Pa(e)):Pa(e)));e._assign(e.multiple?o?new Set(t):t:t[0])})),e._assign=wa(r)},mounted(e,{value:t}){Na(e,t)},beforeUpdate(e,t,n){e._assign=wa(n)},updated(e,{value:t}){Na(e,t)}};function Na(e,t){const n=e.multiple;if(!n||L(t)||I(t)){for(let r=0,o=e.options.length;r-1:o.selected=t.has(i);else if(w(Pa(o),t))return void(e.selectedIndex!==r&&(e.selectedIndex=r))}n||-1===e.selectedIndex||(e.selectedIndex=-1)}}function Pa(e){return"_value"in e?e._value:e.value}function Ta(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Ra={created(e,t,n){Va(e,t,n,null,"created")},mounted(e,t,n){Va(e,t,n,null,"mounted")},beforeUpdate(e,t,n,r){Va(e,t,n,r,"beforeUpdate")},updated(e,t,n,r){Va(e,t,n,r,"updated")}};function Aa(e,t){switch(e){case"SELECT":return Ca;case"TEXTAREA":return xa;default:switch(t){case"checkbox":return ka;case"radio":return Oa;default:return xa}}}function Va(e,t,n,r,o){const i=Aa(e.tagName,n.props&&n.props.type)[o];i&&i(e,t,n,r)}const ja=["ctrl","shift","alt","meta"],La={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&0!==e.button,middle:e=>"button"in e&&1!==e.button,right:e=>"button"in e&&2!==e.button,exact:(e,t)=>ja.some((n=>e[`${n}Key`]&&!t.includes(n)))},Ba=(e,t)=>(n,...r)=>{for(let e=0;en=>{if(!("key"in n))return;const r=ne(n.key);return t.some((e=>e===r||Ia[e]===r))?e(n):void 0},Da={beforeMount(e,{value:t},{transition:n}){e._vod="none"===e.style.display?"":e.style.display,n&&t?n.beforeEnter(e):Ma(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),Ma(e,!0),r.enter(e)):r.leave(e,(()=>{Ma(e,!1)})):Ma(e,t))},beforeUnmount(e,{value:t}){Ma(e,t)}};function Ma(e,t){e.style.display=t?e._vod:"none"}const Ua=R({patchProp:(e,t,n,r,o=!1,i,s,a,l)=>{"class"===t?function(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),null==t?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}(e,r,o):"style"===t?function(e,t,n){const r=e.style,o=U(n);if(n&&!o){if(t&&!U(t))for(const e in t)null==n[e]&&Ts(r,e,"");for(const e in n)Ts(r,e,n[e])}else{const i=r.display;o?t!==n&&(r.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(r.display=i)}}(e,n,r):P(t)?T(t)||Ls(e,t,0,r,s):("."===t[0]?(t=t.slice(1),1):"^"===t[0]?(t=t.slice(1),0):function(e,t,n,r){if(r)return"innerHTML"===t||"textContent"===t||!!(t in e&&Ms.test(t)&&M(n));if("spellcheck"===t||"draggable"===t||"translate"===t)return!1;if("form"===t)return!1;if("list"===t&&"INPUT"===e.tagName)return!1;if("type"===t&&"TEXTAREA"===e.tagName)return!1;if(Ms.test(t)&&U(n))return!1;return t in e}(e,t,r,o))?function(e,t,n,r,o,i,s){if("innerHTML"===t||"textContent"===t)return r&&s(r,o,i),void(e[t]=null==n?"":n);if("value"===t&&"PROGRESS"!==e.tagName&&!e.tagName.includes("-")){e._value=n;const r=null==n?"":n;return e.value===r&&"OPTION"!==e.tagName||(e.value=r),void(null==n&&e.removeAttribute(t))}let a=!1;if(""===n||null==n){const r=typeof e[t];"boolean"===r?n=b(n):null==n&&"string"===r?(n="",a=!0):"number"===r&&(n=0,a=!0)}try{e[t]=n}catch(e){}a&&e.removeAttribute(t)}(e,t,r,i,s,a,l):("true-value"===t?e._trueValue=r:"false-value"===t&&(e._falseValue=r),function(e,t,n,r,o){if(r&&t.startsWith("xlink:"))null==n?e.removeAttributeNS(Vs,t.slice(6,t.length)):e.setAttributeNS(Vs,t,n);else{const r=y(t);null==n||r&&!b(n)?e.removeAttribute(t):e.setAttribute(t,r?"":n)}}(e,t,r,o))}},Ns);let $a,za=!1;function Ha(){return $a||($a=Go(Ua))}function qa(){return $a=za?$a:Yo(Ua),za=!0,$a}const Wa=(...e)=>{Ha().render(...e)},Ka=(...e)=>{qa().hydrate(...e)},Ga=(...e)=>{const t=Ha().createApp(...e);const{mount:n}=t;return t.mount=e=>{const r=Ja(e);if(!r)return;const o=t._component;M(o)||o.render||o.template||(o.template=r.innerHTML),r.innerHTML="";const i=n(r,!1,r instanceof SVGElement);return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t},Ya=(...e)=>{const t=qa().createApp(...e);const{mount:n}=t;return t.mount=e=>{const t=Ja(e);if(t)return n(t,!0,t instanceof SVGElement)},t};function Ja(e){if(U(e)){return document.querySelector(e)}return e}let Qa=!1;const Za=()=>{Qa||(Qa=!0,xa.getSSRProps=({value:e})=>({value:e}),Oa.getSSRProps=({value:e},t)=>{if(t.props&&w(t.props.value,e))return{checked:!0}},ka.getSSRProps=({value:e},t)=>{if(L(e)){if(t.props&&_(e,t.props.value)>-1)return{checked:!0}}else if(I(e)){if(t.props&&e.has(t.props.value))return{checked:!0}}else if(e)return{checked:!0}},Ra.getSSRProps=(e,t)=>{if("string"!=typeof t.type)return;const n=Aa(t.type.toUpperCase(),t.props&&t.props.type);return n.getSSRProps?n.getSSRProps(e,t):void 0},Da.getSSRProps=({value:e})=>{if(!e)return{style:{display:"none"}}})};function Xa(e){throw e}function el(e){}function tl(e,t,n,r){const o=new SyntaxError(String(e));return o.code=e,o.loc=t,o}const nl=Symbol(""),rl=Symbol(""),ol=Symbol(""),il=Symbol(""),sl=Symbol(""),al=Symbol(""),ll=Symbol(""),cl=Symbol(""),ul=Symbol(""),fl=Symbol(""),dl=Symbol(""),pl=Symbol(""),hl=Symbol(""),vl=Symbol(""),ml=Symbol(""),gl=Symbol(""),yl=Symbol(""),bl=Symbol(""),wl=Symbol(""),_l=Symbol(""),El=Symbol(""),xl=Symbol(""),kl=Symbol(""),Sl=Symbol(""),Ol=Symbol(""),Cl=Symbol(""),Nl=Symbol(""),Pl=Symbol(""),Tl=Symbol(""),Rl=Symbol(""),Al=Symbol(""),Vl=Symbol(""),jl=Symbol(""),Ll=Symbol(""),Bl=Symbol(""),Il=Symbol(""),Fl=Symbol(""),Dl=Symbol(""),Ml=Symbol(""),Ul={[nl]:"Fragment",[rl]:"Teleport",[ol]:"Suspense",[il]:"KeepAlive",[sl]:"BaseTransition",[al]:"openBlock",[ll]:"createBlock",[cl]:"createElementBlock",[ul]:"createVNode",[fl]:"createElementVNode",[dl]:"createCommentVNode",[pl]:"createTextVNode",[hl]:"createStaticVNode",[vl]:"resolveComponent",[ml]:"resolveDynamicComponent",[gl]:"resolveDirective",[yl]:"resolveFilter",[bl]:"withDirectives",[wl]:"renderList",[_l]:"renderSlot",[El]:"createSlots",[xl]:"toDisplayString",[kl]:"mergeProps",[Sl]:"normalizeClass",[Ol]:"normalizeStyle",[Cl]:"normalizeProps",[Nl]:"guardReactiveProps",[Pl]:"toHandlers",[Tl]:"camelize",[Rl]:"capitalize",[Al]:"toHandlerKey",[Vl]:"setBlockTracking",[jl]:"pushScopeId",[Ll]:"popScopeId",[Bl]:"withCtx",[Il]:"unref",[Fl]:"isRef",[Dl]:"withMemo",[Ml]:"isMemoSame"};const $l={source:"",start:{line:1,column:1,offset:0},end:{line:1,column:1,offset:0}};function zl(e,t,n,r,o,i,s,a=!1,l=!1,c=!1,u=$l){return e&&(a?(e.helper(al),e.helper(yc(e.inSSR,c))):e.helper(gc(e.inSSR,c)),s&&e.helper(bl)),{type:13,tag:t,props:n,children:r,patchFlag:o,dynamicProps:i,directives:s,isBlock:a,disableTracking:l,isComponent:c,loc:u}}function Hl(e,t=$l){return{type:17,loc:t,elements:e}}function ql(e,t=$l){return{type:15,loc:t,properties:e}}function Wl(e,t){return{type:16,loc:$l,key:U(e)?Kl(e,!0):e,value:t}}function Kl(e,t=!1,n=$l,r=0){return{type:4,loc:n,content:e,isStatic:t,constType:t?3:r}}function Gl(e,t=$l){return{type:8,loc:t,children:e}}function Yl(e,t=[],n=$l){return{type:14,loc:n,callee:e,arguments:t}}function Jl(e,t,n=!1,r=!1,o=$l){return{type:18,params:e,returns:t,newline:n,isSlot:r,loc:o}}function Ql(e,t,n,r=!0){return{type:19,test:e,consequent:t,alternate:n,newline:r,loc:$l}}const Zl=e=>4===e.type&&e.isStatic,Xl=(e,t)=>e===t||e===ne(t);function ec(e){return Xl(e,"Teleport")?rl:Xl(e,"Suspense")?ol:Xl(e,"KeepAlive")?il:Xl(e,"BaseTransition")?sl:void 0}const tc=/^\d|[^\$\w]/,nc=e=>!tc.test(e),rc=/[A-Za-z_$\xA0-\uFFFF]/,oc=/[\.\?\w$\xA0-\uFFFF]/,ic=/\s+[.[]\s*|\s*[.[]\s+/g,sc=e=>{e=e.trim().replace(ic,(e=>e.trim()));let t=0,n=[],r=0,o=0,i=null;for(let s=0;s4===e.key.type&&e.key.content===r))}return n}function xc(e,t){return`_${t}_${e.replace(/[^\w]/g,((t,n)=>"-"===t?"_":e.charCodeAt(n).toString()))}`}function kc(e,{helper:t,removeHelper:n,inSSR:r}){e.isBlock||(e.isBlock=!0,n(gc(r,e.isComponent)),t(al),t(yc(r,e.isComponent)))}function Sc(e,t){const n=t.options?t.options.compatConfig:t.compatConfig,r=n&&n[e];return"MODE"===e?r||3:r}function Oc(e,t){const n=Sc("MODE",t),r=Sc(e,t);return 3===n?!0===r:!1!==r}function Cc(e,t,n,...r){return Oc(e,t)}const Nc=/&(gt|lt|amp|apos|quot);/g,Pc={gt:">",lt:"<",amp:"&",apos:"'",quot:'"'},Tc={delimiters:["{{","}}"],getNamespace:()=>0,getTextMode:()=>0,isVoidTag:C,isPreTag:C,isCustomElement:C,decodeEntities:e=>e.replace(Nc,((e,t)=>Pc[t])),onError:Xa,onWarn:el,comments:!1};function Rc(e,t={}){const n=function(e,t){const n=R({},Tc);let r;for(r in t)n[r]=void 0===t[r]?Tc[r]:t[r];return{options:n,column:1,line:1,offset:0,originalSource:e,source:e,inPre:!1,inVPre:!1,onWarn:n.onWarn}}(e,t),r=qc(n);return function(e,t=$l){return{type:0,children:e,helpers:new Set,components:[],directives:[],hoists:[],imports:[],cached:0,temps:0,codegenNode:void 0,loc:t}}(Ac(n,0,[]),Wc(n,r))}function Ac(e,t,n){const r=Kc(n),o=r?r.ns:0,i=[];for(;!Xc(e,t,n);){const s=e.source;let a;if(0===t||1===t)if(!e.inVPre&&Gc(s,e.options.delimiters[0]))a=$c(e,t);else if(0===t&&"<"===s[0])if(1===s.length)Zc(e,5,1);else if("!"===s[1])Gc(s,"\x3c!--")?a=Lc(e):Gc(s,""===s[2]){Zc(e,14,2),Yc(e,3);continue}if(/[a-z]/i.test(s[2])){Zc(e,23),Dc(e,1,r);continue}Zc(e,12,2),a=Bc(e)}else/[a-z]/i.test(s[1])?(a=Ic(e,n),Oc("COMPILER_NATIVE_TEMPLATE",e)&&a&&"template"===a.tag&&!a.props.some((e=>7===e.type&&Fc(e.name)))&&(a=a.children)):"?"===s[1]?(Zc(e,21,1),a=Bc(e)):Zc(e,12,1);if(a||(a=zc(e,t)),L(a))for(let e=0;e/.exec(e.source);if(r){r.index<=3&&Zc(e,0),r[1]&&Zc(e,10),n=e.source.slice(4,r.index);const t=e.source.slice(0,r.index);let o=1,i=0;for(;-1!==(i=t.indexOf("\x3c!--",o));)Yc(e,i-o+1),i+4");return-1===o?(r=e.source.slice(n),Yc(e,e.source.length)):(r=e.source.slice(n,o),Yc(e,o+1)),{type:3,content:r,loc:Wc(e,t)}}function Ic(e,t){const n=e.inPre,r=e.inVPre,o=Kc(t),i=Dc(e,0,o),s=e.inPre&&!n,a=e.inVPre&&!r;if(i.isSelfClosing||e.options.isVoidTag(i.tag))return s&&(e.inPre=!1),a&&(e.inVPre=!1),i;t.push(i);const l=e.options.getTextMode(i,o),c=Ac(e,l,t);t.pop();{const t=i.props.find((e=>6===e.type&&"inline-template"===e.name));if(t&&Cc("COMPILER_INLINE_TEMPLATE",e,t.loc)){const n=Wc(e,i.loc.end);t.value={type:2,content:n.source,loc:n}}}if(i.children=c,eu(e.source,i.tag))Dc(e,1,o);else if(Zc(e,24,0,i.loc.start),0===e.source.length&&"script"===i.tag.toLowerCase()){const t=c[0];t&&Gc(t.loc.source,"\x3c!--")&&Zc(e,8)}return i.loc=Wc(e,i.loc.start),s&&(e.inPre=!1),a&&(e.inVPre=!1),i}const Fc=o("if,else,else-if,for,slot");function Dc(e,t,n){const r=qc(e),o=/^<\/?([a-z][^\t\r\n\f />]*)/i.exec(e.source),i=o[1],s=e.options.getNamespace(i,n);Yc(e,o[0].length),Jc(e);const a=qc(e),l=e.source;e.options.isPreTag(i)&&(e.inPre=!0);let c=Mc(e,t);0===t&&!e.inVPre&&c.some((e=>7===e.type&&"pre"===e.name))&&(e.inVPre=!0,R(e,a),e.source=l,c=Mc(e,t).filter((e=>"v-pre"!==e.name)));let u=!1;if(0===e.source.length?Zc(e,9):(u=Gc(e.source,"/>"),1===t&&u&&Zc(e,4),Yc(e,u?2:1)),1===t)return;let f=0;return e.inVPre||("slot"===i?f=2:"template"===i?c.some((e=>7===e.type&&Fc(e.name)))&&(f=3):function(e,t,n){const r=n.options;if(r.isCustomElement(e))return!1;if("component"===e||/^[A-Z]/.test(e)||ec(e)||r.isBuiltInComponent&&r.isBuiltInComponent(e)||r.isNativeTag&&!r.isNativeTag(e))return!0;for(let e=0;e0&&!Gc(e.source,">")&&!Gc(e.source,"/>");){if(Gc(e.source,"/")){Zc(e,22),Yc(e,1),Jc(e);continue}1===t&&Zc(e,3);const o=Uc(e,r);6===o.type&&o.value&&"class"===o.name&&(o.value.content=o.value.content.replace(/\s+/g," ").trim()),0===t&&n.push(o),/^[^\t\r\n\f />]/.test(e.source)&&Zc(e,15),Jc(e)}return n}function Uc(e,t){const n=qc(e),r=/^[^\t\r\n\f />][^\t\r\n\f />=]*/.exec(e.source)[0];t.has(r)&&Zc(e,2),t.add(r),"="===r[0]&&Zc(e,19);{const t=/["'<]/g;let n;for(;n=t.exec(r);)Zc(e,17,n.index)}let o;Yc(e,r.length),/^[\t\r\n\f ]*=/.test(e.source)&&(Jc(e),Yc(e,1),Jc(e),o=function(e){const t=qc(e);let n;const r=e.source[0],o='"'===r||"'"===r;if(o){Yc(e,1);const t=e.source.indexOf(r);-1===t?n=Hc(e,e.source.length,4):(n=Hc(e,t,4),Yc(e,1))}else{const t=/^[^\t\r\n\f >]+/.exec(e.source);if(!t)return;const r=/["'<=`]/g;let o;for(;o=r.exec(t[0]);)Zc(e,18,o.index);n=Hc(e,t[0].length,4)}return{content:n,isQuoted:o,loc:Wc(e,t)}}(e),o||Zc(e,13));const i=Wc(e,n);if(!e.inVPre&&/^(v-[A-Za-z0-9-]|:|\.|@|#)/.test(r)){const t=/(?:^v-([a-z0-9-]+))?(?:(?::|^\.|^@|^#)(\[[^\]]+\]|[^\.]+))?(.+)?$/i.exec(r);let s,a=Gc(r,"."),l=t[1]||(a||Gc(r,":")?"bind":Gc(r,"@")?"on":"slot");if(t[2]){const o="slot"===l,i=r.lastIndexOf(t[2]),a=Wc(e,Qc(e,n,i),Qc(e,n,i+t[2].length+(o&&t[3]||"").length));let c=t[2],u=!0;c.startsWith("[")?(u=!1,c.endsWith("]")?c=c.slice(1,c.length-1):(Zc(e,27),c=c.slice(1))):o&&(c+=t[3]||""),s={type:4,content:c,isStatic:u,constType:u?3:0,loc:a}}if(o&&o.isQuoted){const e=o.loc;e.start.offset++,e.start.column++,e.end=lc(e.start,o.content),e.source=e.source.slice(1,-1)}const c=t[3]?t[3].slice(1).split("."):[];return a&&c.push("prop"),"bind"===l&&s&&c.includes("sync")&&Cc("COMPILER_V_BIND_SYNC",e,0,s.loc.source)&&(l="model",c.splice(c.indexOf("sync"),1)),{type:7,name:l,exp:o&&{type:4,content:o.content,isStatic:!1,constType:0,loc:o.loc},arg:s,modifiers:c,loc:i}}return!e.inVPre&&Gc(r,"v-")&&Zc(e,26),{type:6,name:r,value:o&&{type:2,content:o.content,loc:o.loc},loc:i}}function $c(e,t){const[n,r]=e.options.delimiters,o=e.source.indexOf(r,n.length);if(-1===o)return void Zc(e,25);const i=qc(e);Yc(e,n.length);const s=qc(e),a=qc(e),l=o-n.length,c=e.source.slice(0,l),u=Hc(e,l,t),f=u.trim(),d=u.indexOf(f);d>0&&cc(s,c,d);return cc(a,c,l-(u.length-f.length-d)),Yc(e,r.length),{type:5,content:{type:4,isStatic:!1,constType:0,content:f,loc:Wc(e,s,a)},loc:Wc(e,i)}}function zc(e,t){const n=3===t?["]]>"]:["<",e.options.delimiters[0]];let r=e.source.length;for(let t=0;to&&(r=o)}const o=qc(e);return{type:2,content:Hc(e,r,t),loc:Wc(e,o)}}function Hc(e,t,n){const r=e.source.slice(0,t);return Yc(e,t),2!==n&&3!==n&&r.includes("&")?e.options.decodeEntities(r,4===n):r}function qc(e){const{column:t,line:n,offset:r}=e;return{column:t,line:n,offset:r}}function Wc(e,t,n){return{start:t,end:n=n||qc(e),source:e.originalSource.slice(t.offset,n.offset)}}function Kc(e){return e[e.length-1]}function Gc(e,t){return e.startsWith(t)}function Yc(e,t){const{source:n}=e;cc(e,n,t),e.source=n.slice(t)}function Jc(e){const t=/^[\t\r\n\f ]+/.exec(e.source);t&&Yc(e,t[0].length)}function Qc(e,t,n){return lc(t,e.originalSource.slice(t.offset,n),n)}function Zc(e,t,n,r=qc(e)){n&&(r.offset+=n,r.column+=n),e.options.onError(tl(t,{start:r,end:r,source:""}))}function Xc(e,t,n){const r=e.source;switch(t){case 0:if(Gc(r,"=0;--e)if(eu(r,n[e].tag))return!0;break;case 1:case 2:{const e=Kc(n);if(e&&eu(r,e.tag))return!0;break}case 3:if(Gc(r,"]]>"))return!0}return!r}function eu(e,t){return Gc(e,"]/.test(e[2+t.length]||">")}function tu(e,t){ru(e,t,nu(e,e.children[0]))}function nu(e,t){const{children:n}=e;return 1===n.length&&1===t.type&&!mc(t)}function ru(e,t,n=!1){const{children:r}=e,o=r.length;let i=0;for(let e=0;e0){if(e>=2){o.codegenNode.patchFlag="-1",o.codegenNode=t.hoist(o.codegenNode),i++;continue}}else{const e=o.codegenNode;if(13===e.type){const n=cu(e);if((!n||512===n||1===n)&&au(o,t)>=2){const n=lu(o);n&&(e.props=t.hoist(n))}e.dynamicProps&&(e.dynamicProps=t.hoist(e.dynamicProps))}}}if(1===o.type){const e=1===o.tagType;e&&t.scopes.vSlot++,ru(o,t),e&&t.scopes.vSlot--}else if(11===o.type)ru(o,t,1===o.children.length);else if(9===o.type)for(let e=0;e1)for(let o=0;o`_${Ul[x.helper(e)]}`,replaceNode(e){x.parent.children[x.childIndex]=x.currentNode=e},removeNode(e){const t=x.parent.children,n=e?t.indexOf(e):x.currentNode?x.childIndex:-1;e&&e!==x.currentNode?x.childIndex>n&&(x.childIndex--,x.onNodeRemoved()):(x.currentNode=null,x.onNodeRemoved()),x.parent.children.splice(n,1)},onNodeRemoved:()=>{},addIdentifiers(e){},removeIdentifiers(e){},hoist(e){U(e)&&(e=Kl(e)),x.hoists.push(e);const t=Kl(`_hoisted_${x.hoists.length}`,!1,e.loc,2);return t.hoisted=e,t},cache:(e,t=!1)=>function(e,t,n=!1){return{type:20,index:e,value:t,isVNode:n,loc:$l}}(x.cached++,e,t)};return x.filters=new Set,x}function fu(e,t){const n=uu(e,t);du(e,n),t.hoistStatic&&tu(e,n),t.ssr||function(e,t){const{helper:n}=t,{children:r}=e;if(1===r.length){const n=r[0];if(nu(e,n)&&n.codegenNode){const r=n.codegenNode;13===r.type&&kc(r,t),e.codegenNode=r}else e.codegenNode=n}else if(r.length>1){let r=64;i[64];0,e.codegenNode=zl(t,n(nl),void 0,e.children,r+"",void 0,void 0,!0,void 0,!1)}}(e,n),e.helpers=new Set([...n.helpers.keys()]),e.components=[...n.components],e.directives=[...n.directives],e.imports=n.imports,e.hoists=n.hoists,e.temps=n.temps,e.cached=n.cached,e.filters=[...n.filters]}function du(e,t){t.currentNode=e;const{nodeTransforms:n}=t,r=[];for(let o=0;o{n--};for(;nt===e:t=>e.test(t);return(e,r)=>{if(1===e.type){const{props:o}=e;if(3===e.tagType&&o.some(hc))return;const i=[];for(let s=0;s`${Ul[e]}: _${Ul[e]}`;function mu(e,{mode:t="function",prefixIdentifiers:n="module"===t,sourceMap:r=!1,filename:o="template.vue.html",scopeId:i=null,optimizeImports:s=!1,runtimeGlobalName:a="Vue",runtimeModuleName:l="vue",ssrRuntimeModuleName:c="vue/server-renderer",ssr:u=!1,isTS:f=!1,inSSR:d=!1}){const p={mode:t,prefixIdentifiers:n,sourceMap:r,filename:o,scopeId:i,optimizeImports:s,runtimeGlobalName:a,runtimeModuleName:l,ssrRuntimeModuleName:c,ssr:u,isTS:f,inSSR:d,source:e.loc.source,code:"",column:1,line:1,offset:0,indentLevel:0,pure:!1,map:void 0,helper:e=>`_${Ul[e]}`,push(e,t){p.code+=e},indent(){h(++p.indentLevel)},deindent(e=!1){e?--p.indentLevel:h(--p.indentLevel)},newline(){h(p.indentLevel)}};function h(e){p.push("\n"+" ".repeat(e))}return p}function gu(e,t={}){const n=mu(e,t);t.onContextCreated&&t.onContextCreated(n);const{mode:r,push:o,prefixIdentifiers:i,indent:s,deindent:a,newline:l,scopeId:c,ssr:u}=n,f=Array.from(e.helpers),d=f.length>0,p=!i&&"module"!==r,h=n;!function(e,t){const{ssr:n,prefixIdentifiers:r,push:o,newline:i,runtimeModuleName:s,runtimeGlobalName:a,ssrRuntimeModuleName:l}=t,c=a,u=Array.from(e.helpers);if(u.length>0&&(o(`const _Vue = ${c}\n`),e.hoists.length)){o(`const { ${[ul,fl,dl,pl,hl].filter((e=>u.includes(e))).map(vu).join(", ")} } = _Vue\n`)}(function(e,t){if(!e.length)return;t.pure=!0;const{push:n,newline:r,helper:o,scopeId:i,mode:s}=t;r();for(let o=0;o0)&&l()),e.directives.length&&(yu(e.directives,"directive",n),e.temps>0&&l()),e.filters&&e.filters.length&&(l(),yu(e.filters,"filter",n),l()),e.temps>0){o("let ");for(let t=0;t0?", ":""}_temp${t}`)}return(e.components.length||e.directives.length||e.temps)&&(o("\n"),l()),u||o("return "),e.codegenNode?_u(e.codegenNode,n):o("null"),p&&(a(),o("}")),a(),o("}"),{ast:e,code:n.code,preamble:"",map:n.map?n.map.toJSON():void 0}}function yu(e,t,{helper:n,push:r,newline:o,isTS:i}){const s=n("filter"===t?yl:"component"===t?vl:gl);for(let n=0;n3||!1;t.push("["),n&&t.indent(),wu(e,t,n),n&&t.deindent(),t.push("]")}function wu(e,t,n=!1,r=!0){const{push:o,newline:i}=t;for(let s=0;se||"null"))}([i,s,a,l,c]),t),n(")"),f&&n(")");u&&(n(", "),_u(u,t),n(")"))}(e,t);break;case 14:!function(e,t){const{push:n,helper:r,pure:o}=t,i=U(e.callee)?e.callee:r(e.callee);o&&n(hu);n(i+"(",e),wu(e.arguments,t),n(")")}(e,t);break;case 15:!function(e,t){const{push:n,indent:r,deindent:o,newline:i}=t,{properties:s}=e;if(!s.length)return void n("{}",e);const a=s.length>1||!1;n(a?"{":"{ "),a&&r();for(let e=0;e "),(l||a)&&(n("{"),r());s?(l&&n("return "),L(s)?bu(s,t):_u(s,t)):a&&_u(a,t);(l||a)&&(o(),n("}"));c&&(e.isNonScopedSlot&&n(", undefined, true"),n(")"))}(e,t);break;case 19:!function(e,t){const{test:n,consequent:r,alternate:o,newline:i}=e,{push:s,indent:a,deindent:l,newline:c}=t;if(4===n.type){const e=!nc(n.content);e&&s("("),Eu(n,t),e&&s(")")}else s("("),_u(n,t),s(")");i&&a(),t.indentLevel++,i||s(" "),s("? "),_u(r,t),t.indentLevel--,i&&c(),i||s(" "),s(": ");const u=19===o.type;u||t.indentLevel++;_u(o,t),u||t.indentLevel--;i&&l(!0)}(e,t);break;case 20:!function(e,t){const{push:n,helper:r,indent:o,deindent:i,newline:s}=t;n(`_cache[${e.index}] || (`),e.isVNode&&(o(),n(`${r(Vl)}(-1),`),s());n(`_cache[${e.index}] = `),_u(e.value,t),e.isVNode&&(n(","),s(),n(`${r(Vl)}(1),`),s(),n(`_cache[${e.index}]`),i());n(")")}(e,t);break;case 21:wu(e.body,t,!0,!1)}}function Eu(e,t){const{content:n,isStatic:r}=e;t.push(r?JSON.stringify(n):n,e)}function xu(e,t){for(let n=0;nfunction(e,t,n,r){if(!("else"===t.name||t.exp&&t.exp.content.trim())){const r=t.exp?t.exp.loc:e.loc;n.onError(tl(28,t.loc)),t.exp=Kl("true",!1,r)}0;if("if"===t.name){const o=Ou(e,t),i={type:9,loc:e.loc,branches:[o]};if(n.replaceNode(i),r)return r(i,o,!0)}else{const o=n.parent.children;let i=o.indexOf(e);for(;i-- >=-1;){const s=o[i];if(s&&3===s.type)n.removeNode(s);else{if(!s||2!==s.type||s.content.trim().length){if(s&&9===s.type){"else-if"===t.name&&void 0===s.branches[s.branches.length-1].condition&&n.onError(tl(30,e.loc)),n.removeNode();const o=Ou(e,t);0,s.branches.push(o);const i=r&&r(s,o,!1);du(o,n),i&&i(),n.currentNode=null}else n.onError(tl(30,e.loc));break}n.removeNode(s)}}}}(e,t,n,((e,t,r)=>{const o=n.parent.children;let i=o.indexOf(e),s=0;for(;i-- >=0;){const e=o[i];e&&9===e.type&&(s+=e.branches.length)}return()=>{if(r)e.codegenNode=Cu(t,s,n);else{const r=function(e){for(;;)if(19===e.type){if(19!==e.alternate.type)return e;e=e.alternate}else 20===e.type&&(e=e.value)}(e.codegenNode);r.alternate=Cu(t,s+e.branches.length-1,n)}}}))));function Ou(e,t){const n=3===e.tagType;return{type:10,loc:e.loc,condition:"else"===t.name?void 0:t.exp,children:n&&!uc(e,"for")?e.children:[e],userKey:fc(e,"key"),isTemplateIf:n}}function Cu(e,t,n){return e.condition?Ql(e.condition,Nu(e,t,n),Yl(n.helper(dl),['""',"true"])):Nu(e,t,n)}function Nu(e,t,n){const{helper:r}=n,o=Wl("key",Kl(`${t}`,!1,$l,2)),{children:s}=e,a=s[0];if(1!==s.length||1!==a.type){if(1===s.length&&11===a.type){const e=a.codegenNode;return _c(e,o,n),e}{let t=64;i[64];return zl(n,r(nl),ql([o]),s,t+"",void 0,void 0,!0,!1,!1,e.loc)}}{const e=a.codegenNode,t=14===(l=e).type&&l.callee===Dl?l.arguments[1].returns:l;return 13===t.type&&kc(t,n),_c(t,o,n),e}var l}const Pu=pu("for",((e,t,n)=>{const{helper:r,removeHelper:o}=n;return function(e,t,n,r){if(!t.exp)return void n.onError(tl(31,t.loc));const o=Vu(t.exp,n);if(!o)return void n.onError(tl(32,t.loc));const{addIdentifiers:i,removeIdentifiers:s,scopes:a}=n,{source:l,value:c,key:u,index:f}=o,d={type:11,loc:t.loc,source:l,valueAlias:c,keyAlias:u,objectIndexAlias:f,parseResult:o,children:vc(e)?e.children:[e]};n.replaceNode(d),a.vFor++;const p=r&&r(d);return()=>{a.vFor--,p&&p()}}(e,t,n,(t=>{const i=Yl(r(wl),[t.source]),s=vc(e),a=uc(e,"memo"),l=fc(e,"key"),c=l&&(6===l.type?Kl(l.value.content,!0):l.exp),u=l?Wl("key",c):null,f=4===t.source.type&&t.source.constType>0,d=f?64:l?128:256;return t.codegenNode=zl(n,r(nl),void 0,i,d+"",void 0,void 0,!0,!f,!1,e.loc),()=>{let l;const{children:d}=t;const p=1!==d.length||1!==d[0].type,h=mc(e)?e:s&&1===e.children.length&&mc(e.children[0])?e.children[0]:null;if(h?(l=h.codegenNode,s&&u&&_c(l,u,n)):p?l=zl(n,r(nl),u?ql([u]):void 0,e.children,"64",void 0,void 0,!0,void 0,!1):(l=d[0].codegenNode,s&&u&&_c(l,u,n),l.isBlock!==!f&&(l.isBlock?(o(al),o(yc(n.inSSR,l.isComponent))):o(gc(n.inSSR,l.isComponent))),l.isBlock=!f,l.isBlock?(r(al),r(yc(n.inSSR,l.isComponent))):r(gc(n.inSSR,l.isComponent))),a){const e=Jl(Lu(t.parseResult,[Kl("_cached")]));e.body={type:21,body:[Gl(["const _memo = (",a.exp,")"]),Gl(["if (_cached",...c?[" && _cached.key === ",c]:[],` && ${n.helperString(Ml)}(_cached, _memo)) return _cached`]),Gl(["const _item = ",l]),Kl("_item.memo = _memo"),Kl("return _item")],loc:$l},i.arguments.push(e,Kl("_cache"),Kl(String(n.cached++)))}else i.arguments.push(Jl(Lu(t.parseResult),l,!0))}}))}));const Tu=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,Ru=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,Au=/^\(|\)$/g;function Vu(e,t){const n=e.loc,r=e.content,o=r.match(Tu);if(!o)return;const[,i,s]=o,a={source:ju(n,s.trim(),r.indexOf(s,i.length)),value:void 0,key:void 0,index:void 0};let l=i.trim().replace(Au,"").trim();const c=i.indexOf(l),u=l.match(Ru);if(u){l=l.replace(Ru,"").trim();const e=u[1].trim();let t;if(e&&(t=r.indexOf(e,c+l.length),a.key=ju(n,e,t)),u[2]){const o=u[2].trim();o&&(a.index=ju(n,o,r.indexOf(o,a.key?t+e.length:c+l.length)))}}return l&&(a.value=ju(n,l,c)),a}function ju(e,t,n){return Kl(t,!1,ac(e,n,t.length))}function Lu({value:e,key:t,index:n},r=[]){return function(e){let t=e.length;for(;t--&&!e[t];);return e.slice(0,t+1).map(((e,t)=>e||Kl("_".repeat(t+1),!1)))}([e,t,n,...r])}const Bu=Kl("undefined",!1),Iu=(e,t)=>{if(1===e.type&&(1===e.tagType||3===e.tagType)){const n=uc(e,"slot");if(n)return n.exp,t.scopes.vSlot++,()=>{t.scopes.vSlot--}}},Fu=(e,t,n)=>Jl(e,t,!1,!0,t.length?t[0].loc:n);function Du(e,t,n=Fu){t.helper(Bl);const{children:r,loc:o}=e,i=[],s=[];let a=t.scopes.vSlot>0||t.scopes.vFor>0;const l=uc(e,"slot",!0);if(l){const{arg:e,exp:t}=l;e&&!Zl(e)&&(a=!0),i.push(Wl(e||Kl("default",!0),n(t,r,o)))}let c=!1,u=!1;const f=[],d=new Set;let p=0;for(let e=0;e{const i=n(e,r,o);return t.compatConfig&&(i.isNonScopedSlot=!0),Wl("default",i)};c?f.length&&f.some((e=>$u(e)))&&(u?t.onError(tl(39,f[0].loc)):i.push(e(void 0,f))):i.push(e(void 0,r))}const h=a?2:Uu(e.children)?3:1;let v=ql(i.concat(Wl("_",Kl(h+"",!1))),o);return s.length&&(v=Yl(t.helper(El),[v,Hl(s)])),{slots:v,hasDynamicSlots:a}}function Mu(e,t,n){const r=[Wl("name",e),Wl("fn",t)];return null!=n&&r.push(Wl("key",Kl(String(n),!0))),ql(r)}function Uu(e){for(let t=0;tfunction(){if(1!==(e=t.currentNode).type||0!==e.tagType&&1!==e.tagType)return;const{tag:n,props:r}=e,o=1===e.tagType;let i=o?function(e,t,n=!1){let{tag:r}=e;const o=Gu(r),i=fc(e,"is");if(i)if(o||Oc("COMPILER_IS_ON_ELEMENT",t)){const e=6===i.type?i.value&&Kl(i.value.content,!0):i.exp;if(e)return Yl(t.helper(ml),[e])}else 6===i.type&&i.value.content.startsWith("vue:")&&(r=i.value.content.slice(4));const s=!o&&uc(e,"is");if(s&&s.exp)return Yl(t.helper(ml),[s.exp]);const a=ec(r)||t.isBuiltInComponent(r);if(a)return n||t.helper(a),a;return t.helper(vl),t.components.add(r),xc(r,"component")}(e,t):`"${n}"`;const s=z(i)&&i.callee===ml;let a,l,c,u,f,d,p=0,h=s||i===rl||i===ol||!o&&("svg"===n||"foreignObject"===n);if(r.length>0){const n=qu(e,t,void 0,o,s);a=n.props,p=n.patchFlag,f=n.dynamicPropNames;const r=n.directives;d=r&&r.length?Hl(r.map((e=>function(e,t){const n=[],r=zu.get(e);r?n.push(t.helperString(r)):(t.helper(gl),t.directives.add(e.name),n.push(xc(e.name,"directive")));const{loc:o}=e;e.exp&&n.push(e.exp);e.arg&&(e.exp||n.push("void 0"),n.push(e.arg));if(Object.keys(e.modifiers).length){e.arg||(e.exp||n.push("void 0"),n.push("void 0"));const t=Kl("true",!1,o);n.push(ql(e.modifiers.map((e=>Wl(e,t))),o))}return Hl(n,e.loc)}(e,t)))):void 0,n.shouldUseBlock&&(h=!0)}if(e.children.length>0){i===il&&(h=!0,p|=1024);if(o&&i!==rl&&i!==il){const{slots:n,hasDynamicSlots:r}=Du(e,t);l=n,r&&(p|=1024)}else if(1===e.children.length&&i!==rl){const n=e.children[0],r=n.type,o=5===r||8===r;o&&0===ou(n,t)&&(p|=1),l=o||2===r?n:e.children}else l=e.children}0!==p&&(c=String(p),f&&f.length&&(u=function(e){let t="[";for(let n=0,r=e.length;n0;let p=!1,h=0,v=!1,m=!1,g=!1,y=!1,b=!1,w=!1;const _=[],E=e=>{c.length&&(u.push(ql(Wu(c),a)),c=[]),e&&u.push(e)},x=({key:e,value:n})=>{if(Zl(e)){const i=e.content,s=P(i);if(!s||r&&!o||"onclick"===i.toLowerCase()||"onUpdate:modelValue"===i||J(i)||(y=!0),s&&J(i)&&(w=!0),20===n.type||(4===n.type||8===n.type)&&ou(n,t)>0)return;"ref"===i?v=!0:"class"===i?m=!0:"style"===i?g=!0:"key"===i||_.includes(i)||_.push(i),!r||"class"!==i&&"style"!==i||_.includes(i)||_.push(i)}else b=!0};for(let o=0;o0&&c.push(Wl(Kl("ref_for",!0),Kl("true")))),"is"===n&&(Gu(s)||r&&r.content.startsWith("vue:")||Oc("COMPILER_IS_ON_ELEMENT",t)))continue;c.push(Wl(Kl(n,!0,ac(e,0,n.length)),Kl(r?r.content:"",o,r?r.loc:e)))}else{const{name:n,arg:o,exp:h,loc:v}=l,m="bind"===n,g="on"===n;if("slot"===n){r||t.onError(tl(40,v));continue}if("once"===n||"memo"===n)continue;if("is"===n||m&&dc(o,"is")&&(Gu(s)||Oc("COMPILER_IS_ON_ELEMENT",t)))continue;if(g&&i)continue;if((m&&dc(o,"key")||g&&d&&dc(o,"vue:before-update"))&&(p=!0),m&&dc(o,"ref")&&t.scopes.vFor>0&&c.push(Wl(Kl("ref_for",!0),Kl("true"))),!o&&(m||g)){if(b=!0,h)if(m){if(E(),Oc("COMPILER_V_BIND_OBJECT_ORDER",t)){u.unshift(h);continue}u.push(h)}else E({type:14,loc:v,callee:t.helper(Pl),arguments:r?[h]:[h,"true"]});else t.onError(tl(m?34:35,v));continue}const y=t.directiveTransforms[n];if(y){const{props:n,needRuntime:r}=y(l,e,t);!i&&n.forEach(x),g&&o&&!Zl(o)?E(ql(n,a)):c.push(...n),r&&(f.push(l),$(r)&&zu.set(l,r))}else Q(n)||(f.push(l),d&&(p=!0))}}let k;if(u.length?(E(),k=u.length>1?Yl(t.helper(kl),u,a):u[0]):c.length&&(k=ql(Wu(c),a)),b?h|=16:(m&&!r&&(h|=2),g&&!r&&(h|=4),_.length&&(h|=8),y&&(h|=32)),p||0!==h&&32!==h||!(v||w||f.length>0)||(h|=512),!t.inSSR&&k)switch(k.type){case 15:let e=-1,n=-1,r=!1;for(let t=0;t{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))})((e=>e.replace(Yu,((e,t)=>t?t.toUpperCase():"")))),Qu=(e,t)=>{if(mc(e)){const{children:n,loc:r}=e,{slotName:o,slotProps:i}=function(e,t){let n,r='"default"';const o=[];for(let t=0;t0){const{props:r,directives:i}=qu(e,t,o,!1,!1);n=r,i.length&&t.onError(tl(36,i[0].loc))}return{slotName:r,slotProps:n}}(e,t),s=[t.prefixIdentifiers?"_ctx.$slots":"$slots",o,"{}","undefined","true"];let a=2;i&&(s[2]=i,a=3),n.length&&(s[3]=Jl([],n,!1,!1,r),a=4),t.scopeId&&!t.slotted&&(a=5),s.splice(a),e.codegenNode=Yl(t.helper(_l),s,r)}};const Zu=/^\s*([\w$_]+|(async\s*)?\([^)]*?\))\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/,Xu=(e,t,n,r)=>{const{loc:o,modifiers:i,arg:s}=e;let a;if(e.exp||i.length||n.onError(tl(35,o)),4===s.type)if(s.isStatic){let e=s.content;e.startsWith("vue:")&&(e=`vnode-${e.slice(4)}`);a=Kl(0!==t.tagType||e.startsWith("vnode")||!/[A-Z]/.test(e)?oe(ee(e)):`on:${e}`,!0,s.loc)}else a=Gl([`${n.helperString(Al)}(`,s,")"]);else a=s,a.children.unshift(`${n.helperString(Al)}(`),a.children.push(")");let l=e.exp;l&&!l.content.trim()&&(l=void 0);let c=n.cacheHandlers&&!l&&!n.inVOnce;if(l){const e=sc(l.content),t=!(e||Zu.test(l.content)),n=l.content.includes(";");0,(t||c&&e)&&(l=Gl([`${t?"$event":"(...args)"} => ${n?"{":"("}`,l,n?"}":")"]))}let u={props:[Wl(a,l||Kl("() => {}",!1,o))]};return r&&(u=r(u)),c&&(u.props[0].value=n.cache(u.props[0].value)),u.props.forEach((e=>e.key.isHandlerKey=!0)),u},ef=(e,t,n)=>{const{exp:r,modifiers:o,loc:i}=e,s=e.arg;return 4!==s.type?(s.children.unshift("("),s.children.push(') || ""')):s.isStatic||(s.content=`${s.content} || ""`),o.includes("camel")&&(4===s.type?s.isStatic?s.content=ee(s.content):s.content=`${n.helperString(Tl)}(${s.content})`:(s.children.unshift(`${n.helperString(Tl)}(`),s.children.push(")"))),n.inSSR||(o.includes("prop")&&tf(s,"."),o.includes("attr")&&tf(s,"^")),!r||4===r.type&&!r.content.trim()?(n.onError(tl(34,i)),{props:[Wl(s,Kl("",!0,i))]}):{props:[Wl(s,r)]}},tf=(e,t)=>{4===e.type?e.isStatic?e.content=t+e.content:e.content=`\`${t}\${${e.content}}\``:(e.children.unshift(`'${t}' + (`),e.children.push(")"))},nf=(e,t)=>{if(0===e.type||1===e.type||11===e.type||10===e.type)return()=>{const n=e.children;let r,o=!1;for(let e=0;e7===e.type&&!t.directiveTransforms[e.name]))||"template"===e.tag)))for(let e=0;e{if(1===e.type&&uc(e,"once",!0)){if(rf.has(e)||t.inVOnce)return;return rf.add(e),t.inVOnce=!0,t.helper(Vl),()=>{t.inVOnce=!1;const e=t.currentNode;e.codegenNode&&(e.codegenNode=t.cache(e.codegenNode,!0))}}},sf=(e,t,n)=>{const{exp:r,arg:o}=e;if(!r)return n.onError(tl(41,e.loc)),af();const i=r.loc.source,s=4===r.type?r.content:i,a=n.bindingMetadata[i];if("props"===a||"props-aliased"===a)return n.onError(tl(44,r.loc)),af();if(!s.trim()||!sc(s))return n.onError(tl(42,r.loc)),af();const l=o||Kl("modelValue",!0),c=o?Zl(o)?`onUpdate:${ee(o.content)}`:Gl(['"onUpdate:" + ',o]):"onUpdate:modelValue";let u;u=Gl([`${n.isTS?"($event: any)":"$event"} => ((`,r,") = $event)"]);const f=[Wl(l,e.exp),Wl(c,u)];if(e.modifiers.length&&1===t.tagType){const t=e.modifiers.map((e=>(nc(e)?e:JSON.stringify(e))+": true")).join(", "),n=o?Zl(o)?`${o.content}Modifiers`:Gl([o,' + "Modifiers"']):"modelModifiers";f.push(Wl(n,Kl(`{ ${t} }`,!1,e.loc,2)))}return af(f)};function af(e=[]){return{props:e}}const lf=/[\w).+\-_$\]]/,cf=(e,t)=>{Oc("COMPILER_FILTER",t)&&(5===e.type&&uf(e.content,t),1===e.type&&e.props.forEach((e=>{7===e.type&&"for"!==e.name&&e.exp&&uf(e.exp,t)})))};function uf(e,t){if(4===e.type)ff(e,t);else for(let n=0;n=0&&(e=n.charAt(t)," "===e);t--);e&&lf.test(e)||(u=!0)}}else void 0===s?(h=i+1,s=n.slice(0,i).trim()):m();function m(){v.push(n.slice(h,i).trim()),h=i+1}if(void 0===s?s=n.slice(0,i).trim():0!==h&&m(),v.length){for(i=0;i{if(1===e.type){const n=uc(e,"memo");if(!n||pf.has(e))return;return pf.add(e),()=>{const r=e.codegenNode||t.currentNode.codegenNode;r&&13===r.type&&(1!==e.tagType&&kc(r,t),e.codegenNode=Yl(t.helper(Dl),[n.exp,Jl(void 0,r),"_cache",String(t.cached++)]))}}};function vf(e,t={}){const n=t.onError||Xa,r="module"===t.mode;!0===t.prefixIdentifiers?n(tl(47)):r&&n(tl(48));t.cacheHandlers&&n(tl(49)),t.scopeId&&!r&&n(tl(50));const o=U(e)?Rc(e,t):e,[i,s]=[[of,Su,hf,Pu,cf,Qu,Hu,Iu,nf],{on:Xu,bind:ef,model:sf}];return fu(o,R({},t,{prefixIdentifiers:false,nodeTransforms:[...i,...t.nodeTransforms||[]],directiveTransforms:R({},s,t.directiveTransforms||{})})),gu(o,R({},t,{prefixIdentifiers:false}))}const mf=Symbol(""),gf=Symbol(""),yf=Symbol(""),bf=Symbol(""),wf=Symbol(""),_f=Symbol(""),Ef=Symbol(""),xf=Symbol(""),kf=Symbol(""),Sf=Symbol("");var Of;let Cf;Of={[mf]:"vModelRadio",[gf]:"vModelCheckbox",[yf]:"vModelText",[bf]:"vModelSelect",[wf]:"vModelDynamic",[_f]:"withModifiers",[Ef]:"withKeys",[xf]:"vShow",[kf]:"Transition",[Sf]:"TransitionGroup"},Object.getOwnPropertySymbols(Of).forEach((e=>{Ul[e]=Of[e]}));const Nf=o("style,iframe,script,noscript",!0),Pf={isVoidTag:m,isNativeTag:e=>h(e)||v(e),isPreTag:e=>"pre"===e,decodeEntities:function(e,t=!1){return Cf||(Cf=document.createElement("div")),t?(Cf.innerHTML=`
`,Cf.children[0].getAttribute("foo")):(Cf.innerHTML=e,Cf.textContent)},isBuiltInComponent:e=>Xl(e,"Transition")?kf:Xl(e,"TransitionGroup")?Sf:void 0,getNamespace(e,t){let n=t?t.ns:0;if(t&&2===n)if("annotation-xml"===t.tag){if("svg"===e)return 1;t.props.some((e=>6===e.type&&"encoding"===e.name&&null!=e.value&&("text/html"===e.value.content||"application/xhtml+xml"===e.value.content)))&&(n=0)}else/^m(?:[ions]|text)$/.test(t.tag)&&"mglyph"!==e&&"malignmark"!==e&&(n=0);else t&&1===n&&("foreignObject"!==t.tag&&"desc"!==t.tag&&"title"!==t.tag||(n=0));if(0===n){if("svg"===e)return 1;if("math"===e)return 2}return n},getTextMode({tag:e,ns:t}){if(0===t){if("textarea"===e||"title"===e)return 1;if(Nf(e))return 2}return 0}},Tf=(e,t)=>{const n=f(e);return Kl(JSON.stringify(n),!1,t,3)};function Rf(e,t){return tl(e,t)}const Af=o("passive,once,capture"),Vf=o("stop,prevent,self,ctrl,shift,alt,meta,exact,middle"),jf=o("left,right"),Lf=o("onkeyup,onkeydown,onkeypress",!0),Bf=(e,t)=>Zl(e)&&"onclick"===e.content.toLowerCase()?Kl(t,!0):4!==e.type?Gl(["(",e,`) === "onClick" ? "${t}" : (`,e,")"]):e;const If=(e,t)=>{1!==e.type||0!==e.tagType||"script"!==e.tag&&"style"!==e.tag||(t.onError(Rf(61,e.loc)),t.removeNode())},Ff=[e=>{1===e.type&&e.props.forEach(((t,n)=>{6===t.type&&"style"===t.name&&t.value&&(e.props[n]={type:7,name:"bind",arg:Kl("style",!0,t.loc),exp:Tf(t.value.content,t.loc),modifiers:[],loc:t.loc})}))}],Df={cloak:()=>({props:[]}),html:(e,t,n)=>{const{exp:r,loc:o}=e;return r||n.onError(Rf(51,o)),t.children.length&&(n.onError(Rf(52,o)),t.children.length=0),{props:[Wl(Kl("innerHTML",!0,o),r||Kl("",!0))]}},text:(e,t,n)=>{const{exp:r,loc:o}=e;return r||n.onError(Rf(53,o)),t.children.length&&(n.onError(Rf(54,o)),t.children.length=0),{props:[Wl(Kl("textContent",!0),r?ou(r,n)>0?r:Yl(n.helperString(xl),[r],o):Kl("",!0))]}},model:(e,t,n)=>{const r=sf(e,t,n);if(!r.props.length||1===t.tagType)return r;e.arg&&n.onError(Rf(56,e.arg.loc));const{tag:o}=t,i=n.isCustomElement(o);if("input"===o||"textarea"===o||"select"===o||i){let s=yf,a=!1;if("input"===o||i){const r=fc(t,"type");if(r){if(7===r.type)s=wf;else if(r.value)switch(r.value.content){case"radio":s=mf;break;case"checkbox":s=gf;break;case"file":a=!0,n.onError(Rf(57,e.loc))}}else(function(e){return e.props.some((e=>!(7!==e.type||"bind"!==e.name||e.arg&&4===e.arg.type&&e.arg.isStatic)))})(t)&&(s=wf)}else"select"===o&&(s=bf);a||(r.needRuntime=n.helper(s))}else n.onError(Rf(55,e.loc));return r.props=r.props.filter((e=>!(4===e.key.type&&"modelValue"===e.key.content))),r},on:(e,t,n)=>Xu(e,t,n,(t=>{const{modifiers:r}=e;if(!r.length)return t;let{key:o,value:i}=t.props[0];const{keyModifiers:s,nonKeyModifiers:a,eventOptionModifiers:l}=((e,t,n,r)=>{const o=[],i=[],s=[];for(let r=0;r{const{exp:r,loc:o}=e;return r||n.onError(Rf(59,o)),{props:[],needRuntime:n.helper(xf)}}};const Mf=Object.create(null);function Uf(e,t){if(!U(e)){if(!e.nodeType)return O;e=e.innerHTML}const n=e,o=Mf[n];if(o)return o;if("#"===e[0]){const t=document.querySelector(e);0,e=t?t.innerHTML:""}const i=R({hoistStatic:!0,onError:void 0,onWarn:O},t);i.isCustomElement||"undefined"==typeof customElements||(i.isCustomElement=e=>!!customElements.get(e));const{code:s}=function(e,t={}){return vf(e,R({},Pf,t,{nodeTransforms:[If,...Ff,...t.nodeTransforms||[]],directiveTransforms:R({},Df,t.directiveTransforms||{}),transformHoist:null}))}(e,i);const a=new Function("Vue",s)(r);return a._rc=!0,Mf[n]=a}Zi(Uf)}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var i=n[e]={id:e,loaded:!1,exports:{}};return t[e].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}r.m=t,e=[],r.O=(t,n,o,i)=>{if(!n){var s=1/0;for(u=0;u=i)&&Object.keys(r.O).every((e=>r.O[e](n[l])))?n.splice(l--,1):(a=!1,i0&&e[u-1][2]>i;u--)e[u]=e[u-1];e[u]=[n,o,i]},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e={260:0,143:0};r.O.j=t=>0===e[t];var t=(t,n)=>{var o,i,[s,a,l]=n,c=0;if(s.some((t=>0!==e[t]))){for(o in a)r.o(a,o)&&(r.m[o]=a[o]);if(l)var u=l(r)}for(t&&t(n);cr(500)));var o=r.O(void 0,[143],(()=>r(378)));o=r.O(o)})(); \ No newline at end of file +(()=>{var e,t={520:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true"},[r("path",{"fill-rule":"evenodd",d:"M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z","clip-rule":"evenodd"})])}},889:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true"},[r("path",{"fill-rule":"evenodd",d:"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z","clip-rule":"evenodd"})])}},10:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M10.5 19.5L3 12m0 0l7.5-7.5M3 12h18"})])}},488:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0l3.181 3.183a8.25 8.25 0 0013.803-3.7M4.031 9.865a8.25 8.25 0 0113.803-3.7l3.181 3.182m0-4.991v4.99"})])}},683:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3"})])}},69:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M13.5 6H5.25A2.25 2.25 0 003 8.25v10.5A2.25 2.25 0 005.25 21h10.5A2.25 2.25 0 0018 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25"})])}},246:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 8.25l-7.5 7.5-7.5-7.5"})])}},388:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.25 4.5l7.5 7.5-7.5 7.5"})])}},782:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M20.25 6.375c0 2.278-3.694 4.125-8.25 4.125S3.75 8.653 3.75 6.375m16.5 0c0-2.278-3.694-4.125-8.25-4.125S3.75 4.097 3.75 6.375m16.5 0v11.25c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125V6.375m16.5 0v3.75m-16.5-3.75v3.75m16.5 0v3.75C20.25 16.153 16.556 18 12 18s-8.25-1.847-8.25-4.125v-3.75m16.5 0c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125"})])}},156:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 9.75v6.75m0 0l-3-3m3 3l3-3m-8.25 6a4.5 4.5 0 01-1.41-8.775 5.25 5.25 0 0110.233-2.33 3 3 0 013.758 3.848A3.752 3.752 0 0118 19.5H6.75z"})])}},904:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M10.343 3.94c.09-.542.56-.94 1.11-.94h1.093c.55 0 1.02.398 1.11.94l.149.894c.07.424.384.764.78.93.398.164.855.142 1.205-.108l.737-.527a1.125 1.125 0 011.45.12l.773.774c.39.389.44 1.002.12 1.45l-.527.737c-.25.35-.272.806-.107 1.204.165.397.505.71.93.78l.893.15c.543.09.94.56.94 1.109v1.094c0 .55-.397 1.02-.94 1.11l-.893.149c-.425.07-.765.383-.93.78-.165.398-.143.854.107 1.204l.527.738c.32.447.269 1.06-.12 1.45l-.774.773a1.125 1.125 0 01-1.449.12l-.738-.527c-.35-.25-.806-.272-1.203-.107-.397.165-.71.505-.781.929l-.149.894c-.09.542-.56.94-1.11.94h-1.094c-.55 0-1.019-.398-1.11-.94l-.148-.894c-.071-.424-.384-.764-.781-.93-.398-.164-.854-.142-1.204.108l-.738.527c-.447.32-1.06.269-1.45-.12l-.773-.774a1.125 1.125 0 01-.12-1.45l.527-.737c.25-.35.273-.806.108-1.204-.165-.397-.505-.71-.93-.78l-.894-.15c-.542-.09-.94-.56-.94-1.109v-1.094c0-.55.398-1.02.94-1.11l.894-.149c.424-.07.765-.383.93-.78.165-.398.143-.854-.107-1.204l-.527-.738a1.125 1.125 0 01.12-1.45l.773-.773a1.125 1.125 0 011.45-.12l.737.527c.35.25.807.272 1.204.107.397-.165.71-.505.78-.929l.15-.894z"}),r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})])}},960:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 17.25v1.007a3 3 0 01-.879 2.122L7.5 21h9l-.621-.621A3 3 0 0115 18.257V17.25m6-12V15a2.25 2.25 0 01-2.25 2.25H5.25A2.25 2.25 0 013 15V5.25m18 0A2.25 2.25 0 0018.75 3H5.25A2.25 2.25 0 003 5.25m18 0V12a2.25 2.25 0 01-2.25 2.25H5.25A2.25 2.25 0 013 12V5.25"})])}},243:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 6.75a.75.75 0 110-1.5.75.75 0 010 1.5zM12 12.75a.75.75 0 110-1.5.75.75 0 010 1.5zM12 18.75a.75.75 0 110-1.5.75.75 0 010 1.5z"})])}},706:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z"})])}},413:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M2.25 12.75V12A2.25 2.25 0 014.5 9.75h15A2.25 2.25 0 0121.75 12v.75m-8.69-6.44l-2.12-2.12a1.5 1.5 0 00-1.061-.44H4.5A2.25 2.25 0 002.25 6v12a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18V9a2.25 2.25 0 00-2.25-2.25h-5.379a1.5 1.5 0 01-1.06-.44z"})])}},199:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.75 9.776c.112-.017.227-.026.344-.026h15.812c.117 0 .232.009.344.026m-16.5 0a2.25 2.25 0 00-1.883 2.542l.857 6a2.25 2.25 0 002.227 1.932H19.05a2.25 2.25 0 002.227-1.932l.857-6a2.25 2.25 0 00-1.883-2.542m-16.5 0V6A2.25 2.25 0 016 3.75h3.879a1.5 1.5 0 011.06.44l2.122 2.12a1.5 1.5 0 001.06.44H18A2.25 2.25 0 0120.25 9v.776"})])}},923:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M13.19 8.688a4.5 4.5 0 011.242 7.244l-4.5 4.5a4.5 4.5 0 01-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 00-6.364-6.364l-4.5 4.5a4.5 4.5 0 001.242 7.244"})])}},447:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z"})])}},902:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z"})])}},390:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9 5.25h.008v.008H12v-.008z"})])}},908:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M7.217 10.907a2.25 2.25 0 100 2.186m0-2.186c.18.324.283.696.283 1.093s-.103.77-.283 1.093m0-2.186l9.566-5.314m-9.566 7.5l9.566 5.314m0 0a2.25 2.25 0 103.935 2.186 2.25 2.25 0 00-3.935-2.186zm0-12.814a2.25 2.25 0 103.933-2.185 2.25 2.25 0 00-3.933 2.185z"})])}},817:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 3v2.25m6.364.386l-1.591 1.591M21 12h-2.25m-.386 6.364l-1.591-1.591M12 18.75V21m-4.773-4.227l-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0z"})])}},558:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0"})])}},505:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6 18L18 6M6 6l12 12"})])}},598:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[r("path",{"fill-rule":"evenodd",d:"M4.755 10.059a7.5 7.5 0 0112.548-3.364l1.903 1.903h-3.183a.75.75 0 100 1.5h4.992a.75.75 0 00.75-.75V4.356a.75.75 0 00-1.5 0v3.18l-1.9-1.9A9 9 0 003.306 9.67a.75.75 0 101.45.388zm15.408 3.352a.75.75 0 00-.919.53 7.5 7.5 0 01-12.548 3.364l-1.902-1.903h3.183a.75.75 0 000-1.5H2.984a.75.75 0 00-.75.75v4.992a.75.75 0 001.5 0v-3.18l1.9 1.9a9 9 0 0015.059-4.035.75.75 0 00-.53-.918z","clip-rule":"evenodd"})])}},462:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[r("path",{"fill-rule":"evenodd",d:"M3 6.75A.75.75 0 013.75 6h16.5a.75.75 0 010 1.5H3.75A.75.75 0 013 6.75zM3 12a.75.75 0 01.75-.75h16.5a.75.75 0 010 1.5H3.75A.75.75 0 013 12zm0 5.25a.75.75 0 01.75-.75h16.5a.75.75 0 010 1.5H3.75a.75.75 0 01-.75-.75z","clip-rule":"evenodd"})])}},452:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[r("path",{"fill-rule":"evenodd",d:"M16.28 11.47a.75.75 0 010 1.06l-7.5 7.5a.75.75 0 01-1.06-1.06L14.69 12 7.72 5.03a.75.75 0 011.06-1.06l7.5 7.5z","clip-rule":"evenodd"})])}},640:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[r("path",{"fill-rule":"evenodd",d:"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z","clip-rule":"evenodd"})])}},307:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[r("path",{"fill-rule":"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z","clip-rule":"evenodd"})])}},968:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[r("path",{d:"M7.493 18.75c-.425 0-.82-.236-.975-.632A7.48 7.48 0 016 15.375c0-1.75.599-3.358 1.602-4.634.151-.192.373-.309.6-.397.473-.183.89-.514 1.212-.924a9.042 9.042 0 012.861-2.4c.723-.384 1.35-.956 1.653-1.715a4.498 4.498 0 00.322-1.672V3a.75.75 0 01.75-.75 2.25 2.25 0 012.25 2.25c0 1.152-.26 2.243-.723 3.218-.266.558.107 1.282.725 1.282h3.126c1.026 0 1.945.694 2.054 1.715.045.422.068.85.068 1.285a11.95 11.95 0 01-2.649 7.521c-.388.482-.987.729-1.605.729H14.23c-.483 0-.964-.078-1.423-.23l-3.114-1.04a4.501 4.501 0 00-1.423-.23h-.777zM2.331 10.977a11.969 11.969 0 00-.831 4.398 12 12 0 00.52 3.507c.26.85 1.084 1.368 1.973 1.368H4.9c.445 0 .72-.498.523-.898a8.963 8.963 0 01-.924-3.977c0-1.708.476-3.305 1.302-4.666.245-.403-.028-.959-.5-.959H4.25c-.832 0-1.612.453-1.918 1.227z"})])}},36:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[r("path",{"fill-rule":"evenodd",d:"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zm8.706-1.442c1.146-.573 2.437.463 2.126 1.706l-.709 2.836.042-.02a.75.75 0 01.67 1.34l-.04.022c-1.147.573-2.438-.463-2.127-1.706l.71-2.836-.042.02a.75.75 0 11-.671-1.34l.041-.022zM12 9a.75.75 0 100-1.5.75.75 0 000 1.5z","clip-rule":"evenodd"})])}},500:(e,t,n)=>{"use strict";var r=n(821),o=!1;function i(e,t,n){return Array.isArray(e)?(e.length=Math.max(e.length,t),e.splice(t,1,n),n):(e[t]=n,n)}function a(){return"undefined"!=typeof navigator&&"undefined"!=typeof window?window:void 0!==n.g?n.g:{}}const l="function"==typeof Proxy,s="devtools-plugin:setup";let c,u,f;function d(){return function(){var e;return void 0!==c||("undefined"!=typeof window&&window.performance?(c=!0,u=window.performance):void 0!==n.g&&(null===(e=n.g.perf_hooks)||void 0===e?void 0:e.performance)?(c=!0,u=n.g.perf_hooks.performance):c=!1),c}()?u.now():Date.now()}class p{constructor(e,t){this.target=null,this.targetQueue=[],this.onQueue=[],this.plugin=e,this.hook=t;const n={};if(e.settings)for(const t in e.settings){const r=e.settings[t];n[t]=r.defaultValue}const r=`__vue-devtools-plugin-settings__${e.id}`;let o=Object.assign({},n);try{const e=localStorage.getItem(r),t=JSON.parse(e);Object.assign(o,t)}catch(e){}this.fallbacks={getSettings:()=>o,setSettings(e){try{localStorage.setItem(r,JSON.stringify(e))}catch(e){}o=e},now:()=>d()},t&&t.on("plugin:settings:set",((e,t)=>{e===this.plugin.id&&this.fallbacks.setSettings(t)})),this.proxiedOn=new Proxy({},{get:(e,t)=>this.target?this.target.on[t]:(...e)=>{this.onQueue.push({method:t,args:e})}}),this.proxiedTarget=new Proxy({},{get:(e,t)=>this.target?this.target[t]:"on"===t?this.proxiedOn:Object.keys(this.fallbacks).includes(t)?(...e)=>(this.targetQueue.push({method:t,args:e,resolve:()=>{}}),this.fallbacks[t](...e)):(...e)=>new Promise((n=>{this.targetQueue.push({method:t,args:e,resolve:n})}))})}async setRealTarget(e){this.target=e;for(const e of this.onQueue)this.target.on[e.method](...e.args);for(const e of this.targetQueue)e.resolve(await this.target[e.method](...e.args))}}function h(e,t){const n=e,r=a(),o=a().__VUE_DEVTOOLS_GLOBAL_HOOK__,i=l&&n.enableEarlyProxy;if(!o||!r.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__&&i){const e=i?new p(n,o):null;(r.__VUE_DEVTOOLS_PLUGINS__=r.__VUE_DEVTOOLS_PLUGINS__||[]).push({pluginDescriptor:n,setupFn:t,proxy:e}),e&&t(e.proxiedTarget)}else o.emit(s,e,t)}const v=e=>f=e,m=Symbol();function g(e){return e&&"object"==typeof e&&"[object Object]"===Object.prototype.toString.call(e)&&"function"!=typeof e.toJSON}var y;!function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"}(y||(y={}));const b="undefined"!=typeof window,w=!1,C=(()=>"object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:"object"==typeof globalThis?globalThis:{HTMLElement:null})();function _(e,t,n){const r=new XMLHttpRequest;r.open("GET",e),r.responseType="blob",r.onload=function(){O(r.response,t,n)},r.onerror=function(){},r.send()}function E(e){const t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return t.status>=200&&t.status<=299}function x(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(t){const n=document.createEvent("MouseEvents");n.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(n)}}const k="object"==typeof navigator?navigator:{userAgent:""},S=(()=>/Macintosh/.test(k.userAgent)&&/AppleWebKit/.test(k.userAgent)&&!/Safari/.test(k.userAgent))(),O=b?"undefined"!=typeof HTMLAnchorElement&&"download"in HTMLAnchorElement.prototype&&!S?function(e,t="download",n){const r=document.createElement("a");r.download=t,r.rel="noopener","string"==typeof e?(r.href=e,r.origin!==location.origin?E(r.href)?_(e,t,n):(r.target="_blank",x(r)):x(r)):(r.href=URL.createObjectURL(e),setTimeout((function(){URL.revokeObjectURL(r.href)}),4e4),setTimeout((function(){x(r)}),0))}:"msSaveOrOpenBlob"in k?function(e,t="download",n){if("string"==typeof e)if(E(e))_(e,t,n);else{const t=document.createElement("a");t.href=e,t.target="_blank",setTimeout((function(){x(t)}))}else navigator.msSaveOrOpenBlob(function(e,{autoBom:t=!1}={}){return t&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([String.fromCharCode(65279),e],{type:e.type}):e}(e,n),t)}:function(e,t,n,r){(r=r||open("","_blank"))&&(r.document.title=r.document.body.innerText="downloading...");if("string"==typeof e)return _(e,t,n);const o="application/octet-stream"===e.type,i=/constructor/i.test(String(C.HTMLElement))||"safari"in C,a=/CriOS\/[\d]+/.test(navigator.userAgent);if((a||o&&i||S)&&"undefined"!=typeof FileReader){const t=new FileReader;t.onloadend=function(){let e=t.result;if("string"!=typeof e)throw r=null,new Error("Wrong reader.result type");e=a?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),r?r.location.href=e:location.assign(e),r=null},t.readAsDataURL(e)}else{const t=URL.createObjectURL(e);r?r.location.assign(t):location.href=t,r=null,setTimeout((function(){URL.revokeObjectURL(t)}),4e4)}}:()=>{};function N(e,t){"function"==typeof __VUE_DEVTOOLS_TOAST__&&__VUE_DEVTOOLS_TOAST__("🍍 "+e,t)}function P(e){return"_a"in e&&"install"in e}function T(){if(!("clipboard"in navigator))return N("Your browser doesn't support the Clipboard API","error"),!0}function V(e){return!!(e instanceof Error&&e.message.toLowerCase().includes("document is not focused"))&&(N('You need to activate the "Emulate a focused page" setting in the "Rendering" panel of devtools.',"warn"),!0)}let R;async function L(e){try{const t=await(R||(R=document.createElement("input"),R.type="file",R.accept=".json"),function(){return new Promise(((e,t)=>{R.onchange=async()=>{const t=R.files;if(!t)return e(null);const n=t.item(0);return e(n?{text:await n.text(),file:n}:null)},R.oncancel=()=>e(null),R.onerror=t,R.click()}))}),n=await t();if(!n)return;const{text:r,file:o}=n;e.state.value=JSON.parse(r),N(`Global state imported from "${o.name}".`)}catch(e){N("Failed to export the state as JSON. Check the console for more details.","error")}}function A(e){return{_custom:{display:e}}}const j="🍍 Pinia (root)",B="_root";function I(e){return P(e)?{id:B,label:j}:{id:e.$id,label:e.$id}}function M(e){return e?Array.isArray(e)?e.reduce(((e,t)=>(e.keys.push(t.key),e.operations.push(t.type),e.oldValue[t.key]=t.oldValue,e.newValue[t.key]=t.newValue,e)),{oldValue:{},keys:[],operations:[],newValue:{}}):{operation:A(e.type),key:A(e.key),oldValue:e.oldValue,newValue:e.newValue}:{}}function F(e){switch(e){case y.direct:return"mutation";case y.patchFunction:case y.patchObject:return"$patch";default:return"unknown"}}let D=!0;const U=[],$="pinia:mutations",H="pinia",{assign:z}=Object,q=e=>"🍍 "+e;function W(e,t){h({id:"dev.esm.pinia",label:"Pinia 🍍",logo:"https://pinia.vuejs.org/logo.svg",packageName:"pinia",homepage:"https://pinia.vuejs.org",componentStateTypes:U,app:e},(n=>{"function"!=typeof n.now&&N("You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html."),n.addTimelineLayer({id:$,label:"Pinia 🍍",color:15064968}),n.addInspector({id:H,label:"Pinia 🍍",icon:"storage",treeFilterPlaceholder:"Search stores",actions:[{icon:"content_copy",action:()=>{!async function(e){if(!T())try{await navigator.clipboard.writeText(JSON.stringify(e.state.value)),N("Global state copied to clipboard.")}catch(e){if(V(e))return;N("Failed to serialize the state. Check the console for more details.","error")}}(t)},tooltip:"Serialize and copy the state"},{icon:"content_paste",action:async()=>{await async function(e){if(!T())try{e.state.value=JSON.parse(await navigator.clipboard.readText()),N("Global state pasted from clipboard.")}catch(e){if(V(e))return;N("Failed to deserialize the state from clipboard. Check the console for more details.","error")}}(t),n.sendInspectorTree(H),n.sendInspectorState(H)},tooltip:"Replace the state with the content of your clipboard"},{icon:"save",action:()=>{!async function(e){try{O(new Blob([JSON.stringify(e.state.value)],{type:"text/plain;charset=utf-8"}),"pinia-state.json")}catch(e){N("Failed to export the state as JSON. Check the console for more details.","error")}}(t)},tooltip:"Save the state as a JSON file"},{icon:"folder_open",action:async()=>{await L(t),n.sendInspectorTree(H),n.sendInspectorState(H)},tooltip:"Import the state from a JSON file"}],nodeActions:[{icon:"restore",tooltip:"Reset the state (option store only)",action:e=>{const n=t._s.get(e);n?n._isOptionsAPI?(n.$reset(),N(`Store "${e}" reset.`)):N(`Cannot reset "${e}" store because it's a setup store.`,"warn"):N(`Cannot reset "${e}" store because it wasn't found.`,"warn")}}]}),n.on.inspectComponent(((e,t)=>{const n=e.componentInstance&&e.componentInstance.proxy;if(n&&n._pStores){const t=e.componentInstance.proxy._pStores;Object.values(t).forEach((t=>{e.instanceData.state.push({type:q(t.$id),key:"state",editable:!0,value:t._isOptionsAPI?{_custom:{value:(0,r.toRaw)(t.$state),actions:[{icon:"restore",tooltip:"Reset the state of this store",action:()=>t.$reset()}]}}:Object.keys(t.$state).reduce(((e,n)=>(e[n]=t.$state[n],e)),{})}),t._getters&&t._getters.length&&e.instanceData.state.push({type:q(t.$id),key:"getters",editable:!1,value:t._getters.reduce(((e,n)=>{try{e[n]=t[n]}catch(t){e[n]=t}return e}),{})})}))}})),n.on.getInspectorTree((n=>{if(n.app===e&&n.inspectorId===H){let e=[t];e=e.concat(Array.from(t._s.values())),n.rootNodes=(n.filter?e.filter((e=>"$id"in e?e.$id.toLowerCase().includes(n.filter.toLowerCase()):j.toLowerCase().includes(n.filter.toLowerCase()))):e).map(I)}})),n.on.getInspectorState((n=>{if(n.app===e&&n.inspectorId===H){const e=n.nodeId===B?t:t._s.get(n.nodeId);if(!e)return;e&&(n.state=function(e){if(P(e)){const t=Array.from(e._s.keys()),n=e._s,r={state:t.map((t=>({editable:!0,key:t,value:e.state.value[t]}))),getters:t.filter((e=>n.get(e)._getters)).map((e=>{const t=n.get(e);return{editable:!1,key:e,value:t._getters.reduce(((e,n)=>(e[n]=t[n],e)),{})}}))};return r}const t={state:Object.keys(e.$state).map((t=>({editable:!0,key:t,value:e.$state[t]})))};return e._getters&&e._getters.length&&(t.getters=e._getters.map((t=>({editable:!1,key:t,value:e[t]})))),e._customProperties.size&&(t.customProperties=Array.from(e._customProperties).map((t=>({editable:!0,key:t,value:e[t]})))),t}(e))}})),n.on.editInspectorState(((n,r)=>{if(n.app===e&&n.inspectorId===H){const e=n.nodeId===B?t:t._s.get(n.nodeId);if(!e)return N(`store "${n.nodeId}" not found`,"error");const{path:r}=n;P(e)?r.unshift("state"):1===r.length&&e._customProperties.has(r[0])&&!(r[0]in e.$state)||r.unshift("$state"),D=!1,n.set(e,r,n.state.value),D=!0}})),n.on.editComponentState((e=>{if(e.type.startsWith("🍍")){const n=e.type.replace(/^🍍\s*/,""),r=t._s.get(n);if(!r)return N(`store "${n}" not found`,"error");const{path:o}=e;if("state"!==o[0])return N(`Invalid path for store "${n}":\n${o}\nOnly state can be modified.`);o[0]="$state",D=!1,e.set(r,o,e.state.value),D=!0}}))}))}let K,G=0;function Z(e,t){const n=t.reduce(((t,n)=>(t[n]=(0,r.toRaw)(e)[n],t)),{});for(const t in n)e[t]=function(){const r=G,o=new Proxy(e,{get:(...e)=>(K=r,Reflect.get(...e)),set:(...e)=>(K=r,Reflect.set(...e))});return n[t].apply(o,arguments)}}function Y({app:e,store:t,options:n}){if(!t.$id.startsWith("__hot:")){if(n.state&&(t._isOptionsAPI=!0),"function"==typeof n.state){Z(t,Object.keys(n.actions));const e=t._hotUpdate;(0,r.toRaw)(t)._hotUpdate=function(n){e.apply(this,arguments),Z(t,Object.keys(n._hmrPayload.actions))}}!function(e,t){U.includes(q(t.$id))||U.push(q(t.$id)),h({id:"dev.esm.pinia",label:"Pinia 🍍",logo:"https://pinia.vuejs.org/logo.svg",packageName:"pinia",homepage:"https://pinia.vuejs.org",componentStateTypes:U,app:e,settings:{logStoreChanges:{label:"Notify about new/deleted stores",type:"boolean",defaultValue:!0}}},(e=>{const n="function"==typeof e.now?e.now.bind(e):Date.now;t.$onAction((({after:r,onError:o,name:i,args:a})=>{const l=G++;e.addTimelineEvent({layerId:$,event:{time:n(),title:"🛫 "+i,subtitle:"start",data:{store:A(t.$id),action:A(i),args:a},groupId:l}}),r((r=>{K=void 0,e.addTimelineEvent({layerId:$,event:{time:n(),title:"🛬 "+i,subtitle:"end",data:{store:A(t.$id),action:A(i),args:a,result:r},groupId:l}})})),o((r=>{K=void 0,e.addTimelineEvent({layerId:$,event:{time:n(),logType:"error",title:"💥 "+i,subtitle:"end",data:{store:A(t.$id),action:A(i),args:a,error:r},groupId:l}})}))}),!0),t._customProperties.forEach((o=>{(0,r.watch)((()=>(0,r.unref)(t[o])),((t,r)=>{e.notifyComponentUpdate(),e.sendInspectorState(H),D&&e.addTimelineEvent({layerId:$,event:{time:n(),title:"Change",subtitle:o,data:{newValue:t,oldValue:r},groupId:K}})}),{deep:!0})})),t.$subscribe((({events:r,type:o},i)=>{if(e.notifyComponentUpdate(),e.sendInspectorState(H),!D)return;const a={time:n(),title:F(o),data:z({store:A(t.$id)},M(r)),groupId:K};K=void 0,o===y.patchFunction?a.subtitle="⤵️":o===y.patchObject?a.subtitle="🧩":r&&!Array.isArray(r)&&(a.subtitle=r.type),r&&(a.data["rawEvent(s)"]={_custom:{display:"DebuggerEvent",type:"object",tooltip:"raw DebuggerEvent[]",value:r}}),e.addTimelineEvent({layerId:$,event:a})}),{detached:!0,flush:"sync"});const o=t._hotUpdate;t._hotUpdate=(0,r.markRaw)((r=>{o(r),e.addTimelineEvent({layerId:$,event:{time:n(),title:"🔥 "+t.$id,subtitle:"HMR update",data:{store:A(t.$id),info:A("HMR update")}}}),e.notifyComponentUpdate(),e.sendInspectorTree(H),e.sendInspectorState(H)}));const{$dispose:i}=t;t.$dispose=()=>{i(),e.notifyComponentUpdate(),e.sendInspectorTree(H),e.sendInspectorState(H),e.getSettings().logStoreChanges&&N(`Disposed "${t.$id}" store 🗑`)},e.notifyComponentUpdate(),e.sendInspectorTree(H),e.sendInspectorState(H),e.getSettings().logStoreChanges&&N(`"${t.$id}" store installed 🆕`)}))}(e,t)}}const J=()=>{};function Q(e,t,n,o=J){e.push(t);const i=()=>{const n=e.indexOf(t);n>-1&&(e.splice(n,1),o())};return!n&&(0,r.getCurrentScope)()&&(0,r.onScopeDispose)(i),i}function X(e,...t){e.slice().forEach((e=>{e(...t)}))}function ee(e,t){e instanceof Map&&t instanceof Map&&t.forEach(((t,n)=>e.set(n,t))),e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const o=t[n],i=e[n];g(i)&&g(o)&&e.hasOwnProperty(n)&&!(0,r.isRef)(o)&&!(0,r.isReactive)(o)?e[n]=ee(i,o):e[n]=o}return e}const te=Symbol(),ne=new WeakMap;const{assign:re}=Object;function oe(e,t,n={},a,l,s){let c;const u=re({actions:{}},n);const f={deep:!0};let d,p;let h,m=(0,r.markRaw)([]),b=(0,r.markRaw)([]);const C=a.state.value[e];s||C||(o?i(a.state.value,e,{}):a.state.value[e]={});const _=(0,r.ref)({});let E;function x(t){let n;d=p=!1,"function"==typeof t?(t(a.state.value[e]),n={type:y.patchFunction,storeId:e,events:h}):(ee(a.state.value[e],t),n={type:y.patchObject,payload:t,storeId:e,events:h});const o=E=Symbol();(0,r.nextTick)().then((()=>{E===o&&(d=!0)})),p=!0,X(m,n,a.state.value[e])}const k=J;function S(t,n){return function(){v(a);const r=Array.from(arguments),o=[],i=[];let l;X(b,{args:r,name:t,store:P,after:function(e){o.push(e)},onError:function(e){i.push(e)}});try{l=n.apply(this&&this.$id===e?this:P,r)}catch(e){throw X(i,e),e}return l instanceof Promise?l.then((e=>(X(o,e),e))).catch((e=>(X(i,e),Promise.reject(e)))):(X(o,l),l)}}const O=(0,r.markRaw)({actions:{},getters:{},state:[],hotState:_}),N={_p:a,$id:e,$onAction:Q.bind(null,b),$patch:x,$reset:k,$subscribe(t,n={}){const o=Q(m,t,n.detached,(()=>i())),i=c.run((()=>(0,r.watch)((()=>a.state.value[e]),(r=>{("sync"===n.flush?p:d)&&t({storeId:e,type:y.direct,events:h},r)}),re({},f,n))));return o},$dispose:function(){c.stop(),m=[],b=[],a._s.delete(e)}};o&&(N._r=!1);const P=(0,r.reactive)(w?re({_hmrPayload:O,_customProperties:(0,r.markRaw)(new Set)},N):N);a._s.set(e,P);const T=a._e.run((()=>(c=(0,r.effectScope)(),c.run((()=>t())))));for(const t in T){const n=T[t];if((0,r.isRef)(n)&&(R=n,!(0,r.isRef)(R)||!R.effect)||(0,r.isReactive)(n))s||(!C||(V=n,o?ne.has(V):g(V)&&V.hasOwnProperty(te))||((0,r.isRef)(n)?n.value=C[t]:ee(n,C[t])),o?i(a.state.value[e],t,n):a.state.value[e][t]=n);else if("function"==typeof n){const e=S(t,n);o?i(T,t,e):T[t]=e,u.actions[t]=n}else 0}var V,R;if(o?Object.keys(T).forEach((e=>{i(P,e,T[e])})):(re(P,T),re((0,r.toRaw)(P),T)),Object.defineProperty(P,"$state",{get:()=>a.state.value[e],set:e=>{x((t=>{re(t,e)}))}}),w){const e={writable:!0,configurable:!0,enumerable:!1};["_p","_hmrPayload","_getters","_customProperties"].forEach((t=>{Object.defineProperty(P,t,re({value:P[t]},e))}))}return o&&(P._r=!0),a._p.forEach((e=>{if(w){const t=c.run((()=>e({store:P,app:a._a,pinia:a,options:u})));Object.keys(t||{}).forEach((e=>P._customProperties.add(e))),re(P,t)}else re(P,c.run((()=>e({store:P,app:a._a,pinia:a,options:u}))))})),C&&s&&n.hydrate&&n.hydrate(P.$state,C),d=!0,p=!0,P}function ie(e,t,n){let a,l;const s="function"==typeof t;function c(e,n){const c=(0,r.getCurrentInstance)();(e=e||c&&(0,r.inject)(m,null))&&v(e),(e=f)._s.has(a)||(s?oe(a,t,l,e):function(e,t,n,a){const{state:l,actions:s,getters:c}=t,u=n.state.value[e];let f;f=oe(e,(function(){u||(o?i(n.state.value,e,l?l():{}):n.state.value[e]=l?l():{});const t=(0,r.toRefs)(n.state.value[e]);return re(t,s,Object.keys(c||{}).reduce(((t,i)=>(t[i]=(0,r.markRaw)((0,r.computed)((()=>{v(n);const t=n._s.get(e);if(!o||t._r)return c[i].call(t,t)}))),t)),{}))}),t,n,0,!0),f.$reset=function(){const e=l?l():{};this.$patch((t=>{re(t,e)}))}}(a,l,e));return e._s.get(a)}return"string"==typeof e?(a=e,l=s?n:t):(l=e,a=e.id),c.$id=a,c}function ae(e,t){return function(){return e.apply(t,arguments)}}const{toString:le}=Object.prototype,{getPrototypeOf:se}=Object,ce=(ue=Object.create(null),e=>{const t=le.call(e);return ue[t]||(ue[t]=t.slice(8,-1).toLowerCase())});var ue;const fe=e=>(e=e.toLowerCase(),t=>ce(t)===e),de=e=>t=>typeof t===e,{isArray:pe}=Array,he=de("undefined");const ve=fe("ArrayBuffer");const me=de("string"),ge=de("function"),ye=de("number"),be=e=>null!==e&&"object"==typeof e,we=e=>{if("object"!==ce(e))return!1;const t=se(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},Ce=fe("Date"),_e=fe("File"),Ee=fe("Blob"),xe=fe("FileList"),ke=fe("URLSearchParams");function Se(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let r,o;if("object"!=typeof e&&(e=[e]),pe(e))for(r=0,o=e.length;r0;)if(r=n[o],t===r.toLowerCase())return r;return null}const Ne="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,Pe=e=>!he(e)&&e!==Ne;const Te=(Ve="undefined"!=typeof Uint8Array&&se(Uint8Array),e=>Ve&&e instanceof Ve);var Ve;const Re=fe("HTMLFormElement"),Le=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),Ae=fe("RegExp"),je=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};Se(n,((n,o)=>{!1!==t(n,o,e)&&(r[o]=n)})),Object.defineProperties(e,r)},Be="abcdefghijklmnopqrstuvwxyz",Ie="0123456789",Me={DIGIT:Ie,ALPHA:Be,ALPHA_DIGIT:Be+Be.toUpperCase()+Ie};const Fe={isArray:pe,isArrayBuffer:ve,isBuffer:function(e){return null!==e&&!he(e)&&null!==e.constructor&&!he(e.constructor)&&ge(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{const t="[object FormData]";return e&&("function"==typeof FormData&&e instanceof FormData||le.call(e)===t||ge(e.toString)&&e.toString()===t)},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&ve(e.buffer),t},isString:me,isNumber:ye,isBoolean:e=>!0===e||!1===e,isObject:be,isPlainObject:we,isUndefined:he,isDate:Ce,isFile:_e,isBlob:Ee,isRegExp:Ae,isFunction:ge,isStream:e=>be(e)&&ge(e.pipe),isURLSearchParams:ke,isTypedArray:Te,isFileList:xe,forEach:Se,merge:function e(){const{caseless:t}=Pe(this)&&this||{},n={},r=(r,o)=>{const i=t&&Oe(n,o)||o;we(n[i])&&we(r)?n[i]=e(n[i],r):we(r)?n[i]=e({},r):pe(r)?n[i]=r.slice():n[i]=r};for(let e=0,t=arguments.length;e(Se(t,((t,r)=>{n&&ge(t)?e[r]=ae(t,n):e[r]=t}),{allOwnKeys:r}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:(e,t,n,r)=>{let o,i,a;const l={};if(t=t||{},null==e)return t;do{for(o=Object.getOwnPropertyNames(e),i=o.length;i-- >0;)a=o[i],r&&!r(a,e,t)||l[a]||(t[a]=e[a],l[a]=!0);e=!1!==n&&se(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:ce,kindOfTest:fe,endsWith:(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return-1!==r&&r===n},toArray:e=>{if(!e)return null;if(pe(e))return e;let t=e.length;if(!ye(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[Symbol.iterator]).call(e);let r;for(;(r=n.next())&&!r.done;){const n=r.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let n;const r=[];for(;null!==(n=e.exec(t));)r.push(n);return r},isHTMLForm:Re,hasOwnProperty:Le,hasOwnProp:Le,reduceDescriptors:je,freezeMethods:e=>{je(e,((t,n)=>{if(ge(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const r=e[n];ge(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))}))},toObjectSet:(e,t)=>{const n={},r=e=>{e.forEach((e=>{n[e]=!0}))};return pe(e)?r(e):r(String(e).split(t)),n},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,n){return t.toUpperCase()+n})),noop:()=>{},toFiniteNumber:(e,t)=>(e=+e,Number.isFinite(e)?e:t),findKey:Oe,global:Ne,isContextDefined:Pe,ALPHABET:Me,generateString:(e=16,t=Me.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n},isSpecCompliantForm:function(e){return!!(e&&ge(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),n=(e,r)=>{if(be(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[r]=e;const o=pe(e)?[]:{};return Se(e,((e,t)=>{const i=n(e,r+1);!he(i)&&(o[t]=i)})),t[r]=void 0,o}}return e};return n(e,0)}};function De(e,t,n,r,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),o&&(this.response=o)}Fe.inherits(De,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:Fe.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const Ue=De.prototype,$e={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{$e[e]={value:e}})),Object.defineProperties(De,$e),Object.defineProperty(Ue,"isAxiosError",{value:!0}),De.from=(e,t,n,r,o,i)=>{const a=Object.create(Ue);return Fe.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),De.call(a,e.message,t,n,r,o),a.cause=e,a.name=e.name,i&&Object.assign(a,i),a};const He=De,ze=null;var qe=n(764).lW;function We(e){return Fe.isPlainObject(e)||Fe.isArray(e)}function Ke(e){return Fe.endsWith(e,"[]")?e.slice(0,-2):e}function Ge(e,t,n){return e?e.concat(t).map((function(e,t){return e=Ke(e),!n&&t?"["+e+"]":e})).join(n?".":""):t}const Ze=Fe.toFlatObject(Fe,{},null,(function(e){return/^is[A-Z]/.test(e)}));const Ye=function(e,t,n){if(!Fe.isObject(e))throw new TypeError("target must be an object");t=t||new(ze||FormData);const r=(n=Fe.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!Fe.isUndefined(t[e])}))).metaTokens,o=n.visitor||c,i=n.dots,a=n.indexes,l=(n.Blob||"undefined"!=typeof Blob&&Blob)&&Fe.isSpecCompliantForm(t);if(!Fe.isFunction(o))throw new TypeError("visitor must be a function");function s(e){if(null===e)return"";if(Fe.isDate(e))return e.toISOString();if(!l&&Fe.isBlob(e))throw new He("Blob is not supported. Use a Buffer instead.");return Fe.isArrayBuffer(e)||Fe.isTypedArray(e)?l&&"function"==typeof Blob?new Blob([e]):qe.from(e):e}function c(e,n,o){let l=e;if(e&&!o&&"object"==typeof e)if(Fe.endsWith(n,"{}"))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(Fe.isArray(e)&&function(e){return Fe.isArray(e)&&!e.some(We)}(e)||(Fe.isFileList(e)||Fe.endsWith(n,"[]"))&&(l=Fe.toArray(e)))return n=Ke(n),l.forEach((function(e,r){!Fe.isUndefined(e)&&null!==e&&t.append(!0===a?Ge([n],r,i):null===a?n:n+"[]",s(e))})),!1;return!!We(e)||(t.append(Ge(o,n,i),s(e)),!1)}const u=[],f=Object.assign(Ze,{defaultVisitor:c,convertValue:s,isVisitable:We});if(!Fe.isObject(e))throw new TypeError("data must be an object");return function e(n,r){if(!Fe.isUndefined(n)){if(-1!==u.indexOf(n))throw Error("Circular reference detected in "+r.join("."));u.push(n),Fe.forEach(n,(function(n,i){!0===(!(Fe.isUndefined(n)||null===n)&&o.call(t,n,Fe.isString(i)?i.trim():i,r,f))&&e(n,r?r.concat(i):[i])})),u.pop()}}(e),t};function Je(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function Qe(e,t){this._pairs=[],e&&Ye(e,this,t)}const Xe=Qe.prototype;Xe.append=function(e,t){this._pairs.push([e,t])},Xe.toString=function(e){const t=e?function(t){return e.call(this,t,Je)}:Je;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};const et=Qe;function tt(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function nt(e,t,n){if(!t)return e;const r=n&&n.encode||tt,o=n&&n.serialize;let i;if(i=o?o(t,n):Fe.isURLSearchParams(t)?t.toString():new et(t,n).toString(r),i){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e}const rt=class{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){Fe.forEach(this.handlers,(function(t){null!==t&&e(t)}))}},ot={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},it="undefined"!=typeof URLSearchParams?URLSearchParams:et,at=FormData,lt=(()=>{let e;return("undefined"==typeof navigator||"ReactNative"!==(e=navigator.product)&&"NativeScript"!==e&&"NS"!==e)&&("undefined"!=typeof window&&"undefined"!=typeof document)})(),st="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,ct={isBrowser:!0,classes:{URLSearchParams:it,FormData:at,Blob},isStandardBrowserEnv:lt,isStandardBrowserWebWorkerEnv:st,protocols:["http","https","file","blob","url","data"]};const ut=function(e){function t(e,n,r,o){let i=e[o++];const a=Number.isFinite(+i),l=o>=e.length;if(i=!i&&Fe.isArray(r)?r.length:i,l)return Fe.hasOwnProp(r,i)?r[i]=[r[i],n]:r[i]=n,!a;r[i]&&Fe.isObject(r[i])||(r[i]=[]);return t(e,n,r[i],o)&&Fe.isArray(r[i])&&(r[i]=function(e){const t={},n=Object.keys(e);let r;const o=n.length;let i;for(r=0;r{t(function(e){return Fe.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),r,n,0)})),n}return null},ft={"Content-Type":void 0};const dt={transitional:ot,adapter:["xhr","http"],transformRequest:[function(e,t){const n=t.getContentType()||"",r=n.indexOf("application/json")>-1,o=Fe.isObject(e);o&&Fe.isHTMLForm(e)&&(e=new FormData(e));if(Fe.isFormData(e))return r&&r?JSON.stringify(ut(e)):e;if(Fe.isArrayBuffer(e)||Fe.isBuffer(e)||Fe.isStream(e)||Fe.isFile(e)||Fe.isBlob(e))return e;if(Fe.isArrayBufferView(e))return e.buffer;if(Fe.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let i;if(o){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return Ye(e,new ct.classes.URLSearchParams,Object.assign({visitor:function(e,t,n,r){return ct.isNode&&Fe.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((i=Fe.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return Ye(i?{"files[]":e}:e,t&&new t,this.formSerializer)}}return o||r?(t.setContentType("application/json",!1),function(e,t,n){if(Fe.isString(e))try{return(t||JSON.parse)(e),Fe.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||dt.transitional,n=t&&t.forcedJSONParsing,r="json"===this.responseType;if(e&&Fe.isString(e)&&(n&&!this.responseType||r)){const n=!(t&&t.silentJSONParsing)&&r;try{return JSON.parse(e)}catch(e){if(n){if("SyntaxError"===e.name)throw He.from(e,He.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:ct.classes.FormData,Blob:ct.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};Fe.forEach(["delete","get","head"],(function(e){dt.headers[e]={}})),Fe.forEach(["post","put","patch"],(function(e){dt.headers[e]=Fe.merge(ft)}));const pt=dt,ht=Fe.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),vt=Symbol("internals");function mt(e){return e&&String(e).trim().toLowerCase()}function gt(e){return!1===e||null==e?e:Fe.isArray(e)?e.map(gt):String(e)}function yt(e,t,n,r){return Fe.isFunction(r)?r.call(this,t,n):Fe.isString(t)?Fe.isString(r)?-1!==t.indexOf(r):Fe.isRegExp(r)?r.test(t):void 0:void 0}class bt{constructor(e){e&&this.set(e)}set(e,t,n){const r=this;function o(e,t,n){const o=mt(t);if(!o)throw new Error("header name must be a non-empty string");const i=Fe.findKey(r,o);(!i||void 0===r[i]||!0===n||void 0===n&&!1!==r[i])&&(r[i||t]=gt(e))}const i=(e,t)=>Fe.forEach(e,((e,n)=>o(e,n,t)));return Fe.isPlainObject(e)||e instanceof this.constructor?i(e,t):Fe.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z]+$/.test(e.trim())?i((e=>{const t={};let n,r,o;return e&&e.split("\n").forEach((function(e){o=e.indexOf(":"),n=e.substring(0,o).trim().toLowerCase(),r=e.substring(o+1).trim(),!n||t[n]&&ht[n]||("set-cookie"===n?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)})),t})(e),t):null!=e&&o(t,e,n),this}get(e,t){if(e=mt(e)){const n=Fe.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}(e);if(Fe.isFunction(t))return t.call(this,e,n);if(Fe.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=mt(e)){const n=Fe.findKey(this,e);return!(!n||void 0===this[n]||t&&!yt(0,this[n],n,t))}return!1}delete(e,t){const n=this;let r=!1;function o(e){if(e=mt(e)){const o=Fe.findKey(n,e);!o||t&&!yt(0,n[o],o,t)||(delete n[o],r=!0)}}return Fe.isArray(e)?e.forEach(o):o(e),r}clear(e){const t=Object.keys(this);let n=t.length,r=!1;for(;n--;){const o=t[n];e&&!yt(0,this[o],o,e)||(delete this[o],r=!0)}return r}normalize(e){const t=this,n={};return Fe.forEach(this,((r,o)=>{const i=Fe.findKey(n,o);if(i)return t[i]=gt(r),void delete t[o];const a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,n)=>t.toUpperCase()+n))}(o):String(o).trim();a!==o&&delete t[o],t[a]=gt(r),n[a]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return Fe.forEach(this,((n,r)=>{null!=n&&!1!==n&&(t[r]=e&&Fe.isArray(n)?n.join(", "):n)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach((e=>n.set(e))),n}static accessor(e){const t=(this[vt]=this[vt]={accessors:{}}).accessors,n=this.prototype;function r(e){const r=mt(e);t[r]||(!function(e,t){const n=Fe.toCamelCase(" "+t);["get","set","has"].forEach((r=>{Object.defineProperty(e,r+n,{value:function(e,n,o){return this[r].call(this,t,e,n,o)},configurable:!0})}))}(n,e),t[r]=!0)}return Fe.isArray(e)?e.forEach(r):r(e),this}}bt.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),Fe.freezeMethods(bt.prototype),Fe.freezeMethods(bt);const wt=bt;function Ct(e,t){const n=this||pt,r=t||n,o=wt.from(r.headers);let i=r.data;return Fe.forEach(e,(function(e){i=e.call(n,i,o.normalize(),t?t.status:void 0)})),o.normalize(),i}function _t(e){return!(!e||!e.__CANCEL__)}function Et(e,t,n){He.call(this,null==e?"canceled":e,He.ERR_CANCELED,t,n),this.name="CanceledError"}Fe.inherits(Et,He,{__CANCEL__:!0});const xt=Et;const kt=ct.isStandardBrowserEnv?{write:function(e,t,n,r,o,i){const a=[];a.push(e+"="+encodeURIComponent(t)),Fe.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),Fe.isString(r)&&a.push("path="+r),Fe.isString(o)&&a.push("domain="+o),!0===i&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}};function St(e,t){return e&&!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)?function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const Ot=ct.isStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let n;function r(n){let r=n;return e&&(t.setAttribute("href",r),r=t.href),t.setAttribute("href",r),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return n=r(window.location.href),function(e){const t=Fe.isString(e)?r(e):e;return t.protocol===n.protocol&&t.host===n.host}}():function(){return!0};const Nt=function(e,t){e=e||10;const n=new Array(e),r=new Array(e);let o,i=0,a=0;return t=void 0!==t?t:1e3,function(l){const s=Date.now(),c=r[a];o||(o=s),n[i]=l,r[i]=s;let u=a,f=0;for(;u!==i;)f+=n[u++],u%=e;if(i=(i+1)%e,i===a&&(a=(a+1)%e),s-o{const i=o.loaded,a=o.lengthComputable?o.total:void 0,l=i-n,s=r(l);n=i;const c={loaded:i,total:a,progress:a?i/a:void 0,bytes:l,rate:s||void 0,estimated:s&&a&&i<=a?(a-i)/s:void 0,event:o};c[t?"download":"upload"]=!0,e(c)}}const Tt="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,n){let r=e.data;const o=wt.from(e.headers).normalize(),i=e.responseType;let a;function l(){e.cancelToken&&e.cancelToken.unsubscribe(a),e.signal&&e.signal.removeEventListener("abort",a)}Fe.isFormData(r)&&(ct.isStandardBrowserEnv||ct.isStandardBrowserWebWorkerEnv)&&o.setContentType(!1);let s=new XMLHttpRequest;if(e.auth){const t=e.auth.username||"",n=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";o.set("Authorization","Basic "+btoa(t+":"+n))}const c=St(e.baseURL,e.url);function u(){if(!s)return;const r=wt.from("getAllResponseHeaders"in s&&s.getAllResponseHeaders());!function(e,t,n){const r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(new He("Request failed with status code "+n.status,[He.ERR_BAD_REQUEST,He.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}((function(e){t(e),l()}),(function(e){n(e),l()}),{data:i&&"text"!==i&&"json"!==i?s.response:s.responseText,status:s.status,statusText:s.statusText,headers:r,config:e,request:s}),s=null}if(s.open(e.method.toUpperCase(),nt(c,e.params,e.paramsSerializer),!0),s.timeout=e.timeout,"onloadend"in s?s.onloadend=u:s.onreadystatechange=function(){s&&4===s.readyState&&(0!==s.status||s.responseURL&&0===s.responseURL.indexOf("file:"))&&setTimeout(u)},s.onabort=function(){s&&(n(new He("Request aborted",He.ECONNABORTED,e,s)),s=null)},s.onerror=function(){n(new He("Network Error",He.ERR_NETWORK,e,s)),s=null},s.ontimeout=function(){let t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const r=e.transitional||ot;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(new He(t,r.clarifyTimeoutError?He.ETIMEDOUT:He.ECONNABORTED,e,s)),s=null},ct.isStandardBrowserEnv){const t=(e.withCredentials||Ot(c))&&e.xsrfCookieName&&kt.read(e.xsrfCookieName);t&&o.set(e.xsrfHeaderName,t)}void 0===r&&o.setContentType(null),"setRequestHeader"in s&&Fe.forEach(o.toJSON(),(function(e,t){s.setRequestHeader(t,e)})),Fe.isUndefined(e.withCredentials)||(s.withCredentials=!!e.withCredentials),i&&"json"!==i&&(s.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&s.addEventListener("progress",Pt(e.onDownloadProgress,!0)),"function"==typeof e.onUploadProgress&&s.upload&&s.upload.addEventListener("progress",Pt(e.onUploadProgress)),(e.cancelToken||e.signal)&&(a=t=>{s&&(n(!t||t.type?new xt(null,e,s):t),s.abort(),s=null)},e.cancelToken&&e.cancelToken.subscribe(a),e.signal&&(e.signal.aborted?a():e.signal.addEventListener("abort",a)));const f=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(c);f&&-1===ct.protocols.indexOf(f)?n(new He("Unsupported protocol "+f+":",He.ERR_BAD_REQUEST,e)):s.send(r||null)}))},Vt={http:ze,xhr:Tt};Fe.forEach(Vt,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const Rt={getAdapter:e=>{e=Fe.isArray(e)?e:[e];const{length:t}=e;let n,r;for(let o=0;oe instanceof wt?e.toJSON():e;function Bt(e,t){t=t||{};const n={};function r(e,t,n){return Fe.isPlainObject(e)&&Fe.isPlainObject(t)?Fe.merge.call({caseless:n},e,t):Fe.isPlainObject(t)?Fe.merge({},t):Fe.isArray(t)?t.slice():t}function o(e,t,n){return Fe.isUndefined(t)?Fe.isUndefined(e)?void 0:r(void 0,e,n):r(e,t,n)}function i(e,t){if(!Fe.isUndefined(t))return r(void 0,t)}function a(e,t){return Fe.isUndefined(t)?Fe.isUndefined(e)?void 0:r(void 0,e):r(void 0,t)}function l(n,o,i){return i in t?r(n,o):i in e?r(void 0,n):void 0}const s={url:i,method:i,data:i,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:l,headers:(e,t)=>o(jt(e),jt(t),!0)};return Fe.forEach(Object.keys(e).concat(Object.keys(t)),(function(r){const i=s[r]||o,a=i(e[r],t[r],r);Fe.isUndefined(a)&&i!==l||(n[r]=a)})),n}const It="1.3.2",Mt={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{Mt[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));const Ft={};Mt.transitional=function(e,t,n){return(r,o,i)=>{if(!1===e)throw new He(function(e,t){return"[Axios v"+It+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}(o," has been removed"+(t?" in "+t:"")),He.ERR_DEPRECATED);return t&&!Ft[o]&&(Ft[o]=!0),!e||e(r,o,i)}};const Dt={assertOptions:function(e,t,n){if("object"!=typeof e)throw new He("options must be an object",He.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let o=r.length;for(;o-- >0;){const i=r[o],a=t[i];if(a){const t=e[i],n=void 0===t||a(t,i,e);if(!0!==n)throw new He("option "+i+" must be "+n,He.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new He("Unknown option "+i,He.ERR_BAD_OPTION)}},validators:Mt},Ut=Dt.validators;class $t{constructor(e){this.defaults=e,this.interceptors={request:new rt,response:new rt}}request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=Bt(this.defaults,t);const{transitional:n,paramsSerializer:r,headers:o}=t;let i;void 0!==n&&Dt.assertOptions(n,{silentJSONParsing:Ut.transitional(Ut.boolean),forcedJSONParsing:Ut.transitional(Ut.boolean),clarifyTimeoutError:Ut.transitional(Ut.boolean)},!1),void 0!==r&&Dt.assertOptions(r,{encode:Ut.function,serialize:Ut.function},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase(),i=o&&Fe.merge(o.common,o[t.method]),i&&Fe.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete o[e]})),t.headers=wt.concat(i,o);const a=[];let l=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(l=l&&e.synchronous,a.unshift(e.fulfilled,e.rejected))}));const s=[];let c;this.interceptors.response.forEach((function(e){s.push(e.fulfilled,e.rejected)}));let u,f=0;if(!l){const e=[At.bind(this),void 0];for(e.unshift.apply(e,a),e.push.apply(e,s),u=e.length,c=Promise.resolve(t);f{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null})),this.promise.then=e=>{let t;const r=new Promise((e=>{n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e((function(e,r,o){n.reason||(n.reason=new xt(e,r,o),t(n.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;const t=new zt((function(t){e=t}));return{token:t,cancel:e}}}const qt=zt;const Wt={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Wt).forEach((([e,t])=>{Wt[t]=e}));const Kt=Wt;const Gt=function e(t){const n=new Ht(t),r=ae(Ht.prototype.request,n);return Fe.extend(r,Ht.prototype,n,{allOwnKeys:!0}),Fe.extend(r,n,null,{allOwnKeys:!0}),r.create=function(n){return e(Bt(t,n))},r}(pt);Gt.Axios=Ht,Gt.CanceledError=xt,Gt.CancelToken=qt,Gt.isCancel=_t,Gt.VERSION=It,Gt.toFormData=Ye,Gt.AxiosError=He,Gt.Cancel=Gt.CanceledError,Gt.all=function(e){return Promise.all(e)},Gt.spread=function(e){return function(t){return e.apply(null,t)}},Gt.isAxiosError=function(e){return Fe.isObject(e)&&!0===e.isAxiosError},Gt.mergeConfig=Bt,Gt.AxiosHeaders=wt,Gt.formToJSON=e=>ut(Fe.isHTMLForm(e)?new FormData(e):e),Gt.HttpStatusCode=Kt,Gt.default=Gt;const Zt=Gt,Yt="undefined"!=typeof window;function Jt(e){return e.__esModule||"Module"===e[Symbol.toStringTag]}const Qt=Object.assign;function Xt(e,t){const n={};for(const r in t){const o=t[r];n[r]=tn(o)?o.map(e):e(o)}return n}const en=()=>{},tn=Array.isArray;const nn=/\/$/,rn=e=>e.replace(nn,"");function on(e,t,n="/"){let r,o={},i="",a="";const l=t.indexOf("#");let s=t.indexOf("?");return l=0&&(s=-1),s>-1&&(r=t.slice(0,s),i=t.slice(s+1,l>-1?l:t.length),o=e(i)),l>-1&&(r=r||t.slice(0,l),a=t.slice(l,t.length)),r=function(e,t){if(e.startsWith("/"))return e;0;if(!e)return t;const n=t.split("/"),r=e.split("/");let o,i,a=n.length-1;for(o=0;o1&&a--}return n.slice(0,a).join("/")+"/"+r.slice(o-(o===r.length?1:0)).join("/")}(null!=r?r:t,n),{fullPath:r+(i&&"?")+i+a,path:r,query:o,hash:a}}function an(e,t){return t&&e.toLowerCase().startsWith(t.toLowerCase())?e.slice(t.length)||"/":e}function ln(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function sn(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!cn(e[n],t[n]))return!1;return!0}function cn(e,t){return tn(e)?un(e,t):tn(t)?un(t,e):e===t}function un(e,t){return tn(t)?e.length===t.length&&e.every(((e,n)=>e===t[n])):1===e.length&&e[0]===t}var fn,dn;!function(e){e.pop="pop",e.push="push"}(fn||(fn={})),function(e){e.back="back",e.forward="forward",e.unknown=""}(dn||(dn={}));function pn(e){if(!e)if(Yt){const t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return"/"!==e[0]&&"#"!==e[0]&&(e="/"+e),rn(e)}const hn=/^[^#]+#/;function vn(e,t){return e.replace(hn,"#")+t}const mn=()=>({left:window.pageXOffset,top:window.pageYOffset});function gn(e){let t;if("el"in e){const n=e.el,r="string"==typeof n&&n.startsWith("#");0;const o="string"==typeof n?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=function(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(null!=t.left?t.left:window.pageXOffset,null!=t.top?t.top:window.pageYOffset)}function yn(e,t){return(history.state?history.state.position-t:-1)+e}const bn=new Map;let wn=()=>location.protocol+"//"+location.host;function Cn(e,t){const{pathname:n,search:r,hash:o}=t,i=e.indexOf("#");if(i>-1){let t=o.includes(e.slice(i))?e.slice(i).length:1,n=o.slice(t);return"/"!==n[0]&&(n="/"+n),an(n,"")}return an(n,e)+r+o}function _n(e,t,n,r=!1,o=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:o?mn():null}}function En(e){const t=function(e){const{history:t,location:n}=window,r={value:Cn(e,n)},o={value:t.state};function i(r,i,a){const l=e.indexOf("#"),s=l>-1?(n.host&&document.querySelector("base")?e:e.slice(l))+r:wn()+e+r;try{t[a?"replaceState":"pushState"](i,"",s),o.value=i}catch(e){n[a?"replace":"assign"](s)}}return o.value||i(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0),{location:r,state:o,push:function(e,n){const a=Qt({},o.value,t.state,{forward:e,scroll:mn()});i(a.current,a,!0),i(e,Qt({},_n(r.value,e,null),{position:a.position+1},n),!1),r.value=e},replace:function(e,n){i(e,Qt({},t.state,_n(o.value.back,e,o.value.forward,!0),n,{position:o.value.position}),!0),r.value=e}}}(e=pn(e)),n=function(e,t,n,r){let o=[],i=[],a=null;const l=({state:i})=>{const l=Cn(e,location),s=n.value,c=t.value;let u=0;if(i){if(n.value=l,t.value=i,a&&a===s)return void(a=null);u=c?i.position-c.position:0}else r(l);o.forEach((e=>{e(n.value,s,{delta:u,type:fn.pop,direction:u?u>0?dn.forward:dn.back:dn.unknown})}))};function s(){const{history:e}=window;e.state&&e.replaceState(Qt({},e.state,{scroll:mn()}),"")}return window.addEventListener("popstate",l),window.addEventListener("beforeunload",s),{pauseListeners:function(){a=n.value},listen:function(e){o.push(e);const t=()=>{const t=o.indexOf(e);t>-1&&o.splice(t,1)};return i.push(t),t},destroy:function(){for(const e of i)e();i=[],window.removeEventListener("popstate",l),window.removeEventListener("beforeunload",s)}}}(e,t.state,t.location,t.replace);const r=Qt({location:"",base:e,go:function(e,t=!0){t||n.pauseListeners(),history.go(e)},createHref:vn.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}function xn(e){return"string"==typeof e||"symbol"==typeof e}const kn={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},Sn=Symbol("");var On;!function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"}(On||(On={}));function Nn(e,t){return Qt(new Error,{type:e,[Sn]:!0},t)}function Pn(e,t){return e instanceof Error&&Sn in e&&(null==t||!!(e.type&t))}const Tn="[^/]+?",Vn={sensitive:!1,strict:!1,start:!0,end:!0},Rn=/[.+*?^${}()[\]/\\]/g;function Ln(e,t){let n=0;for(;nt.length?1===t.length&&80===t[0]?1:-1:0}function An(e,t){let n=0;const r=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const Bn={type:0,value:""},In=/[a-zA-Z0-9_]/;function Mn(e,t,n){const r=function(e,t){const n=Qt({},Vn,t),r=[];let o=n.start?"^":"";const i=[];for(const t of e){const e=t.length?[]:[90];n.strict&&!t.length&&(o+="/");for(let r=0;r1&&("*"===l||"+"===l)&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),i.push({type:1,value:c,regexp:u,repeatable:"*"===l||"+"===l,optional:"*"===l||"?"===l})):t("Invalid state to consume buffer"),c="")}function d(){c+=l}for(;s{i(d)}:en}function i(e){if(xn(e)){const t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(i),t.alias.forEach(i))}else{const t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(i),e.alias.forEach(i))}}function a(e){let t=0;for(;t=0&&(e.record.path!==n[t].record.path||!qn(e,n[t]));)t++;n.splice(t,0,e),e.record.name&&!$n(e)&&r.set(e.record.name,e)}return t=zn({strict:!1,end:!0,sensitive:!1},t),e.forEach((e=>o(e))),{addRoute:o,resolve:function(e,t){let o,i,a,l={};if("name"in e&&e.name){if(o=r.get(e.name),!o)throw Nn(1,{location:e});0,a=o.record.name,l=Qt(Dn(t.params,o.keys.filter((e=>!e.optional)).map((e=>e.name))),e.params&&Dn(e.params,o.keys.map((e=>e.name)))),i=o.stringify(l)}else if("path"in e)i=e.path,o=n.find((e=>e.re.test(i))),o&&(l=o.parse(i),a=o.record.name);else{if(o=t.name?r.get(t.name):n.find((e=>e.re.test(t.path))),!o)throw Nn(1,{location:e,currentLocation:t});a=o.record.name,l=Qt({},t.params,e.params),i=o.stringify(l)}const s=[];let c=o;for(;c;)s.unshift(c.record),c=c.parent;return{name:a,path:i,params:l,matched:s,meta:Hn(s)}},removeRoute:i,getRoutes:function(){return n},getRecordMatcher:function(e){return r.get(e)}}}function Dn(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function Un(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]="boolean"==typeof n?n:n[r];return t}function $n(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Hn(e){return e.reduce(((e,t)=>Qt(e,t.meta)),{})}function zn(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function qn(e,t){return t.children.some((t=>t===e||qn(e,t)))}const Wn=/#/g,Kn=/&/g,Gn=/\//g,Zn=/=/g,Yn=/\?/g,Jn=/\+/g,Qn=/%5B/g,Xn=/%5D/g,er=/%5E/g,tr=/%60/g,nr=/%7B/g,rr=/%7C/g,or=/%7D/g,ir=/%20/g;function ar(e){return encodeURI(""+e).replace(rr,"|").replace(Qn,"[").replace(Xn,"]")}function lr(e){return ar(e).replace(Jn,"%2B").replace(ir,"+").replace(Wn,"%23").replace(Kn,"%26").replace(tr,"`").replace(nr,"{").replace(or,"}").replace(er,"^")}function sr(e){return null==e?"":function(e){return ar(e).replace(Wn,"%23").replace(Yn,"%3F")}(e).replace(Gn,"%2F")}function cr(e){try{return decodeURIComponent(""+e)}catch(e){}return""+e}function ur(e){const t={};if(""===e||"?"===e)return t;const n=("?"===e[0]?e.slice(1):e).split("&");for(let e=0;ee&&lr(e))):[r&&lr(r)];o.forEach((e=>{void 0!==e&&(t+=(t.length?"&":"")+n,null!=e&&(t+="="+e))}))}return t}function dr(e){const t={};for(const n in e){const r=e[n];void 0!==r&&(t[n]=tn(r)?r.map((e=>null==e?null:""+e)):null==r?r:""+r)}return t}const pr=Symbol(""),hr=Symbol(""),vr=Symbol(""),mr=Symbol(""),gr=Symbol("");function yr(){let e=[];return{add:function(t){return e.push(t),()=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)}},list:()=>e,reset:function(){e=[]}}}function br(e,t,n,r,o){const i=r&&(r.enterCallbacks[o]=r.enterCallbacks[o]||[]);return()=>new Promise(((a,l)=>{const s=e=>{var s;!1===e?l(Nn(4,{from:n,to:t})):e instanceof Error?l(e):"string"==typeof(s=e)||s&&"object"==typeof s?l(Nn(2,{from:t,to:e})):(i&&r.enterCallbacks[o]===i&&"function"==typeof e&&i.push(e),a())},c=e.call(r&&r.instances[o],t,n,s);let u=Promise.resolve(c);e.length<3&&(u=u.then(s)),u.catch((e=>l(e)))}))}function wr(e,t,n,r){const o=[];for(const a of e){0;for(const e in a.components){let l=a.components[e];if("beforeRouteEnter"===t||a.instances[e])if("object"==typeof(i=l)||"displayName"in i||"props"in i||"__vccOpts"in i){const i=(l.__vccOpts||l)[t];i&&o.push(br(i,n,r,a,e))}else{let i=l();0,o.push((()=>i.then((o=>{if(!o)return Promise.reject(new Error(`Couldn't resolve component "${e}" at "${a.path}"`));const i=Jt(o)?o.default:o;a.components[e]=i;const l=(i.__vccOpts||i)[t];return l&&br(l,n,r,a,e)()}))))}}}var i;return o}function Cr(e){const t=(0,r.inject)(vr),n=(0,r.inject)(mr),o=(0,r.computed)((()=>t.resolve((0,r.unref)(e.to)))),i=(0,r.computed)((()=>{const{matched:e}=o.value,{length:t}=e,r=e[t-1],i=n.matched;if(!r||!i.length)return-1;const a=i.findIndex(ln.bind(null,r));if(a>-1)return a;const l=Er(e[t-2]);return t>1&&Er(r)===l&&i[i.length-1].path!==l?i.findIndex(ln.bind(null,e[t-2])):a})),a=(0,r.computed)((()=>i.value>-1&&function(e,t){for(const n in t){const r=t[n],o=e[n];if("string"==typeof r){if(r!==o)return!1}else if(!tn(o)||o.length!==r.length||r.some(((e,t)=>e!==o[t])))return!1}return!0}(n.params,o.value.params))),l=(0,r.computed)((()=>i.value>-1&&i.value===n.matched.length-1&&sn(n.params,o.value.params)));return{route:o,href:(0,r.computed)((()=>o.value.href)),isActive:a,isExactActive:l,navigate:function(n={}){return function(e){if(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)return;if(e.defaultPrevented)return;if(void 0!==e.button&&0!==e.button)return;if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}e.preventDefault&&e.preventDefault();return!0}(n)?t[(0,r.unref)(e.replace)?"replace":"push"]((0,r.unref)(e.to)).catch(en):Promise.resolve()}}}const _r=(0,r.defineComponent)({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:Cr,setup(e,{slots:t}){const n=(0,r.reactive)(Cr(e)),{options:o}=(0,r.inject)(vr),i=(0,r.computed)((()=>({[xr(e.activeClass,o.linkActiveClass,"router-link-active")]:n.isActive,[xr(e.exactActiveClass,o.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive})));return()=>{const o=t.default&&t.default(n);return e.custom?o:(0,r.h)("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:i.value},o)}}});function Er(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const xr=(e,t,n)=>null!=e?e:null!=t?t:n;function kr(e,t){if(!e)return null;const n=e(t);return 1===n.length?n[0]:n}const Sr=(0,r.defineComponent)({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const o=(0,r.inject)(gr),i=(0,r.computed)((()=>e.route||o.value)),a=(0,r.inject)(hr,0),l=(0,r.computed)((()=>{let e=(0,r.unref)(a);const{matched:t}=i.value;let n;for(;(n=t[e])&&!n.components;)e++;return e})),s=(0,r.computed)((()=>i.value.matched[l.value]));(0,r.provide)(hr,(0,r.computed)((()=>l.value+1))),(0,r.provide)(pr,s),(0,r.provide)(gr,i);const c=(0,r.ref)();return(0,r.watch)((()=>[c.value,s.value,e.name]),(([e,t,n],[r,o,i])=>{t&&(t.instances[n]=e,o&&o!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=o.leaveGuards),t.updateGuards.size||(t.updateGuards=o.updateGuards))),!e||!t||o&&ln(t,o)&&r||(t.enterCallbacks[n]||[]).forEach((t=>t(e)))}),{flush:"post"}),()=>{const o=i.value,a=e.name,l=s.value,u=l&&l.components[a];if(!u)return kr(n.default,{Component:u,route:o});const f=l.props[a],d=f?!0===f?o.params:"function"==typeof f?f(o):f:null,p=(0,r.h)(u,Qt({},d,t,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(l.instances[a]=null)},ref:c}));return kr(n.default,{Component:p,route:o})||p}}});function Or(e){return e.reduce(((e,t)=>e.then((()=>t()))),Promise.resolve())}function Nr(){return(0,r.inject)(vr)}function Pr(){return(0,r.inject)(mr)}function Tr(e,t,...n){if(e in t){let r=t[e];return"function"==typeof r?r(...n):r}let r=new Error(`Tried to handle "${e}" but there is no handler defined. Only defined handlers are: ${Object.keys(t).map((e=>`"${e}"`)).join(", ")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(r,Tr),r}var Vr,Rr=((Vr=Rr||{})[Vr.None=0]="None",Vr[Vr.RenderStrategy=1]="RenderStrategy",Vr[Vr.Static=2]="Static",Vr),Lr=(e=>(e[e.Unmount=0]="Unmount",e[e.Hidden=1]="Hidden",e))(Lr||{});function Ar({visible:e=!0,features:t=0,ourProps:n,theirProps:r,...o}){var i;let a=Ir(r,n),l=Object.assign(o,{props:a});if(e||2&t&&a.static)return jr(l);if(1&t){return Tr(null==(i=a.unmount)||i?0:1,{0:()=>null,1:()=>jr({...o,props:{...a,hidden:!0,style:{display:"none"}}})})}return jr(l)}function jr({props:e,attrs:t,slots:n,slot:o,name:i}){var a,l;let{as:s,...c}=Mr(e,["unmount","static"]),u=null==(a=n.default)?void 0:a.call(n,o),f={};if(o){let e=!1,t=[];for(let[n,r]of Object.entries(o))"boolean"==typeof r&&(e=!0),!0===r&&t.push(n);e&&(f["data-headlessui-state"]=t.join(" "))}if("template"===s){if(u=Br(null!=u?u:[]),Object.keys(c).length>0||Object.keys(t).length>0){let[e,...n]=null!=u?u:[];if(!function(e){return null!=e&&("string"==typeof e.type||"object"==typeof e.type||"function"==typeof e.type)}(e)||n.length>0)throw new Error(['Passing props on "template"!',"",`The current component <${i} /> is rendering a "template".`,"However we need to passthrough the following props:",Object.keys(c).concat(Object.keys(t)).map((e=>e.trim())).filter(((e,t,n)=>n.indexOf(e)===t)).sort(((e,t)=>e.localeCompare(t))).map((e=>` - ${e}`)).join("\n"),"","You can apply a few solutions:",['Add an `as="..."` prop, to ensure that we render an actual element instead of a "template".',"Render a single element as the child so that we can forward the props onto that element."].map((e=>` - ${e}`)).join("\n")].join("\n"));let o=Ir(null!=(l=e.props)?l:{},c),a=(0,r.cloneVNode)(e,o);for(let e in o)e.startsWith("on")&&(a.props||(a.props={}),a.props[e]=o[e]);return a}return Array.isArray(u)&&1===u.length?u[0]:u}return(0,r.h)(s,Object.assign({},c,f),{default:()=>u})}function Br(e){return e.flatMap((e=>e.type===r.Fragment?Br(e.children):[e]))}function Ir(...e){if(0===e.length)return{};if(1===e.length)return e[0];let t={},n={};for(let r of e)for(let e in r)e.startsWith("on")&&"function"==typeof r[e]?(null!=n[e]||(n[e]=[]),n[e].push(r[e])):t[e]=r[e];if(t.disabled||t["aria-disabled"])return Object.assign(t,Object.fromEntries(Object.keys(n).map((e=>[e,void 0]))));for(let e in n)Object.assign(t,{[e](t,...r){let o=n[e];for(let e of o){if(t instanceof Event&&t.defaultPrevented)return;e(t,...r)}}});return t}function Mr(e,t=[]){let n=Object.assign({},e);for(let e of t)e in n&&delete n[e];return n}let Fr=0;function Dr(){return++Fr}var Ur=(e=>(e.Space=" ",e.Enter="Enter",e.Escape="Escape",e.Backspace="Backspace",e.Delete="Delete",e.ArrowLeft="ArrowLeft",e.ArrowUp="ArrowUp",e.ArrowRight="ArrowRight",e.ArrowDown="ArrowDown",e.Home="Home",e.End="End",e.PageUp="PageUp",e.PageDown="PageDown",e.Tab="Tab",e))(Ur||{});var $r=(e=>(e[e.First=0]="First",e[e.Previous=1]="Previous",e[e.Next=2]="Next",e[e.Last=3]="Last",e[e.Specific=4]="Specific",e[e.Nothing=5]="Nothing",e))($r||{});function Hr(e,t){let n=t.resolveItems();if(n.length<=0)return null;let r=t.resolveActiveIndex(),o=null!=r?r:-1,i=(()=>{switch(e.focus){case 0:return n.findIndex((e=>!t.resolveDisabled(e)));case 1:{let e=n.slice().reverse().findIndex(((e,n,r)=>!(-1!==o&&r.length-n-1>=o)&&!t.resolveDisabled(e)));return-1===e?e:n.length-1-e}case 2:return n.findIndex(((e,n)=>!(n<=o)&&!t.resolveDisabled(e)));case 3:{let e=n.slice().reverse().findIndex((e=>!t.resolveDisabled(e)));return-1===e?e:n.length-1-e}case 4:return n.findIndex((n=>t.resolveId(n)===e.id));case 5:return null;default:!function(e){throw new Error("Unexpected object: "+e)}(e)}})();return-1===i?r:i}function zr(e){var t;return null==e||null==e.value?null:null!=(t=e.value.$el)?t:e.value}let qr=new class{constructor(){this.current=this.detect(),this.currentId=0}set(e){this.current!==e&&(this.currentId=0,this.current=e)}reset(){this.set(this.detect())}nextId(){return++this.currentId}get isServer(){return"server"===this.current}get isClient(){return"client"===this.current}detect(){return"undefined"==typeof window||"undefined"==typeof document?"server":"client"}};function Wr(e){if(qr.isServer)return null;if(e instanceof Node)return e.ownerDocument;if(null!=e&&e.hasOwnProperty("value")){let t=zr(e);if(t)return t.ownerDocument}return document}let Kr=Symbol("Context");var Gr=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(Gr||{});function Zr(){return(0,r.inject)(Kr,null)}function Yr(e){(0,r.provide)(Kr,e)}function Jr(e,t){if(e)return e;let n=null!=t?t:"button";return"string"==typeof n&&"button"===n.toLowerCase()?"button":void 0}function Qr(e,t){let n=(0,r.ref)(Jr(e.value.type,e.value.as));return(0,r.onMounted)((()=>{n.value=Jr(e.value.type,e.value.as)})),(0,r.watchEffect)((()=>{var e;n.value||!zr(t)||zr(t)instanceof HTMLButtonElement&&(null==(e=zr(t))||!e.hasAttribute("type"))&&(n.value="button")})),n}let Xr=["[contentEditable=true]","[tabindex]","a[href]","area[href]","button:not([disabled])","iframe","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].map((e=>`${e}:not([tabindex='-1'])`)).join(",");var eo=(e=>(e[e.First=1]="First",e[e.Previous=2]="Previous",e[e.Next=4]="Next",e[e.Last=8]="Last",e[e.WrapAround=16]="WrapAround",e[e.NoScroll=32]="NoScroll",e))(eo||{}),to=(e=>(e[e.Error=0]="Error",e[e.Overflow=1]="Overflow",e[e.Success=2]="Success",e[e.Underflow=3]="Underflow",e))(to||{}),no=(e=>(e[e.Previous=-1]="Previous",e[e.Next=1]="Next",e))(no||{});function ro(e=document.body){return null==e?[]:Array.from(e.querySelectorAll(Xr)).sort(((e,t)=>Math.sign((e.tabIndex||Number.MAX_SAFE_INTEGER)-(t.tabIndex||Number.MAX_SAFE_INTEGER))))}var oo=(e=>(e[e.Strict=0]="Strict",e[e.Loose=1]="Loose",e))(oo||{});function io(e,t=0){var n;return e!==(null==(n=Wr(e))?void 0:n.body)&&Tr(t,{0:()=>e.matches(Xr),1(){let t=e;for(;null!==t;){if(t.matches(Xr))return!0;t=t.parentElement}return!1}})}function ao(e){let t=Wr(e);(0,r.nextTick)((()=>{t&&!io(t.activeElement,0)&&lo(e)}))}function lo(e){null==e||e.focus({preventScroll:!0})}let so=["textarea","input"].join(",");function co(e,t=(e=>e)){return e.slice().sort(((e,n)=>{let r=t(e),o=t(n);if(null===r||null===o)return 0;let i=r.compareDocumentPosition(o);return i&Node.DOCUMENT_POSITION_FOLLOWING?-1:i&Node.DOCUMENT_POSITION_PRECEDING?1:0}))}function uo(e,t){return fo(ro(),t,{relativeTo:e})}function fo(e,t,{sorted:n=!0,relativeTo:r=null,skipElements:o=[]}={}){var i;let a=null!=(i=Array.isArray(e)?e.length>0?e[0].ownerDocument:document:null==e?void 0:e.ownerDocument)?i:document,l=Array.isArray(e)?n?co(e):e:ro(e);o.length>0&&l.length>1&&(l=l.filter((e=>!o.includes(e)))),r=null!=r?r:a.activeElement;let s,c=(()=>{if(5&t)return 1;if(10&t)return-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),u=(()=>{if(1&t)return 0;if(2&t)return Math.max(0,l.indexOf(r))-1;if(4&t)return Math.max(0,l.indexOf(r))+1;if(8&t)return l.length-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),f=32&t?{preventScroll:!0}:{},d=0,p=l.length;do{if(d>=p||d+p<=0)return 0;let e=u+d;if(16&t)e=(e+p)%p;else{if(e<0)return 3;if(e>=p)return 1}s=l[e],null==s||s.focus(f),d+=c}while(s!==a.activeElement);return 6&t&&function(e){var t,n;return null!=(n=null==(t=null==e?void 0:e.matches)?void 0:t.call(e,so))&&n}(s)&&s.select(),s.hasAttribute("tabindex")||s.setAttribute("tabindex","0"),2}function po(e,t,n){qr.isServer||(0,r.watchEffect)((r=>{document.addEventListener(e,t,n),r((()=>document.removeEventListener(e,t,n)))}))}function ho(e,t,n=(0,r.computed)((()=>!0))){function o(r,o){if(!n.value||r.defaultPrevented)return;let i=o(r);if(null===i||!i.getRootNode().contains(i))return;let a=function e(t){return"function"==typeof t?e(t()):Array.isArray(t)||t instanceof Set?t:[t]}(e);for(let e of a){if(null===e)continue;let t=e instanceof HTMLElement?e:zr(e);if(null!=t&&t.contains(i)||r.composed&&r.composedPath().includes(t))return}return!io(i,oo.Loose)&&-1!==i.tabIndex&&r.preventDefault(),t(r,i)}let i=(0,r.ref)(null);po("mousedown",(e=>{var t,r;n.value&&(i.value=(null==(r=null==(t=e.composedPath)?void 0:t.call(e))?void 0:r[0])||e.target)}),!0),po("click",(e=>{!i.value||(o(e,(()=>i.value)),i.value=null)}),!0),po("blur",(e=>o(e,(()=>window.document.activeElement instanceof HTMLIFrameElement?window.document.activeElement:null))),!0)}function vo(e){return[e.screenX,e.screenY]}function mo(){let e=(0,r.ref)([-1,-1]);return{wasMoved(t){let n=vo(t);return(e.value[0]!==n[0]||e.value[1]!==n[1])&&(e.value=n,!0)},update(t){e.value=vo(t)}}}var go=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(go||{}),yo=(e=>(e[e.Pointer=0]="Pointer",e[e.Other=1]="Other",e))(yo||{});let bo=Symbol("MenuContext");function wo(e){let t=(0,r.inject)(bo,null);if(null===t){let t=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,wo),t}return t}let Co=(0,r.defineComponent)({name:"Menu",props:{as:{type:[Object,String],default:"template"}},setup(e,{slots:t,attrs:n}){let o=(0,r.ref)(1),i=(0,r.ref)(null),a=(0,r.ref)(null),l=(0,r.ref)([]),s=(0,r.ref)(""),c=(0,r.ref)(null),u=(0,r.ref)(1);function f(e=(e=>e)){let t=null!==c.value?l.value[c.value]:null,n=co(e(l.value.slice()),(e=>zr(e.dataRef.domRef))),r=t?n.indexOf(t):null;return-1===r&&(r=null),{items:n,activeItemIndex:r}}let d={menuState:o,buttonRef:i,itemsRef:a,items:l,searchQuery:s,activeItemIndex:c,activationTrigger:u,closeMenu:()=>{o.value=1,c.value=null},openMenu:()=>o.value=0,goToItem(e,t,n){let r=f(),o=Hr(e===$r.Specific?{focus:$r.Specific,id:t}:{focus:e},{resolveItems:()=>r.items,resolveActiveIndex:()=>r.activeItemIndex,resolveId:e=>e.id,resolveDisabled:e=>e.dataRef.disabled});s.value="",c.value=o,u.value=null!=n?n:1,l.value=r.items},search(e){let t=""!==s.value?0:1;s.value+=e.toLowerCase();let n=(null!==c.value?l.value.slice(c.value+t).concat(l.value.slice(0,c.value+t)):l.value).find((e=>e.dataRef.textValue.startsWith(s.value)&&!e.dataRef.disabled)),r=n?l.value.indexOf(n):-1;-1===r||r===c.value||(c.value=r,u.value=1)},clearSearch(){s.value=""},registerItem(e,t){let n=f((n=>[...n,{id:e,dataRef:t}]));l.value=n.items,c.value=n.activeItemIndex,u.value=1},unregisterItem(e){let t=f((t=>{let n=t.findIndex((t=>t.id===e));return-1!==n&&t.splice(n,1),t}));l.value=t.items,c.value=t.activeItemIndex,u.value=1}};return ho([i,a],((e,t)=>{var n;d.closeMenu(),io(t,oo.Loose)||(e.preventDefault(),null==(n=zr(i))||n.focus())}),(0,r.computed)((()=>0===o.value))),(0,r.provide)(bo,d),Yr((0,r.computed)((()=>Tr(o.value,{0:Gr.Open,1:Gr.Closed})))),()=>{let r={open:0===o.value,close:d.closeMenu};return Ar({ourProps:{},theirProps:e,slot:r,slots:t,attrs:n,name:"Menu"})}}}),_o=(0,r.defineComponent)({name:"MenuButton",props:{disabled:{type:Boolean,default:!1},as:{type:[Object,String],default:"button"},id:{type:String,default:()=>`headlessui-menu-button-${Dr()}`}},setup(e,{attrs:t,slots:n,expose:o}){let i=wo("MenuButton");function a(e){switch(e.key){case Ur.Space:case Ur.Enter:case Ur.ArrowDown:e.preventDefault(),e.stopPropagation(),i.openMenu(),(0,r.nextTick)((()=>{var e;null==(e=zr(i.itemsRef))||e.focus({preventScroll:!0}),i.goToItem($r.First)}));break;case Ur.ArrowUp:e.preventDefault(),e.stopPropagation(),i.openMenu(),(0,r.nextTick)((()=>{var e;null==(e=zr(i.itemsRef))||e.focus({preventScroll:!0}),i.goToItem($r.Last)}))}}function l(e){if(e.key===Ur.Space)e.preventDefault()}function s(t){e.disabled||(0===i.menuState.value?(i.closeMenu(),(0,r.nextTick)((()=>{var e;return null==(e=zr(i.buttonRef))?void 0:e.focus({preventScroll:!0})}))):(t.preventDefault(),i.openMenu(),function(e){requestAnimationFrame((()=>requestAnimationFrame(e)))}((()=>{var e;return null==(e=zr(i.itemsRef))?void 0:e.focus({preventScroll:!0})}))))}o({el:i.buttonRef,$el:i.buttonRef});let c=Qr((0,r.computed)((()=>({as:e.as,type:t.type}))),i.buttonRef);return()=>{var r;let o={open:0===i.menuState.value},{id:u,...f}=e;return Ar({ourProps:{ref:i.buttonRef,id:u,type:c.value,"aria-haspopup":"menu","aria-controls":null==(r=zr(i.itemsRef))?void 0:r.id,"aria-expanded":e.disabled?void 0:0===i.menuState.value,onKeydown:a,onKeyup:l,onClick:s},theirProps:f,slot:o,attrs:t,slots:n,name:"MenuButton"})}}}),Eo=(0,r.defineComponent)({name:"MenuItems",props:{as:{type:[Object,String],default:"div"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},id:{type:String,default:()=>`headlessui-menu-items-${Dr()}`}},setup(e,{attrs:t,slots:n,expose:o}){let i=wo("MenuItems"),a=(0,r.ref)(null);function l(e){var t;switch(a.value&&clearTimeout(a.value),e.key){case Ur.Space:if(""!==i.searchQuery.value)return e.preventDefault(),e.stopPropagation(),i.search(e.key);case Ur.Enter:if(e.preventDefault(),e.stopPropagation(),null!==i.activeItemIndex.value){null==(t=zr(i.items.value[i.activeItemIndex.value].dataRef.domRef))||t.click()}i.closeMenu(),ao(zr(i.buttonRef));break;case Ur.ArrowDown:return e.preventDefault(),e.stopPropagation(),i.goToItem($r.Next);case Ur.ArrowUp:return e.preventDefault(),e.stopPropagation(),i.goToItem($r.Previous);case Ur.Home:case Ur.PageUp:return e.preventDefault(),e.stopPropagation(),i.goToItem($r.First);case Ur.End:case Ur.PageDown:return e.preventDefault(),e.stopPropagation(),i.goToItem($r.Last);case Ur.Escape:e.preventDefault(),e.stopPropagation(),i.closeMenu(),(0,r.nextTick)((()=>{var e;return null==(e=zr(i.buttonRef))?void 0:e.focus({preventScroll:!0})}));break;case Ur.Tab:e.preventDefault(),e.stopPropagation(),i.closeMenu(),(0,r.nextTick)((()=>uo(zr(i.buttonRef),e.shiftKey?eo.Previous:eo.Next)));break;default:1===e.key.length&&(i.search(e.key),a.value=setTimeout((()=>i.clearSearch()),350))}}function s(e){if(e.key===Ur.Space)e.preventDefault()}o({el:i.itemsRef,$el:i.itemsRef}),function({container:e,accept:t,walk:n,enabled:o}){(0,r.watchEffect)((()=>{let r=e.value;if(!r||void 0!==o&&!o.value)return;let i=Wr(e);if(!i)return;let a=Object.assign((e=>t(e)),{acceptNode:t}),l=i.createTreeWalker(r,NodeFilter.SHOW_ELEMENT,a,!1);for(;l.nextNode();)n(l.currentNode)}))}({container:(0,r.computed)((()=>zr(i.itemsRef))),enabled:(0,r.computed)((()=>0===i.menuState.value)),accept:e=>"menuitem"===e.getAttribute("role")?NodeFilter.FILTER_REJECT:e.hasAttribute("role")?NodeFilter.FILTER_SKIP:NodeFilter.FILTER_ACCEPT,walk(e){e.setAttribute("role","none")}});let c=Zr(),u=(0,r.computed)((()=>null!==c?c.value===Gr.Open:0===i.menuState.value));return()=>{var r,o;let a={open:0===i.menuState.value},{id:c,...f}=e;return Ar({ourProps:{"aria-activedescendant":null===i.activeItemIndex.value||null==(r=i.items.value[i.activeItemIndex.value])?void 0:r.id,"aria-labelledby":null==(o=zr(i.buttonRef))?void 0:o.id,id:c,onKeydown:l,onKeyup:s,role:"menu",tabIndex:0,ref:i.itemsRef},theirProps:f,slot:a,attrs:t,slots:n,features:Rr.RenderStrategy|Rr.Static,visible:u.value,name:"MenuItems"})}}}),xo=(0,r.defineComponent)({name:"MenuItem",inheritAttrs:!1,props:{as:{type:[Object,String],default:"template"},disabled:{type:Boolean,default:!1},id:{type:String,default:()=>`headlessui-menu-item-${Dr()}`}},setup(e,{slots:t,attrs:n,expose:o}){let i=wo("MenuItem"),a=(0,r.ref)(null);o({el:a,$el:a});let l=(0,r.computed)((()=>null!==i.activeItemIndex.value&&i.items.value[i.activeItemIndex.value].id===e.id)),s=(0,r.computed)((()=>({disabled:e.disabled,textValue:"",domRef:a})));function c(t){if(e.disabled)return t.preventDefault();i.closeMenu(),ao(zr(i.buttonRef))}function u(){if(e.disabled)return i.goToItem($r.Nothing);i.goToItem($r.Specific,e.id)}(0,r.onMounted)((()=>{var e,t;let n=null==(t=null==(e=zr(a))?void 0:e.textContent)?void 0:t.toLowerCase().trim();void 0!==n&&(s.value.textValue=n)})),(0,r.onMounted)((()=>i.registerItem(e.id,s))),(0,r.onUnmounted)((()=>i.unregisterItem(e.id))),(0,r.watchEffect)((()=>{0===i.menuState.value&&(!l.value||0!==i.activationTrigger.value&&(0,r.nextTick)((()=>{var e,t;return null==(t=null==(e=zr(a))?void 0:e.scrollIntoView)?void 0:t.call(e,{block:"nearest"})})))}));let f=mo();function d(e){f.update(e)}function p(t){!f.wasMoved(t)||e.disabled||l.value||i.goToItem($r.Specific,e.id,0)}function h(t){!f.wasMoved(t)||e.disabled||!l.value||i.goToItem($r.Nothing)}return()=>{let{disabled:r}=e,o={active:l.value,disabled:r,close:i.closeMenu},{id:s,...f}=e;return Ar({ourProps:{id:s,ref:a,role:"menuitem",tabIndex:!0===r?void 0:-1,"aria-disabled":!0===r||void 0,disabled:void 0,onClick:c,onFocus:u,onPointerenter:d,onMouseenter:d,onPointermove:p,onMousemove:p,onPointerleave:h,onMouseleave:h},theirProps:{...n,...f},slot:o,attrs:n,slots:t,name:"MenuItem"})}}});var ko=n(505),So=n(10),Oo=n(706),No=n(558),Po=n(413),To=n(199),Vo=n(388),Ro=n(243),Lo=n(782),Ao=n(156),jo=n(488),Bo=ie({id:"hosts",state:function(){return{selectedHostIdentifier:null}},getters:{supportsHosts:function(){return LogViewer.supports_hosts},hosts:function(){return LogViewer.hosts||[]},hasRemoteHosts:function(){return this.hosts.some((function(e){return e.is_remote}))},selectedHost:function(){var e=this;return this.hosts.find((function(t){return t.identifier===e.selectedHostIdentifier}))},localHost:function(){return this.hosts.find((function(e){return!e.is_remote}))},hostQueryParam:function(){return this.selectedHost&&this.selectedHost.is_remote?this.selectedHost.identifier:void 0}},actions:{selectHost:function(e){var t;this.supportsHosts||(e=null),"string"==typeof e&&(e=this.hosts.find((function(t){return t.identifier===e}))),e||(e=this.hosts.find((function(e){return!e.is_remote}))),this.selectedHostIdentifier=(null===(t=e)||void 0===t?void 0:t.identifier)||null}}});var Io;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;const Mo="undefined"!=typeof window,Fo=(Object.prototype.toString,e=>"function"==typeof e),Do=e=>"string"==typeof e,Uo=()=>{};Mo&&(null==(Io=null==window?void 0:window.navigator)?void 0:Io.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function $o(e){return"function"==typeof e?e():(0,r.unref)(e)}function Ho(e,t){return function(...n){return new Promise(((r,o)=>{Promise.resolve(e((()=>t.apply(this,n)),{fn:t,thisArg:this,args:n})).then(r).catch(o)}))}}const zo=e=>e();function qo(e){return!!(0,r.getCurrentScope)()&&((0,r.onScopeDispose)(e),!0)}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var Wo=Object.getOwnPropertySymbols,Ko=Object.prototype.hasOwnProperty,Go=Object.prototype.propertyIsEnumerable,Zo=(e,t)=>{var n={};for(var r in e)Ko.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&Wo)for(var r of Wo(e))t.indexOf(r)<0&&Go.call(e,r)&&(n[r]=e[r]);return n};function Yo(e,t,n={}){const o=n,{eventFilter:i=zo}=o,a=Zo(o,["eventFilter"]);return(0,r.watch)(e,Ho(i,t),a)}Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var Jo=Object.defineProperty,Qo=Object.defineProperties,Xo=Object.getOwnPropertyDescriptors,ei=Object.getOwnPropertySymbols,ti=Object.prototype.hasOwnProperty,ni=Object.prototype.propertyIsEnumerable,ri=(e,t,n)=>t in e?Jo(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,oi=(e,t)=>{for(var n in t||(t={}))ti.call(t,n)&&ri(e,n,t[n]);if(ei)for(var n of ei(t))ni.call(t,n)&&ri(e,n,t[n]);return e},ii=(e,t)=>Qo(e,Xo(t)),ai=(e,t)=>{var n={};for(var r in e)ti.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&ei)for(var r of ei(e))t.indexOf(r)<0&&ni.call(e,r)&&(n[r]=e[r]);return n};function li(e,t,n={}){const o=n,{eventFilter:i}=o,a=ai(o,["eventFilter"]),{eventFilter:l,pause:s,resume:c,isActive:u}=function(e=zo){const t=(0,r.ref)(!0);return{isActive:(0,r.readonly)(t),pause:function(){t.value=!1},resume:function(){t.value=!0},eventFilter:(...n)=>{t.value&&e(...n)}}}(i);return{stop:Yo(e,t,ii(oi({},a),{eventFilter:l})),pause:s,resume:c,isActive:u}}Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;function si(e){var t;const n=$o(e);return null!=(t=null==n?void 0:n.$el)?t:n}const ci=Mo?window:void 0;Mo&&window.document,Mo&&window.navigator,Mo&&window.location;function ui(...e){let t,n,o,i;if(Do(e[0])||Array.isArray(e[0])?([n,o,i]=e,t=ci):[t,n,o,i]=e,!t)return Uo;Array.isArray(n)||(n=[n]),Array.isArray(o)||(o=[o]);const a=[],l=()=>{a.forEach((e=>e())),a.length=0},s=(0,r.watch)((()=>si(t)),(e=>{l(),e&&a.push(...n.flatMap((t=>o.map((n=>((e,t,n)=>(e.addEventListener(t,n,i),()=>e.removeEventListener(t,n,i)))(e,t,n))))))}),{immediate:!0,flush:"post"}),c=()=>{s(),l()};return qo(c),c}Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;const fi="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},di="__vueuse_ssr_handlers__";fi[di]=fi[di]||{};const pi=fi[di];function hi(e,t){return pi[e]||t}function vi(e){return null==e?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":"boolean"==typeof e?"boolean":"string"==typeof e?"string":"object"==typeof e?"object":Number.isNaN(e)?"any":"number"}var mi=Object.defineProperty,gi=Object.getOwnPropertySymbols,yi=Object.prototype.hasOwnProperty,bi=Object.prototype.propertyIsEnumerable,wi=(e,t,n)=>t in e?mi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ci=(e,t)=>{for(var n in t||(t={}))yi.call(t,n)&&wi(e,n,t[n]);if(gi)for(var n of gi(t))bi.call(t,n)&&wi(e,n,t[n]);return e};const _i={boolean:{read:e=>"true"===e,write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}};function Ei(e,t,n,o={}){var i;const{flush:a="pre",deep:l=!0,listenToStorageChanges:s=!0,writeDefaults:c=!0,mergeDefaults:u=!1,shallow:f,window:d=ci,eventFilter:p,onError:h=(e=>{})}=o,v=(f?r.shallowRef:r.ref)(t);if(!n)try{n=hi("getDefaultStorage",(()=>{var e;return null==(e=ci)?void 0:e.localStorage}))()}catch(e){h(e)}if(!n)return v;const m=$o(t),g=vi(m),y=null!=(i=o.serializer)?i:_i[g],{pause:b,resume:w}=li(v,(()=>function(t){try{if(null==t)n.removeItem(e);else{const r=y.write(t),o=n.getItem(e);o!==r&&(n.setItem(e,r),d&&(null==d||d.dispatchEvent(new StorageEvent("storage",{key:e,oldValue:o,newValue:r,storageArea:n}))))}}catch(e){h(e)}}(v.value)),{flush:a,deep:l,eventFilter:p});return d&&s&&ui(d,"storage",C),C(),v;function C(t){if(!t||t.storageArea===n)if(t&&null==t.key)v.value=m;else if(!t||t.key===e){b();try{v.value=function(t){const r=t?t.newValue:n.getItem(e);if(null==r)return c&&null!==m&&n.setItem(e,y.write(m)),m;if(!t&&u){const e=y.read(r);return Fo(u)?u(e,m):"object"!==g||Array.isArray(e)?e:Ci(Ci({},m),e)}return"string"!=typeof r?r:y.read(r)}(t)}catch(e){h(e)}finally{t?(0,r.nextTick)(w):w()}}}}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;new Map;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;function xi(e,t,n={}){const{window:r=ci}=n;return Ei(e,t,null==r?void 0:r.localStorage,n)}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var ki,Si;(Si=ki||(ki={})).UP="UP",Si.RIGHT="RIGHT",Si.DOWN="DOWN",Si.LEFT="LEFT",Si.NONE="NONE";Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var Oi=Object.defineProperty,Ni=Object.getOwnPropertySymbols,Pi=Object.prototype.hasOwnProperty,Ti=Object.prototype.propertyIsEnumerable,Vi=(e,t,n)=>t in e?Oi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;((e,t)=>{for(var n in t||(t={}))Pi.call(t,n)&&Vi(e,n,t[n]);if(Ni)for(var n of Ni(t))Ti.call(t,n)&&Vi(e,n,t[n])})({linear:function(e){return e}},{easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]});var Ri=ie({id:"search",state:function(){return{query:"",searchMoreRoute:null,searching:!1,percentScanned:0,error:null}},getters:{hasQuery:function(e){return""!==String(e.query).trim()}},actions:{init:function(){this.checkSearchProgress()},setQuery:function(e){this.query=e},update:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this.query=e,this.error=t&&""!==t?t:null,this.searchMoreRoute=n,this.searching=r,this.percentScanned=o,this.searching&&this.checkSearchProgress()},checkSearchProgress:function(){var e=this,t=this.query;if(""!==t){var n="?"+new URLSearchParams({query:t});fetch(this.searchMoreRoute+n).then((function(e){return e.json()})).then((function(n){if(e.query===t){var r=e.searching;e.searching=n.hasMoreResults,e.percentScanned=n.percentScanned,e.searching?e.checkSearchProgress():r&&!e.searching&&window.dispatchEvent(new CustomEvent("reload-results"))}}))}}}}),Li=ie({id:"pagination",state:function(){return{page:1,pagination:{}}},getters:{currentPage:function(e){return 1!==e.page?Number(e.page):null},links:function(e){var t;return((null===(t=e.pagination)||void 0===t?void 0:t.links)||[]).slice(1,-1)},linksShort:function(e){var t;return((null===(t=e.pagination)||void 0===t?void 0:t.links_short)||[]).slice(1,-1)},hasPages:function(e){var t;return(null===(t=e.pagination)||void 0===t?void 0:t.last_page)>1},hasMorePages:function(e){var t;return null!==(null===(t=e.pagination)||void 0===t?void 0:t.next_page_url)}},actions:{setPagination:function(e){var t,n;(this.pagination=e,(null===(t=this.pagination)||void 0===t?void 0:t.last_page)0}))},totalResults:function(){return this.levelsFound.reduce((function(e,t){return e+t.count}),0)},levelsSelected:function(){return this.levelsFound.filter((function(e){return e.selected}))},totalResultsSelected:function(){return this.levelsSelected.reduce((function(e,t){return e+t.count}),0)}},actions:{setLevelCounts:function(e){e.hasOwnProperty("length")?this.levelCounts=e:this.levelCounts=Object.values(e)},selectAllLevels:function(){this.selectedLevels=Ai,this.levelCounts.forEach((function(e){return e.selected=!0}))},deselectAllLevels:function(){this.selectedLevels=[],this.levelCounts.forEach((function(e){return e.selected=!1}))},toggleLevel:function(e){var t=this.levelCounts.find((function(t){return t.level===e}))||{};this.selectedLevels.includes(e)?(this.selectedLevels=this.selectedLevels.filter((function(t){return t!==e})),t.selected=!1):(this.selectedLevels.push(e),t.selected=!0)}}}),Bi=n(486),Ii={System:"System",Light:"Light",Dark:"Dark"},Mi=ie({id:"logViewer",state:function(){return{theme:xi("logViewerTheme",Ii.System),shorterStackTraces:xi("logViewerShorterStackTraces",!1),direction:xi("logViewerDirection","desc"),resultsPerPage:xi("logViewerResultsPerPage",25),helpSlideOverOpen:!1,loading:!1,error:null,logs:[],levelCounts:[],performance:{},hasMoreResults:!1,percentScanned:100,abortController:null,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight,stacksOpen:[],stacksInView:[],stackTops:{},containerTop:0,showLevelsDropdown:!0}},getters:{selectedFile:function(){return Fi().selectedFile},isOpen:function(e){return function(t){return e.stacksOpen.includes(t)}},isMobile:function(e){return e.viewportWidth<=1023},tableRowHeight:function(){return this.isMobile?29:36},headerHeight:function(){return this.isMobile?0:36},shouldBeSticky:function(e){var t=this;return function(n){return t.isOpen(n)&&e.stacksInView.includes(n)}},stickTopPosition:function(){var e=this;return function(t){var n=e.pixelsAboveFold(t);return n<0?Math.max(e.headerHeight-e.tableRowHeight,e.headerHeight+n)+"px":e.headerHeight+"px"}},pixelsAboveFold:function(e){var t=this;return function(n){var r=document.getElementById("tbody-"+n);if(!r)return!1;var o=r.getClientRects()[0];return o.top+o.height-t.tableRowHeight-t.headerHeight-e.containerTop}},isInViewport:function(){var e=this;return function(t){return e.pixelsAboveFold(t)>-e.tableRowHeight}}},actions:{setViewportDimensions:function(e,t){this.viewportWidth=e,this.viewportHeight=t;var n=document.querySelector(".log-item-container");n&&(this.containerTop=n.getBoundingClientRect().top)},toggleTheme:function(){switch(this.theme){case Ii.System:this.theme=Ii.Light;break;case Ii.Light:this.theme=Ii.Dark;break;default:this.theme=Ii.System}this.syncTheme()},syncTheme:function(){var e=this.theme;e===Ii.Dark||e===Ii.System&&window.matchMedia("(prefers-color-scheme: dark)").matches?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")},toggle:function(e){this.isOpen(e)?this.stacksOpen=this.stacksOpen.filter((function(t){return t!==e})):this.stacksOpen.push(e),this.onScroll()},onScroll:function(){var e=this;this.stacksOpen.forEach((function(t){e.isInViewport(t)?(e.stacksInView.includes(t)||e.stacksInView.push(t),e.stackTops[t]=e.stickTopPosition(t)):(e.stacksInView=e.stacksInView.filter((function(e){return e!==t})),delete e.stackTops[t])}))},reset:function(){this.stacksOpen=[],this.stacksInView=[],this.stackTops={};var e=document.querySelector(".log-item-container");e&&(this.containerTop=e.getBoundingClientRect().top,e.scrollTo(0,0))},loadLogs:(0,Bi.debounce)((function(){var e,t=this,n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).silently,o=void 0!==n&&n,i=Bo(),a=Fi(),l=Ri(),s=Li(),c=ji();if(0!==a.folders.length&&(this.abortController&&this.abortController.abort(),this.selectedFile||l.hasQuery)){this.abortController=new AbortController;var u={host:i.hostQueryParam,file:null===(e=this.selectedFile)||void 0===e?void 0:e.identifier,direction:this.direction,query:l.query,page:s.currentPage,per_page:this.resultsPerPage,levels:(0,r.toRaw)(c.selectedLevels.length>0?c.selectedLevels:"none"),shorter_stack_traces:this.shorterStackTraces};o||(this.loading=!0),Zt.get("".concat(LogViewer.basePath,"/api/logs"),{params:u,signal:this.abortController.signal}).then((function(e){var n=e.data;t.logs=u.host?n.logs.map((function(e){var t={host:u.host,file:e.file_identifier,query:"log-index:".concat(e.index)};return e.url="".concat(window.location.host).concat(LogViewer.basePath,"?").concat(new URLSearchParams(t)),e})):n.logs,t.hasMoreResults=n.hasMoreResults,t.percentScanned=n.percentScanned,t.error=n.error||null,t.performance=n.performance||{},c.setLevelCounts(n.levelCounts),s.setPagination(n.pagination),t.loading=!1,o||(0,r.nextTick)((function(){t.reset(),n.expandAutomatically&&t.stacksOpen.push(0)})),t.hasMoreResults&&t.loadLogs({silently:!0})})).catch((function(e){var n,r;if("ERR_CANCELED"===e.code)return t.hasMoreResults=!1,void(t.percentScanned=100);t.loading=!1,t.error=e.message,null!==(n=e.response)&&void 0!==n&&null!==(r=n.data)&&void 0!==r&&r.message&&(t.error+=": "+e.response.data.message)}))}}),10)}}),Fi=ie({id:"files",state:function(){return{folders:[],direction:xi("fileViewerDirection","desc"),selectedFileIdentifier:null,error:null,clearingCache:{},cacheRecentlyCleared:{},deleting:{},abortController:null,loading:!1,checkBoxesVisibility:!1,filesChecked:[],openFolderIdentifiers:[],foldersInView:[],containerTop:0,sidebarOpen:!1}},getters:{selectedHost:function(){return Bo().selectedHost},hostQueryParam:function(){return Bo().hostQueryParam},files:function(e){return e.folders.flatMap((function(e){return e.files}))},selectedFile:function(e){return e.files.find((function(t){return t.identifier===e.selectedFileIdentifier}))},foldersOpen:function(e){return e.openFolderIdentifiers.map((function(t){return e.folders.find((function(e){return e.identifier===t}))}))},isOpen:function(){var e=this;return function(t){return e.foldersOpen.includes(t)}},isChecked:function(e){return function(t){return e.filesChecked.includes("string"==typeof t?t:t.identifier)}},shouldBeSticky:function(e){var t=this;return function(n){return t.isOpen(n)&&e.foldersInView.includes(n)}},isInViewport:function(){var e=this;return function(t){return e.pixelsAboveFold(t)>-36}},pixelsAboveFold:function(e){return function(t){var n=document.getElementById("folder-"+t);if(!n)return!1;var r=n.getClientRects()[0];return r.top+r.height-e.containerTop}},hasFilesChecked:function(e){return e.filesChecked.length>0}},actions:{setDirection:function(e){this.direction=e},selectFile:function(e){this.selectedFileIdentifier!==e&&(this.selectedFileIdentifier=e,this.openFolderForActiveFile(),this.sidebarOpen=!1)},openFolderForActiveFile:function(){var e=this;if(this.selectedFile){var t=this.folders.find((function(t){return t.files.some((function(t){return t.identifier===e.selectedFile.identifier}))}));t&&!this.isOpen(t)&&this.toggle(t)}},openRootFolderIfNoneOpen:function(){var e=this.folders.find((function(e){return e.is_root}));e&&0===this.openFolderIdentifiers.length&&this.openFolderIdentifiers.push(e.identifier)},loadFolders:function(){var e=this;return this.abortController&&this.abortController.abort(),this.selectedHost?(this.abortController=new AbortController,this.loading=!0,Zt.get("".concat(LogViewer.basePath,"/api/folders"),{params:{host:this.hostQueryParam,direction:this.direction},signal:this.abortController.signal}).then((function(t){var n=t.data;e.folders=n,e.error=n.error||null,e.loading=!1,0===e.openFolderIdentifiers.length&&(e.openFolderForActiveFile(),e.openRootFolderIfNoneOpen()),e.onScroll()})).catch((function(t){var n,r;"ERR_CANCELED"!==t.code&&(e.loading=!1,e.error=t.message,null!==(n=t.response)&&void 0!==n&&null!==(r=n.data)&&void 0!==r&&r.message&&(e.error+=": "+t.response.data.message))}))):(this.folders=[],this.error=null,void(this.loading=!1))},toggle:function(e){this.isOpen(e)?this.openFolderIdentifiers=this.openFolderIdentifiers.filter((function(t){return t!==e.identifier})):this.openFolderIdentifiers.push(e.identifier),this.onScroll()},onScroll:function(){var e=this;this.foldersOpen.forEach((function(t){e.isInViewport(t)?e.foldersInView.includes(t)||e.foldersInView.push(t):e.foldersInView=e.foldersInView.filter((function(e){return e!==t}))}))},reset:function(){this.openFolderIdentifiers=[],this.foldersInView=[];var e=document.getElementById("file-list-container");e&&(this.containerTop=e.getBoundingClientRect().top,e.scrollTo(0,0))},toggleSidebar:function(){this.sidebarOpen=!this.sidebarOpen},checkBoxToggle:function(e){this.isChecked(e)?this.filesChecked=this.filesChecked.filter((function(t){return t!==e})):this.filesChecked.push(e)},toggleCheckboxVisibility:function(){this.checkBoxesVisibility=!this.checkBoxesVisibility},resetChecks:function(){this.filesChecked=[],this.checkBoxesVisibility=!1},clearCacheForFile:function(e){var t=this;return this.clearingCache[e.identifier]=!0,Zt.post("".concat(LogViewer.basePath,"/api/files/").concat(e.identifier,"/clear-cache"),{},{params:{host:this.hostQueryParam}}).then((function(){e.identifier===t.selectedFileIdentifier&&Mi().loadLogs(),t.cacheRecentlyCleared[e.identifier]=!0,setTimeout((function(){return t.cacheRecentlyCleared[e.identifier]=!1}),2e3)})).catch((function(e){})).finally((function(){return t.clearingCache[e.identifier]=!1}))},deleteFile:function(e){var t=this;return Zt.delete("".concat(LogViewer.basePath,"/api/files/").concat(e.identifier),{params:{host:this.hostQueryParam}}).then((function(){return t.loadFolders()}))},clearCacheForFolder:function(e){var t=this;return this.clearingCache[e.identifier]=!0,Zt.post("".concat(LogViewer.basePath,"/api/folders/").concat(e.identifier,"/clear-cache"),{},{params:{host:this.hostQueryParam}}).then((function(){e.files.some((function(e){return e.identifier===t.selectedFileIdentifier}))&&Mi().loadLogs(),t.cacheRecentlyCleared[e.identifier]=!0,setTimeout((function(){return t.cacheRecentlyCleared[e.identifier]=!1}),2e3)})).catch((function(e){})).finally((function(){t.clearingCache[e.identifier]=!1}))},deleteFolder:function(e){var t=this;return this.deleting[e.identifier]=!0,Zt.delete("".concat(LogViewer.basePath,"/api/folders/").concat(e.identifier),{params:{host:this.hostQueryParam}}).then((function(){return t.loadFolders()})).catch((function(e){})).finally((function(){t.deleting[e.identifier]=!1}))},deleteSelectedFiles:function(){return Zt.post("".concat(LogViewer.basePath,"/api/delete-multiple-files"),{files:this.filesChecked},{params:{host:this.hostQueryParam}})},clearCacheForAllFiles:function(){var e=this;this.clearingCache["*"]=!0,Zt.post("".concat(LogViewer.basePath,"/api/clear-cache-all"),{},{params:{host:this.hostQueryParam}}).then((function(){e.cacheRecentlyCleared["*"]=!0,setTimeout((function(){return e.cacheRecentlyCleared["*"]=!1}),2e3),Mi().loadLogs()})).catch((function(e){})).finally((function(){return e.clearingCache["*"]=!1}))}}}),Di=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(t)try{e=e.replace(new RegExp(t,"gi"),"$&")}catch(e){}return Ui(e).replace(/<mark>/g,"").replace(/<\/mark>/g,"")},Ui=function(e){var t={"&":"&","<":"<",">":">",'"':""","'":"'"};return e.replace(/[&<>"']/g,(function(e){return t[e]}))},$i=function(e){var t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="absolute",t.style.left="-9999px",document.body.appendChild(t);var n=document.getSelection().rangeCount>0&&document.getSelection().getRangeAt(0);t.select(),document.execCommand("copy"),document.body.removeChild(t),n&&(document.getSelection().removeAllRanges(),document.getSelection().addRange(n))},Hi=function(e,t,n){var r=e.currentRoute.value,o={host:r.query.host||void 0,file:r.query.file||void 0,query:r.query.query||void 0,page:r.query.page||void 0};"host"===t?(o.file=void 0,o.page=void 0):"file"===t&&void 0!==o.page&&(o.page=void 0),o[t]=n?String(n):void 0,e.push({name:"home",query:o})},zi=function(){var e=(0,r.ref)({});return{dropdownDirections:e,calculateDropdownDirection:function(t){e.value[t.dataset.toggleId]=function(e){window.innerWidth||document.documentElement.clientWidth;var t=window.innerHeight||document.documentElement.clientHeight;return e.getBoundingClientRect().bottom+190=0&&null===n[r].offsetParent;)r--;return n[r]?n[r]:null},ta=function(e,t){for(var n=Array.from(document.querySelectorAll(".".concat(t))),r=n.findIndex((function(t){return t===e}))+1;r0&&t[0].focus();else if(e.key===Xi.Hosts){e.preventDefault();var r=document.getElementById("hosts-toggle-button");null==r||r.click()}else if(e.key===Xi.Severity){e.preventDefault();var o=document.getElementById("severity-dropdown-toggle");null==o||o.click()}else if(e.key===Xi.Settings){e.preventDefault();var i=document.querySelector("#desktop-site-settings .menu-button");null==i||i.click()}else if(e.key===Xi.Search){e.preventDefault();var a=document.getElementById("query");null==a||a.focus()}else if(e.key===Xi.Refresh){e.preventDefault();var l=document.getElementById("reload-logs-button");null==l||l.click()}},oa=function(e){if("ArrowLeft"===e.key)e.preventDefault(),function(){var e=document.querySelector(".file-item-container.active .file-item-info");if(e)e.nextElementSibling.focus();else{var t,n=document.querySelector(".file-item-container .file-item-info");null==n||null===(t=n.nextElementSibling)||void 0===t||t.focus()}}();else if("ArrowRight"===e.key){var t=na(document.activeElement,Ji),n=Array.from(document.querySelectorAll(".".concat(Qi)));n.length>t&&(e.preventDefault(),n[t].focus())}else if("ArrowUp"===e.key){var r=ea(document.activeElement,Ji);r&&(e.preventDefault(),r.focus())}else if("ArrowDown"===e.key){var o=ta(document.activeElement,Ji);o&&(e.preventDefault(),o.focus())}},ia=function(e){if("ArrowLeft"===e.key){var t=na(document.activeElement,Qi),n=Array.from(document.querySelectorAll(".".concat(Ji)));n.length>t&&(e.preventDefault(),n[t].focus())}else if("ArrowUp"===e.key){var r=ea(document.activeElement,Qi);r&&(e.preventDefault(),r.focus())}else if("ArrowDown"===e.key){var o=ta(document.activeElement,Qi);o&&(e.preventDefault(),o.focus())}else if("Enter"===e.key||" "===e.key){e.preventDefault();var i=document.activeElement;i.click(),i.focus()}},aa=function(e){if("ArrowUp"===e.key){var t=ea(document.activeElement,Yi);t&&(e.preventDefault(),t.focus())}else if("ArrowDown"===e.key){var n=ta(document.activeElement,Yi);n&&(e.preventDefault(),n.focus())}else"ArrowRight"===e.key&&(e.preventDefault(),document.activeElement.nextElementSibling.focus())},la=function(e){if("ArrowLeft"===e.key)e.preventDefault(),document.activeElement.previousElementSibling.focus();else if("ArrowRight"===e.key){e.preventDefault();var t=Array.from(document.querySelectorAll(".".concat(Ji)));t.length>0&&t[0].focus()}};function sa(e){return sa="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},sa(e)}function ca(){ca=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",l=o.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function c(e,t,n,o){var i=t&&t.prototype instanceof d?t:d,a=Object.create(i.prototype),l=new k(o||[]);return r(a,"_invoke",{value:C(e,n,l)}),a}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var f={};function d(){}function p(){}function h(){}var v={};s(v,i,(function(){return this}));var m=Object.getPrototypeOf,g=m&&m(m(S([])));g&&g!==t&&n.call(g,i)&&(v=g);var y=h.prototype=d.prototype=Object.create(v);function b(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function w(e,t){function o(r,i,a,l){var s=u(e[r],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f&&"object"==sa(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){o("next",e,a,l)}),(function(e){o("throw",e,a,l)})):t.resolve(f).then((function(e){c.value=e,a(c)}),(function(e){return o("throw",e,a,l)}))}l(s.arg)}var i;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){o(e,n,t,r)}))}return i=i?i.then(r,r):r()}})}function C(e,t,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return O()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var l=_(a,n);if(l){if(l===f)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=u(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===f)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function _(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,_(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),f;var o=u(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,f;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function E(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function x(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function k(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(E,this),this.reset(!0)}function S(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var l=n.call(i,"catchLoc"),s=n.call(i,"finallyLoc");if(l&&s){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),x(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;x(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:S(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function ua(e,t,n,r,o,i,a){try{var l=e[i](a),s=l.value}catch(e){return void n(e)}l.done?t(s):Promise.resolve(s).then(r,o)}var fa={class:"file-item group"},da={key:0,class:"sr-only"},pa={key:1,class:"sr-only"},ha={key:2,class:"my-auto mr-2"},va=["onClick","checked","value"],ma={class:"file-name"},ga=(0,r.createElementVNode)("span",{class:"sr-only"},"Name:",-1),ya={class:"file-size"},ba=(0,r.createElementVNode)("span",{class:"sr-only"},"Size:",-1),wa={class:"py-2"},Ca={class:"text-brand-500"},_a=["href"],Ea=(0,r.createElementVNode)("div",{class:"divider"},null,-1);const xa={__name:"FileListItem",props:{logFile:{type:Object,required:!0},showSelectToggle:{type:Boolean,default:!1}},emits:["selectForDeletion"],setup:function(e,t){t.emit;var n=e,o=Fi(),i=Nr(),a=zi(),l=a.dropdownDirections,s=a.calculateDropdownDirection,c=(0,r.computed)((function(){return o.selectedFile&&o.selectedFile.identifier===n.logFile.identifier})),u=function(){var e,t=(e=ca().mark((function e(){return ca().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!confirm("Are you sure you want to delete the log file '".concat(n.logFile.name,"'? THIS ACTION CANNOT BE UNDONE."))){e.next=6;break}return e.next=3,o.deleteFile(n.logFile);case 3:return n.logFile.identifier===o.selectedFileIdentifier&&Hi(i,"file",null),e.next=6,o.loadFolders();case 6:case"end":return e.stop()}}),e)})),function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function a(e){ua(i,r,o,a,l,"next",e)}function l(e){ua(i,r,o,a,l,"throw",e)}a(void 0)}))});return function(){return t.apply(this,arguments)}}(),f=function(){o.checkBoxToggle(n.logFile.identifier)},d=function(){o.toggleCheckboxVisibility(),f()};return function(t,n){return(0,r.openBlock)(),(0,r.createElementBlock)("div",{class:(0,r.normalizeClass)(["file-item-container",[(0,r.unref)(c)?"active":""]])},[(0,r.createVNode)((0,r.unref)(Co),null,{default:(0,r.withCtx)((function(){return[(0,r.createElementVNode)("div",fa,[(0,r.createElementVNode)("button",{class:"file-item-info",onKeydown:n[0]||(n[0]=function(){return(0,r.unref)(aa)&&(0,r.unref)(aa).apply(void 0,arguments)})},[(0,r.unref)(c)?(0,r.createCommentVNode)("",!0):((0,r.openBlock)(),(0,r.createElementBlock)("span",da,"Select log file")),(0,r.unref)(c)?((0,r.openBlock)(),(0,r.createElementBlock)("span",pa,"Deselect log file")):(0,r.createCommentVNode)("",!0),e.logFile.can_delete?(0,r.withDirectives)(((0,r.openBlock)(),(0,r.createElementBlock)("span",ha,[(0,r.createElementVNode)("input",{type:"checkbox",onClick:(0,r.withModifiers)(f,["stop"]),checked:(0,r.unref)(o).isChecked(e.logFile),value:(0,r.unref)(o).isChecked(e.logFile)},null,8,va)],512)),[[r.vShow,(0,r.unref)(o).checkBoxesVisibility]]):(0,r.createCommentVNode)("",!0),(0,r.createElementVNode)("span",ma,[ga,(0,r.createTextVNode)((0,r.toDisplayString)(e.logFile.name),1)]),(0,r.createElementVNode)("span",ya,[ba,(0,r.createTextVNode)((0,r.toDisplayString)(e.logFile.size_formatted),1)])],32),(0,r.createVNode)((0,r.unref)(_o),{as:"button",class:"file-dropdown-toggle group-hover:border-brand-600 group-hover:dark:border-brand-800","data-toggle-id":e.logFile.identifier,onKeydown:(0,r.unref)(la),onClick:n[1]||(n[1]=(0,r.withModifiers)((function(e){return(0,r.unref)(s)(e.target)}),["stop"]))},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(Ro),{class:"w-4 h-4 pointer-events-none"})]})),_:1},8,["data-toggle-id","onKeydown"])]),(0,r.createVNode)(r.Transition,{"leave-active-class":"transition ease-in duration-100","leave-from-class":"opacity-100 scale-100","leave-to-class":"opacity-0 scale-90","enter-active-class":"transition ease-out duration-100","enter-from-class":"opacity-0 scale-90","enter-to-class":"opacity-100 scale-100"},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(Eo),{as:"div",class:(0,r.normalizeClass)(["dropdown w-48",[(0,r.unref)(l)[e.logFile.identifier]]])},{default:(0,r.withCtx)((function(){return[(0,r.createElementVNode)("div",wa,[(0,r.createVNode)((0,r.unref)(xo),{onClick:n[2]||(n[2]=(0,r.withModifiers)((function(t){return(0,r.unref)(o).clearCacheForFile(e.logFile)}),["stop","prevent"]))},{default:(0,r.withCtx)((function(t){var n=t.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([n?"active":""])},[(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(Lo),{class:"h-4 w-4 mr-2"},null,512),[[r.vShow,!(0,r.unref)(o).clearingCache[e.logFile.identifier]]]),(0,r.withDirectives)((0,r.createVNode)(Zi,null,null,512),[[r.vShow,(0,r.unref)(o).clearingCache[e.logFile.identifier]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",null,"Clear index",512),[[r.vShow,!(0,r.unref)(o).cacheRecentlyCleared[e.logFile.identifier]&&!(0,r.unref)(o).clearingCache[e.logFile.identifier]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",null,"Clearing...",512),[[r.vShow,!(0,r.unref)(o).cacheRecentlyCleared[e.logFile.identifier]&&(0,r.unref)(o).clearingCache[e.logFile.identifier]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",Ca,"Index cleared",512),[[r.vShow,(0,r.unref)(o).cacheRecentlyCleared[e.logFile.identifier]]])],2)]})),_:1}),e.logFile.can_download?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(xo),{key:0,onClick:n[3]||(n[3]=(0,r.withModifiers)((function(){}),["stop"]))},{default:(0,r.withCtx)((function(t){var n=t.active;return[(0,r.createElementVNode)("a",{href:e.logFile.download_url,download:"",class:(0,r.normalizeClass)([n?"active":""])},[(0,r.createVNode)((0,r.unref)(Ao),{class:"w-4 h-4 mr-2"}),(0,r.createTextVNode)(" Download ")],10,_a)]})),_:1})):(0,r.createCommentVNode)("",!0),e.logFile.can_delete?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:1},[Ea,(0,r.createVNode)((0,r.unref)(xo),{onClick:(0,r.withModifiers)(u,["stop","prevent"])},{default:(0,r.withCtx)((function(e){var t=e.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([t?"active":""])},[(0,r.createVNode)((0,r.unref)(No),{class:"w-4 h-4 mr-2"}),(0,r.createTextVNode)(" Delete ")],2)]})),_:1},8,["onClick"]),(0,r.createVNode)((0,r.unref)(xo),{onClick:(0,r.withModifiers)(d,["stop"])},{default:(0,r.withCtx)((function(e){var t=e.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([t?"active":""])},[(0,r.createVNode)((0,r.unref)(No),{class:"w-4 h-4 mr-2"}),(0,r.createTextVNode)(" Delete Multiple ")],2)]})),_:1},8,["onClick"])],64)):(0,r.createCommentVNode)("",!0)])]})),_:1},8,["class"])]})),_:1})]})),_:1})],2)}}},ka=xa;var Sa=n(904),Oa=n(908),Na=n(960),Pa=n(817),Ta=n(902),Va=n(390),Ra=n(69),La=n(520),Aa={class:"checkmark w-[18px] h-[18px] bg-gray-50 dark:bg-gray-800 rounded border dark:border-gray-600 inline-flex items-center justify-center"};const ja={__name:"Checkmark",props:{checked:{type:Boolean,required:!0}},setup:function(e){return function(t,n){return(0,r.openBlock)(),(0,r.createElementBlock)("div",Aa,[e.checked?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(La),{key:0,width:"18",height:"18",class:"w-full h-full"})):(0,r.createCommentVNode)("",!0)])}}};var Ba={width:"884",height:"1279",viewBox:"0 0 884 1279",fill:"none",xmlns:"http://www.w3.org/2000/svg"},Ia=[(0,r.createStaticVNode)('',14)];const Ma={},Fa=(0,Ki.Z)(Ma,[["render",function(e,t){return(0,r.openBlock)(),(0,r.createElementBlock)("svg",Ba,Ia)}]]);var Da=(0,r.createElementVNode)("span",{class:"sr-only"},"Settings dropdown",-1),Ua={class:"py-2"},$a=(0,r.createElementVNode)("div",{class:"label"},"Settings",-1),Ha=(0,r.createElementVNode)("span",{class:"ml-3"},"Shorter stack traces",-1),za=(0,r.createElementVNode)("div",{class:"divider"},null,-1),qa=(0,r.createElementVNode)("div",{class:"label"},"Actions",-1),Wa={class:"text-brand-500"},Ka={class:"text-brand-500"},Ga=(0,r.createElementVNode)("div",{class:"divider"},null,-1),Za=["innerHTML"],Ya=(0,r.createElementVNode)("div",{class:"divider"},null,-1),Ja={class:"w-4 h-4 mr-3 flex flex-col items-center"};const Qa={__name:"SiteSettingsDropdown",setup:function(e){var t=Mi(),n=Fi(),o=(0,r.ref)(!1),i=function(){$i(window.location.href),o.value=!0,setTimeout((function(){return o.value=!1}),2e3)};return(0,r.watch)((function(){return t.shorterStackTraces}),(function(){return t.loadLogs()})),function(e,a){return(0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(Co),{as:"div",class:"relative"},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(_o),{as:"button",class:"menu-button"},{default:(0,r.withCtx)((function(){return[Da,(0,r.createVNode)((0,r.unref)(Sa),{class:"w-5 h-5"})]})),_:1}),(0,r.createVNode)(r.Transition,{"leave-active-class":"transition ease-in duration-100","leave-from-class":"opacity-100 scale-100","leave-to-class":"opacity-0 scale-90","enter-active-class":"transition ease-out duration-100","enter-from-class":"opacity-0 scale-90","enter-to-class":"opacity-100 scale-100"},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(Eo),{as:"div",style:{"min-width":"250px"},class:"dropdown"},{default:(0,r.withCtx)((function(){return[(0,r.createElementVNode)("div",Ua,[$a,(0,r.createVNode)((0,r.unref)(xo),null,{default:(0,r.withCtx)((function(e){var n=e.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([n?"active":""]),onClick:a[0]||(a[0]=(0,r.withModifiers)((function(e){return(0,r.unref)(t).shorterStackTraces=!(0,r.unref)(t).shorterStackTraces}),["stop","prevent"]))},[(0,r.createVNode)(ja,{checked:(0,r.unref)(t).shorterStackTraces},null,8,["checked"]),Ha],2)]})),_:1}),za,qa,(0,r.createVNode)((0,r.unref)(xo),{onClick:(0,r.withModifiers)((0,r.unref)(n).clearCacheForAllFiles,["stop","prevent"])},{default:(0,r.withCtx)((function(e){var t=e.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([t?"active":""])},[(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(Lo),{class:"w-4 h-4 mr-1.5"},null,512),[[r.vShow,!(0,r.unref)(n).clearingCache["*"]]]),(0,r.withDirectives)((0,r.createVNode)(Zi,{class:"w-4 h-4 mr-1.5"},null,512),[[r.vShow,(0,r.unref)(n).clearingCache["*"]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",null,"Clear indices for all files",512),[[r.vShow,!(0,r.unref)(n).cacheRecentlyCleared["*"]&&!(0,r.unref)(n).clearingCache["*"]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",null,"Please wait...",512),[[r.vShow,!(0,r.unref)(n).cacheRecentlyCleared["*"]&&(0,r.unref)(n).clearingCache["*"]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",Wa,"File indices cleared",512),[[r.vShow,(0,r.unref)(n).cacheRecentlyCleared["*"]]])],2)]})),_:1},8,["onClick"]),(0,r.createVNode)((0,r.unref)(xo),{onClick:(0,r.withModifiers)(i,["stop","prevent"])},{default:(0,r.withCtx)((function(e){var t=e.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([t?"active":""])},[(0,r.createVNode)((0,r.unref)(Oa),{class:"w-4 h-4"}),(0,r.withDirectives)((0,r.createElementVNode)("span",null,"Share this page",512),[[r.vShow,!o.value]]),(0,r.withDirectives)((0,r.createElementVNode)("span",Ka,"Link copied!",512),[[r.vShow,o.value]])],2)]})),_:1},8,["onClick"]),Ga,(0,r.createVNode)((0,r.unref)(xo),{onClick:a[1]||(a[1]=(0,r.withModifiers)((function(e){return(0,r.unref)(t).toggleTheme()}),["stop","prevent"]))},{default:(0,r.withCtx)((function(e){var n=e.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([n?"active":""])},[(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(Na),{class:"w-4 h-4"},null,512),[[r.vShow,(0,r.unref)(t).theme===(0,r.unref)(Ii).System]]),(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(Pa),{class:"w-4 h-4"},null,512),[[r.vShow,(0,r.unref)(t).theme===(0,r.unref)(Ii).Light]]),(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(Ta),{class:"w-4 h-4"},null,512),[[r.vShow,(0,r.unref)(t).theme===(0,r.unref)(Ii).Dark]]),(0,r.createElementVNode)("span",null,[(0,r.createTextVNode)("Theme: "),(0,r.createElementVNode)("span",{innerHTML:(0,r.unref)(t).theme,class:"font-semibold"},null,8,Za)])],2)]})),_:1}),(0,r.createVNode)((0,r.unref)(xo),null,{default:(0,r.withCtx)((function(e){var n=e.active;return[(0,r.createElementVNode)("button",{onClick:a[2]||(a[2]=function(e){return(0,r.unref)(t).helpSlideOverOpen=!0}),class:(0,r.normalizeClass)([n?"active":""])},[(0,r.createVNode)((0,r.unref)(Va),{class:"w-4 h-4"}),(0,r.createTextVNode)(" Keyboard Shortcuts ")],2)]})),_:1}),(0,r.createVNode)((0,r.unref)(xo),null,{default:(0,r.withCtx)((function(e){var t=e.active;return[(0,r.createElementVNode)("a",{href:"https://log-viewer.opcodes.io/docs",target:"_blank",class:(0,r.normalizeClass)([t?"active":""])},[(0,r.createVNode)((0,r.unref)(Va),{class:"w-4 h-4"}),(0,r.createTextVNode)(" Documentation ")],2)]})),_:1}),(0,r.createVNode)((0,r.unref)(xo),null,{default:(0,r.withCtx)((function(e){var t=e.active;return[(0,r.createElementVNode)("a",{href:"https://www.github.com/opcodesio/log-viewer",target:"_blank",class:(0,r.normalizeClass)([t?"active":""])},[(0,r.createVNode)((0,r.unref)(Va),{class:"w-4 h-4"}),(0,r.createTextVNode)(" Help ")],2)]})),_:1}),Ya,(0,r.createVNode)((0,r.unref)(xo),null,{default:(0,r.withCtx)((function(e){var t=e.active;return[(0,r.createElementVNode)("a",{href:"https://www.buymeacoffee.com/arunas",target:"_blank",class:(0,r.normalizeClass)([t?"active":""])},[(0,r.createElementVNode)("div",Ja,[(0,r.createVNode)(Fa,{class:"h-4 w-auto"})]),(0,r.createElementVNode)("strong",{class:(0,r.normalizeClass)([t?"text-white":"text-brand-500"])},"Show your support",2),(0,r.createVNode)((0,r.unref)(Ra),{class:"ml-2 w-4 h-4 opacity-75"})],2)]})),_:1})])]})),_:1})]})),_:1})]})),_:1})}}};var Xa=(e=>(e[e.None=1]="None",e[e.Focusable=2]="Focusable",e[e.Hidden=4]="Hidden",e))(Xa||{});let el=(0,r.defineComponent)({name:"Hidden",props:{as:{type:[Object,String],default:"div"},features:{type:Number,default:1}},setup:(e,{slots:t,attrs:n})=>()=>{let{features:r,...o}=e;return Ar({ourProps:{"aria-hidden":2==(2&r)||void 0,style:{position:"fixed",top:1,left:1,width:1,height:0,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0",...4==(4&r)&&2!=(2&r)&&{display:"none"}}},theirProps:o,slot:{},attrs:n,slots:t,name:"Hidden"})}});function tl(e={},t=null,n=[]){for(let[r,o]of Object.entries(e))rl(n,nl(t,r),o);return n}function nl(e,t){return e?e+"["+t+"]":t}function rl(e,t,n){if(Array.isArray(n))for(let[r,o]of n.entries())rl(e,nl(t,r.toString()),o);else n instanceof Date?e.push([t,n.toISOString()]):"boolean"==typeof n?e.push([t,n?"1":"0"]):"string"==typeof n?e.push([t,n]):"number"==typeof n?e.push([t,`${n}`]):null==n?e.push([t,""]):tl(n,t,e)}function ol(e,t){return e===t}var il=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(il||{}),al=(e=>(e[e.Single=0]="Single",e[e.Multi=1]="Multi",e))(al||{}),ll=(e=>(e[e.Pointer=0]="Pointer",e[e.Other=1]="Other",e))(ll||{});let sl=Symbol("ListboxContext");function cl(e){let t=(0,r.inject)(sl,null);if(null===t){let t=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,cl),t}return t}let ul=(0,r.defineComponent)({name:"Listbox",emits:{"update:modelValue":e=>!0},props:{as:{type:[Object,String],default:"template"},disabled:{type:[Boolean],default:!1},by:{type:[String,Function],default:()=>ol},horizontal:{type:[Boolean],default:!1},modelValue:{type:[Object,String,Number,Boolean],default:void 0},defaultValue:{type:[Object,String,Number,Boolean],default:void 0},name:{type:String,optional:!0},multiple:{type:[Boolean],default:!1}},inheritAttrs:!1,setup(e,{slots:t,attrs:n,emit:o}){let i=(0,r.ref)(1),a=(0,r.ref)(null),l=(0,r.ref)(null),s=(0,r.ref)(null),c=(0,r.ref)([]),u=(0,r.ref)(""),f=(0,r.ref)(null),d=(0,r.ref)(1);function p(e=(e=>e)){let t=null!==f.value?c.value[f.value]:null,n=co(e(c.value.slice()),(e=>zr(e.dataRef.domRef))),r=t?n.indexOf(t):null;return-1===r&&(r=null),{options:n,activeOptionIndex:r}}let h=(0,r.computed)((()=>e.multiple?1:0)),[v,m]=function(e,t,n){let o=(0,r.ref)(null==n?void 0:n.value),i=(0,r.computed)((()=>void 0!==e.value));return[(0,r.computed)((()=>i.value?e.value:o.value)),function(e){return i.value||(o.value=e),null==t?void 0:t(e)}]}((0,r.computed)((()=>void 0===e.modelValue?Tr(h.value,{1:[],0:void 0}):e.modelValue)),(e=>o("update:modelValue",e)),(0,r.computed)((()=>e.defaultValue))),g={listboxState:i,value:v,mode:h,compare(t,n){if("string"==typeof e.by){let r=e.by;return(null==t?void 0:t[r])===(null==n?void 0:n[r])}return e.by(t,n)},orientation:(0,r.computed)((()=>e.horizontal?"horizontal":"vertical")),labelRef:a,buttonRef:l,optionsRef:s,disabled:(0,r.computed)((()=>e.disabled)),options:c,searchQuery:u,activeOptionIndex:f,activationTrigger:d,closeListbox(){e.disabled||1!==i.value&&(i.value=1,f.value=null)},openListbox(){e.disabled||0!==i.value&&(i.value=0)},goToOption(t,n,r){if(e.disabled||1===i.value)return;let o=p(),a=Hr(t===$r.Specific?{focus:$r.Specific,id:n}:{focus:t},{resolveItems:()=>o.options,resolveActiveIndex:()=>o.activeOptionIndex,resolveId:e=>e.id,resolveDisabled:e=>e.dataRef.disabled});u.value="",f.value=a,d.value=null!=r?r:1,c.value=o.options},search(t){if(e.disabled||1===i.value)return;let n=""!==u.value?0:1;u.value+=t.toLowerCase();let r=(null!==f.value?c.value.slice(f.value+n).concat(c.value.slice(0,f.value+n)):c.value).find((e=>e.dataRef.textValue.startsWith(u.value)&&!e.dataRef.disabled)),o=r?c.value.indexOf(r):-1;-1===o||o===f.value||(f.value=o,d.value=1)},clearSearch(){e.disabled||1!==i.value&&""!==u.value&&(u.value="")},registerOption(e,t){let n=p((n=>[...n,{id:e,dataRef:t}]));c.value=n.options,f.value=n.activeOptionIndex},unregisterOption(e){let t=p((t=>{let n=t.findIndex((t=>t.id===e));return-1!==n&&t.splice(n,1),t}));c.value=t.options,f.value=t.activeOptionIndex,d.value=1},select(t){e.disabled||m(Tr(h.value,{0:()=>t,1:()=>{let e=(0,r.toRaw)(g.value.value).slice(),n=(0,r.toRaw)(t),o=e.findIndex((e=>g.compare(n,(0,r.toRaw)(e))));return-1===o?e.push(n):e.splice(o,1),e}}))}};ho([l,s],((e,t)=>{var n;g.closeListbox(),io(t,oo.Loose)||(e.preventDefault(),null==(n=zr(l))||n.focus())}),(0,r.computed)((()=>0===i.value))),(0,r.provide)(sl,g),Yr((0,r.computed)((()=>Tr(i.value,{0:Gr.Open,1:Gr.Closed}))));let y=(0,r.computed)((()=>{var e;return null==(e=zr(l))?void 0:e.closest("form")}));return(0,r.onMounted)((()=>{(0,r.watch)([y],(()=>{if(y.value&&void 0!==e.defaultValue)return y.value.addEventListener("reset",t),()=>{var e;null==(e=y.value)||e.removeEventListener("reset",t)};function t(){g.select(e.defaultValue)}}),{immediate:!0})})),()=>{let{name:o,modelValue:a,disabled:l,...s}=e,c={open:0===i.value,disabled:l,value:v.value};return(0,r.h)(r.Fragment,[...null!=o&&null!=v.value?tl({[o]:v.value}).map((([e,t])=>(0,r.h)(el,function(e){let t=Object.assign({},e);for(let e in t)void 0===t[e]&&delete t[e];return t}({features:Xa.Hidden,key:e,as:"input",type:"hidden",hidden:!0,readOnly:!0,name:e,value:t})))):[],Ar({ourProps:{},theirProps:{...n,...Mr(s,["defaultValue","onUpdate:modelValue","horizontal","multiple","by"])},slot:c,slots:t,attrs:n,name:"Listbox"})])}}}),fl=(0,r.defineComponent)({name:"ListboxLabel",props:{as:{type:[Object,String],default:"label"},id:{type:String,default:()=>`headlessui-listbox-label-${Dr()}`}},setup(e,{attrs:t,slots:n}){let r=cl("ListboxLabel");function o(){var e;null==(e=zr(r.buttonRef))||e.focus({preventScroll:!0})}return()=>{let i={open:0===r.listboxState.value,disabled:r.disabled.value},{id:a,...l}=e;return Ar({ourProps:{id:a,ref:r.labelRef,onClick:o},theirProps:l,slot:i,attrs:t,slots:n,name:"ListboxLabel"})}}}),dl=(0,r.defineComponent)({name:"ListboxButton",props:{as:{type:[Object,String],default:"button"},id:{type:String,default:()=>`headlessui-listbox-button-${Dr()}`}},setup(e,{attrs:t,slots:n,expose:o}){let i=cl("ListboxButton");function a(e){switch(e.key){case Ur.Space:case Ur.Enter:case Ur.ArrowDown:e.preventDefault(),i.openListbox(),(0,r.nextTick)((()=>{var e;null==(e=zr(i.optionsRef))||e.focus({preventScroll:!0}),i.value.value||i.goToOption($r.First)}));break;case Ur.ArrowUp:e.preventDefault(),i.openListbox(),(0,r.nextTick)((()=>{var e;null==(e=zr(i.optionsRef))||e.focus({preventScroll:!0}),i.value.value||i.goToOption($r.Last)}))}}function l(e){if(e.key===Ur.Space)e.preventDefault()}function s(e){i.disabled.value||(0===i.listboxState.value?(i.closeListbox(),(0,r.nextTick)((()=>{var e;return null==(e=zr(i.buttonRef))?void 0:e.focus({preventScroll:!0})}))):(e.preventDefault(),i.openListbox(),function(e){requestAnimationFrame((()=>requestAnimationFrame(e)))}((()=>{var e;return null==(e=zr(i.optionsRef))?void 0:e.focus({preventScroll:!0})}))))}o({el:i.buttonRef,$el:i.buttonRef});let c=Qr((0,r.computed)((()=>({as:e.as,type:t.type}))),i.buttonRef);return()=>{var r,o;let u={open:0===i.listboxState.value,disabled:i.disabled.value,value:i.value.value},{id:f,...d}=e;return Ar({ourProps:{ref:i.buttonRef,id:f,type:c.value,"aria-haspopup":"listbox","aria-controls":null==(r=zr(i.optionsRef))?void 0:r.id,"aria-expanded":i.disabled.value?void 0:0===i.listboxState.value,"aria-labelledby":i.labelRef.value?[null==(o=zr(i.labelRef))?void 0:o.id,f].join(" "):void 0,disabled:!0===i.disabled.value||void 0,onKeydown:a,onKeyup:l,onClick:s},theirProps:d,slot:u,attrs:t,slots:n,name:"ListboxButton"})}}}),pl=(0,r.defineComponent)({name:"ListboxOptions",props:{as:{type:[Object,String],default:"ul"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},id:{type:String,default:()=>`headlessui-listbox-options-${Dr()}`}},setup(e,{attrs:t,slots:n,expose:o}){let i=cl("ListboxOptions"),a=(0,r.ref)(null);function l(e){switch(a.value&&clearTimeout(a.value),e.key){case Ur.Space:if(""!==i.searchQuery.value)return e.preventDefault(),e.stopPropagation(),i.search(e.key);case Ur.Enter:if(e.preventDefault(),e.stopPropagation(),null!==i.activeOptionIndex.value){let e=i.options.value[i.activeOptionIndex.value];i.select(e.dataRef.value)}0===i.mode.value&&(i.closeListbox(),(0,r.nextTick)((()=>{var e;return null==(e=zr(i.buttonRef))?void 0:e.focus({preventScroll:!0})})));break;case Tr(i.orientation.value,{vertical:Ur.ArrowDown,horizontal:Ur.ArrowRight}):return e.preventDefault(),e.stopPropagation(),i.goToOption($r.Next);case Tr(i.orientation.value,{vertical:Ur.ArrowUp,horizontal:Ur.ArrowLeft}):return e.preventDefault(),e.stopPropagation(),i.goToOption($r.Previous);case Ur.Home:case Ur.PageUp:return e.preventDefault(),e.stopPropagation(),i.goToOption($r.First);case Ur.End:case Ur.PageDown:return e.preventDefault(),e.stopPropagation(),i.goToOption($r.Last);case Ur.Escape:e.preventDefault(),e.stopPropagation(),i.closeListbox(),(0,r.nextTick)((()=>{var e;return null==(e=zr(i.buttonRef))?void 0:e.focus({preventScroll:!0})}));break;case Ur.Tab:e.preventDefault(),e.stopPropagation();break;default:1===e.key.length&&(i.search(e.key),a.value=setTimeout((()=>i.clearSearch()),350))}}o({el:i.optionsRef,$el:i.optionsRef});let s=Zr(),c=(0,r.computed)((()=>null!==s?s.value===Gr.Open:0===i.listboxState.value));return()=>{var r,o,a,s;let u={open:0===i.listboxState.value},{id:f,...d}=e;return Ar({ourProps:{"aria-activedescendant":null===i.activeOptionIndex.value||null==(r=i.options.value[i.activeOptionIndex.value])?void 0:r.id,"aria-multiselectable":1===i.mode.value||void 0,"aria-labelledby":null!=(s=null==(o=zr(i.labelRef))?void 0:o.id)?s:null==(a=zr(i.buttonRef))?void 0:a.id,"aria-orientation":i.orientation.value,id:f,onKeydown:l,role:"listbox",tabIndex:0,ref:i.optionsRef},theirProps:d,slot:u,attrs:t,slots:n,features:Rr.RenderStrategy|Rr.Static,visible:c.value,name:"ListboxOptions"})}}}),hl=(0,r.defineComponent)({name:"ListboxOption",props:{as:{type:[Object,String],default:"li"},value:{type:[Object,String,Number,Boolean]},disabled:{type:Boolean,default:!1},id:{type:String,default:()=>`headlessui-listbox.option-${Dr()}`}},setup(e,{slots:t,attrs:n,expose:o}){let i=cl("ListboxOption"),a=(0,r.ref)(null);o({el:a,$el:a});let l=(0,r.computed)((()=>null!==i.activeOptionIndex.value&&i.options.value[i.activeOptionIndex.value].id===e.id)),s=(0,r.computed)((()=>Tr(i.mode.value,{0:()=>i.compare((0,r.toRaw)(i.value.value),(0,r.toRaw)(e.value)),1:()=>(0,r.toRaw)(i.value.value).some((t=>i.compare((0,r.toRaw)(t),(0,r.toRaw)(e.value))))}))),c=(0,r.computed)((()=>Tr(i.mode.value,{1:()=>{var t;let n=(0,r.toRaw)(i.value.value);return(null==(t=i.options.value.find((e=>n.some((t=>i.compare((0,r.toRaw)(t),(0,r.toRaw)(e.dataRef.value)))))))?void 0:t.id)===e.id},0:()=>s.value}))),u=(0,r.computed)((()=>({disabled:e.disabled,value:e.value,textValue:"",domRef:a})));function f(t){if(e.disabled)return t.preventDefault();i.select(e.value),0===i.mode.value&&(i.closeListbox(),(0,r.nextTick)((()=>{var e;return null==(e=zr(i.buttonRef))?void 0:e.focus({preventScroll:!0})})))}function d(){if(e.disabled)return i.goToOption($r.Nothing);i.goToOption($r.Specific,e.id)}(0,r.onMounted)((()=>{var e,t;let n=null==(t=null==(e=zr(a))?void 0:e.textContent)?void 0:t.toLowerCase().trim();void 0!==n&&(u.value.textValue=n)})),(0,r.onMounted)((()=>i.registerOption(e.id,u))),(0,r.onUnmounted)((()=>i.unregisterOption(e.id))),(0,r.onMounted)((()=>{(0,r.watch)([i.listboxState,s],(()=>{0===i.listboxState.value&&(!s.value||Tr(i.mode.value,{1:()=>{c.value&&i.goToOption($r.Specific,e.id)},0:()=>{i.goToOption($r.Specific,e.id)}}))}),{immediate:!0})})),(0,r.watchEffect)((()=>{0===i.listboxState.value&&(!l.value||0!==i.activationTrigger.value&&(0,r.nextTick)((()=>{var e,t;return null==(t=null==(e=zr(a))?void 0:e.scrollIntoView)?void 0:t.call(e,{block:"nearest"})})))}));let p=mo();function h(e){p.update(e)}function v(t){!p.wasMoved(t)||e.disabled||l.value||i.goToOption($r.Specific,e.id,0)}function m(t){!p.wasMoved(t)||e.disabled||!l.value||i.goToOption($r.Nothing)}return()=>{let{disabled:r}=e,o={active:l.value,selected:s.value,disabled:r},{id:i,value:c,disabled:u,...p}=e;return Ar({ourProps:{id:i,ref:a,role:"option",tabIndex:!0===r?void 0:-1,"aria-disabled":!0===r||void 0,"aria-selected":s.value,disabled:void 0,onClick:f,onFocus:d,onPointerenter:h,onMouseenter:h,onPointermove:v,onMousemove:v,onPointerleave:m,onMouseleave:m},theirProps:p,slot:o,attrs:n,slots:t,name:"ListboxOption"})}}});var vl=n(889),ml={class:"relative mt-1"},gl={class:"block truncate"},yl={class:"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2"};const bl={__name:"HostSelector",setup:function(e){var t=Nr(),n=Bo();return(0,r.watch)((function(){return n.selectedHost}),(function(e){Hi(t,"host",null!=e&&e.is_remote?e.identifier:null)})),function(e,t){return(0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(ul),{as:"div",modelValue:(0,r.unref)(n).selectedHostIdentifier,"onUpdate:modelValue":t[0]||(t[0]=function(e){return(0,r.unref)(n).selectedHostIdentifier=e})},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(fl),{class:"ml-1 block text-sm text-gray-500 dark:text-gray-400"},{default:(0,r.withCtx)((function(){return[(0,r.createTextVNode)("Select host")]})),_:1}),(0,r.createElementVNode)("div",ml,[(0,r.createVNode)((0,r.unref)(dl),{id:"hosts-toggle-button",class:"cursor-pointer relative text-gray-800 dark:text-gray-200 w-full cursor-default rounded-md border border-gray-300 dark:border-gray-700 bg-white dark:bg-gray-800 py-2 pl-4 pr-10 text-left hover:border-brand-600 hover:dark:border-brand-800 focus:border-brand-500 focus:outline-none focus:ring-1 focus:ring-brand-500 text-sm"},{default:(0,r.withCtx)((function(){var e;return[(0,r.createElementVNode)("span",gl,(0,r.toDisplayString)((null===(e=(0,r.unref)(n).selectedHost)||void 0===e?void 0:e.name)||"Please select a server"),1),(0,r.createElementVNode)("span",yl,[(0,r.createVNode)((0,r.unref)(vl),{class:"h-5 w-5 text-gray-400","aria-hidden":"true"})])]})),_:1}),(0,r.createVNode)(r.Transition,{"leave-active-class":"transition ease-in duration-100","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(pl),{class:"absolute z-20 mt-1 max-h-60 w-full overflow-auto rounded-md shadow-md bg-white dark:bg-gray-800 py-1 border border-gray-200 dark:border-gray-700 ring-1 ring-brand ring-opacity-5 focus:outline-none text-sm"},{default:(0,r.withCtx)((function(){return[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)((0,r.unref)(n).hosts,(function(e){return(0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(hl),{as:"template",key:e.identifier,value:e.identifier},{default:(0,r.withCtx)((function(t){var n=t.active,o=t.selected;return[(0,r.createElementVNode)("li",{class:(0,r.normalizeClass)([n?"text-white bg-brand-600":"text-gray-900 dark:text-gray-300","relative cursor-default select-none py-2 pl-3 pr-9"])},[(0,r.createElementVNode)("span",{class:(0,r.normalizeClass)([o?"font-semibold":"font-normal","block truncate"])},(0,r.toDisplayString)(e.name),3),o?((0,r.openBlock)(),(0,r.createElementBlock)("span",{key:0,class:(0,r.normalizeClass)([n?"text-white":"text-brand-600","absolute inset-y-0 right-0 flex items-center pr-4"])},[(0,r.createVNode)((0,r.unref)(La),{class:"h-5 w-5","aria-hidden":"true"})],2)):(0,r.createCommentVNode)("",!0)],2)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1})])]})),_:1},8,["modelValue"])}}},wl=bl;function Cl(e){return Cl="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Cl(e)}function _l(){_l=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",l=o.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function c(e,t,n,o){var i=t&&t.prototype instanceof d?t:d,a=Object.create(i.prototype),l=new k(o||[]);return r(a,"_invoke",{value:C(e,n,l)}),a}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var f={};function d(){}function p(){}function h(){}var v={};s(v,i,(function(){return this}));var m=Object.getPrototypeOf,g=m&&m(m(S([])));g&&g!==t&&n.call(g,i)&&(v=g);var y=h.prototype=d.prototype=Object.create(v);function b(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function w(e,t){function o(r,i,a,l){var s=u(e[r],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f&&"object"==Cl(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){o("next",e,a,l)}),(function(e){o("throw",e,a,l)})):t.resolve(f).then((function(e){c.value=e,a(c)}),(function(e){return o("throw",e,a,l)}))}l(s.arg)}var i;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){o(e,n,t,r)}))}return i=i?i.then(r,r):r()}})}function C(e,t,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return O()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var l=_(a,n);if(l){if(l===f)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=u(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===f)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function _(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,_(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),f;var o=u(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,f;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function E(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function x(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function k(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(E,this),this.reset(!0)}function S(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var l=n.call(i,"catchLoc"),s=n.call(i,"finallyLoc");if(l&&s){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),x(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;x(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:S(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function El(e,t,n,r,o,i,a){try{var l=e[i](a),s=l.value}catch(e){return void n(e)}l.done?t(s):Promise.resolve(s).then(r,o)}function xl(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function a(e){El(i,r,o,a,l,"next",e)}function l(e){El(i,r,o,a,l,"throw",e)}a(void 0)}))}}var kl={class:"flex flex-col h-full py-5"},Sl={class:"mx-3 md:mx-0 mb-1"},Ol={class:"sm:flex sm:flex-col-reverse"},Nl={class:"font-semibold text-brand-700 dark:text-brand-600 text-2xl flex items-center"},Pl=(0,r.createElementVNode)("a",{href:"https://www.github.com/opcodesio/log-viewer",target:"_blank",class:"rounded ml-3 text-gray-400 hover:text-brand-800 dark:hover:text-brand-600 focus:outline-none focus:ring-2 focus:ring-brand-500 dark:focus:ring-brand-700 p-1"},[(0,r.createElementVNode)("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-5 w-5",viewBox:"0 0 24 24",fill:"currentColor",title:""},[(0,r.createElementVNode)("path",{d:"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"})])],-1),Tl={class:"md:hidden flex-1 flex justify-end"},Vl={type:"button",class:"menu-button"},Rl={key:0},Ll=["href"],Al={key:0,class:"bg-yellow-100 dark:bg-yellow-900 bg-opacity-75 dark:bg-opacity-40 border border-yellow-300 dark:border-yellow-800 rounded-md px-2 py-1 mt-2 text-xs leading-5 text-yellow-700 dark:text-yellow-400"},jl=(0,r.createElementVNode)("code",{class:"font-mono px-2 py-1 bg-gray-100 dark:bg-gray-900 rounded"},"php artisan log-viewer:publish",-1),Bl={key:2,class:"flex justify-between items-baseline mt-6"},Il={class:"ml-1 block text-sm text-gray-500 dark:text-gray-400 truncate"},Ml={class:"text-sm text-gray-500 dark:text-gray-400"},Fl=(0,r.createElementVNode)("label",{for:"file-sort-direction",class:"sr-only"},"Sort direction",-1),Dl=[(0,r.createElementVNode)("option",{value:"desc"},"Newest first",-1),(0,r.createElementVNode)("option",{value:"asc"},"Oldest first",-1)],Ul={key:3,class:"mx-1 mt-1 text-red-600 text-xs"},$l=(0,r.createElementVNode)("p",{class:"text-sm text-gray-600 dark:text-gray-400"},"Please select files to delete and confirm or cancel deletion.",-1),Hl=["onClick"],zl={id:"file-list-container",class:"relative h-full overflow-hidden"},ql=["id"],Wl=["onClick"],Kl={class:"file-item group"},Gl={key:0,class:"sr-only"},Zl={key:1,class:"sr-only"},Yl={class:"file-icon group-hover:hidden group-focus:hidden"},Jl={class:"file-icon hidden group-hover:inline-block group-focus:inline-block"},Ql={class:"file-name"},Xl={key:0},es=(0,r.createElementVNode)("span",{class:"text-gray-500 dark:text-gray-400"},"root",-1),ts={key:1},ns=(0,r.createElementVNode)("span",{class:"sr-only"},"Open folder options",-1),rs={class:"py-2"},os={class:"text-brand-500"},is=["href"],as=(0,r.createElementVNode)("div",{class:"divider"},null,-1),ls=["onClick","disabled"],ss={class:"folder-files pl-3 ml-1 border-l border-gray-200 dark:border-gray-800"},cs={key:0,class:"text-center text-sm text-gray-600 dark:text-gray-400"},us=(0,r.createElementVNode)("p",{class:"mb-5"},"No log files were found.",-1),fs={class:"flex items-center justify-center px-1"},ds=(0,r.createElementVNode)("div",{class:"pointer-events-none absolute z-10 bottom-0 h-4 w-full bg-gradient-to-t from-gray-100 dark:from-gray-900 to-transparent"},null,-1),ps={class:"absolute inset-y-0 left-3 right-7 lg:left-0 lg:right-0 z-10"},hs={class:"rounded-md bg-white text-gray-800 dark:bg-gray-700 dark:text-gray-200 opacity-90 w-full h-full flex items-center justify-center"};const vs={__name:"FileList",setup:function(e){var t=Nr(),n=Pr(),o=Bo(),i=Fi(),a=zi(),l=a.dropdownDirections,s=a.calculateDropdownDirection,c=function(){var e=xl(_l().mark((function e(n){return _l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!confirm("Are you sure you want to delete the log folder '".concat(n.path,"'? THIS ACTION CANNOT BE UNDONE."))){e.next=4;break}return e.next=3,i.deleteFolder(n);case 3:n.files.some((function(e){return e.identifier===i.selectedFileIdentifier}))&&Hi(t,"file",null);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),u=function(){var e=xl(_l().mark((function e(){return _l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!confirm("Are you sure you want to delete selected log files? THIS ACTION CANNOT BE UNDONE.")){e.next=7;break}return e.next=3,i.deleteSelectedFiles();case 3:return i.filesChecked.includes(i.selectedFileIdentifier)&&Hi(t,"file",null),i.resetChecks(),e.next=7,i.loadFolders();case 7:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return(0,r.onMounted)(xl(_l().mark((function e(){return _l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:o.selectHost(n.query.host||null);case 1:case"end":return e.stop()}}),e)})))),(0,r.watch)((function(){return i.direction}),(function(){return i.loadFolders()})),function(e,a){var f,d;return(0,r.openBlock)(),(0,r.createElementBlock)("nav",kl,[(0,r.createElementVNode)("div",Sl,[(0,r.createElementVNode)("div",Ol,[(0,r.createElementVNode)("h1",Nl,[(0,r.createTextVNode)(" Log Viewer "),Pl,(0,r.createElementVNode)("span",Tl,[(0,r.createVNode)(Qa,{class:"ml-2"}),(0,r.createElementVNode)("button",Vl,[(0,r.createVNode)((0,r.unref)(ko),{class:"w-5 h-5 ml-2",onClick:(0,r.unref)(i).toggleSidebar},null,8,["onClick"])])])]),e.LogViewer.back_to_system_url?((0,r.openBlock)(),(0,r.createElementBlock)("div",Rl,[(0,r.createElementVNode)("a",{href:e.LogViewer.back_to_system_url,class:"rounded shrink inline-flex items-center text-sm text-gray-500 dark:text-gray-400 hover:text-brand-800 dark:hover:text-brand-600 focus:outline-none focus:ring-2 focus:ring-brand-500 dark:focus:ring-brand-700 mt-0"},[(0,r.createVNode)((0,r.unref)(So),{class:"h-3 w-3 mr-1.5"}),(0,r.createTextVNode)(" "+(0,r.toDisplayString)(e.LogViewer.back_to_system_label||"Back to ".concat(e.LogViewer.app_name)),1)],8,Ll)])):(0,r.createCommentVNode)("",!0)]),e.LogViewer.assets_outdated?((0,r.openBlock)(),(0,r.createElementBlock)("div",Al,[(0,r.createVNode)((0,r.unref)(Oo),{class:"h-4 w-4 mr-1 inline"}),(0,r.createTextVNode)(" Front-end assets are outdated. To update, please run "),jl])):(0,r.createCommentVNode)("",!0),(0,r.unref)(o).supportsHosts&&(0,r.unref)(o).hasRemoteHosts?((0,r.openBlock)(),(0,r.createBlock)(wl,{key:1,class:"mb-8 mt-6"})):(0,r.createCommentVNode)("",!0),(null===(f=(0,r.unref)(i).folders)||void 0===f?void 0:f.length)>0?((0,r.openBlock)(),(0,r.createElementBlock)("div",Bl,[(0,r.createElementVNode)("div",Il,"Log files on "+(0,r.toDisplayString)(null===(d=(0,r.unref)(i).selectedHost)||void 0===d?void 0:d.name),1),(0,r.createElementVNode)("div",Ml,[Fl,(0,r.withDirectives)((0,r.createElementVNode)("select",{id:"file-sort-direction",class:"select","onUpdate:modelValue":a[0]||(a[0]=function(e){return(0,r.unref)(i).direction=e})},Dl,512),[[r.vModelSelect,(0,r.unref)(i).direction]])])])):(0,r.createCommentVNode)("",!0),(0,r.unref)(i).error?((0,r.openBlock)(),(0,r.createElementBlock)("p",Ul,(0,r.toDisplayString)((0,r.unref)(i).error),1)):(0,r.createCommentVNode)("",!0)]),(0,r.withDirectives)((0,r.createElementVNode)("div",null,[$l,(0,r.createElementVNode)("div",{class:(0,r.normalizeClass)(["grid grid-flow-col pr-4 mt-2",[(0,r.unref)(i).hasFilesChecked?"justify-between":"justify-end"]])},[(0,r.withDirectives)((0,r.createElementVNode)("button",{onClick:(0,r.withModifiers)(u,["stop"]),class:"button inline-flex"},[(0,r.createVNode)((0,r.unref)(No),{class:"w-5 mr-1"}),(0,r.createTextVNode)(" Delete selected files ")],8,Hl),[[r.vShow,(0,r.unref)(i).hasFilesChecked]]),(0,r.createElementVNode)("button",{class:"button inline-flex",onClick:a[1]||(a[1]=(0,r.withModifiers)((function(e){return(0,r.unref)(i).resetChecks()}),["stop"]))},[(0,r.createTextVNode)(" Cancel "),(0,r.createVNode)((0,r.unref)(ko),{class:"w-5 ml-1"})])],2)],512),[[r.vShow,(0,r.unref)(i).checkBoxesVisibility]]),(0,r.createElementVNode)("div",zl,[(0,r.createElementVNode)("div",{class:"file-list",onScroll:a[6]||(a[6]=function(e){return(0,r.unref)(i).onScroll(e)})},[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)((0,r.unref)(i).folders,(function(e){return(0,r.openBlock)(),(0,r.createElementBlock)("div",{key:e.identifier,id:"folder-".concat(e.identifier),class:"relative folder-container"},[(0,r.createVNode)((0,r.unref)(Co),null,{default:(0,r.withCtx)((function(t){var n=t.open;return[(0,r.createElementVNode)("div",{class:(0,r.normalizeClass)(["folder-item-container",[(0,r.unref)(i).isOpen(e)?"active-folder":"",(0,r.unref)(i).shouldBeSticky(e)?"sticky "+(n?"z-20":"z-10"):""]]),onClick:function(t){return(0,r.unref)(i).toggle(e)}},[(0,r.createElementVNode)("div",Kl,[(0,r.createElementVNode)("button",{class:"file-item-info group",onKeydown:a[2]||(a[2]=function(){return(0,r.unref)(aa)&&(0,r.unref)(aa).apply(void 0,arguments)})},[(0,r.unref)(i).isOpen(e)?(0,r.createCommentVNode)("",!0):((0,r.openBlock)(),(0,r.createElementBlock)("span",Gl,"Open folder")),(0,r.unref)(i).isOpen(e)?((0,r.openBlock)(),(0,r.createElementBlock)("span",Zl,"Close folder")):(0,r.createCommentVNode)("",!0),(0,r.createElementVNode)("span",Yl,[(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(Po),{class:"w-5 h-5"},null,512),[[r.vShow,!(0,r.unref)(i).isOpen(e)]]),(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(To),{class:"w-5 h-5"},null,512),[[r.vShow,(0,r.unref)(i).isOpen(e)]])]),(0,r.createElementVNode)("span",Jl,[(0,r.createVNode)((0,r.unref)(Vo),{class:(0,r.normalizeClass)([(0,r.unref)(i).isOpen(e)?"rotate-90":"","transition duration-100"])},null,8,["class"])]),(0,r.createElementVNode)("span",Ql,[String(e.clean_path||"").startsWith("root")?((0,r.openBlock)(),(0,r.createElementBlock)("span",Xl,[es,(0,r.createTextVNode)((0,r.toDisplayString)(String(e.clean_path).substring(4)),1)])):((0,r.openBlock)(),(0,r.createElementBlock)("span",ts,(0,r.toDisplayString)(e.clean_path),1))])],32),(0,r.createVNode)((0,r.unref)(_o),{as:"button",class:"file-dropdown-toggle group-hover:border-brand-600 group-hover:dark:border-brand-800","data-toggle-id":e.identifier,onKeydown:(0,r.unref)(la),onClick:a[3]||(a[3]=(0,r.withModifiers)((function(e){return(0,r.unref)(s)(e.target)}),["stop"]))},{default:(0,r.withCtx)((function(){return[ns,(0,r.createVNode)((0,r.unref)(Ro),{class:"w-4 h-4 pointer-events-none"})]})),_:2},1032,["data-toggle-id","onKeydown"])]),(0,r.createVNode)(r.Transition,{"leave-active-class":"transition ease-in duration-100","leave-from-class":"opacity-100 scale-100","leave-to-class":"opacity-0 scale-90","enter-active-class":"transition ease-out duration-100","enter-from-class":"opacity-0 scale-90","enter-to-class":"opacity-100 scale-100"},{default:(0,r.withCtx)((function(){return[(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(Eo),{static:"",as:"div",class:(0,r.normalizeClass)(["dropdown w-48",[(0,r.unref)(l)[e.identifier]]])},{default:(0,r.withCtx)((function(){return[(0,r.createElementVNode)("div",rs,[(0,r.createVNode)((0,r.unref)(xo),{onClick:(0,r.withModifiers)((function(t){return(0,r.unref)(i).clearCacheForFolder(e)}),["stop","prevent"])},{default:(0,r.withCtx)((function(t){var n=t.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([n?"active":""])},[(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(Lo),{class:"w-4 h-4 mr-2"},null,512),[[r.vShow,!(0,r.unref)(i).clearingCache[e.identifier]]]),(0,r.withDirectives)((0,r.createVNode)(Zi,{class:"w-4 h-4 mr-2"},null,512),[[r.vShow,(0,r.unref)(i).clearingCache[e.identifier]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",null,"Clear indices",512),[[r.vShow,!(0,r.unref)(i).cacheRecentlyCleared[e.identifier]&&!(0,r.unref)(i).clearingCache[e.identifier]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",null,"Clearing...",512),[[r.vShow,!(0,r.unref)(i).cacheRecentlyCleared[e.identifier]&&(0,r.unref)(i).clearingCache[e.identifier]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",os,"Indices cleared",512),[[r.vShow,(0,r.unref)(i).cacheRecentlyCleared[e.identifier]]])],2)]})),_:2},1032,["onClick"]),e.can_download?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(xo),{key:0},{default:(0,r.withCtx)((function(t){var n=t.active;return[(0,r.createElementVNode)("a",{href:e.download_url,download:"",onClick:a[4]||(a[4]=(0,r.withModifiers)((function(){}),["stop"])),class:(0,r.normalizeClass)([n?"active":""])},[(0,r.createVNode)((0,r.unref)(Ao),{class:"w-4 h-4 mr-2"}),(0,r.createTextVNode)(" Download ")],10,is)]})),_:2},1024)):(0,r.createCommentVNode)("",!0),e.can_delete?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:1},[as,(0,r.createVNode)((0,r.unref)(xo),null,{default:(0,r.withCtx)((function(t){var n=t.active;return[(0,r.createElementVNode)("button",{onClick:(0,r.withModifiers)((function(t){return c(e)}),["stop"]),disabled:(0,r.unref)(i).deleting[e.identifier],class:(0,r.normalizeClass)([n?"active":""])},[(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(No),{class:"w-4 h-4 mr-2"},null,512),[[r.vShow,!(0,r.unref)(i).deleting[e.identifier]]]),(0,r.withDirectives)((0,r.createVNode)(Zi,null,null,512),[[r.vShow,(0,r.unref)(i).deleting[e.identifier]]]),(0,r.createTextVNode)(" Delete ")],10,ls)]})),_:2},1024)],64)):(0,r.createCommentVNode)("",!0)])]})),_:2},1032,["class"]),[[r.vShow,n]])]})),_:2},1024)],10,Wl)]})),_:2},1024),(0,r.withDirectives)((0,r.createElementVNode)("div",ss,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(e.files||[],(function(e){return(0,r.openBlock)(),(0,r.createBlock)(ka,{key:e.identifier,"log-file":e,onClick:function(r){return o=e.identifier,void(n.query.file&&n.query.file===o?Hi(t,"file",null):Hi(t,"file",o));var o}},null,8,["log-file","onClick"])})),128))],512),[[r.vShow,(0,r.unref)(i).isOpen(e)]])],8,ql)})),128)),0===(0,r.unref)(i).folders.length?((0,r.openBlock)(),(0,r.createElementBlock)("div",cs,[us,(0,r.createElementVNode)("div",fs,[(0,r.createElementVNode)("button",{onClick:a[5]||(a[5]=(0,r.withModifiers)((function(e){return(0,r.unref)(i).loadFolders()}),["prevent"])),class:"inline-flex items-center px-4 py-2 text-left text-sm bg-white hover:bg-gray-50 outline-brand-500 dark:outline-brand-800 text-gray-900 dark:text-gray-200 rounded-md dark:bg-gray-700 dark:hover:bg-gray-600"},[(0,r.createVNode)((0,r.unref)(jo),{class:"w-4 h-4 mr-1.5"}),(0,r.createTextVNode)(" Refresh file list ")])])])):(0,r.createCommentVNode)("",!0)],32),ds,(0,r.withDirectives)((0,r.createElementVNode)("div",ps,[(0,r.createElementVNode)("div",hs,[(0,r.createVNode)(Zi,{class:"w-14 h-14"})])],512),[[r.vShow,(0,r.unref)(i).loading]])])])}}},ms=vs;var gs=n(598),ys=n(462),bs=n(640),ws=n(307),Cs=n(36),_s=n(452),Es=n(683),xs={class:"pagination"},ks={class:"previous"},Ss=["disabled"],Os=(0,r.createElementVNode)("span",{class:"sm:hidden"},"Previous page",-1),Ns={class:"sm:hidden border-transparent text-gray-500 dark:text-gray-400 border-t-2 pt-3 px-4 inline-flex items-center text-sm font-medium"},Ps={class:"pages"},Ts={key:0,class:"border-brand-500 text-brand-600 dark:border-brand-600 dark:text-brand-500","aria-current":"page"},Vs={key:1},Rs=["onClick"],Ls={class:"next"},As=["disabled"],js=(0,r.createElementVNode)("span",{class:"sm:hidden"},"Next page",-1);const Bs={__name:"Pagination",props:{loading:{type:Boolean,required:!0},short:{type:Boolean,default:!1}},setup:function(e){var t=Li(),n=Nr(),o=Pr(),i=((0,r.computed)((function(){return Number(o.query.page)||1})),function(e){e<1&&(e=1),t.pagination&&e>t.pagination.last_page&&(e=t.pagination.last_page),Hi(n,"page",e>1?Number(e):null)}),a=function(){return i(t.page+1)},l=function(){return i(t.page-1)};return function(n,o){return(0,r.openBlock)(),(0,r.createElementBlock)("nav",xs,[(0,r.createElementVNode)("div",ks,[1!==(0,r.unref)(t).page?((0,r.openBlock)(),(0,r.createElementBlock)("button",{key:0,onClick:l,disabled:e.loading,rel:"prev"},[(0,r.createVNode)((0,r.unref)(So),{class:"h-5 w-5"}),Os],8,Ss)):(0,r.createCommentVNode)("",!0)]),(0,r.createElementVNode)("div",Ns,[(0,r.createElementVNode)("span",null,(0,r.toDisplayString)((0,r.unref)(t).page),1)]),(0,r.createElementVNode)("div",Ps,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(e.short?(0,r.unref)(t).linksShort:(0,r.unref)(t).links,(function(e){return(0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,null,[e.active?((0,r.openBlock)(),(0,r.createElementBlock)("button",Ts,(0,r.toDisplayString)(Number(e.label).toLocaleString()),1)):"..."===e.label?((0,r.openBlock)(),(0,r.createElementBlock)("span",Vs,(0,r.toDisplayString)(e.label),1)):((0,r.openBlock)(),(0,r.createElementBlock)("button",{key:2,onClick:function(t){return i(Number(e.label))},class:"border-transparent text-gray-500 dark:text-gray-400 hover:text-gray-700 hover:border-gray-300 dark:hover:text-gray-300 dark:hover:border-gray-400"},(0,r.toDisplayString)(Number(e.label).toLocaleString()),9,Rs))],64)})),256))]),(0,r.createElementVNode)("div",Ls,[(0,r.unref)(t).hasMorePages?((0,r.openBlock)(),(0,r.createElementBlock)("button",{key:0,onClick:a,disabled:e.loading,rel:"next"},[js,(0,r.createVNode)((0,r.unref)(Es),{class:"h-5 w-5"})],8,As)):(0,r.createCommentVNode)("",!0)])])}}},Is=Bs;var Ms=n(246),Fs={class:"flex items-center"},Ds={class:"opacity-90 mr-1"},Us={class:"font-semibold"},$s={class:"opacity-90 mr-1"},Hs={class:"font-semibold"},zs={key:2,class:"opacity-90"},qs={key:3,class:"opacity-90"},Ws={class:"py-2"},Ks={class:"label flex justify-between"},Gs={key:0,class:"no-results"},Zs={class:"flex-1 inline-flex justify-between"},Ys={class:"log-count"};const Js={__name:"LevelButtons",setup:function(e){var t=Mi(),n=ji();return(0,r.watch)((function(){return n.selectedLevels}),(function(){return t.loadLogs()})),function(e,o){return(0,r.openBlock)(),(0,r.createElementBlock)("div",Fs,[(0,r.createVNode)((0,r.unref)(Co),{as:"div",class:"mr-5 relative log-levels-selector"},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(_o),{as:"button",id:"severity-dropdown-toggle",class:(0,r.normalizeClass)(["dropdown-toggle badge none",(0,r.unref)(n).levelsSelected.length>0?"active":""])},{default:(0,r.withCtx)((function(){return[(0,r.unref)(n).levelsSelected.length>2?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:0},[(0,r.createElementVNode)("span",Ds,(0,r.toDisplayString)((0,r.unref)(n).totalResultsSelected.toLocaleString()+((0,r.unref)(t).hasMoreResults?"+":""))+" entries in",1),(0,r.createElementVNode)("strong",Us,(0,r.toDisplayString)((0,r.unref)(n).levelsSelected[0].level_name)+" + "+(0,r.toDisplayString)((0,r.unref)(n).levelsSelected.length-1)+" more",1)],64)):(0,r.unref)(n).levelsSelected.length>0?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:1},[(0,r.createElementVNode)("span",$s,(0,r.toDisplayString)((0,r.unref)(n).totalResultsSelected.toLocaleString()+((0,r.unref)(t).hasMoreResults?"+":""))+" entries in",1),(0,r.createElementVNode)("strong",Hs,(0,r.toDisplayString)((0,r.unref)(n).levelsSelected.map((function(e){return e.level_name})).join(", ")),1)],64)):(0,r.unref)(n).levelsFound.length>0?((0,r.openBlock)(),(0,r.createElementBlock)("span",zs,(0,r.toDisplayString)((0,r.unref)(n).totalResults.toLocaleString()+((0,r.unref)(t).hasMoreResults?"+":""))+" entries found. None selected",1)):((0,r.openBlock)(),(0,r.createElementBlock)("span",qs,"No entries found")),(0,r.createVNode)((0,r.unref)(Ms),{class:"w-4 h-4"})]})),_:1},8,["class"]),(0,r.createVNode)(r.Transition,{"leave-active-class":"transition ease-in duration-100","leave-from-class":"opacity-100 scale-100","leave-to-class":"opacity-0 scale-90","enter-active-class":"transition ease-out duration-100","enter-from-class":"opacity-0 scale-90","enter-to-class":"opacity-100 scale-100"},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(Eo),{as:"div",class:"dropdown down left min-w-[240px]"},{default:(0,r.withCtx)((function(){return[(0,r.createElementVNode)("div",Ws,[(0,r.createElementVNode)("div",Ks,[(0,r.createTextVNode)(" Severity "),(0,r.unref)(n).levelsFound.length>0?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:0},[(0,r.unref)(n).levelsSelected.length===(0,r.unref)(n).levelsFound.length?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(xo),{key:0,onClick:(0,r.withModifiers)((0,r.unref)(n).deselectAllLevels,["stop"])},{default:(0,r.withCtx)((function(e){var t=e.active;return[(0,r.createElementVNode)("a",{class:(0,r.normalizeClass)(["inline-link px-2 -mr-2 py-1 -my-1 rounded-md cursor-pointer text-brand-700 dark:text-brand-500 font-normal",[t?"active":""]])}," Deselect all ",2)]})),_:1},8,["onClick"])):((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(xo),{key:1,onClick:(0,r.withModifiers)((0,r.unref)(n).selectAllLevels,["stop"])},{default:(0,r.withCtx)((function(e){var t=e.active;return[(0,r.createElementVNode)("a",{class:(0,r.normalizeClass)(["inline-link px-2 -mr-2 py-1 -my-1 rounded-md cursor-pointer text-brand-700 dark:text-brand-500 font-normal",[t?"active":""]])}," Select all ",2)]})),_:1},8,["onClick"]))],64)):(0,r.createCommentVNode)("",!0)]),0===(0,r.unref)(n).levelsFound.length?((0,r.openBlock)(),(0,r.createElementBlock)("div",Gs,"There are no severity filters to display because no entries have been found.")):((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,{key:1},(0,r.renderList)((0,r.unref)(n).levelsFound,(function(e){return(0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(xo),{onClick:(0,r.withModifiers)((function(t){return(0,r.unref)(n).toggleLevel(e.level)}),["stop","prevent"])},{default:(0,r.withCtx)((function(t){var n=t.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([n?"active":""])},[(0,r.createVNode)(ja,{class:"checkmark mr-2.5",checked:e.selected},null,8,["checked"]),(0,r.createElementVNode)("span",Zs,[(0,r.createElementVNode)("span",{class:(0,r.normalizeClass)(["log-level",e.level_class])},(0,r.toDisplayString)(e.level_name),3),(0,r.createElementVNode)("span",Ys,(0,r.toDisplayString)(Number(e.count).toLocaleString()),1)])],2)]})),_:2},1032,["onClick"])})),256))])]})),_:1})]})),_:1})]})),_:1})])}}};var Qs=n(447),Xs={class:"flex-1"},ec={class:"prefix-icon"},tc=(0,r.createElementVNode)("label",{for:"query",class:"sr-only"},"Search",-1),nc={class:"relative flex-1 m-1"},rc=["onKeydown"],oc={class:"clear-search"},ic={class:"submit-search"},ac={key:0,disabled:"disabled"},lc={class:"hidden xl:inline ml-1"},sc={class:"hidden xl:inline ml-1"},cc={class:"relative h-0 w-full overflow-visible"},uc=["innerHTML"];const fc={__name:"SearchInput",setup:function(e){var t=Ri(),n=Mi(),o=Nr(),i=Pr(),a=(0,r.computed)((function(){return n.selectedFile})),l=(0,r.ref)(i.query.query||""),s=function(){var e;Hi(o,"query",""===l.value?null:l.value),null===(e=document.getElementById("query-submit"))||void 0===e||e.focus()},c=function(){l.value="",s()};return(0,r.watch)((function(){return i.query.query}),(function(e){return l.value=e||""})),function(e,o){return(0,r.openBlock)(),(0,r.createElementBlock)("div",Xs,[(0,r.createElementVNode)("div",{class:(0,r.normalizeClass)(["search",{"has-error":(0,r.unref)(n).error}])},[(0,r.createElementVNode)("div",ec,[tc,(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(Qs),{class:"h-4 w-4"},null,512),[[r.vShow,!(0,r.unref)(n).hasMoreResults]]),(0,r.withDirectives)((0,r.createVNode)(Zi,{class:"w-4 h-4"},null,512),[[r.vShow,(0,r.unref)(n).hasMoreResults]])]),(0,r.createElementVNode)("div",nc,[(0,r.withDirectives)((0,r.createElementVNode)("input",{"onUpdate:modelValue":o[0]||(o[0]=function(e){return l.value=e}),name:"query",id:"query",type:"text",onKeydown:[(0,r.withKeys)(s,["enter"]),o[1]||(o[1]=(0,r.withKeys)((function(e){return e.target.blur()}),["esc"]))]},null,40,rc),[[r.vModelText,l.value]]),(0,r.withDirectives)((0,r.createElementVNode)("div",oc,[(0,r.createElementVNode)("button",{onClick:c},[(0,r.createVNode)((0,r.unref)(ko),{class:"h-4 w-4"})])],512),[[r.vShow,(0,r.unref)(t).hasQuery]])]),(0,r.createElementVNode)("div",ic,[(0,r.unref)(n).hasMoreResults?((0,r.openBlock)(),(0,r.createElementBlock)("button",ac,[(0,r.createElementVNode)("span",null,[(0,r.createTextVNode)("Searching"),(0,r.createElementVNode)("span",lc,(0,r.toDisplayString)((0,r.unref)(a)?(0,r.unref)(a).name:"all files"),1),(0,r.createTextVNode)("...")])])):((0,r.openBlock)(),(0,r.createElementBlock)("button",{key:1,onClick:s,id:"query-submit"},[(0,r.createElementVNode)("span",null,[(0,r.createTextVNode)("Search"),(0,r.createElementVNode)("span",sc,(0,r.toDisplayString)((0,r.unref)(a)?'in "'+(0,r.unref)(a).name+'"':"all files"),1)]),(0,r.createVNode)((0,r.unref)(Es),{class:"h-4 w-4"})]))])],2),(0,r.createElementVNode)("div",cc,[(0,r.withDirectives)((0,r.createElementVNode)("div",{class:"search-progress-bar",style:(0,r.normalizeStyle)({width:(0,r.unref)(n).percentScanned+"%"})},null,4),[[r.vShow,(0,r.unref)(n).hasMoreResults]])]),(0,r.withDirectives)((0,r.createElementVNode)("p",{class:"mt-1 text-red-600 text-xs",innerHTML:(0,r.unref)(n).error},null,8,uc),[[r.vShow,(0,r.unref)(n).error]])])}}},dc=fc;var pc=n(923),hc=n(968),vc=["onClick"],mc={class:"sr-only"},gc={class:"text-green-600 dark:text-green-500 hidden md:inline"};const yc={__name:"LogCopyButton",props:{log:{type:Object,required:!0}},setup:function(e){var t=e,n=(0,r.ref)(!1),o=function(){$i(t.log.url),n.value=!0,setTimeout((function(){return n.value=!1}),1e3)};return function(t,i){return(0,r.openBlock)(),(0,r.createElementBlock)("button",{class:"log-link group",onClick:(0,r.withModifiers)(o,["stop"]),onKeydown:i[0]||(i[0]=function(){return(0,r.unref)(ia)&&(0,r.unref)(ia).apply(void 0,arguments)}),title:"Copy link to this log entry"},[(0,r.createElementVNode)("span",mc,"Log index "+(0,r.toDisplayString)(e.log.index)+". Click the button to copy link to this log entry.",1),(0,r.withDirectives)((0,r.createElementVNode)("span",{class:"hidden md:inline group-hover:underline"},(0,r.toDisplayString)(Number(e.log.index).toLocaleString()),513),[[r.vShow,!n.value]]),(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(pc),{class:"md:opacity-75 group-hover:opacity-100"},null,512),[[r.vShow,!n.value]]),(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(hc),{class:"text-green-600 dark:text-green-500 md:hidden"},null,512),[[r.vShow,n.value]]),(0,r.withDirectives)((0,r.createElementVNode)("span",gc,"Copied!",512),[[r.vShow,n.value]])],40,vc)}}};var bc={class:"h-full w-full py-5 log-list"},wc={class:"flex flex-col h-full w-full md:mx-3 mb-4"},Cc={class:"md:px-4 mb-4 flex flex-col-reverse lg:flex-row items-start"},_c={key:0,class:"flex items-center mr-5 mt-3 md:mt-0"},Ec={class:"w-full lg:w-auto flex-1 flex justify-end min-h-[38px]"},xc={class:"hidden md:block ml-5"},kc={class:"hidden md:block"},Sc={class:"md:hidden"},Oc={type:"button",class:"menu-button"},Nc={key:0,class:"relative overflow-hidden h-full text-sm"},Pc={class:"mx-2 mt-1 mb-2 text-right lg:mx-0 lg:mt-0 lg:mb-0 lg:absolute lg:top-2 lg:right-6 z-20 text-sm text-gray-500 dark:text-gray-400"},Tc=(0,r.createElementVNode)("label",{for:"log-sort-direction",class:"sr-only"},"Sort direction",-1),Vc=[(0,r.createElementVNode)("option",{value:"desc"},"Newest first",-1),(0,r.createElementVNode)("option",{value:"asc"},"Oldest first",-1)],Rc=(0,r.createElementVNode)("label",{for:"items-per-page",class:"sr-only"},"Items per page",-1),Lc=[(0,r.createStaticVNode)('',6)],Ac={class:"inline-block min-w-full max-w-full align-middle"},jc={class:"table-fixed min-w-full max-w-full border-separate",style:{"border-spacing":"0"}},Bc=(0,r.createElementVNode)("thead",{class:"bg-gray-50"},[(0,r.createElementVNode)("tr",null,[(0,r.createElementVNode)("th",{scope:"col",class:"w-[120px] hidden lg:table-cell"},[(0,r.createElementVNode)("div",{class:"pl-2"},"Level")]),(0,r.createElementVNode)("th",{scope:"col",class:"w-[180px] hidden lg:table-cell"},"Time"),(0,r.createElementVNode)("th",{scope:"col",class:"w-[110px] hidden lg:table-cell"},"Env"),(0,r.createElementVNode)("th",{scope:"col",class:"hidden lg:table-cell"},"Description"),(0,r.createElementVNode)("th",{scope:"col",class:"hidden lg:table-cell"},[(0,r.createElementVNode)("span",{class:"sr-only"},"Log index")])])],-1),Ic=["id","data-index"],Mc=["onClick"],Fc={class:"log-level truncate"},Dc={class:"flex items-center lg:pl-2"},Uc=["aria-expanded"],$c={key:0,class:"sr-only"},Hc={key:1,class:"sr-only"},zc={class:"w-full h-full group-hover:hidden group-focus:hidden"},qc={class:"w-full h-full hidden group-hover:inline-block group-focus:inline-block"},Wc={class:"whitespace-nowrap text-gray-900 dark:text-gray-200"},Kc=["innerHTML"],Gc={class:"lg:hidden"},Zc=["innerHTML"],Yc=["innerHTML"],Jc={class:"whitespace-nowrap text-gray-500 dark:text-gray-300 dark:opacity-90 text-xs hidden lg:table-cell"},Qc={colspan:"6"},Xc={class:"lg:hidden flex justify-between px-2 pt-2 pb-1 text-xs"},eu={class:"flex-1"},tu=(0,r.createElementVNode)("span",{class:"font-semibold"},"Time:",-1),nu={class:"flex-1"},ru=(0,r.createElementVNode)("span",{class:"font-semibold"},"Env:",-1),ou=["innerHTML"],iu=(0,r.createElementVNode)("p",{class:"mx-2 lg:mx-8 pt-2 border-t font-semibold text-gray-700 dark:text-gray-400"},"Context:",-1),au=["innerHTML"],lu={key:1,class:"py-4 px-8 text-gray-500 italic"},su={key:1,class:"log-group"},cu={colspan:"6"},uu={class:"bg-white text-gray-600 dark:bg-gray-800 dark:text-gray-200 p-12"},fu=(0,r.createElementVNode)("div",{class:"text-center font-semibold"},"No results",-1),du={class:"text-center mt-6"},pu=["onClick"],hu={class:"absolute inset-0 top-9 md:px-4 z-20"},vu={class:"rounded-md bg-white text-gray-800 dark:bg-gray-700 dark:text-gray-200 opacity-90 w-full h-full flex items-center justify-center"},mu={key:1,class:"flex h-full items-center justify-center text-gray-600 dark:text-gray-400"},gu={key:0},yu={key:1},bu={key:2,class:"md:px-4"},wu={class:"hidden lg:block"},Cu={class:"lg:hidden"};const _u={__name:"LogList",setup:function(e){var t=Nr(),n=Fi(),o=Mi(),i=Ri(),a=Li(),l=ji(),s=(0,r.computed)((function(){return n.selectedFile||String(i.query||"").trim().length>0})),c=(0,r.computed)((function(){return o.logs&&(o.logs.length>0||!o.hasMoreResults)&&(o.selectedFile||i.hasQuery)})),u=function(e){return JSON.stringify(e,(function(e,t){return"string"==typeof t?t.replaceAll("\n","
"):t}),2)},f=function(){Hi(t,"file",null)},d=function(){Hi(t,"query",null)};return(0,r.watch)([function(){return o.direction},function(){return o.resultsPerPage}],(function(){return o.loadLogs()})),function(e,t){var p,h;return(0,r.openBlock)(),(0,r.createElementBlock)("div",bc,[(0,r.createElementVNode)("div",wc,[(0,r.createElementVNode)("div",Cc,[(0,r.unref)(s)?((0,r.openBlock)(),(0,r.createElementBlock)("div",_c,[(0,r.createVNode)(Js)])):(0,r.createCommentVNode)("",!0),(0,r.createElementVNode)("div",Ec,[(0,r.createVNode)(dc),(0,r.createElementVNode)("div",xc,[(0,r.createElementVNode)("button",{onClick:t[0]||(t[0]=function(e){return(0,r.unref)(o).loadLogs()}),id:"reload-logs-button",title:"Reload current results",class:"menu-button"},[(0,r.createVNode)((0,r.unref)(gs),{class:"w-5 h-5"})])]),(0,r.createElementVNode)("div",kc,[(0,r.createVNode)(Qa,{class:"ml-2",id:"desktop-site-settings"})]),(0,r.createElementVNode)("div",Sc,[(0,r.createElementVNode)("button",Oc,[(0,r.createVNode)((0,r.unref)(ys),{class:"w-5 h-5 ml-2",onClick:(0,r.unref)(n).toggleSidebar},null,8,["onClick"])])])])]),(0,r.unref)(c)?((0,r.openBlock)(),(0,r.createElementBlock)("div",Nc,[(0,r.createElementVNode)("div",Pc,[Tc,(0,r.withDirectives)((0,r.createElementVNode)("select",{id:"log-sort-direction","onUpdate:modelValue":t[1]||(t[1]=function(e){return(0,r.unref)(o).direction=e}),class:"select mr-4"},Vc,512),[[r.vModelSelect,(0,r.unref)(o).direction]]),Rc,(0,r.withDirectives)((0,r.createElementVNode)("select",{id:"items-per-page","onUpdate:modelValue":t[2]||(t[2]=function(e){return(0,r.unref)(o).resultsPerPage=e}),class:"select"},Lc,512),[[r.vModelSelect,(0,r.unref)(o).resultsPerPage]])]),(0,r.createElementVNode)("div",{class:"log-item-container h-full overflow-y-auto md:px-4",onScroll:t[5]||(t[5]=function(e){return(0,r.unref)(o).onScroll(e)})},[(0,r.createElementVNode)("div",Ac,[(0,r.createElementVNode)("table",jc,[Bc,(0,r.unref)(o).logs&&(0,r.unref)(o).logs.length>0?((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,{key:0},(0,r.renderList)((0,r.unref)(o).logs,(function(n,a){return(0,r.openBlock)(),(0,r.createElementBlock)("tbody",{key:a,class:(0,r.normalizeClass)([0===a?"first":"","log-group"]),id:"tbody-".concat(a),"data-index":a},[(0,r.createElementVNode)("tr",{onClick:function(e){return(0,r.unref)(o).toggle(a)},class:(0,r.normalizeClass)(["log-item group",n.level_class,(0,r.unref)(o).isOpen(a)?"active":"",(0,r.unref)(o).shouldBeSticky(a)?"sticky z-2":""]),style:(0,r.normalizeStyle)({top:(0,r.unref)(o).stackTops[a]||0})},[(0,r.createElementVNode)("td",Fc,[(0,r.createElementVNode)("div",Dc,[(0,r.createElementVNode)("button",{"aria-expanded":(0,r.unref)(o).isOpen(a),onKeydown:t[3]||(t[3]=function(){return(0,r.unref)(oa)&&(0,r.unref)(oa).apply(void 0,arguments)}),class:"log-level-icon mr-2 opacity-75 w-5 h-5 hidden lg:block group focus:opacity-100 focus:outline-none focus:ring-2 focus:ring-brand-500 rounded-md"},[(0,r.unref)(o).isOpen(a)?(0,r.createCommentVNode)("",!0):((0,r.openBlock)(),(0,r.createElementBlock)("span",$c,"Expand log entry")),(0,r.unref)(o).isOpen(a)?((0,r.openBlock)(),(0,r.createElementBlock)("span",Hc,"Collapse log entry")):(0,r.createCommentVNode)("",!0),(0,r.createElementVNode)("span",zc,["danger"===n.level_class?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(bs),{key:0})):"warning"===n.level_class?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(ws),{key:1})):((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(Cs),{key:2}))]),(0,r.createElementVNode)("span",qc,[(0,r.createVNode)((0,r.unref)(_s),{class:(0,r.normalizeClass)([(0,r.unref)(o).isOpen(a)?"rotate-90":"","transition duration-100"])},null,8,["class"])])],40,Uc),(0,r.createElementVNode)("span",null,(0,r.toDisplayString)(n.level_name),1)])]),(0,r.createElementVNode)("td",Wc,[(0,r.createElementVNode)("span",{class:"hidden lg:inline",innerHTML:(0,r.unref)(Di)(n.datetime,(0,r.unref)(i).query)},null,8,Kc),(0,r.createElementVNode)("span",Gc,(0,r.toDisplayString)(n.time),1)]),(0,r.createElementVNode)("td",{class:"whitespace-nowrap text-gray-500 dark:text-gray-300 dark:opacity-90 hidden lg:table-cell",innerHTML:(0,r.unref)(Di)(n.environment,(0,r.unref)(i).query)},null,8,Zc),(0,r.createElementVNode)("td",{class:"max-w-[1px] w-full truncate text-gray-500 dark:text-gray-300 dark:opacity-90",innerHTML:(0,r.unref)(Di)(n.text,(0,r.unref)(i).query)},null,8,Yc),(0,r.createElementVNode)("td",Jc,[(0,r.createVNode)(yc,{log:n,class:"pr-2 large-screen"},null,8,["log"])])],14,Mc),(0,r.withDirectives)((0,r.createElementVNode)("tr",null,[(0,r.createElementVNode)("td",Qc,[(0,r.createElementVNode)("div",Xc,[(0,r.createElementVNode)("div",eu,[tu,(0,r.createTextVNode)(" "+(0,r.toDisplayString)(n.datetime),1)]),(0,r.createElementVNode)("div",nu,[ru,(0,r.createTextVNode)(" "+(0,r.toDisplayString)(n.environment),1)]),(0,r.createElementVNode)("div",null,[(0,r.createVNode)(yc,{log:n},null,8,["log"])])]),(0,r.createElementVNode)("pre",{class:"log-stack",innerHTML:(0,r.unref)(Di)(n.full_text,(0,r.unref)(i).query)},null,8,ou),n.contexts&&n.contexts.length>0?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:0},[iu,((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(n.contexts,(function(e){return(0,r.openBlock)(),(0,r.createElementBlock)("pre",{class:"log-stack",innerHTML:u(e)},null,8,au)})),256))],64)):(0,r.createCommentVNode)("",!0),n.full_text_incomplete?((0,r.openBlock)(),(0,r.createElementBlock)("div",lu,[(0,r.createTextVNode)(" The contents of this log have been cut short to the first "+(0,r.toDisplayString)(e.LogViewer.max_log_size_formatted)+". The full size of this log entry is ",1),(0,r.createElementVNode)("strong",null,(0,r.toDisplayString)(n.full_text_length_formatted),1)])):(0,r.createCommentVNode)("",!0)])],512),[[r.vShow,(0,r.unref)(o).isOpen(a)]])],10,Ic)})),128)):((0,r.openBlock)(),(0,r.createElementBlock)("tbody",su,[(0,r.createElementVNode)("tr",null,[(0,r.createElementVNode)("td",cu,[(0,r.createElementVNode)("div",uu,[fu,(0,r.createElementVNode)("div",du,[(null===(p=(0,r.unref)(i).query)||void 0===p?void 0:p.length)>0?((0,r.openBlock)(),(0,r.createElementBlock)("button",{key:0,class:"px-3 py-2 border dark:border-gray-700 text-gray-800 dark:text-gray-200 hover:border-brand-600 dark:hover:border-brand-700 rounded-md",onClick:d},"Clear search query ")):(0,r.createCommentVNode)("",!0),(null===(h=(0,r.unref)(i).query)||void 0===h?void 0:h.length)>0&&(0,r.unref)(n).selectedFile?((0,r.openBlock)(),(0,r.createElementBlock)("button",{key:1,class:"px-3 ml-3 py-2 border dark:border-gray-700 text-gray-800 dark:text-gray-200 hover:border-brand-600 dark:hover:border-brand-700 rounded-md",onClick:(0,r.withModifiers)(f,["prevent"])},"Search all files ",8,pu)):(0,r.createCommentVNode)("",!0),(0,r.unref)(l).levelsFound.length>0&&0===(0,r.unref)(l).levelsSelected.length?((0,r.openBlock)(),(0,r.createElementBlock)("button",{key:2,class:"px-3 ml-3 py-2 border dark:border-gray-700 text-gray-800 dark:text-gray-200 hover:border-brand-600 dark:hover:border-brand-700 rounded-md",onClick:t[4]||(t[4]=function(){var e;return(0,r.unref)(l).selectAllLevels&&(e=(0,r.unref)(l)).selectAllLevels.apply(e,arguments)})},"Select all severities ")):(0,r.createCommentVNode)("",!0)])])])])]))])])],32),(0,r.withDirectives)((0,r.createElementVNode)("div",hu,[(0,r.createElementVNode)("div",vu,[(0,r.createVNode)(Zi,{class:"w-14 h-14"})])],512),[[r.vShow,(0,r.unref)(o).loading&&(!(0,r.unref)(o).isMobile||!(0,r.unref)(n).sidebarOpen)]])])):((0,r.openBlock)(),(0,r.createElementBlock)("div",mu,[(0,r.unref)(o).hasMoreResults?((0,r.openBlock)(),(0,r.createElementBlock)("span",gu,"Searching...")):((0,r.openBlock)(),(0,r.createElementBlock)("span",yu,"Select a file or start searching..."))])),(0,r.unref)(c)&&(0,r.unref)(a).hasPages?((0,r.openBlock)(),(0,r.createElementBlock)("div",bu,[(0,r.createElementVNode)("div",wu,[(0,r.createVNode)(Is,{loading:(0,r.unref)(o).loading},null,8,["loading"])]),(0,r.createElementVNode)("div",Cu,[(0,r.createVNode)(Is,{loading:(0,r.unref)(o).loading,short:!0},null,8,["loading"])])])):(0,r.createCommentVNode)("",!0)])])}}},Eu=_u;var xu={width:"4169",height:"913",viewBox:"0 0 4169 913",fill:"none",xmlns:"http://www.w3.org/2000/svg"},ku=[(0,r.createStaticVNode)('',19)];const Su={},Ou=(0,Ki.Z)(Su,[["render",function(e,t){return(0,r.openBlock)(),(0,r.createElementBlock)("svg",xu,ku)}]]);function Nu(){let e=[],t=[],n={enqueue(e){t.push(e)},addEventListener:(e,t,r,o)=>(e.addEventListener(t,r,o),n.add((()=>e.removeEventListener(t,r,o)))),requestAnimationFrame(...e){let t=requestAnimationFrame(...e);n.add((()=>cancelAnimationFrame(t)))},nextFrame(...e){n.requestAnimationFrame((()=>{n.requestAnimationFrame(...e)}))},setTimeout(...e){let t=setTimeout(...e);n.add((()=>clearTimeout(t)))},add(t){e.push(t)},style(e,t,n){let r=e.style.getPropertyValue(t);return Object.assign(e.style,{[t]:n}),this.add((()=>{Object.assign(e.style,{[t]:r})}))},dispose(){for(let t of e.splice(0))t()},async workQueue(){for(let e of t.splice(0))await e()}};return n}function Pu(e,...t){e&&t.length>0&&e.classList.add(...t)}function Tu(e,...t){e&&t.length>0&&e.classList.remove(...t)}var Vu=(e=>(e.Finished="finished",e.Cancelled="cancelled",e))(Vu||{});function Ru(e,t,n,r,o,i){let a=Nu(),l=void 0!==i?function(e){let t={called:!1};return(...n)=>{if(!t.called)return t.called=!0,e(...n)}}(i):()=>{};return Tu(e,...o),Pu(e,...t,...n),a.nextFrame((()=>{Tu(e,...n),Pu(e,...r),a.add(function(e,t){let n=Nu();if(!e)return n.dispose;let{transitionDuration:r,transitionDelay:o}=getComputedStyle(e),[i,a]=[r,o].map((e=>{let[t=0]=e.split(",").filter(Boolean).map((e=>e.includes("ms")?parseFloat(e):1e3*parseFloat(e))).sort(((e,t)=>t-e));return t}));return 0!==i?n.setTimeout((()=>t("finished")),i+a):t("finished"),n.add((()=>t("cancelled"))),n.dispose}(e,(n=>(Tu(e,...r,...t),Pu(e,...o),l(n)))))})),a.add((()=>Tu(e,...t,...n,...r,...o))),a.add((()=>l("cancelled"))),a.dispose}function Lu(e=""){return e.split(" ").filter((e=>e.trim().length>1))}let Au=Symbol("TransitionContext");var ju=(e=>(e.Visible="visible",e.Hidden="hidden",e))(ju||{});let Bu=Symbol("NestingContext");function Iu(e){return"children"in e?Iu(e.children):e.value.filter((({state:e})=>"visible"===e)).length>0}function Mu(e){let t=(0,r.ref)([]),n=(0,r.ref)(!1);function o(r,o=Lr.Hidden){let i=t.value.findIndex((({id:e})=>e===r));-1!==i&&(Tr(o,{[Lr.Unmount](){t.value.splice(i,1)},[Lr.Hidden](){t.value[i].state="hidden"}}),!Iu(t)&&n.value&&(null==e||e()))}return(0,r.onMounted)((()=>n.value=!0)),(0,r.onUnmounted)((()=>n.value=!1)),{children:t,register:function(e){let n=t.value.find((({id:t})=>t===e));return n?"visible"!==n.state&&(n.state="visible"):t.value.push({id:e,state:"visible"}),()=>o(e,Lr.Unmount)},unregister:o}}let Fu=Rr.RenderStrategy,Du=(0,r.defineComponent)({props:{as:{type:[Object,String],default:"div"},show:{type:[Boolean],default:null},unmount:{type:[Boolean],default:!0},appear:{type:[Boolean],default:!1},enter:{type:[String],default:""},enterFrom:{type:[String],default:""},enterTo:{type:[String],default:""},entered:{type:[String],default:""},leave:{type:[String],default:""},leaveFrom:{type:[String],default:""},leaveTo:{type:[String],default:""}},emits:{beforeEnter:()=>!0,afterEnter:()=>!0,beforeLeave:()=>!0,afterLeave:()=>!0},setup(e,{emit:t,attrs:n,slots:o,expose:i}){if(null===(0,r.inject)(Au,null)&&null!==Zr())return()=>(0,r.h)($u,{...e,onBeforeEnter:()=>t("beforeEnter"),onAfterEnter:()=>t("afterEnter"),onBeforeLeave:()=>t("beforeLeave"),onAfterLeave:()=>t("afterLeave")},o);let a=(0,r.ref)(null),l=(0,r.ref)("visible"),s=(0,r.computed)((()=>e.unmount?Lr.Unmount:Lr.Hidden));i({el:a,$el:a});let{show:c,appear:u}=function(){let e=(0,r.inject)(Au,null);if(null===e)throw new Error("A is used but it is missing a parent .");return e}(),{register:f,unregister:d}=function(){let e=(0,r.inject)(Bu,null);if(null===e)throw new Error("A is used but it is missing a parent .");return e}(),p={value:!0},h=Dr(),v={value:!1},m=Mu((()=>{v.value||(l.value="hidden",d(h),t("afterLeave"))}));(0,r.onMounted)((()=>{let e=f(h);(0,r.onUnmounted)(e)})),(0,r.watchEffect)((()=>{if(s.value===Lr.Hidden&&h){if(c&&"visible"!==l.value)return void(l.value="visible");Tr(l.value,{hidden:()=>d(h),visible:()=>f(h)})}}));let g=Lu(e.enter),y=Lu(e.enterFrom),b=Lu(e.enterTo),w=Lu(e.entered),C=Lu(e.leave),_=Lu(e.leaveFrom),E=Lu(e.leaveTo);return(0,r.onMounted)((()=>{(0,r.watchEffect)((()=>{if("visible"===l.value){let e=zr(a);if(e instanceof Comment&&""===e.data)throw new Error("Did you forget to passthrough the `ref` to the actual DOM node?")}}))})),(0,r.onMounted)((()=>{(0,r.watch)([c],((e,n,r)=>{(function(e){let n=p.value&&!u.value,r=zr(a);!r||!(r instanceof HTMLElement)||n||(v.value=!0,c.value&&t("beforeEnter"),c.value||t("beforeLeave"),e(c.value?Ru(r,g,y,b,w,(e=>{v.value=!1,e===Vu.Finished&&t("afterEnter")})):Ru(r,C,_,E,w,(e=>{v.value=!1,e===Vu.Finished&&(Iu(m)||(l.value="hidden",d(h),t("afterLeave")))}))))})(r),p.value=!1}),{immediate:!0})})),(0,r.provide)(Bu,m),Yr((0,r.computed)((()=>Tr(l.value,{visible:Gr.Open,hidden:Gr.Closed})))),()=>{let{appear:t,show:i,enter:s,enterFrom:f,enterTo:d,entered:p,leave:h,leaveFrom:v,leaveTo:m,...b}=e,w={ref:a};return Ar({theirProps:{...b,...u&&c&&qr.isServer?{class:(0,r.normalizeClass)([b.class,...g,...y])}:{}},ourProps:w,slot:{},slots:o,attrs:n,features:Fu,visible:"visible"===l.value,name:"TransitionChild"})}}}),Uu=Du,$u=(0,r.defineComponent)({inheritAttrs:!1,props:{as:{type:[Object,String],default:"div"},show:{type:[Boolean],default:null},unmount:{type:[Boolean],default:!0},appear:{type:[Boolean],default:!1},enter:{type:[String],default:""},enterFrom:{type:[String],default:""},enterTo:{type:[String],default:""},entered:{type:[String],default:""},leave:{type:[String],default:""},leaveFrom:{type:[String],default:""},leaveTo:{type:[String],default:""}},emits:{beforeEnter:()=>!0,afterEnter:()=>!0,beforeLeave:()=>!0,afterLeave:()=>!0},setup(e,{emit:t,attrs:n,slots:o}){let i=Zr(),a=(0,r.computed)((()=>null===e.show&&null!==i?Tr(i.value,{[Gr.Open]:!0,[Gr.Closed]:!1}):e.show));(0,r.watchEffect)((()=>{if(![!0,!1].includes(a.value))throw new Error('A is used but it is missing a `:show="true | false"` prop.')}));let l=(0,r.ref)(a.value?"visible":"hidden"),s=Mu((()=>{l.value="hidden"})),c=(0,r.ref)(!0),u={show:a,appear:(0,r.computed)((()=>e.appear||!c.value))};return(0,r.onMounted)((()=>{(0,r.watchEffect)((()=>{c.value=!1,a.value?l.value="visible":Iu(s)||(l.value="hidden")}))})),(0,r.provide)(Bu,s),(0,r.provide)(Au,u),()=>{let i=Mr(e,["show","appear","unmount","onBeforeEnter","onBeforeLeave","onAfterEnter","onAfterLeave"]),a={unmount:e.unmount};return Ar({ourProps:{...a,as:"template"},theirProps:{},slot:{},slots:{...o,default:()=>[(0,r.h)(Uu,{onBeforeEnter:()=>t("beforeEnter"),onAfterEnter:()=>t("afterEnter"),onBeforeLeave:()=>t("beforeLeave"),onAfterLeave:()=>t("afterLeave"),...n,...a,...i},o.default)]},attrs:{},features:Fu,visible:"visible"===l.value,name:"Transition"})}}});var Hu=(e=>(e[e.Forwards=0]="Forwards",e[e.Backwards=1]="Backwards",e))(Hu||{});function zu(){let e=(0,r.ref)(0);return function(e,t,n){qr.isServer||(0,r.watchEffect)((r=>{window.addEventListener(e,t,n),r((()=>window.removeEventListener(e,t,n)))}))}("keydown",(t=>{"Tab"===t.key&&(e.value=t.shiftKey?1:0)})),e}function qu(e,t,n,o){qr.isServer||(0,r.watchEffect)((r=>{(e=null!=e?e:window).addEventListener(t,n,o),r((()=>e.removeEventListener(t,n,o)))}))}var Wu=(e=>(e[e.None=1]="None",e[e.InitialFocus=2]="InitialFocus",e[e.TabLock=4]="TabLock",e[e.FocusLock=8]="FocusLock",e[e.RestoreFocus=16]="RestoreFocus",e[e.All=30]="All",e))(Wu||{});let Ku=Object.assign((0,r.defineComponent)({name:"FocusTrap",props:{as:{type:[Object,String],default:"div"},initialFocus:{type:Object,default:null},features:{type:Number,default:30},containers:{type:Object,default:(0,r.ref)(new Set)}},inheritAttrs:!1,setup(e,{attrs:t,slots:n,expose:o}){let i=(0,r.ref)(null);o({el:i,$el:i});let a=(0,r.computed)((()=>Wr(i)));!function({ownerDocument:e},t){let n=(0,r.ref)(null);function o(){var t;n.value||(n.value=null==(t=e.value)?void 0:t.activeElement)}function i(){!n.value||(lo(n.value),n.value=null)}(0,r.onMounted)((()=>{(0,r.watch)(t,((e,t)=>{e!==t&&(e?o():i())}),{immediate:!0})})),(0,r.onUnmounted)(i)}({ownerDocument:a},(0,r.computed)((()=>Boolean(16&e.features))));let l=function({ownerDocument:e,container:t,initialFocus:n},o){let i=(0,r.ref)(null),a=(0,r.ref)(!1);return(0,r.onMounted)((()=>a.value=!0)),(0,r.onUnmounted)((()=>a.value=!1)),(0,r.onMounted)((()=>{(0,r.watch)([t,n,o],((r,l)=>{if(r.every(((e,t)=>(null==l?void 0:l[t])===e))||!o.value)return;let s=zr(t);!s||function(e){"function"==typeof queueMicrotask?queueMicrotask(e):Promise.resolve().then(e).catch((e=>setTimeout((()=>{throw e}))))}((()=>{var t,r;if(!a.value)return;let o=zr(n),l=null==(t=e.value)?void 0:t.activeElement;if(o){if(o===l)return void(i.value=l)}else if(s.contains(l))return void(i.value=l);o?lo(o):(fo(s,eo.First|eo.NoScroll),to.Error),i.value=null==(r=e.value)?void 0:r.activeElement}))}),{immediate:!0,flush:"post"})})),i}({ownerDocument:a,container:i,initialFocus:(0,r.computed)((()=>e.initialFocus))},(0,r.computed)((()=>Boolean(2&e.features))));!function({ownerDocument:e,container:t,containers:n,previousActiveElement:r},o){var i;qu(null==(i=e.value)?void 0:i.defaultView,"focus",(e=>{if(!o.value)return;let i=new Set(null==n?void 0:n.value);i.add(t);let a=r.value;if(!a)return;let l=e.target;l&&l instanceof HTMLElement?Gu(i,l)?(r.value=l,lo(l)):(e.preventDefault(),e.stopPropagation(),lo(a)):lo(r.value)}),!0)}({ownerDocument:a,container:i,containers:e.containers,previousActiveElement:l},(0,r.computed)((()=>Boolean(8&e.features))));let s=zu();function c(e){let t=zr(i);t&&Tr(s.value,{[Hu.Forwards]:()=>{fo(t,eo.First,{skipElements:[e.relatedTarget]})},[Hu.Backwards]:()=>{fo(t,eo.Last,{skipElements:[e.relatedTarget]})}})}let u=(0,r.ref)(!1);function f(e){"Tab"===e.key&&(u.value=!0,requestAnimationFrame((()=>{u.value=!1})))}function d(t){var n;let r=new Set(null==(n=e.containers)?void 0:n.value);r.add(i);let o=t.relatedTarget;o instanceof HTMLElement&&"true"!==o.dataset.headlessuiFocusGuard&&(Gu(r,o)||(u.value?fo(zr(i),Tr(s.value,{[Hu.Forwards]:()=>eo.Next,[Hu.Backwards]:()=>eo.Previous})|eo.WrapAround,{relativeTo:t.target}):t.target instanceof HTMLElement&&lo(t.target)))}return()=>{let o={ref:i,onKeydown:f,onFocusout:d},{features:a,initialFocus:l,containers:s,...u}=e;return(0,r.h)(r.Fragment,[Boolean(4&a)&&(0,r.h)(el,{as:"button",type:"button","data-headlessui-focus-guard":!0,onFocus:c,features:Xa.Focusable}),Ar({ourProps:o,theirProps:{...t,...u},slot:{},attrs:t,slots:n,name:"FocusTrap"}),Boolean(4&a)&&(0,r.h)(el,{as:"button",type:"button","data-headlessui-focus-guard":!0,onFocus:c,features:Xa.Focusable})])}}}),{features:Wu});function Gu(e,t){var n;for(let r of e)if(null!=(n=r.value)&&n.contains(t))return!0;return!1}let Zu="body > *",Yu=new Set,Ju=new Map;function Qu(e){e.setAttribute("aria-hidden","true"),e.inert=!0}function Xu(e){let t=Ju.get(e);!t||(null===t["aria-hidden"]?e.removeAttribute("aria-hidden"):e.setAttribute("aria-hidden",t["aria-hidden"]),e.inert=t.inert)}function ef(e,t=(0,r.ref)(!0)){(0,r.watchEffect)((n=>{if(!t.value||!e.value)return;let r=e.value,o=Wr(r);if(o){Yu.add(r);for(let e of Ju.keys())e.contains(r)&&(Xu(e),Ju.delete(e));o.querySelectorAll(Zu).forEach((e=>{if(e instanceof HTMLElement){for(let t of Yu)if(e.contains(t))return;1===Yu.size&&(Ju.set(e,{"aria-hidden":e.getAttribute("aria-hidden"),inert:e.inert}),Qu(e))}})),n((()=>{if(Yu.delete(r),Yu.size>0)o.querySelectorAll(Zu).forEach((e=>{if(e instanceof HTMLElement&&!Ju.has(e)){for(let t of Yu)if(e.contains(t))return;Ju.set(e,{"aria-hidden":e.getAttribute("aria-hidden"),inert:e.inert}),Qu(e)}}));else for(let e of Ju.keys())Xu(e),Ju.delete(e)}))}}))}let tf=Symbol("ForcePortalRootContext");let nf=(0,r.defineComponent)({name:"ForcePortalRoot",props:{as:{type:[Object,String],default:"template"},force:{type:Boolean,default:!1}},setup:(e,{slots:t,attrs:n})=>((0,r.provide)(tf,e.force),()=>{let{force:r,...o}=e;return Ar({theirProps:o,ourProps:{},slot:{},slots:t,attrs:n,name:"ForcePortalRoot"})})});let rf=(0,r.defineComponent)({name:"Portal",props:{as:{type:[Object,String],default:"div"}},setup(e,{slots:t,attrs:n}){let o=(0,r.ref)(null),i=(0,r.computed)((()=>Wr(o))),a=(0,r.inject)(tf,!1),l=(0,r.inject)(of,null),s=(0,r.ref)(!0===a||null==l?function(e){let t=Wr(e);if(!t){if(null===e)return null;throw new Error(`[Headless UI]: Cannot find ownerDocument for contextElement: ${e}`)}let n=t.getElementById("headlessui-portal-root");if(n)return n;let r=t.createElement("div");return r.setAttribute("id","headlessui-portal-root"),t.body.appendChild(r)}(o.value):l.resolveTarget());return(0,r.watchEffect)((()=>{a||null!=l&&(s.value=l.resolveTarget())})),(0,r.onUnmounted)((()=>{var e,t;let n=null==(e=i.value)?void 0:e.getElementById("headlessui-portal-root");!n||s.value===n&&s.value.children.length<=0&&(null==(t=s.value.parentElement)||t.removeChild(s.value))})),()=>{if(null===s.value)return null;let i={ref:o,"data-headlessui-portal":""};return(0,r.h)(r.Teleport,{to:s.value},Ar({ourProps:i,theirProps:e,slot:{},attrs:n,slots:t,name:"Portal"}))}}}),of=Symbol("PortalGroupContext"),af=(0,r.defineComponent)({name:"PortalGroup",props:{as:{type:[Object,String],default:"template"},target:{type:Object,default:null}},setup(e,{attrs:t,slots:n}){let o=(0,r.reactive)({resolveTarget:()=>e.target});return(0,r.provide)(of,o),()=>{let{target:r,...o}=e;return Ar({theirProps:o,ourProps:{},slot:{},attrs:t,slots:n,name:"PortalGroup"})}}}),lf=Symbol("StackContext");var sf=(e=>(e[e.Add=0]="Add",e[e.Remove=1]="Remove",e))(sf||{});function cf({type:e,enabled:t,element:n,onUpdate:o}){let i=(0,r.inject)(lf,(()=>{}));function a(...e){null==o||o(...e),i(...e)}(0,r.onMounted)((()=>{(0,r.watch)(t,((t,r)=>{t?a(0,e,n):!0===r&&a(1,e,n)}),{immediate:!0,flush:"sync"})})),(0,r.onUnmounted)((()=>{t.value&&a(1,e,n)})),(0,r.provide)(lf,a)}let uf=Symbol("DescriptionContext");(0,r.defineComponent)({name:"Description",props:{as:{type:[Object,String],default:"p"},id:{type:String,default:()=>`headlessui-description-${Dr()}`}},setup(e,{attrs:t,slots:n}){let o=function(){let e=(0,r.inject)(uf,null);if(null===e)throw new Error("Missing parent");return e}();return(0,r.onMounted)((()=>(0,r.onUnmounted)(o.register(e.id)))),()=>{let{name:i="Description",slot:a=(0,r.ref)({}),props:l={}}=o,{id:s,...c}=e,u={...Object.entries(l).reduce(((e,[t,n])=>Object.assign(e,{[t]:(0,r.unref)(n)})),{}),id:s};return Ar({ourProps:u,theirProps:c,slot:a.value,attrs:t,slots:n,name:i})}}});function ff(){let e;return{before({doc:t}){var n;let r=t.documentElement;e=(null!=(n=t.defaultView)?n:window).innerWidth-r.clientWidth},after({doc:t,d:n}){let r=t.documentElement,o=r.clientWidth-r.offsetWidth,i=e-o;n.style(r,"paddingRight",`${i}px`)}}}function df(){if(!(/iPhone/gi.test(window.navigator.platform)||/Mac/gi.test(window.navigator.platform)&&window.navigator.maxTouchPoints>0))return{};let e;return{before(){e=window.pageYOffset},after({doc:t,d:n,meta:r}){function o(e){return r.containers.flatMap((e=>e())).some((t=>t.contains(e)))}n.style(t.body,"marginTop",`-${e}px`),window.scrollTo(0,0);let i=null;n.addEventListener(t,"click",(e=>{if(e.target instanceof HTMLElement)try{let n=e.target.closest("a");if(!n)return;let{hash:r}=new URL(n.href),a=t.querySelector(r);a&&!o(a)&&(i=a)}catch{}}),!0),n.addEventListener(t,"touchmove",(e=>{e.target instanceof HTMLElement&&!o(e.target)&&e.preventDefault()}),{passive:!1}),n.add((()=>{window.scrollTo(0,window.pageYOffset+e),i&&i.isConnected&&(i.scrollIntoView({block:"nearest"}),i=null)}))}}}function pf(e){let t={};for(let n of e)Object.assign(t,n(t));return t}let hf=function(e,t){let n=e(),r=new Set;return{getSnapshot:()=>n,subscribe:e=>(r.add(e),()=>r.delete(e)),dispatch(e,...o){let i=t[e].call(n,...o);i&&(n=i,r.forEach((e=>e())))}}}((()=>new Map),{PUSH(e,t){var n;let r=null!=(n=this.get(e))?n:{doc:e,count:0,d:Nu(),meta:new Set};return r.count++,r.meta.add(t),this.set(e,r),this},POP(e,t){let n=this.get(e);return n&&(n.count--,n.meta.delete(t)),this},SCROLL_PREVENT({doc:e,d:t,meta:n}){let r={doc:e,d:t,meta:pf(n)},o=[df(),ff(),{before({doc:e,d:t}){t.style(e.documentElement,"overflow","hidden")}}];o.forEach((({before:e})=>null==e?void 0:e(r))),o.forEach((({after:e})=>null==e?void 0:e(r)))},SCROLL_ALLOW({d:e}){e.dispose()},TEARDOWN({doc:e}){this.delete(e)}});function vf(e,t,n){let o=function(e){let t=(0,r.shallowRef)(e.getSnapshot());return(0,r.onUnmounted)(e.subscribe((()=>{t.value=e.getSnapshot()}))),t}(hf),i=(0,r.computed)((()=>{let t=e.value?o.value.get(e.value):void 0;return!!t&&t.count>0}));return(0,r.watch)([e,t],(([e,t],[r],o)=>{if(!e||!t)return;hf.dispatch("PUSH",e,n);let i=!1;o((()=>{i||(hf.dispatch("POP",null!=r?r:e,n),i=!0)}))}),{immediate:!0}),i}hf.subscribe((()=>{let e=hf.getSnapshot(),t=new Map;for(let[n]of e)t.set(n,n.documentElement.style.overflow);for(let n of e.values()){let e="hidden"===t.get(n.doc),r=0!==n.count;(r&&!e||!r&&e)&&hf.dispatch(n.count>0?"SCROLL_PREVENT":"SCROLL_ALLOW",n),0===n.count&&hf.dispatch("TEARDOWN",n)}}));var mf=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(mf||{});let gf=Symbol("DialogContext");function yf(e){let t=(0,r.inject)(gf,null);if(null===t){let t=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,yf),t}return t}let bf="DC8F892D-2EBD-447C-A4C8-A03058436FF4",wf=(0,r.defineComponent)({name:"Dialog",inheritAttrs:!1,props:{as:{type:[Object,String],default:"div"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},open:{type:[Boolean,String],default:bf},initialFocus:{type:Object,default:null},id:{type:String,default:()=>`headlessui-dialog-${Dr()}`}},emits:{close:e=>!0},setup(e,{emit:t,attrs:n,slots:o,expose:i}){var a;let l=(0,r.ref)(!1);(0,r.onMounted)((()=>{l.value=!0}));let s=(0,r.ref)(0),c=Zr(),u=(0,r.computed)((()=>e.open===bf&&null!==c?Tr(c.value,{[Gr.Open]:!0,[Gr.Closed]:!1}):e.open)),f=(0,r.ref)(new Set),d=(0,r.ref)(null),p=(0,r.ref)(null),h=(0,r.computed)((()=>Wr(d)));if(i({el:d,$el:d}),e.open===bf&&null===c)throw new Error("You forgot to provide an `open` prop to the `Dialog`.");if("boolean"!=typeof u.value)throw new Error(`You provided an \`open\` prop to the \`Dialog\`, but the value is not a boolean. Received: ${u.value===bf?void 0:e.open}`);let v=(0,r.computed)((()=>l.value&&u.value?0:1)),m=(0,r.computed)((()=>0===v.value)),g=(0,r.computed)((()=>s.value>1)),y=((0,r.inject)(gf,null),(0,r.computed)((()=>g.value?"parent":"leaf")));ef(d,(0,r.computed)((()=>!!g.value&&m.value))),cf({type:"Dialog",enabled:(0,r.computed)((()=>0===v.value)),element:d,onUpdate:(e,t,n)=>{if("Dialog"===t)return Tr(e,{[sf.Add](){f.value.add(n),s.value+=1},[sf.Remove](){f.value.delete(n),s.value-=1}})}});let b=function({slot:e=(0,r.ref)({}),name:t="Description",props:n={}}={}){let o=(0,r.ref)([]);return(0,r.provide)(uf,{register:function(e){return o.value.push(e),()=>{let t=o.value.indexOf(e);-1!==t&&o.value.splice(t,1)}},slot:e,name:t,props:n}),(0,r.computed)((()=>o.value.length>0?o.value.join(" "):void 0))}({name:"DialogDescription",slot:(0,r.computed)((()=>({open:u.value})))}),w=(0,r.ref)(null),C={titleId:w,panelRef:(0,r.ref)(null),dialogState:v,setTitleId(e){w.value!==e&&(w.value=e)},close(){t("close",!1)}};function _(){var e,t,n;return[...Array.from(null!=(t=null==(e=h.value)?void 0:e.querySelectorAll("html > *, body > *, [data-headlessui-portal]"))?t:[]).filter((e=>!(e===document.body||e===document.head||!(e instanceof HTMLElement)||e.contains(zr(p))||C.panelRef.value&&e.contains(C.panelRef.value)))),null!=(n=C.panelRef.value)?n:d.value]}return(0,r.provide)(gf,C),ho((()=>_()),((e,t)=>{C.close(),(0,r.nextTick)((()=>null==t?void 0:t.focus()))}),(0,r.computed)((()=>0===v.value&&!g.value))),qu(null==(a=h.value)?void 0:a.defaultView,"keydown",(e=>{e.defaultPrevented||e.key===Ur.Escape&&0===v.value&&(g.value||(e.preventDefault(),e.stopPropagation(),C.close()))})),vf(h,m,(e=>{var t;return{containers:[...null!=(t=e.containers)?t:[],_]}})),(0,r.watchEffect)((e=>{if(0!==v.value)return;let t=zr(d);if(!t)return;let n=new IntersectionObserver((e=>{for(let t of e)0===t.boundingClientRect.x&&0===t.boundingClientRect.y&&0===t.boundingClientRect.width&&0===t.boundingClientRect.height&&C.close()}));n.observe(t),e((()=>n.disconnect()))})),()=>{let{id:t,open:i,initialFocus:a,...l}=e,s={...n,ref:d,id:t,role:"dialog","aria-modal":0===v.value||void 0,"aria-labelledby":w.value,"aria-describedby":b.value},c={open:0===v.value};return(0,r.h)(nf,{force:!0},(()=>[(0,r.h)(rf,(()=>(0,r.h)(af,{target:d.value},(()=>(0,r.h)(nf,{force:!1},(()=>(0,r.h)(Ku,{initialFocus:a,containers:f,features:m.value?Tr(y.value,{parent:Ku.features.RestoreFocus,leaf:Ku.features.All&~Ku.features.FocusLock}):Ku.features.None},(()=>Ar({ourProps:s,theirProps:l,slot:c,attrs:n,slots:o,visible:0===v.value,features:Rr.RenderStrategy|Rr.Static,name:"Dialog"}))))))))),(0,r.h)(el,{features:Xa.Hidden,ref:p})]))}}}),Cf=((0,r.defineComponent)({name:"DialogOverlay",props:{as:{type:[Object,String],default:"div"},id:{type:String,default:()=>`headlessui-dialog-overlay-${Dr()}`}},setup(e,{attrs:t,slots:n}){let r=yf("DialogOverlay");function o(e){e.target===e.currentTarget&&(e.preventDefault(),e.stopPropagation(),r.close())}return()=>{let{id:i,...a}=e;return Ar({ourProps:{id:i,"aria-hidden":!0,onClick:o},theirProps:a,slot:{open:0===r.dialogState.value},attrs:t,slots:n,name:"DialogOverlay"})}}}),(0,r.defineComponent)({name:"DialogBackdrop",props:{as:{type:[Object,String],default:"div"},id:{type:String,default:()=>`headlessui-dialog-backdrop-${Dr()}`}},inheritAttrs:!1,setup(e,{attrs:t,slots:n,expose:o}){let i=yf("DialogBackdrop"),a=(0,r.ref)(null);return o({el:a,$el:a}),(0,r.onMounted)((()=>{if(null===i.panelRef.value)throw new Error("A component is being used, but a component is missing.")})),()=>{let{id:o,...l}=e,s={id:o,ref:a,"aria-hidden":!0};return(0,r.h)(nf,{force:!0},(()=>(0,r.h)(rf,(()=>Ar({ourProps:s,theirProps:{...t,...l},slot:{open:0===i.dialogState.value},attrs:t,slots:n,name:"DialogBackdrop"})))))}}}),(0,r.defineComponent)({name:"DialogPanel",props:{as:{type:[Object,String],default:"div"},id:{type:String,default:()=>`headlessui-dialog-panel-${Dr()}`}},setup(e,{attrs:t,slots:n,expose:r}){let o=yf("DialogPanel");function i(e){e.stopPropagation()}return r({el:o.panelRef,$el:o.panelRef}),()=>{let{id:r,...a}=e;return Ar({ourProps:{id:r,ref:o.panelRef,onClick:i},theirProps:a,slot:{open:0===o.dialogState.value},attrs:t,slots:n,name:"DialogPanel"})}}})),_f=(0,r.defineComponent)({name:"DialogTitle",props:{as:{type:[Object,String],default:"h2"},id:{type:String,default:()=>`headlessui-dialog-title-${Dr()}`}},setup(e,{attrs:t,slots:n}){let o=yf("DialogTitle");return(0,r.onMounted)((()=>{o.setTitleId(e.id),(0,r.onUnmounted)((()=>o.setTitleId(null)))})),()=>{let{id:r,...i}=e;return Ar({ourProps:{id:r},theirProps:i,slot:{open:0===o.dialogState.value},attrs:t,slots:n,name:"DialogTitle"})}}});var Ef=(0,r.createElementVNode)("div",{class:"fixed inset-0"},null,-1),xf={class:"fixed inset-0 overflow-hidden"},kf={class:"absolute inset-0 overflow-hidden"},Sf={class:"pointer-events-none fixed inset-y-0 right-0 flex max-w-full pl-10"},Of={class:"flex h-full flex-col overflow-y-scroll bg-white py-6 shadow-xl"},Nf={class:"px-4 sm:px-6"},Pf={class:"flex items-start justify-between"},Tf={class:"ml-3 flex h-7 items-center"},Vf=(0,r.createElementVNode)("span",{class:"sr-only"},"Close panel",-1),Rf={class:"relative mt-6 flex-1 px-4 sm:px-6"},Lf={class:"keyboard-shortcut"},Af={class:"shortcut"},jf=(0,r.createElementVNode)("span",{class:"description"},"Select a host",-1),Bf={class:"keyboard-shortcut"},If={class:"shortcut"},Mf=(0,r.createElementVNode)("span",{class:"description"},"Jump to file selection",-1),Ff={class:"keyboard-shortcut"},Df={class:"shortcut"},Uf=(0,r.createElementVNode)("span",{class:"description"},"Jump to logs",-1),$f={class:"keyboard-shortcut"},Hf={class:"shortcut"},zf=(0,r.createElementVNode)("span",{class:"description"},"Severity selection",-1),qf={class:"keyboard-shortcut"},Wf={class:"shortcut"},Kf=(0,r.createElementVNode)("span",{class:"description"},"Settings",-1),Gf={class:"keyboard-shortcut"},Zf={class:"shortcut"},Yf=(0,r.createElementVNode)("span",{class:"description"},"Search",-1),Jf={class:"keyboard-shortcut"},Qf={class:"shortcut"},Xf=(0,r.createElementVNode)("span",{class:"description"},"Refresh logs",-1),ed={class:"keyboard-shortcut"},td={class:"shortcut"},nd=(0,r.createElementVNode)("span",{class:"description"},"Keyboard shortcuts help",-1);const rd={__name:"KeyboardShortcutsOverlay",setup:function(e){var t=Mi();return function(e,n){return(0,r.openBlock)(),(0,r.createBlock)((0,r.unref)($u),{as:"template",show:(0,r.unref)(t).helpSlideOverOpen},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(wf),{as:"div",class:"relative z-20",onClose:n[1]||(n[1]=function(e){return(0,r.unref)(t).helpSlideOverOpen=!1})},{default:(0,r.withCtx)((function(){return[Ef,(0,r.createElementVNode)("div",xf,[(0,r.createElementVNode)("div",kf,[(0,r.createElementVNode)("div",Sf,[(0,r.createVNode)((0,r.unref)(Du),{as:"template",enter:"transform transition ease-in-out duration-200 sm:duration-300","enter-from":"translate-x-full","enter-to":"translate-x-0",leave:"transform transition ease-in-out duration-200 sm:duration-300","leave-from":"translate-x-0","leave-to":"translate-x-full"},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(Cf),{class:"pointer-events-auto w-screen max-w-md"},{default:(0,r.withCtx)((function(){return[(0,r.createElementVNode)("div",Of,[(0,r.createElementVNode)("div",Nf,[(0,r.createElementVNode)("div",Pf,[(0,r.createVNode)((0,r.unref)(_f),{class:"text-base font-semibold leading-6 text-gray-900"},{default:(0,r.withCtx)((function(){return[(0,r.createTextVNode)("Keyboard Shortcuts")]})),_:1}),(0,r.createElementVNode)("div",Tf,[(0,r.createElementVNode)("button",{type:"button",class:"rounded-md bg-white text-gray-400 hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-brand-500 focus:ring-offset-2",onClick:n[0]||(n[0]=function(e){return(0,r.unref)(t).helpSlideOverOpen=!1})},[Vf,(0,r.createVNode)((0,r.unref)(ko),{class:"h-6 w-6","aria-hidden":"true"})])])])]),(0,r.createElementVNode)("div",Rf,[(0,r.createElementVNode)("div",Lf,[(0,r.createElementVNode)("span",Af,(0,r.toDisplayString)((0,r.unref)(Xi).Hosts),1),jf]),(0,r.createElementVNode)("div",Bf,[(0,r.createElementVNode)("span",If,(0,r.toDisplayString)((0,r.unref)(Xi).Files),1),Mf]),(0,r.createElementVNode)("div",Ff,[(0,r.createElementVNode)("span",Df,(0,r.toDisplayString)((0,r.unref)(Xi).Logs),1),Uf]),(0,r.createElementVNode)("div",$f,[(0,r.createElementVNode)("span",Hf,(0,r.toDisplayString)((0,r.unref)(Xi).Severity),1),zf]),(0,r.createElementVNode)("div",qf,[(0,r.createElementVNode)("span",Wf,(0,r.toDisplayString)((0,r.unref)(Xi).Settings),1),Kf]),(0,r.createElementVNode)("div",Gf,[(0,r.createElementVNode)("span",Zf,(0,r.toDisplayString)((0,r.unref)(Xi).Search),1),Yf]),(0,r.createElementVNode)("div",Jf,[(0,r.createElementVNode)("span",Qf,(0,r.toDisplayString)((0,r.unref)(Xi).Refresh),1),Xf]),(0,r.createElementVNode)("div",ed,[(0,r.createElementVNode)("span",td,(0,r.toDisplayString)((0,r.unref)(Xi).ShortcutHelp),1),nd])])])]})),_:1})]})),_:1})])])])]})),_:1})]})),_:1},8,["show"])}}};function od(e){return od="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},od(e)}function id(){id=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",l=o.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function c(e,t,n,o){var i=t&&t.prototype instanceof d?t:d,a=Object.create(i.prototype),l=new k(o||[]);return r(a,"_invoke",{value:C(e,n,l)}),a}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var f={};function d(){}function p(){}function h(){}var v={};s(v,i,(function(){return this}));var m=Object.getPrototypeOf,g=m&&m(m(S([])));g&&g!==t&&n.call(g,i)&&(v=g);var y=h.prototype=d.prototype=Object.create(v);function b(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function w(e,t){function o(r,i,a,l){var s=u(e[r],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f&&"object"==od(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){o("next",e,a,l)}),(function(e){o("throw",e,a,l)})):t.resolve(f).then((function(e){c.value=e,a(c)}),(function(e){return o("throw",e,a,l)}))}l(s.arg)}var i;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){o(e,n,t,r)}))}return i=i?i.then(r,r):r()}})}function C(e,t,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return O()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var l=_(a,n);if(l){if(l===f)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=u(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===f)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function _(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,_(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),f;var o=u(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,f;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function E(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function x(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function k(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(E,this),this.reset(!0)}function S(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var l=n.call(i,"catchLoc"),s=n.call(i,"finallyLoc");if(l&&s){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),x(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;x(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:S(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function ad(e,t,n,r,o,i,a){try{var l=e[i](a),s=l.value}catch(e){return void n(e)}l.done?t(s):Promise.resolve(s).then(r,o)}var ld={class:"md:pl-88 flex flex-col flex-1 min-h-screen max-h-screen max-w-full"},sd={class:"absolute bottom-4 right-4 flex items-center"},cd={class:"text-xs text-gray-500 dark:text-gray-400 mr-5 -mb-0.5"},ud=(0,r.createElementVNode)("span",{class:"hidden md:inline"},"Memory: ",-1),fd={class:"font-semibold"},dd=(0,r.createElementVNode)("span",{class:"mx-1.5"},"·",-1),pd=(0,r.createElementVNode)("span",{class:"hidden md:inline"},"Duration: ",-1),hd={class:"font-semibold"},vd=(0,r.createElementVNode)("span",{class:"mx-1.5"},"·",-1),md=(0,r.createElementVNode)("span",{class:"hidden md:inline"},"Version: ",-1),gd={class:"font-semibold"},yd={key:0,href:"https://www.buymeacoffee.com/arunas",target:"_blank"};const bd={__name:"Home",setup:function(e){var t=Bo(),n=Mi(),o=Fi(),i=Ri(),a=Li(),l=Pr(),s=Nr();return(0,r.onBeforeMount)((function(){n.syncTheme(),document.addEventListener("keydown",ra)})),(0,r.onBeforeUnmount)((function(){document.removeEventListener("keydown",ra)})),(0,r.onMounted)((function(){setInterval(n.syncTheme,1e3)})),(0,r.watch)((function(){return l.query}),(function(e){o.selectFile(e.file||null),a.setPage(e.page||1),i.setQuery(e.query||""),n.loadLogs()}),{immediate:!0}),(0,r.watch)((function(){return l.query.host}),function(){var e,r=(e=id().mark((function e(r){return id().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.selectHost(r||null),r&&!t.selectedHostIdentifier&&Hi(s,"host",null),o.reset(),e.next=5,o.loadFolders();case 5:n.loadLogs();case 6:case"end":return e.stop()}}),e)})),function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function a(e){ad(i,r,o,a,l,"next",e)}function l(e){ad(i,r,o,a,l,"throw",e)}a(void 0)}))});return function(e){return r.apply(this,arguments)}}(),{immediate:!0}),(0,r.onMounted)((function(){window.onresize=function(){n.setViewportDimensions(window.innerWidth,window.innerHeight)}})),function(e,t){var i;return(0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,null,[(0,r.createElementVNode)("div",{class:(0,r.normalizeClass)(["absolute z-20 top-0 bottom-10 bg-gray-100 dark:bg-gray-900 md:left-0 md:flex md:w-88 md:flex-col md:fixed md:inset-y-0",[(0,r.unref)(o).sidebarOpen?"left-0 right-0 md:left-auto md:right-auto":"-left-[200%] right-[200%] md:left-auto md:right-auto"]])},[(0,r.createVNode)(ms)],2),(0,r.createElementVNode)("div",ld,[(0,r.createVNode)(Eu,{class:"pb-16 md:pb-12"})]),(0,r.createElementVNode)("div",sd,[(0,r.createElementVNode)("p",cd,[null!==(i=(0,r.unref)(n).performance)&&void 0!==i&&i.requestTime?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:0},[(0,r.createElementVNode)("span",null,[ud,(0,r.createElementVNode)("span",fd,(0,r.toDisplayString)((0,r.unref)(n).performance.memoryUsage),1)]),dd,(0,r.createElementVNode)("span",null,[pd,(0,r.createElementVNode)("span",hd,(0,r.toDisplayString)((0,r.unref)(n).performance.requestTime),1)]),vd],64)):(0,r.createCommentVNode)("",!0),(0,r.createElementVNode)("span",null,[md,(0,r.createElementVNode)("span",gd,(0,r.toDisplayString)(e.LogViewer.version),1)])]),e.LogViewer.show_support_link?((0,r.openBlock)(),(0,r.createElementBlock)("a",yd,[(0,r.createVNode)(Ou,{class:"h-6 w-auto",title:"Support me by buying me a cup of coffee ❤️"})])):(0,r.createCommentVNode)("",!0)]),(0,r.createVNode)(rd)],64)}}},wd=bd;function Cd(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,a,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,o=e}finally{try{if(!s&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw o}}return l}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return _d(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _d(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n""+e)),d=Xt.bind(null,sr),p=Xt.bind(null,cr);function h(e,r){if(r=Qt({},r||c.value),"string"==typeof e){const o=on(n,e,r.path),a=t.resolve({path:o.path},r),l=i.createHref(o.fullPath);return Qt(o,a,{params:p(a.params),hash:cr(o.hash),redirectedFrom:void 0,href:l})}let a;if("path"in e)a=Qt({},e,{path:on(n,e.path,r.path).path});else{const t=Qt({},e.params);for(const e in t)null==t[e]&&delete t[e];a=Qt({},e,{params:d(e.params)}),r.params=d(r.params)}const l=t.resolve(a,r),s=e.hash||"";l.params=f(p(l.params));const u=function(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}(o,Qt({},e,{hash:(h=s,ar(h).replace(nr,"{").replace(or,"}").replace(er,"^")),path:l.path}));var h;const v=i.createHref(u);return Qt({fullPath:u,hash:s,query:o===fr?dr(e.query):e.query||{}},l,{redirectedFrom:void 0,href:v})}function v(e){return"string"==typeof e?on(n,e,c.value.path):Qt({},e)}function m(e,t){if(u!==e)return Nn(8,{from:t,to:e})}function g(e){return b(e)}function y(e){const t=e.matched[e.matched.length-1];if(t&&t.redirect){const{redirect:n}=t;let r="function"==typeof n?n(e):n;return"string"==typeof r&&(r=r.includes("?")||r.includes("#")?r=v(r):{path:r},r.params={}),Qt({query:e.query,hash:e.hash,params:"path"in r?{}:e.params},r)}}function b(e,t){const n=u=h(e),r=c.value,i=e.state,a=e.force,l=!0===e.replace,s=y(n);if(s)return b(Qt(v(s),{state:"object"==typeof s?Qt({},i,s.state):i,force:a,replace:l}),t||n);const f=n;let d;return f.redirectedFrom=t,!a&&function(e,t,n){const r=t.matched.length-1,o=n.matched.length-1;return r>-1&&r===o&&ln(t.matched[r],n.matched[o])&&sn(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}(o,r,n)&&(d=Nn(16,{to:f,from:r}),V(r,r,!0,!1)),(d?Promise.resolve(d):C(f,r)).catch((e=>Pn(e)?Pn(e,2)?e:T(e):P(e,f,r))).then((e=>{if(e){if(Pn(e,2))return b(Qt({replace:l},v(e.to),{state:"object"==typeof e.to?Qt({},i,e.to.state):i,force:a}),t||f)}else e=E(f,r,!0,l,i);return _(f,r,e),e}))}function w(e,t){const n=m(e,t);return n?Promise.reject(n):Promise.resolve()}function C(e,t){let n;const[r,o,i]=function(e,t){const n=[],r=[],o=[],i=Math.max(t.matched.length,e.matched.length);for(let a=0;aln(e,i)))?r.push(i):n.push(i));const l=e.matched[a];l&&(t.matched.find((e=>ln(e,l)))||o.push(l))}return[n,r,o]}(e,t);n=wr(r.reverse(),"beforeRouteLeave",e,t);for(const o of r)o.leaveGuards.forEach((r=>{n.push(br(r,e,t))}));const s=w.bind(null,e,t);return n.push(s),Or(n).then((()=>{n=[];for(const r of a.list())n.push(br(r,e,t));return n.push(s),Or(n)})).then((()=>{n=wr(o,"beforeRouteUpdate",e,t);for(const r of o)r.updateGuards.forEach((r=>{n.push(br(r,e,t))}));return n.push(s),Or(n)})).then((()=>{n=[];for(const r of e.matched)if(r.beforeEnter&&!t.matched.includes(r))if(tn(r.beforeEnter))for(const o of r.beforeEnter)n.push(br(o,e,t));else n.push(br(r.beforeEnter,e,t));return n.push(s),Or(n)})).then((()=>(e.matched.forEach((e=>e.enterCallbacks={})),n=wr(i,"beforeRouteEnter",e,t),n.push(s),Or(n)))).then((()=>{n=[];for(const r of l.list())n.push(br(r,e,t));return n.push(s),Or(n)})).catch((e=>Pn(e,8)?e:Promise.reject(e)))}function _(e,t,n){for(const r of s.list())r(e,t,n)}function E(e,t,n,r,o){const a=m(e,t);if(a)return a;const l=t===kn,s=Yt?history.state:{};n&&(r||l?i.replace(e.fullPath,Qt({scroll:l&&s&&s.scroll},o)):i.push(e.fullPath,o)),c.value=e,V(e,t,n,l),T()}let x;function k(){x||(x=i.listen(((e,t,n)=>{if(!j.listening)return;const r=h(e),o=y(r);if(o)return void b(Qt(o,{replace:!0}),r).catch(en);u=r;const a=c.value;Yt&&function(e,t){bn.set(e,t)}(yn(a.fullPath,n.delta),mn()),C(r,a).catch((e=>Pn(e,12)?e:Pn(e,2)?(b(e.to,r).then((e=>{Pn(e,20)&&!n.delta&&n.type===fn.pop&&i.go(-1,!1)})).catch(en),Promise.reject()):(n.delta&&i.go(-n.delta,!1),P(e,r,a)))).then((e=>{(e=e||E(r,a,!1))&&(n.delta&&!Pn(e,8)?i.go(-n.delta,!1):n.type===fn.pop&&Pn(e,20)&&i.go(-1,!1)),_(r,a,e)})).catch(en)})))}let S,O=yr(),N=yr();function P(e,t,n){T(e);const r=N.list();return r.length&&r.forEach((r=>r(e,t,n))),Promise.reject(e)}function T(e){return S||(S=!e,k(),O.list().forEach((([t,n])=>e?n(e):t())),O.reset()),e}function V(t,n,o,i){const{scrollBehavior:a}=e;if(!Yt||!a)return Promise.resolve();const l=!o&&function(e){const t=bn.get(e);return bn.delete(e),t}(yn(t.fullPath,0))||(i||!o)&&history.state&&history.state.scroll||null;return(0,r.nextTick)().then((()=>a(t,n,l))).then((e=>e&&gn(e))).catch((e=>P(e,t,n)))}const R=e=>i.go(e);let L;const A=new Set,j={currentRoute:c,listening:!0,addRoute:function(e,n){let r,o;return xn(e)?(r=t.getRecordMatcher(e),o=n):o=e,t.addRoute(o,r)},removeRoute:function(e){const n=t.getRecordMatcher(e);n&&t.removeRoute(n)},hasRoute:function(e){return!!t.getRecordMatcher(e)},getRoutes:function(){return t.getRoutes().map((e=>e.record))},resolve:h,options:e,push:g,replace:function(e){return g(Qt(v(e),{replace:!0}))},go:R,back:()=>R(-1),forward:()=>R(1),beforeEach:a.add,beforeResolve:l.add,afterEach:s.add,onError:N.add,isReady:function(){return S&&c.value!==kn?Promise.resolve():new Promise(((e,t)=>{O.add([e,t])}))},install(e){e.component("RouterLink",_r),e.component("RouterView",Sr),e.config.globalProperties.$router=this,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>(0,r.unref)(c)}),Yt&&!L&&c.value===kn&&(L=!0,g(i.location).catch((e=>{0})));const t={};for(const e in kn)t[e]=(0,r.computed)((()=>c.value[e]));e.provide(vr,this),e.provide(mr,(0,r.reactive)(t)),e.provide(gr,c);const n=e.unmount;A.add(e),e.unmount=function(){A.delete(e),A.size<1&&(u=kn,x&&x(),x=null,c.value=kn,L=!1,S=!1),n()}}};return j}({routes:[{path:LogViewer.basePath,name:"home",component:wd}],history:En(),base:Pd}),Vd=function(){const e=(0,r.effectScope)(!0),t=e.run((()=>(0,r.ref)({})));let n=[],i=[];const a=(0,r.markRaw)({install(e){v(a),o||(a._a=e,e.provide(m,a),e.config.globalProperties.$pinia=a,w&&W(e,a),i.forEach((e=>n.push(e))),i=[])},use(e){return this._a||o?n.push(e):i.push(e),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return w&&"undefined"!=typeof Proxy&&a.use(Y),a}(),Rd=(0,r.createApp)({router:Td});Rd.use(Td),Rd.use(Vd),Rd.mixin({computed:{LogViewer:function(){return window.LogViewer}}}),Rd.mount("#log-viewer")},742:(e,t)=>{"use strict";t.byteLength=function(e){var t=s(e),n=t[0],r=t[1];return 3*(n+r)/4-r},t.toByteArray=function(e){var t,n,i=s(e),a=i[0],l=i[1],c=new o(function(e,t,n){return 3*(t+n)/4-n}(0,a,l)),u=0,f=l>0?a-4:a;for(n=0;n>16&255,c[u++]=t>>8&255,c[u++]=255&t;2===l&&(t=r[e.charCodeAt(n)]<<2|r[e.charCodeAt(n+1)]>>4,c[u++]=255&t);1===l&&(t=r[e.charCodeAt(n)]<<10|r[e.charCodeAt(n+1)]<<4|r[e.charCodeAt(n+2)]>>2,c[u++]=t>>8&255,c[u++]=255&t);return c},t.fromByteArray=function(e){for(var t,r=e.length,o=r%3,i=[],a=16383,l=0,s=r-o;ls?s:l+a));1===o?(t=e[r-1],i.push(n[t>>2]+n[t<<4&63]+"==")):2===o&&(t=(e[r-2]<<8)+e[r-1],i.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+"="));return i.join("")};for(var n=[],r=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,l=i.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function c(e,t,r){for(var o,i,a=[],l=t;l>18&63]+n[i>>12&63]+n[i>>6&63]+n[63&i]);return a.join("")}r["-".charCodeAt(0)]=62,r["_".charCodeAt(0)]=63},764:(e,t,n)=>{"use strict";var r=n(742),o=n(645),i=n(826);function a(){return s.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function l(e,t){if(a()=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|e}function h(e,t){if(s.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return U(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return $(e).length;default:if(r)return U(e).length;t=(""+t).toLowerCase(),r=!0}}function v(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return T(this,t,n);case"utf8":case"utf-8":return S(this,t,n);case"ascii":return N(this,t,n);case"latin1":case"binary":return P(this,t,n);case"base64":return k(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return V(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function m(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function g(e,t,n,r,o){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=o?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(o)return-1;n=e.length-1}else if(n<0){if(!o)return-1;n=0}if("string"==typeof t&&(t=s.from(t,r)),s.isBuffer(t))return 0===t.length?-1:y(e,t,n,r,o);if("number"==typeof t)return t&=255,s.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):y(e,[t],n,r,o);throw new TypeError("val must be string, number or Buffer")}function y(e,t,n,r,o){var i,a=1,l=e.length,s=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;a=2,l/=2,s/=2,n/=2}function c(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(o){var u=-1;for(i=n;il&&(n=l-s),i=n;i>=0;i--){for(var f=!0,d=0;do&&(r=o):r=o;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var a=0;a>8,o=n%256,i.push(o),i.push(r);return i}(t,e.length-n),e,n,r)}function k(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function S(e,t,n){n=Math.min(e.length,n);for(var r=[],o=t;o239?4:c>223?3:c>191?2:1;if(o+f<=n)switch(f){case 1:c<128&&(u=c);break;case 2:128==(192&(i=e[o+1]))&&(s=(31&c)<<6|63&i)>127&&(u=s);break;case 3:i=e[o+1],a=e[o+2],128==(192&i)&&128==(192&a)&&(s=(15&c)<<12|(63&i)<<6|63&a)>2047&&(s<55296||s>57343)&&(u=s);break;case 4:i=e[o+1],a=e[o+2],l=e[o+3],128==(192&i)&&128==(192&a)&&128==(192&l)&&(s=(15&c)<<18|(63&i)<<12|(63&a)<<6|63&l)>65535&&s<1114112&&(u=s)}null===u?(u=65533,f=1):u>65535&&(u-=65536,r.push(u>>>10&1023|55296),u=56320|1023&u),r.push(u),o+=f}return function(e){var t=e.length;if(t<=O)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),""},s.prototype.compare=function(e,t,n,r,o){if(!s.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),t<0||n>e.length||r<0||o>this.length)throw new RangeError("out of range index");if(r>=o&&t>=n)return 0;if(r>=o)return-1;if(t>=n)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(r>>>=0),a=(n>>>=0)-(t>>>=0),l=Math.min(i,a),c=this.slice(r,o),u=e.slice(t,n),f=0;fo)&&(n=o),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return b(this,e,t,n);case"utf8":case"utf-8":return w(this,e,t,n);case"ascii":return C(this,e,t,n);case"latin1":case"binary":return _(this,e,t,n);case"base64":return E(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return x(this,e,t,n);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},s.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var O=4096;function N(e,t,n){var r="";n=Math.min(e.length,n);for(var o=t;or)&&(n=r);for(var o="",i=t;in)throw new RangeError("Trying to access beyond buffer length")}function L(e,t,n,r,o,i){if(!s.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function A(e,t,n,r){t<0&&(t=65535+t+1);for(var o=0,i=Math.min(e.length-n,2);o>>8*(r?o:1-o)}function j(e,t,n,r){t<0&&(t=4294967295+t+1);for(var o=0,i=Math.min(e.length-n,4);o>>8*(r?o:3-o)&255}function B(e,t,n,r,o,i){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function I(e,t,n,r,i){return i||B(e,0,n,4),o.write(e,t,n,r,23,4),n+4}function M(e,t,n,r,i){return i||B(e,0,n,8),o.write(e,t,n,r,52,8),n+8}s.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t0&&(o*=256);)r+=this[e+--t]*o;return r},s.prototype.readUInt8=function(e,t){return t||R(e,1,this.length),this[e]},s.prototype.readUInt16LE=function(e,t){return t||R(e,2,this.length),this[e]|this[e+1]<<8},s.prototype.readUInt16BE=function(e,t){return t||R(e,2,this.length),this[e]<<8|this[e+1]},s.prototype.readUInt32LE=function(e,t){return t||R(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},s.prototype.readUInt32BE=function(e,t){return t||R(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},s.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||R(e,t,this.length);for(var r=this[e],o=1,i=0;++i=(o*=128)&&(r-=Math.pow(2,8*t)),r},s.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||R(e,t,this.length);for(var r=t,o=1,i=this[e+--r];r>0&&(o*=256);)i+=this[e+--r]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},s.prototype.readInt8=function(e,t){return t||R(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},s.prototype.readInt16LE=function(e,t){t||R(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},s.prototype.readInt16BE=function(e,t){t||R(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},s.prototype.readInt32LE=function(e,t){return t||R(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},s.prototype.readInt32BE=function(e,t){return t||R(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},s.prototype.readFloatLE=function(e,t){return t||R(e,4,this.length),o.read(this,e,!0,23,4)},s.prototype.readFloatBE=function(e,t){return t||R(e,4,this.length),o.read(this,e,!1,23,4)},s.prototype.readDoubleLE=function(e,t){return t||R(e,8,this.length),o.read(this,e,!0,52,8)},s.prototype.readDoubleBE=function(e,t){return t||R(e,8,this.length),o.read(this,e,!1,52,8)},s.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||L(this,e,t,n,Math.pow(2,8*n)-1,0);var o=1,i=0;for(this[t]=255&e;++i=0&&(i*=256);)this[t+o]=e/i&255;return t+n},s.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,1,255,0),s.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},s.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,2,65535,0),s.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):A(this,e,t,!0),t+2},s.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,2,65535,0),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):A(this,e,t,!1),t+2},s.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,4,4294967295,0),s.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):j(this,e,t,!0),t+4},s.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,4,4294967295,0),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):j(this,e,t,!1),t+4},s.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);L(this,e,t,n,o-1,-o)}var i=0,a=1,l=0;for(this[t]=255&e;++i>0)-l&255;return t+n},s.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);L(this,e,t,n,o-1,-o)}var i=n-1,a=1,l=0;for(this[t+i]=255&e;--i>=0&&(a*=256);)e<0&&0===l&&0!==this[t+i+1]&&(l=1),this[t+i]=(e/a>>0)-l&255;return t+n},s.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,1,127,-128),s.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},s.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,2,32767,-32768),s.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):A(this,e,t,!0),t+2},s.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,2,32767,-32768),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):A(this,e,t,!1),t+2},s.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,4,2147483647,-2147483648),s.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):j(this,e,t,!0),t+4},s.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):j(this,e,t,!1),t+4},s.prototype.writeFloatLE=function(e,t,n){return I(this,e,t,!0,n)},s.prototype.writeFloatBE=function(e,t,n){return I(this,e,t,!1,n)},s.prototype.writeDoubleLE=function(e,t,n){return M(this,e,t,!0,n)},s.prototype.writeDoubleBE=function(e,t,n){return M(this,e,t,!1,n)},s.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--o)e[o+t]=this[o+n];else if(i<1e3||!s.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i55295&&n<57344){if(!o){if(n>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(a+1===r){(t-=3)>-1&&i.push(239,191,189);continue}o=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),o=n;continue}n=65536+(o-55296<<10|n-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function $(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(F,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function H(e,t,n,r){for(var o=0;o=t.length||o>=e.length);++o)t[o+n]=e[o];return o}},645:(e,t)=>{t.read=function(e,t,n,r,o){var i,a,l=8*o-r-1,s=(1<>1,u=-7,f=n?o-1:0,d=n?-1:1,p=e[t+f];for(f+=d,i=p&(1<<-u)-1,p>>=-u,u+=l;u>0;i=256*i+e[t+f],f+=d,u-=8);for(a=i&(1<<-u)-1,i>>=-u,u+=r;u>0;a=256*a+e[t+f],f+=d,u-=8);if(0===i)i=1-c;else{if(i===s)return a?NaN:1/0*(p?-1:1);a+=Math.pow(2,r),i-=c}return(p?-1:1)*a*Math.pow(2,i-r)},t.write=function(e,t,n,r,o,i){var a,l,s,c=8*i-o-1,u=(1<>1,d=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?0:i-1,h=r?1:-1,v=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(l=isNaN(t)?1:0,a=u):(a=Math.floor(Math.log(t)/Math.LN2),t*(s=Math.pow(2,-a))<1&&(a--,s*=2),(t+=a+f>=1?d/s:d*Math.pow(2,1-f))*s>=2&&(a++,s/=2),a+f>=u?(l=0,a=u):a+f>=1?(l=(t*s-1)*Math.pow(2,o),a+=f):(l=t*Math.pow(2,f-1)*Math.pow(2,o),a=0));o>=8;e[n+p]=255&l,p+=h,l/=256,o-=8);for(a=a<0;e[n+p]=255&a,p+=h,a/=256,c-=8);e[n+p-h]|=128*v}},826:e=>{var t={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==t.call(e)}},486:function(e,t,n){var r;e=n.nmd(e),function(){var o,i=200,a="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",l="Expected a function",s="Invalid `variable` option passed into `_.template`",c="__lodash_hash_undefined__",u=500,f="__lodash_placeholder__",d=1,p=2,h=4,v=1,m=2,g=1,y=2,b=4,w=8,C=16,_=32,E=64,x=128,k=256,S=512,O=30,N="...",P=800,T=16,V=1,R=2,L=1/0,A=9007199254740991,j=17976931348623157e292,B=NaN,I=4294967295,M=I-1,F=I>>>1,D=[["ary",x],["bind",g],["bindKey",y],["curry",w],["curryRight",C],["flip",S],["partial",_],["partialRight",E],["rearg",k]],U="[object Arguments]",$="[object Array]",H="[object AsyncFunction]",z="[object Boolean]",q="[object Date]",W="[object DOMException]",K="[object Error]",G="[object Function]",Z="[object GeneratorFunction]",Y="[object Map]",J="[object Number]",Q="[object Null]",X="[object Object]",ee="[object Promise]",te="[object Proxy]",ne="[object RegExp]",re="[object Set]",oe="[object String]",ie="[object Symbol]",ae="[object Undefined]",le="[object WeakMap]",se="[object WeakSet]",ce="[object ArrayBuffer]",ue="[object DataView]",fe="[object Float32Array]",de="[object Float64Array]",pe="[object Int8Array]",he="[object Int16Array]",ve="[object Int32Array]",me="[object Uint8Array]",ge="[object Uint8ClampedArray]",ye="[object Uint16Array]",be="[object Uint32Array]",we=/\b__p \+= '';/g,Ce=/\b(__p \+=) '' \+/g,_e=/(__e\(.*?\)|\b__t\)) \+\n'';/g,Ee=/&(?:amp|lt|gt|quot|#39);/g,xe=/[&<>"']/g,ke=RegExp(Ee.source),Se=RegExp(xe.source),Oe=/<%-([\s\S]+?)%>/g,Ne=/<%([\s\S]+?)%>/g,Pe=/<%=([\s\S]+?)%>/g,Te=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ve=/^\w*$/,Re=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Le=/[\\^$.*+?()[\]{}|]/g,Ae=RegExp(Le.source),je=/^\s+/,Be=/\s/,Ie=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Me=/\{\n\/\* \[wrapped with (.+)\] \*/,Fe=/,? & /,De=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Ue=/[()=,{}\[\]\/\s]/,$e=/\\(\\)?/g,He=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,ze=/\w*$/,qe=/^[-+]0x[0-9a-f]+$/i,We=/^0b[01]+$/i,Ke=/^\[object .+?Constructor\]$/,Ge=/^0o[0-7]+$/i,Ze=/^(?:0|[1-9]\d*)$/,Ye=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Je=/($^)/,Qe=/['\n\r\u2028\u2029\\]/g,Xe="\\ud800-\\udfff",et="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",tt="\\u2700-\\u27bf",nt="a-z\\xdf-\\xf6\\xf8-\\xff",rt="A-Z\\xc0-\\xd6\\xd8-\\xde",ot="\\ufe0e\\ufe0f",it="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",at="['’]",lt="["+Xe+"]",st="["+it+"]",ct="["+et+"]",ut="\\d+",ft="["+tt+"]",dt="["+nt+"]",pt="[^"+Xe+it+ut+tt+nt+rt+"]",ht="\\ud83c[\\udffb-\\udfff]",vt="[^"+Xe+"]",mt="(?:\\ud83c[\\udde6-\\uddff]){2}",gt="[\\ud800-\\udbff][\\udc00-\\udfff]",yt="["+rt+"]",bt="\\u200d",wt="(?:"+dt+"|"+pt+")",Ct="(?:"+yt+"|"+pt+")",_t="(?:['’](?:d|ll|m|re|s|t|ve))?",Et="(?:['’](?:D|LL|M|RE|S|T|VE))?",xt="(?:"+ct+"|"+ht+")"+"?",kt="["+ot+"]?",St=kt+xt+("(?:"+bt+"(?:"+[vt,mt,gt].join("|")+")"+kt+xt+")*"),Ot="(?:"+[ft,mt,gt].join("|")+")"+St,Nt="(?:"+[vt+ct+"?",ct,mt,gt,lt].join("|")+")",Pt=RegExp(at,"g"),Tt=RegExp(ct,"g"),Vt=RegExp(ht+"(?="+ht+")|"+Nt+St,"g"),Rt=RegExp([yt+"?"+dt+"+"+_t+"(?="+[st,yt,"$"].join("|")+")",Ct+"+"+Et+"(?="+[st,yt+wt,"$"].join("|")+")",yt+"?"+wt+"+"+_t,yt+"+"+Et,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",ut,Ot].join("|"),"g"),Lt=RegExp("["+bt+Xe+et+ot+"]"),At=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,jt=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Bt=-1,It={};It[fe]=It[de]=It[pe]=It[he]=It[ve]=It[me]=It[ge]=It[ye]=It[be]=!0,It[U]=It[$]=It[ce]=It[z]=It[ue]=It[q]=It[K]=It[G]=It[Y]=It[J]=It[X]=It[ne]=It[re]=It[oe]=It[le]=!1;var Mt={};Mt[U]=Mt[$]=Mt[ce]=Mt[ue]=Mt[z]=Mt[q]=Mt[fe]=Mt[de]=Mt[pe]=Mt[he]=Mt[ve]=Mt[Y]=Mt[J]=Mt[X]=Mt[ne]=Mt[re]=Mt[oe]=Mt[ie]=Mt[me]=Mt[ge]=Mt[ye]=Mt[be]=!0,Mt[K]=Mt[G]=Mt[le]=!1;var Ft={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Dt=parseFloat,Ut=parseInt,$t="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,Ht="object"==typeof self&&self&&self.Object===Object&&self,zt=$t||Ht||Function("return this")(),qt=t&&!t.nodeType&&t,Wt=qt&&e&&!e.nodeType&&e,Kt=Wt&&Wt.exports===qt,Gt=Kt&&$t.process,Zt=function(){try{var e=Wt&&Wt.require&&Wt.require("util").types;return e||Gt&&Gt.binding&&Gt.binding("util")}catch(e){}}(),Yt=Zt&&Zt.isArrayBuffer,Jt=Zt&&Zt.isDate,Qt=Zt&&Zt.isMap,Xt=Zt&&Zt.isRegExp,en=Zt&&Zt.isSet,tn=Zt&&Zt.isTypedArray;function nn(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function rn(e,t,n,r){for(var o=-1,i=null==e?0:e.length;++o-1}function un(e,t,n){for(var r=-1,o=null==e?0:e.length;++r-1;);return n}function Ln(e,t){for(var n=e.length;n--&&bn(t,e[n],0)>-1;);return n}var An=xn({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"}),jn=xn({"&":"&","<":"<",">":">",'"':""","'":"'"});function Bn(e){return"\\"+Ft[e]}function In(e){return Lt.test(e)}function Mn(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}function Fn(e,t){return function(n){return e(t(n))}}function Dn(e,t){for(var n=-1,r=e.length,o=0,i=[];++n",""":'"',"'":"'"});var Kn=function e(t){var n,r=(t=null==t?zt:Kn.defaults(zt.Object(),t,Kn.pick(zt,jt))).Array,Be=t.Date,Xe=t.Error,et=t.Function,tt=t.Math,nt=t.Object,rt=t.RegExp,ot=t.String,it=t.TypeError,at=r.prototype,lt=et.prototype,st=nt.prototype,ct=t["__core-js_shared__"],ut=lt.toString,ft=st.hasOwnProperty,dt=0,pt=(n=/[^.]+$/.exec(ct&&ct.keys&&ct.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",ht=st.toString,vt=ut.call(nt),mt=zt._,gt=rt("^"+ut.call(ft).replace(Le,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),yt=Kt?t.Buffer:o,bt=t.Symbol,wt=t.Uint8Array,Ct=yt?yt.allocUnsafe:o,_t=Fn(nt.getPrototypeOf,nt),Et=nt.create,xt=st.propertyIsEnumerable,kt=at.splice,St=bt?bt.isConcatSpreadable:o,Ot=bt?bt.iterator:o,Nt=bt?bt.toStringTag:o,Vt=function(){try{var e=$i(nt,"defineProperty");return e({},"",{}),e}catch(e){}}(),Lt=t.clearTimeout!==zt.clearTimeout&&t.clearTimeout,Ft=Be&&Be.now!==zt.Date.now&&Be.now,$t=t.setTimeout!==zt.setTimeout&&t.setTimeout,Ht=tt.ceil,qt=tt.floor,Wt=nt.getOwnPropertySymbols,Gt=yt?yt.isBuffer:o,Zt=t.isFinite,mn=at.join,xn=Fn(nt.keys,nt),Gn=tt.max,Zn=tt.min,Yn=Be.now,Jn=t.parseInt,Qn=tt.random,Xn=at.reverse,er=$i(t,"DataView"),tr=$i(t,"Map"),nr=$i(t,"Promise"),rr=$i(t,"Set"),or=$i(t,"WeakMap"),ir=$i(nt,"create"),ar=or&&new or,lr={},sr=ha(er),cr=ha(tr),ur=ha(nr),fr=ha(rr),dr=ha(or),pr=bt?bt.prototype:o,hr=pr?pr.valueOf:o,vr=pr?pr.toString:o;function mr(e){if(Vl(e)&&!wl(e)&&!(e instanceof wr)){if(e instanceof br)return e;if(ft.call(e,"__wrapped__"))return va(e)}return new br(e)}var gr=function(){function e(){}return function(t){if(!Tl(t))return{};if(Et)return Et(t);e.prototype=t;var n=new e;return e.prototype=o,n}}();function yr(){}function br(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=o}function wr(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=I,this.__views__=[]}function Cr(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t=t?e:t)),e}function Mr(e,t,n,r,i,a){var l,s=t&d,c=t&p,u=t&h;if(n&&(l=i?n(e,r,i,a):n(e)),l!==o)return l;if(!Tl(e))return e;var f=wl(e);if(f){if(l=function(e){var t=e.length,n=new e.constructor(t);t&&"string"==typeof e[0]&&ft.call(e,"index")&&(n.index=e.index,n.input=e.input);return n}(e),!s)return ai(e,l)}else{var v=qi(e),m=v==G||v==Z;if(xl(e))return ei(e,s);if(v==X||v==U||m&&!i){if(l=c||m?{}:Ki(e),!s)return c?function(e,t){return li(e,zi(e),t)}(e,function(e,t){return e&&li(t,ss(t),e)}(l,e)):function(e,t){return li(e,Hi(e),t)}(e,Ar(l,e))}else{if(!Mt[v])return i?e:{};l=function(e,t,n){var r=e.constructor;switch(t){case ce:return ti(e);case z:case q:return new r(+e);case ue:return function(e,t){var n=t?ti(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case fe:case de:case pe:case he:case ve:case me:case ge:case ye:case be:return ni(e,n);case Y:return new r;case J:case oe:return new r(e);case ne:return function(e){var t=new e.constructor(e.source,ze.exec(e));return t.lastIndex=e.lastIndex,t}(e);case re:return new r;case ie:return o=e,hr?nt(hr.call(o)):{}}var o}(e,v,s)}}a||(a=new kr);var g=a.get(e);if(g)return g;a.set(e,l),Bl(e)?e.forEach((function(r){l.add(Mr(r,t,n,r,e,a))})):Rl(e)&&e.forEach((function(r,o){l.set(o,Mr(r,t,n,o,e,a))}));var y=f?o:(u?c?ji:Ai:c?ss:ls)(e);return on(y||e,(function(r,o){y&&(r=e[o=r]),Vr(l,o,Mr(r,t,n,o,e,a))})),l}function Fr(e,t,n){var r=n.length;if(null==e)return!r;for(e=nt(e);r--;){var i=n[r],a=t[i],l=e[i];if(l===o&&!(i in e)||!a(l))return!1}return!0}function Dr(e,t,n){if("function"!=typeof e)throw new it(l);return la((function(){e.apply(o,n)}),t)}function Ur(e,t,n,r){var o=-1,a=cn,l=!0,s=e.length,c=[],u=t.length;if(!s)return c;n&&(t=fn(t,Pn(n))),r?(a=un,l=!1):t.length>=i&&(a=Vn,l=!1,t=new xr(t));e:for(;++o-1},_r.prototype.set=function(e,t){var n=this.__data__,r=Rr(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},Er.prototype.clear=function(){this.size=0,this.__data__={hash:new Cr,map:new(tr||_r),string:new Cr}},Er.prototype.delete=function(e){var t=Di(this,e).delete(e);return this.size-=t?1:0,t},Er.prototype.get=function(e){return Di(this,e).get(e)},Er.prototype.has=function(e){return Di(this,e).has(e)},Er.prototype.set=function(e,t){var n=Di(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},xr.prototype.add=xr.prototype.push=function(e){return this.__data__.set(e,c),this},xr.prototype.has=function(e){return this.__data__.has(e)},kr.prototype.clear=function(){this.__data__=new _r,this.size=0},kr.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},kr.prototype.get=function(e){return this.__data__.get(e)},kr.prototype.has=function(e){return this.__data__.has(e)},kr.prototype.set=function(e,t){var n=this.__data__;if(n instanceof _r){var r=n.__data__;if(!tr||r.length0&&n(l)?t>1?Kr(l,t-1,n,r,o):dn(o,l):r||(o[o.length]=l)}return o}var Gr=fi(),Zr=fi(!0);function Yr(e,t){return e&&Gr(e,t,ls)}function Jr(e,t){return e&&Zr(e,t,ls)}function Qr(e,t){return sn(t,(function(t){return Ol(e[t])}))}function Xr(e,t){for(var n=0,r=(t=Yo(t,e)).length;null!=e&&nt}function ro(e,t){return null!=e&&ft.call(e,t)}function oo(e,t){return null!=e&&t in nt(e)}function io(e,t,n){for(var i=n?un:cn,a=e[0].length,l=e.length,s=l,c=r(l),u=1/0,f=[];s--;){var d=e[s];s&&t&&(d=fn(d,Pn(t))),u=Zn(d.length,u),c[s]=!n&&(t||a>=120&&d.length>=120)?new xr(s&&d):o}d=e[0];var p=-1,h=c[0];e:for(;++p=l?s:s*("desc"==n[r]?-1:1)}return e.index-t.index}(e,t,n)}))}function _o(e,t,n){for(var r=-1,o=t.length,i={};++r-1;)l!==e&&kt.call(l,s,1),kt.call(e,s,1);return e}function xo(e,t){for(var n=e?t.length:0,r=n-1;n--;){var o=t[n];if(n==r||o!==i){var i=o;Zi(o)?kt.call(e,o,1):$o(e,o)}}return e}function ko(e,t){return e+qt(Qn()*(t-e+1))}function So(e,t){var n="";if(!e||t<1||t>A)return n;do{t%2&&(n+=e),(t=qt(t/2))&&(e+=e)}while(t);return n}function Oo(e,t){return sa(ra(e,t,Ls),e+"")}function No(e){return Or(ms(e))}function Po(e,t){var n=ms(e);return fa(n,Ir(t,0,n.length))}function To(e,t,n,r){if(!Tl(e))return e;for(var i=-1,a=(t=Yo(t,e)).length,l=a-1,s=e;null!=s&&++ii?0:i+t),(n=n>i?i:n)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var a=r(i);++o>>1,a=e[i];null!==a&&!Ml(a)&&(n?a<=t:a=i){var u=t?null:Si(e);if(u)return Un(u);l=!1,o=Vn,c=new xr}else c=t?[]:s;e:for(;++r=r?e:Ao(e,t,n)}var Xo=Lt||function(e){return zt.clearTimeout(e)};function ei(e,t){if(t)return e.slice();var n=e.length,r=Ct?Ct(n):new e.constructor(n);return e.copy(r),r}function ti(e){var t=new e.constructor(e.byteLength);return new wt(t).set(new wt(e)),t}function ni(e,t){var n=t?ti(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function ri(e,t){if(e!==t){var n=e!==o,r=null===e,i=e==e,a=Ml(e),l=t!==o,s=null===t,c=t==t,u=Ml(t);if(!s&&!u&&!a&&e>t||a&&l&&c&&!s&&!u||r&&l&&c||!n&&c||!i)return 1;if(!r&&!a&&!u&&e1?n[i-1]:o,l=i>2?n[2]:o;for(a=e.length>3&&"function"==typeof a?(i--,a):o,l&&Yi(n[0],n[1],l)&&(a=i<3?o:a,i=1),t=nt(t);++r-1?i[a?t[l]:l]:o}}function mi(e){return Li((function(t){var n=t.length,r=n,i=br.prototype.thru;for(e&&t.reverse();r--;){var a=t[r];if("function"!=typeof a)throw new it(l);if(i&&!s&&"wrapper"==Ii(a))var s=new br([],!0)}for(r=s?r:n;++r1&&w.reverse(),d&&us))return!1;var u=a.get(e),f=a.get(t);if(u&&f)return u==t&&f==e;var d=-1,p=!0,h=n&m?new xr:o;for(a.set(e,t),a.set(t,e);++d-1&&e%1==0&&e1?"& ":"")+t[r],t=t.join(n>2?", ":" "),e.replace(Ie,"{\n/* [wrapped with "+t+"] */\n")}(r,function(e,t){return on(D,(function(n){var r="_."+n[0];t&n[1]&&!cn(e,r)&&e.push(r)})),e.sort()}(function(e){var t=e.match(Me);return t?t[1].split(Fe):[]}(r),n)))}function ua(e){var t=0,n=0;return function(){var r=Yn(),i=T-(r-n);if(n=r,i>0){if(++t>=P)return arguments[0]}else t=0;return e.apply(o,arguments)}}function fa(e,t){var n=-1,r=e.length,i=r-1;for(t=t===o?r:t;++n1?e[t-1]:o;return n="function"==typeof n?(e.pop(),n):o,ja(e,n)}));function $a(e){var t=mr(e);return t.__chain__=!0,t}function Ha(e,t){return t(e)}var za=Li((function(e){var t=e.length,n=t?e[0]:0,r=this.__wrapped__,i=function(t){return Br(t,e)};return!(t>1||this.__actions__.length)&&r instanceof wr&&Zi(n)?((r=r.slice(n,+n+(t?1:0))).__actions__.push({func:Ha,args:[i],thisArg:o}),new br(r,this.__chain__).thru((function(e){return t&&!e.length&&e.push(o),e}))):this.thru(i)}));var qa=si((function(e,t,n){ft.call(e,n)?++e[n]:jr(e,n,1)}));var Wa=vi(ba),Ka=vi(wa);function Ga(e,t){return(wl(e)?on:$r)(e,Fi(t,3))}function Za(e,t){return(wl(e)?an:Hr)(e,Fi(t,3))}var Ya=si((function(e,t,n){ft.call(e,n)?e[n].push(t):jr(e,n,[t])}));var Ja=Oo((function(e,t,n){var o=-1,i="function"==typeof t,a=_l(e)?r(e.length):[];return $r(e,(function(e){a[++o]=i?nn(t,e,n):ao(e,t,n)})),a})),Qa=si((function(e,t,n){jr(e,n,t)}));function Xa(e,t){return(wl(e)?fn:mo)(e,Fi(t,3))}var el=si((function(e,t,n){e[n?0:1].push(t)}),(function(){return[[],[]]}));var tl=Oo((function(e,t){if(null==e)return[];var n=t.length;return n>1&&Yi(e,t[0],t[1])?t=[]:n>2&&Yi(t[0],t[1],t[2])&&(t=[t[0]]),Co(e,Kr(t,1),[])})),nl=Ft||function(){return zt.Date.now()};function rl(e,t,n){return t=n?o:t,t=e&&null==t?e.length:t,Ni(e,x,o,o,o,o,t)}function ol(e,t){var n;if("function"!=typeof t)throw new it(l);return e=zl(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=o),n}}var il=Oo((function(e,t,n){var r=g;if(n.length){var o=Dn(n,Mi(il));r|=_}return Ni(e,r,t,n,o)})),al=Oo((function(e,t,n){var r=g|y;if(n.length){var o=Dn(n,Mi(al));r|=_}return Ni(t,r,e,n,o)}));function ll(e,t,n){var r,i,a,s,c,u,f=0,d=!1,p=!1,h=!0;if("function"!=typeof e)throw new it(l);function v(t){var n=r,a=i;return r=i=o,f=t,s=e.apply(a,n)}function m(e){var n=e-u;return u===o||n>=t||n<0||p&&e-f>=a}function g(){var e=nl();if(m(e))return y(e);c=la(g,function(e){var n=t-(e-u);return p?Zn(n,a-(e-f)):n}(e))}function y(e){return c=o,h&&r?v(e):(r=i=o,s)}function b(){var e=nl(),n=m(e);if(r=arguments,i=this,u=e,n){if(c===o)return function(e){return f=e,c=la(g,t),d?v(e):s}(u);if(p)return Xo(c),c=la(g,t),v(u)}return c===o&&(c=la(g,t)),s}return t=Wl(t)||0,Tl(n)&&(d=!!n.leading,a=(p="maxWait"in n)?Gn(Wl(n.maxWait)||0,t):a,h="trailing"in n?!!n.trailing:h),b.cancel=function(){c!==o&&Xo(c),f=0,r=u=i=c=o},b.flush=function(){return c===o?s:y(nl())},b}var sl=Oo((function(e,t){return Dr(e,1,t)})),cl=Oo((function(e,t,n){return Dr(e,Wl(t)||0,n)}));function ul(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new it(l);var n=function(){var r=arguments,o=t?t.apply(this,r):r[0],i=n.cache;if(i.has(o))return i.get(o);var a=e.apply(this,r);return n.cache=i.set(o,a)||i,a};return n.cache=new(ul.Cache||Er),n}function fl(e){if("function"!=typeof e)throw new it(l);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}ul.Cache=Er;var dl=Jo((function(e,t){var n=(t=1==t.length&&wl(t[0])?fn(t[0],Pn(Fi())):fn(Kr(t,1),Pn(Fi()))).length;return Oo((function(r){for(var o=-1,i=Zn(r.length,n);++o=t})),bl=lo(function(){return arguments}())?lo:function(e){return Vl(e)&&ft.call(e,"callee")&&!xt.call(e,"callee")},wl=r.isArray,Cl=Yt?Pn(Yt):function(e){return Vl(e)&&to(e)==ce};function _l(e){return null!=e&&Pl(e.length)&&!Ol(e)}function El(e){return Vl(e)&&_l(e)}var xl=Gt||Ws,kl=Jt?Pn(Jt):function(e){return Vl(e)&&to(e)==q};function Sl(e){if(!Vl(e))return!1;var t=to(e);return t==K||t==W||"string"==typeof e.message&&"string"==typeof e.name&&!Al(e)}function Ol(e){if(!Tl(e))return!1;var t=to(e);return t==G||t==Z||t==H||t==te}function Nl(e){return"number"==typeof e&&e==zl(e)}function Pl(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=A}function Tl(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Vl(e){return null!=e&&"object"==typeof e}var Rl=Qt?Pn(Qt):function(e){return Vl(e)&&qi(e)==Y};function Ll(e){return"number"==typeof e||Vl(e)&&to(e)==J}function Al(e){if(!Vl(e)||to(e)!=X)return!1;var t=_t(e);if(null===t)return!0;var n=ft.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&ut.call(n)==vt}var jl=Xt?Pn(Xt):function(e){return Vl(e)&&to(e)==ne};var Bl=en?Pn(en):function(e){return Vl(e)&&qi(e)==re};function Il(e){return"string"==typeof e||!wl(e)&&Vl(e)&&to(e)==oe}function Ml(e){return"symbol"==typeof e||Vl(e)&&to(e)==ie}var Fl=tn?Pn(tn):function(e){return Vl(e)&&Pl(e.length)&&!!It[to(e)]};var Dl=Ei(vo),Ul=Ei((function(e,t){return e<=t}));function $l(e){if(!e)return[];if(_l(e))return Il(e)?zn(e):ai(e);if(Ot&&e[Ot])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[Ot]());var t=qi(e);return(t==Y?Mn:t==re?Un:ms)(e)}function Hl(e){return e?(e=Wl(e))===L||e===-L?(e<0?-1:1)*j:e==e?e:0:0===e?e:0}function zl(e){var t=Hl(e),n=t%1;return t==t?n?t-n:t:0}function ql(e){return e?Ir(zl(e),0,I):0}function Wl(e){if("number"==typeof e)return e;if(Ml(e))return B;if(Tl(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Tl(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=Nn(e);var n=We.test(e);return n||Ge.test(e)?Ut(e.slice(2),n?2:8):qe.test(e)?B:+e}function Kl(e){return li(e,ss(e))}function Gl(e){return null==e?"":Do(e)}var Zl=ci((function(e,t){if(ea(t)||_l(t))li(t,ls(t),e);else for(var n in t)ft.call(t,n)&&Vr(e,n,t[n])})),Yl=ci((function(e,t){li(t,ss(t),e)})),Jl=ci((function(e,t,n,r){li(t,ss(t),e,r)})),Ql=ci((function(e,t,n,r){li(t,ls(t),e,r)})),Xl=Li(Br);var es=Oo((function(e,t){e=nt(e);var n=-1,r=t.length,i=r>2?t[2]:o;for(i&&Yi(t[0],t[1],i)&&(r=1);++n1),t})),li(e,ji(e),n),r&&(n=Mr(n,d|p|h,Vi));for(var o=t.length;o--;)$o(n,t[o]);return n}));var ds=Li((function(e,t){return null==e?{}:function(e,t){return _o(e,t,(function(t,n){return rs(e,n)}))}(e,t)}));function ps(e,t){if(null==e)return{};var n=fn(ji(e),(function(e){return[e]}));return t=Fi(t),_o(e,n,(function(e,n){return t(e,n[0])}))}var hs=Oi(ls),vs=Oi(ss);function ms(e){return null==e?[]:Tn(e,ls(e))}var gs=pi((function(e,t,n){return t=t.toLowerCase(),e+(n?ys(t):t)}));function ys(e){return Ss(Gl(e).toLowerCase())}function bs(e){return(e=Gl(e))&&e.replace(Ye,An).replace(Tt,"")}var ws=pi((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()})),Cs=pi((function(e,t,n){return e+(n?" ":"")+t.toLowerCase()})),_s=di("toLowerCase");var Es=pi((function(e,t,n){return e+(n?"_":"")+t.toLowerCase()}));var xs=pi((function(e,t,n){return e+(n?" ":"")+Ss(t)}));var ks=pi((function(e,t,n){return e+(n?" ":"")+t.toUpperCase()})),Ss=di("toUpperCase");function Os(e,t,n){return e=Gl(e),(t=n?o:t)===o?function(e){return At.test(e)}(e)?function(e){return e.match(Rt)||[]}(e):function(e){return e.match(De)||[]}(e):e.match(t)||[]}var Ns=Oo((function(e,t){try{return nn(e,o,t)}catch(e){return Sl(e)?e:new Xe(e)}})),Ps=Li((function(e,t){return on(t,(function(t){t=pa(t),jr(e,t,il(e[t],e))})),e}));function Ts(e){return function(){return e}}var Vs=mi(),Rs=mi(!0);function Ls(e){return e}function As(e){return fo("function"==typeof e?e:Mr(e,d))}var js=Oo((function(e,t){return function(n){return ao(n,e,t)}})),Bs=Oo((function(e,t){return function(n){return ao(e,n,t)}}));function Is(e,t,n){var r=ls(t),o=Qr(t,r);null!=n||Tl(t)&&(o.length||!r.length)||(n=t,t=e,e=this,o=Qr(t,ls(t)));var i=!(Tl(n)&&"chain"in n&&!n.chain),a=Ol(e);return on(o,(function(n){var r=t[n];e[n]=r,a&&(e.prototype[n]=function(){var t=this.__chain__;if(i||t){var n=e(this.__wrapped__);return(n.__actions__=ai(this.__actions__)).push({func:r,args:arguments,thisArg:e}),n.__chain__=t,n}return r.apply(e,dn([this.value()],arguments))})})),e}function Ms(){}var Fs=wi(fn),Ds=wi(ln),Us=wi(vn);function $s(e){return Ji(e)?En(pa(e)):function(e){return function(t){return Xr(t,e)}}(e)}var Hs=_i(),zs=_i(!0);function qs(){return[]}function Ws(){return!1}var Ks=bi((function(e,t){return e+t}),0),Gs=ki("ceil"),Zs=bi((function(e,t){return e/t}),1),Ys=ki("floor");var Js,Qs=bi((function(e,t){return e*t}),1),Xs=ki("round"),ec=bi((function(e,t){return e-t}),0);return mr.after=function(e,t){if("function"!=typeof t)throw new it(l);return e=zl(e),function(){if(--e<1)return t.apply(this,arguments)}},mr.ary=rl,mr.assign=Zl,mr.assignIn=Yl,mr.assignInWith=Jl,mr.assignWith=Ql,mr.at=Xl,mr.before=ol,mr.bind=il,mr.bindAll=Ps,mr.bindKey=al,mr.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return wl(e)?e:[e]},mr.chain=$a,mr.chunk=function(e,t,n){t=(n?Yi(e,t,n):t===o)?1:Gn(zl(t),0);var i=null==e?0:e.length;if(!i||t<1)return[];for(var a=0,l=0,s=r(Ht(i/t));ai?0:i+n),(r=r===o||r>i?i:zl(r))<0&&(r+=i),r=n>r?0:ql(r);n>>0)?(e=Gl(e))&&("string"==typeof t||null!=t&&!jl(t))&&!(t=Do(t))&&In(e)?Qo(zn(e),0,n):e.split(t,n):[]},mr.spread=function(e,t){if("function"!=typeof e)throw new it(l);return t=null==t?0:Gn(zl(t),0),Oo((function(n){var r=n[t],o=Qo(n,0,t);return r&&dn(o,r),nn(e,this,o)}))},mr.tail=function(e){var t=null==e?0:e.length;return t?Ao(e,1,t):[]},mr.take=function(e,t,n){return e&&e.length?Ao(e,0,(t=n||t===o?1:zl(t))<0?0:t):[]},mr.takeRight=function(e,t,n){var r=null==e?0:e.length;return r?Ao(e,(t=r-(t=n||t===o?1:zl(t)))<0?0:t,r):[]},mr.takeRightWhile=function(e,t){return e&&e.length?zo(e,Fi(t,3),!1,!0):[]},mr.takeWhile=function(e,t){return e&&e.length?zo(e,Fi(t,3)):[]},mr.tap=function(e,t){return t(e),e},mr.throttle=function(e,t,n){var r=!0,o=!0;if("function"!=typeof e)throw new it(l);return Tl(n)&&(r="leading"in n?!!n.leading:r,o="trailing"in n?!!n.trailing:o),ll(e,t,{leading:r,maxWait:t,trailing:o})},mr.thru=Ha,mr.toArray=$l,mr.toPairs=hs,mr.toPairsIn=vs,mr.toPath=function(e){return wl(e)?fn(e,pa):Ml(e)?[e]:ai(da(Gl(e)))},mr.toPlainObject=Kl,mr.transform=function(e,t,n){var r=wl(e),o=r||xl(e)||Fl(e);if(t=Fi(t,4),null==n){var i=e&&e.constructor;n=o?r?new i:[]:Tl(e)&&Ol(i)?gr(_t(e)):{}}return(o?on:Yr)(e,(function(e,r,o){return t(n,e,r,o)})),n},mr.unary=function(e){return rl(e,1)},mr.union=Va,mr.unionBy=Ra,mr.unionWith=La,mr.uniq=function(e){return e&&e.length?Uo(e):[]},mr.uniqBy=function(e,t){return e&&e.length?Uo(e,Fi(t,2)):[]},mr.uniqWith=function(e,t){return t="function"==typeof t?t:o,e&&e.length?Uo(e,o,t):[]},mr.unset=function(e,t){return null==e||$o(e,t)},mr.unzip=Aa,mr.unzipWith=ja,mr.update=function(e,t,n){return null==e?e:Ho(e,t,Zo(n))},mr.updateWith=function(e,t,n,r){return r="function"==typeof r?r:o,null==e?e:Ho(e,t,Zo(n),r)},mr.values=ms,mr.valuesIn=function(e){return null==e?[]:Tn(e,ss(e))},mr.without=Ba,mr.words=Os,mr.wrap=function(e,t){return pl(Zo(t),e)},mr.xor=Ia,mr.xorBy=Ma,mr.xorWith=Fa,mr.zip=Da,mr.zipObject=function(e,t){return Ko(e||[],t||[],Vr)},mr.zipObjectDeep=function(e,t){return Ko(e||[],t||[],To)},mr.zipWith=Ua,mr.entries=hs,mr.entriesIn=vs,mr.extend=Yl,mr.extendWith=Jl,Is(mr,mr),mr.add=Ks,mr.attempt=Ns,mr.camelCase=gs,mr.capitalize=ys,mr.ceil=Gs,mr.clamp=function(e,t,n){return n===o&&(n=t,t=o),n!==o&&(n=(n=Wl(n))==n?n:0),t!==o&&(t=(t=Wl(t))==t?t:0),Ir(Wl(e),t,n)},mr.clone=function(e){return Mr(e,h)},mr.cloneDeep=function(e){return Mr(e,d|h)},mr.cloneDeepWith=function(e,t){return Mr(e,d|h,t="function"==typeof t?t:o)},mr.cloneWith=function(e,t){return Mr(e,h,t="function"==typeof t?t:o)},mr.conformsTo=function(e,t){return null==t||Fr(e,t,ls(t))},mr.deburr=bs,mr.defaultTo=function(e,t){return null==e||e!=e?t:e},mr.divide=Zs,mr.endsWith=function(e,t,n){e=Gl(e),t=Do(t);var r=e.length,i=n=n===o?r:Ir(zl(n),0,r);return(n-=t.length)>=0&&e.slice(n,i)==t},mr.eq=ml,mr.escape=function(e){return(e=Gl(e))&&Se.test(e)?e.replace(xe,jn):e},mr.escapeRegExp=function(e){return(e=Gl(e))&&Ae.test(e)?e.replace(Le,"\\$&"):e},mr.every=function(e,t,n){var r=wl(e)?ln:zr;return n&&Yi(e,t,n)&&(t=o),r(e,Fi(t,3))},mr.find=Wa,mr.findIndex=ba,mr.findKey=function(e,t){return gn(e,Fi(t,3),Yr)},mr.findLast=Ka,mr.findLastIndex=wa,mr.findLastKey=function(e,t){return gn(e,Fi(t,3),Jr)},mr.floor=Ys,mr.forEach=Ga,mr.forEachRight=Za,mr.forIn=function(e,t){return null==e?e:Gr(e,Fi(t,3),ss)},mr.forInRight=function(e,t){return null==e?e:Zr(e,Fi(t,3),ss)},mr.forOwn=function(e,t){return e&&Yr(e,Fi(t,3))},mr.forOwnRight=function(e,t){return e&&Jr(e,Fi(t,3))},mr.get=ns,mr.gt=gl,mr.gte=yl,mr.has=function(e,t){return null!=e&&Wi(e,t,ro)},mr.hasIn=rs,mr.head=_a,mr.identity=Ls,mr.includes=function(e,t,n,r){e=_l(e)?e:ms(e),n=n&&!r?zl(n):0;var o=e.length;return n<0&&(n=Gn(o+n,0)),Il(e)?n<=o&&e.indexOf(t,n)>-1:!!o&&bn(e,t,n)>-1},mr.indexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var o=null==n?0:zl(n);return o<0&&(o=Gn(r+o,0)),bn(e,t,o)},mr.inRange=function(e,t,n){return t=Hl(t),n===o?(n=t,t=0):n=Hl(n),function(e,t,n){return e>=Zn(t,n)&&e=-A&&e<=A},mr.isSet=Bl,mr.isString=Il,mr.isSymbol=Ml,mr.isTypedArray=Fl,mr.isUndefined=function(e){return e===o},mr.isWeakMap=function(e){return Vl(e)&&qi(e)==le},mr.isWeakSet=function(e){return Vl(e)&&to(e)==se},mr.join=function(e,t){return null==e?"":mn.call(e,t)},mr.kebabCase=ws,mr.last=Sa,mr.lastIndexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r;return n!==o&&(i=(i=zl(n))<0?Gn(r+i,0):Zn(i,r-1)),t==t?function(e,t,n){for(var r=n+1;r--;)if(e[r]===t)return r;return r}(e,t,i):yn(e,Cn,i,!0)},mr.lowerCase=Cs,mr.lowerFirst=_s,mr.lt=Dl,mr.lte=Ul,mr.max=function(e){return e&&e.length?qr(e,Ls,no):o},mr.maxBy=function(e,t){return e&&e.length?qr(e,Fi(t,2),no):o},mr.mean=function(e){return _n(e,Ls)},mr.meanBy=function(e,t){return _n(e,Fi(t,2))},mr.min=function(e){return e&&e.length?qr(e,Ls,vo):o},mr.minBy=function(e,t){return e&&e.length?qr(e,Fi(t,2),vo):o},mr.stubArray=qs,mr.stubFalse=Ws,mr.stubObject=function(){return{}},mr.stubString=function(){return""},mr.stubTrue=function(){return!0},mr.multiply=Qs,mr.nth=function(e,t){return e&&e.length?wo(e,zl(t)):o},mr.noConflict=function(){return zt._===this&&(zt._=mt),this},mr.noop=Ms,mr.now=nl,mr.pad=function(e,t,n){e=Gl(e);var r=(t=zl(t))?Hn(e):0;if(!t||r>=t)return e;var o=(t-r)/2;return Ci(qt(o),n)+e+Ci(Ht(o),n)},mr.padEnd=function(e,t,n){e=Gl(e);var r=(t=zl(t))?Hn(e):0;return t&&rt){var r=e;e=t,t=r}if(n||e%1||t%1){var i=Qn();return Zn(e+i*(t-e+Dt("1e-"+((i+"").length-1))),t)}return ko(e,t)},mr.reduce=function(e,t,n){var r=wl(e)?pn:kn,o=arguments.length<3;return r(e,Fi(t,4),n,o,$r)},mr.reduceRight=function(e,t,n){var r=wl(e)?hn:kn,o=arguments.length<3;return r(e,Fi(t,4),n,o,Hr)},mr.repeat=function(e,t,n){return t=(n?Yi(e,t,n):t===o)?1:zl(t),So(Gl(e),t)},mr.replace=function(){var e=arguments,t=Gl(e[0]);return e.length<3?t:t.replace(e[1],e[2])},mr.result=function(e,t,n){var r=-1,i=(t=Yo(t,e)).length;for(i||(i=1,e=o);++rA)return[];var n=I,r=Zn(e,I);t=Fi(t),e-=I;for(var o=On(r,t);++n=a)return e;var s=n-Hn(r);if(s<1)return r;var c=l?Qo(l,0,s).join(""):e.slice(0,s);if(i===o)return c+r;if(l&&(s+=c.length-s),jl(i)){if(e.slice(s).search(i)){var u,f=c;for(i.global||(i=rt(i.source,Gl(ze.exec(i))+"g")),i.lastIndex=0;u=i.exec(f);)var d=u.index;c=c.slice(0,d===o?s:d)}}else if(e.indexOf(Do(i),s)!=s){var p=c.lastIndexOf(i);p>-1&&(c=c.slice(0,p))}return c+r},mr.unescape=function(e){return(e=Gl(e))&&ke.test(e)?e.replace(Ee,Wn):e},mr.uniqueId=function(e){var t=++dt;return Gl(e)+t},mr.upperCase=ks,mr.upperFirst=Ss,mr.each=Ga,mr.eachRight=Za,mr.first=_a,Is(mr,(Js={},Yr(mr,(function(e,t){ft.call(mr.prototype,t)||(Js[t]=e)})),Js),{chain:!1}),mr.VERSION="4.17.21",on(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(e){mr[e].placeholder=mr})),on(["drop","take"],(function(e,t){wr.prototype[e]=function(n){n=n===o?1:Gn(zl(n),0);var r=this.__filtered__&&!t?new wr(this):this.clone();return r.__filtered__?r.__takeCount__=Zn(n,r.__takeCount__):r.__views__.push({size:Zn(n,I),type:e+(r.__dir__<0?"Right":"")}),r},wr.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}})),on(["filter","map","takeWhile"],(function(e,t){var n=t+1,r=n==V||3==n;wr.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:Fi(e,3),type:n}),t.__filtered__=t.__filtered__||r,t}})),on(["head","last"],(function(e,t){var n="take"+(t?"Right":"");wr.prototype[e]=function(){return this[n](1).value()[0]}})),on(["initial","tail"],(function(e,t){var n="drop"+(t?"":"Right");wr.prototype[e]=function(){return this.__filtered__?new wr(this):this[n](1)}})),wr.prototype.compact=function(){return this.filter(Ls)},wr.prototype.find=function(e){return this.filter(e).head()},wr.prototype.findLast=function(e){return this.reverse().find(e)},wr.prototype.invokeMap=Oo((function(e,t){return"function"==typeof e?new wr(this):this.map((function(n){return ao(n,e,t)}))})),wr.prototype.reject=function(e){return this.filter(fl(Fi(e)))},wr.prototype.slice=function(e,t){e=zl(e);var n=this;return n.__filtered__&&(e>0||t<0)?new wr(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),t!==o&&(n=(t=zl(t))<0?n.dropRight(-t):n.take(t-e)),n)},wr.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},wr.prototype.toArray=function(){return this.take(I)},Yr(wr.prototype,(function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),i=mr[r?"take"+("last"==t?"Right":""):t],a=r||/^find/.test(t);i&&(mr.prototype[t]=function(){var t=this.__wrapped__,l=r?[1]:arguments,s=t instanceof wr,c=l[0],u=s||wl(t),f=function(e){var t=i.apply(mr,dn([e],l));return r&&d?t[0]:t};u&&n&&"function"==typeof c&&1!=c.length&&(s=u=!1);var d=this.__chain__,p=!!this.__actions__.length,h=a&&!d,v=s&&!p;if(!a&&u){t=v?t:new wr(this);var m=e.apply(t,l);return m.__actions__.push({func:Ha,args:[f],thisArg:o}),new br(m,d)}return h&&v?e.apply(this,l):(m=this.thru(f),h?r?m.value()[0]:m.value():m)})})),on(["pop","push","shift","sort","splice","unshift"],(function(e){var t=at[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",r=/^(?:pop|shift)$/.test(e);mr.prototype[e]=function(){var e=arguments;if(r&&!this.__chain__){var o=this.value();return t.apply(wl(o)?o:[],e)}return this[n]((function(n){return t.apply(wl(n)?n:[],e)}))}})),Yr(wr.prototype,(function(e,t){var n=mr[t];if(n){var r=n.name+"";ft.call(lr,r)||(lr[r]=[]),lr[r].push({name:t,func:n})}})),lr[gi(o,y).name]=[{name:"wrapper",func:o}],wr.prototype.clone=function(){var e=new wr(this.__wrapped__);return e.__actions__=ai(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=ai(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=ai(this.__views__),e},wr.prototype.reverse=function(){if(this.__filtered__){var e=new wr(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},wr.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=wl(e),r=t<0,o=n?e.length:0,i=function(e,t,n){var r=-1,o=n.length;for(;++r=this.__values__.length;return{done:e,value:e?o:this.__values__[this.__index__++]}},mr.prototype.plant=function(e){for(var t,n=this;n instanceof yr;){var r=va(n);r.__index__=0,r.__values__=o,t?i.__wrapped__=r:t=r;var i=r;n=n.__wrapped__}return i.__wrapped__=e,t},mr.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof wr){var t=e;return this.__actions__.length&&(t=new wr(this)),(t=t.reverse()).__actions__.push({func:Ha,args:[Ta],thisArg:o}),new br(t,this.__chain__)}return this.thru(Ta)},mr.prototype.toJSON=mr.prototype.valueOf=mr.prototype.value=function(){return qo(this.__wrapped__,this.__actions__)},mr.prototype.first=mr.prototype.head,Ot&&(mr.prototype[Ot]=function(){return this}),mr}();zt._=Kn,(r=function(){return Kn}.call(t,n,t,e))===o||(e.exports=r)}.call(this)},378:()=>{},744:(e,t)=>{"use strict";t.Z=(e,t)=>{const n=e.__vccOpts||e;for(const[e,r]of t)n[e]=r;return n}},821:(e,t,n)=>{"use strict";n.r(t),n.d(t,{BaseTransition:()=>vr,Comment:()=>si,EffectScope:()=>pe,Fragment:()=>ai,KeepAlive:()=>Or,ReactiveEffect:()=>Ne,Static:()=>ci,Suspense:()=>Yn,Teleport:()=>oi,Text:()=>li,Transition:()=>Ja,TransitionGroup:()=>ml,VueElement:()=>za,assertNumber:()=>ln,callWithAsyncErrorHandling:()=>cn,callWithErrorHandling:()=>sn,camelize:()=>ee,capitalize:()=>re,cloneVNode:()=>Ti,compatUtils:()=>ka,compile:()=>Uf,computed:()=>ia,createApp:()=>Gl,createBlock:()=>bi,createCommentVNode:()=>Li,createElementBlock:()=>yi,createElementVNode:()=>Si,createHydrationRenderer:()=>Zo,createPropsRestProxy:()=>ha,createRenderer:()=>Go,createSSRApp:()=>Zl,createSlots:()=>oo,createStaticVNode:()=>Ri,createTextVNode:()=>Vi,createVNode:()=>Oi,customRef:()=>Xt,defineAsyncComponent:()=>xr,defineComponent:()=>_r,defineCustomElement:()=>Ua,defineEmits:()=>la,defineExpose:()=>sa,defineProps:()=>aa,defineSSRCustomElement:()=>$a,devtools:()=>Pn,effect:()=>Te,effectScope:()=>he,getCurrentInstance:()=>Hi,getCurrentScope:()=>me,getTransitionRawChildren:()=>Cr,guardReactiveProps:()=>Pi,h:()=>ma,handleError:()=>un,hydrate:()=>Kl,initCustomFormatter:()=>ba,initDirectivesForSSR:()=>Ql,inject:()=>rr,isMemoSame:()=>Ca,isProxy:()=>Bt,isReactive:()=>Lt,isReadonly:()=>At,isRef:()=>Ht,isRuntimeOnly:()=>Xi,isShallow:()=>jt,isVNode:()=>wi,markRaw:()=>Mt,mergeDefaults:()=>pa,mergeProps:()=>Ii,nextTick:()=>wn,normalizeClass:()=>d,normalizeProps:()=>p,normalizeStyle:()=>l,onActivated:()=>Pr,onBeforeMount:()=>Ir,onBeforeUnmount:()=>Ur,onBeforeUpdate:()=>Fr,onDeactivated:()=>Tr,onErrorCaptured:()=>Wr,onMounted:()=>Mr,onRenderTracked:()=>qr,onRenderTriggered:()=>zr,onScopeDispose:()=>ge,onServerPrefetch:()=>Hr,onUnmounted:()=>$r,onUpdated:()=>Dr,openBlock:()=>di,popScopeId:()=>Dn,provide:()=>nr,proxyRefs:()=>Jt,pushScopeId:()=>Fn,queuePostFlushCb:()=>En,reactive:()=>Nt,readonly:()=>Tt,ref:()=>zt,registerRuntimeCompiler:()=>Qi,render:()=>Wl,renderList:()=>ro,renderSlot:()=>io,resolveComponent:()=>Jr,resolveDirective:()=>eo,resolveDynamicComponent:()=>Xr,resolveFilter:()=>xa,resolveTransitionHooks:()=>gr,setBlockTracking:()=>mi,setDevtoolsHook:()=>Rn,setTransitionHooks:()=>wr,shallowReactive:()=>Pt,shallowReadonly:()=>Vt,shallowRef:()=>qt,ssrContextKey:()=>ga,ssrUtils:()=>Ea,stop:()=>Ve,toDisplayString:()=>_,toHandlerKey:()=>oe,toHandlers:()=>lo,toRaw:()=>It,toRef:()=>nn,toRefs:()=>en,transformVNodeArgs:()=>_i,triggerRef:()=>Gt,unref:()=>Zt,useAttrs:()=>fa,useCssModule:()=>qa,useCssVars:()=>Wa,useSSRContext:()=>ya,useSlots:()=>ua,useTransitionState:()=>pr,vModelCheckbox:()=>xl,vModelDynamic:()=>Vl,vModelRadio:()=>Sl,vModelSelect:()=>Ol,vModelText:()=>El,vShow:()=>Fl,version:()=>_a,warn:()=>an,watch:()=>sr,watchEffect:()=>or,watchPostEffect:()=>ir,watchSyncEffect:()=>ar,withAsyncContext:()=>va,withCtx:()=>$n,withDefaults:()=>ca,withDirectives:()=>Kr,withKeys:()=>Ml,withMemo:()=>wa,withModifiers:()=>Bl,withScopeId:()=>Un});var r={};function o(e,t){const n=Object.create(null),r=e.split(",");for(let e=0;e!!n[e.toLowerCase()]:e=>!!n[e]}n.r(r),n.d(r,{BaseTransition:()=>vr,Comment:()=>si,EffectScope:()=>pe,Fragment:()=>ai,KeepAlive:()=>Or,ReactiveEffect:()=>Ne,Static:()=>ci,Suspense:()=>Yn,Teleport:()=>oi,Text:()=>li,Transition:()=>Ja,TransitionGroup:()=>ml,VueElement:()=>za,assertNumber:()=>ln,callWithAsyncErrorHandling:()=>cn,callWithErrorHandling:()=>sn,camelize:()=>ee,capitalize:()=>re,cloneVNode:()=>Ti,compatUtils:()=>ka,computed:()=>ia,createApp:()=>Gl,createBlock:()=>bi,createCommentVNode:()=>Li,createElementBlock:()=>yi,createElementVNode:()=>Si,createHydrationRenderer:()=>Zo,createPropsRestProxy:()=>ha,createRenderer:()=>Go,createSSRApp:()=>Zl,createSlots:()=>oo,createStaticVNode:()=>Ri,createTextVNode:()=>Vi,createVNode:()=>Oi,customRef:()=>Xt,defineAsyncComponent:()=>xr,defineComponent:()=>_r,defineCustomElement:()=>Ua,defineEmits:()=>la,defineExpose:()=>sa,defineProps:()=>aa,defineSSRCustomElement:()=>$a,devtools:()=>Pn,effect:()=>Te,effectScope:()=>he,getCurrentInstance:()=>Hi,getCurrentScope:()=>me,getTransitionRawChildren:()=>Cr,guardReactiveProps:()=>Pi,h:()=>ma,handleError:()=>un,hydrate:()=>Kl,initCustomFormatter:()=>ba,initDirectivesForSSR:()=>Ql,inject:()=>rr,isMemoSame:()=>Ca,isProxy:()=>Bt,isReactive:()=>Lt,isReadonly:()=>At,isRef:()=>Ht,isRuntimeOnly:()=>Xi,isShallow:()=>jt,isVNode:()=>wi,markRaw:()=>Mt,mergeDefaults:()=>pa,mergeProps:()=>Ii,nextTick:()=>wn,normalizeClass:()=>d,normalizeProps:()=>p,normalizeStyle:()=>l,onActivated:()=>Pr,onBeforeMount:()=>Ir,onBeforeUnmount:()=>Ur,onBeforeUpdate:()=>Fr,onDeactivated:()=>Tr,onErrorCaptured:()=>Wr,onMounted:()=>Mr,onRenderTracked:()=>qr,onRenderTriggered:()=>zr,onScopeDispose:()=>ge,onServerPrefetch:()=>Hr,onUnmounted:()=>$r,onUpdated:()=>Dr,openBlock:()=>di,popScopeId:()=>Dn,provide:()=>nr,proxyRefs:()=>Jt,pushScopeId:()=>Fn,queuePostFlushCb:()=>En,reactive:()=>Nt,readonly:()=>Tt,ref:()=>zt,registerRuntimeCompiler:()=>Qi,render:()=>Wl,renderList:()=>ro,renderSlot:()=>io,resolveComponent:()=>Jr,resolveDirective:()=>eo,resolveDynamicComponent:()=>Xr,resolveFilter:()=>xa,resolveTransitionHooks:()=>gr,setBlockTracking:()=>mi,setDevtoolsHook:()=>Rn,setTransitionHooks:()=>wr,shallowReactive:()=>Pt,shallowReadonly:()=>Vt,shallowRef:()=>qt,ssrContextKey:()=>ga,ssrUtils:()=>Ea,stop:()=>Ve,toDisplayString:()=>_,toHandlerKey:()=>oe,toHandlers:()=>lo,toRaw:()=>It,toRef:()=>nn,toRefs:()=>en,transformVNodeArgs:()=>_i,triggerRef:()=>Gt,unref:()=>Zt,useAttrs:()=>fa,useCssModule:()=>qa,useCssVars:()=>Wa,useSSRContext:()=>ya,useSlots:()=>ua,useTransitionState:()=>pr,vModelCheckbox:()=>xl,vModelDynamic:()=>Vl,vModelRadio:()=>Sl,vModelSelect:()=>Ol,vModelText:()=>El,vShow:()=>Fl,version:()=>_a,warn:()=>an,watch:()=>sr,watchEffect:()=>or,watchPostEffect:()=>ir,watchSyncEffect:()=>ar,withAsyncContext:()=>va,withCtx:()=>$n,withDefaults:()=>ca,withDirectives:()=>Kr,withKeys:()=>Ml,withMemo:()=>wa,withModifiers:()=>Bl,withScopeId:()=>Un});const i={1:"TEXT",2:"CLASS",4:"STYLE",8:"PROPS",16:"FULL_PROPS",32:"HYDRATE_EVENTS",64:"STABLE_FRAGMENT",128:"KEYED_FRAGMENT",256:"UNKEYED_FRAGMENT",512:"NEED_PATCH",1024:"DYNAMIC_SLOTS",2048:"DEV_ROOT_FRAGMENT",[-1]:"HOISTED",[-2]:"BAIL"},a=o("Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt");function l(e){if(j(e)){const t={};for(let n=0;n{if(e){const n=e.split(c);n.length>1&&(t[n[0].trim()]=n[1].trim())}})),t}function d(e){let t="";if(U(e))t=e;else if(j(e))for(let n=0;nw(e,t)))}const _=e=>U(e)?e:null==e?"":j(e)||H(e)&&(e.toString===q||!D(e.toString))?JSON.stringify(e,E,2):String(e),E=(e,t)=>t&&t.__v_isRef?E(e,t.value):B(t)?{[`Map(${t.size})`]:[...t.entries()].reduce(((e,[t,n])=>(e[`${t} =>`]=n,e)),{})}:I(t)?{[`Set(${t.size})`]:[...t.values()]}:!H(t)||j(t)||G(t)?t:String(t),x={},k=[],S=()=>{},O=()=>!1,N=/^on[^a-z]/,P=e=>N.test(e),T=e=>e.startsWith("onUpdate:"),V=Object.assign,R=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},L=Object.prototype.hasOwnProperty,A=(e,t)=>L.call(e,t),j=Array.isArray,B=e=>"[object Map]"===W(e),I=e=>"[object Set]"===W(e),M=e=>"[object Date]"===W(e),F=e=>"[object RegExp]"===W(e),D=e=>"function"==typeof e,U=e=>"string"==typeof e,$=e=>"symbol"==typeof e,H=e=>null!==e&&"object"==typeof e,z=e=>H(e)&&D(e.then)&&D(e.catch),q=Object.prototype.toString,W=e=>q.call(e),K=e=>W(e).slice(8,-1),G=e=>"[object Object]"===W(e),Z=e=>U(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,Y=o(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),J=o("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),Q=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},X=/-(\w)/g,ee=Q((e=>e.replace(X,((e,t)=>t?t.toUpperCase():"")))),te=/\B([A-Z])/g,ne=Q((e=>e.replace(te,"-$1").toLowerCase())),re=Q((e=>e.charAt(0).toUpperCase()+e.slice(1))),oe=Q((e=>e?`on${re(e)}`:"")),ie=(e,t)=>!Object.is(e,t),ae=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},se=e=>{const t=parseFloat(e);return isNaN(t)?e:t},ce=e=>{const t=U(e)?Number(e):NaN;return isNaN(t)?e:t};let ue;const fe=()=>ue||(ue="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n.g?n.g:{});let de;class pe{constructor(e=!1){this.detached=e,this._active=!0,this.effects=[],this.cleanups=[],this.parent=de,!e&&de&&(this.index=(de.scopes||(de.scopes=[])).push(this)-1)}get active(){return this._active}run(e){if(this._active){const t=de;try{return de=this,e()}finally{de=t}}else 0}on(){de=this}off(){de=this.parent}stop(e){if(this._active){let t,n;for(t=0,n=this.effects.length;t{const t=new Set(e);return t.w=0,t.n=0,t},be=e=>(e.w&Ee)>0,we=e=>(e.n&Ee)>0,Ce=new WeakMap;let _e=0,Ee=1;const xe=30;let ke;const Se=Symbol(""),Oe=Symbol("");class Ne{constructor(e,t=null,n){this.fn=e,this.scheduler=t,this.active=!0,this.deps=[],this.parent=void 0,ve(this,n)}run(){if(!this.active)return this.fn();let e=ke,t=Re;for(;e;){if(e===this)return;e=e.parent}try{return this.parent=ke,ke=this,Re=!0,Ee=1<<++_e,_e<=xe?(({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{("length"===n||n>=e)&&l.push(t)}))}else switch(void 0!==n&&l.push(a.get(n)),t){case"add":j(e)?Z(n)&&l.push(a.get("length")):(l.push(a.get(Se)),B(e)&&l.push(a.get(Oe)));break;case"delete":j(e)||(l.push(a.get(Se)),B(e)&&l.push(a.get(Oe)));break;case"set":B(e)&&l.push(a.get(Se))}if(1===l.length)l[0]&&Fe(l[0]);else{const e=[];for(const t of l)t&&e.push(...t);Fe(ye(e))}}function Fe(e,t){const n=j(e)?e:[...e];for(const e of n)e.computed&&De(e,t);for(const e of n)e.computed||De(e,t)}function De(e,t){(e!==ke||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const Ue=o("__proto__,__v_isRef,__isVue"),$e=new Set(Object.getOwnPropertyNames(Symbol).filter((e=>"arguments"!==e&&"caller"!==e)).map((e=>Symbol[e])).filter($)),He=Ye(),ze=Ye(!1,!0),qe=Ye(!0),We=Ye(!0,!0),Ke=Ge();function Ge(){const e={};return["includes","indexOf","lastIndexOf"].forEach((t=>{e[t]=function(...e){const n=It(this);for(let e=0,t=this.length;e{e[t]=function(...e){Ae();const n=It(this)[t].apply(this,e);return je(),n}})),e}function Ze(e){const t=It(this);return Be(t,0,e),t.hasOwnProperty(e)}function Ye(e=!1,t=!1){return function(n,r,o){if("__v_isReactive"===r)return!e;if("__v_isReadonly"===r)return e;if("__v_isShallow"===r)return t;if("__v_raw"===r&&o===(e?t?Ot:St:t?kt:xt).get(n))return n;const i=j(n);if(!e){if(i&&A(Ke,r))return Reflect.get(Ke,r,o);if("hasOwnProperty"===r)return Ze}const a=Reflect.get(n,r,o);return($(r)?$e.has(r):Ue(r))?a:(e||Be(n,0,r),t?a:Ht(a)?i&&Z(r)?a:a.value:H(a)?e?Tt(a):Nt(a):a)}}function Je(e=!1){return function(t,n,r,o){let i=t[n];if(At(i)&&Ht(i)&&!Ht(r))return!1;if(!e&&(jt(r)||At(r)||(i=It(i),r=It(r)),!j(t)&&Ht(i)&&!Ht(r)))return i.value=r,!0;const a=j(t)&&Z(n)?Number(n)!0,deleteProperty:(e,t)=>!0},et=V({},Qe,{get:ze,set:Je(!0)}),tt=V({},Xe,{get:We}),nt=e=>e,rt=e=>Reflect.getPrototypeOf(e);function ot(e,t,n=!1,r=!1){const o=It(e=e.__v_raw),i=It(t);n||(t!==i&&Be(o,0,t),Be(o,0,i));const{has:a}=rt(o),l=r?nt:n?Dt:Ft;return a.call(o,t)?l(e.get(t)):a.call(o,i)?l(e.get(i)):void(e!==o&&e.get(t))}function it(e,t=!1){const n=this.__v_raw,r=It(n),o=It(e);return t||(e!==o&&Be(r,0,e),Be(r,0,o)),e===o?n.has(e):n.has(e)||n.has(o)}function at(e,t=!1){return e=e.__v_raw,!t&&Be(It(e),0,Se),Reflect.get(e,"size",e)}function lt(e){e=It(e);const t=It(this);return rt(t).has.call(t,e)||(t.add(e),Me(t,"add",e,e)),this}function st(e,t){t=It(t);const n=It(this),{has:r,get:o}=rt(n);let i=r.call(n,e);i||(e=It(e),i=r.call(n,e));const a=o.call(n,e);return n.set(e,t),i?ie(t,a)&&Me(n,"set",e,t):Me(n,"add",e,t),this}function ct(e){const t=It(this),{has:n,get:r}=rt(t);let o=n.call(t,e);o||(e=It(e),o=n.call(t,e));r&&r.call(t,e);const i=t.delete(e);return o&&Me(t,"delete",e,void 0),i}function ut(){const e=It(this),t=0!==e.size,n=e.clear();return t&&Me(e,"clear",void 0,void 0),n}function ft(e,t){return function(n,r){const o=this,i=o.__v_raw,a=It(i),l=t?nt:e?Dt:Ft;return!e&&Be(a,0,Se),i.forEach(((e,t)=>n.call(r,l(e),l(t),o)))}}function dt(e,t,n){return function(...r){const o=this.__v_raw,i=It(o),a=B(i),l="entries"===e||e===Symbol.iterator&&a,s="keys"===e&&a,c=o[e](...r),u=n?nt:t?Dt:Ft;return!t&&Be(i,0,s?Oe:Se),{next(){const{value:e,done:t}=c.next();return t?{value:e,done:t}:{value:l?[u(e[0]),u(e[1])]:u(e),done:t}},[Symbol.iterator](){return this}}}}function pt(e){return function(...t){return"delete"!==e&&this}}function ht(){const e={get(e){return ot(this,e)},get size(){return at(this)},has:it,add:lt,set:st,delete:ct,clear:ut,forEach:ft(!1,!1)},t={get(e){return ot(this,e,!1,!0)},get size(){return at(this)},has:it,add:lt,set:st,delete:ct,clear:ut,forEach:ft(!1,!0)},n={get(e){return ot(this,e,!0)},get size(){return at(this,!0)},has(e){return it.call(this,e,!0)},add:pt("add"),set:pt("set"),delete:pt("delete"),clear:pt("clear"),forEach:ft(!0,!1)},r={get(e){return ot(this,e,!0,!0)},get size(){return at(this,!0)},has(e){return it.call(this,e,!0)},add:pt("add"),set:pt("set"),delete:pt("delete"),clear:pt("clear"),forEach:ft(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach((o=>{e[o]=dt(o,!1,!1),n[o]=dt(o,!0,!1),t[o]=dt(o,!1,!0),r[o]=dt(o,!0,!0)})),[e,n,t,r]}const[vt,mt,gt,yt]=ht();function bt(e,t){const n=t?e?yt:gt:e?mt:vt;return(t,r,o)=>"__v_isReactive"===r?!e:"__v_isReadonly"===r?e:"__v_raw"===r?t:Reflect.get(A(n,r)&&r in t?n:t,r,o)}const wt={get:bt(!1,!1)},Ct={get:bt(!1,!0)},_t={get:bt(!0,!1)},Et={get:bt(!0,!0)};const xt=new WeakMap,kt=new WeakMap,St=new WeakMap,Ot=new WeakMap;function Nt(e){return At(e)?e:Rt(e,!1,Qe,wt,xt)}function Pt(e){return Rt(e,!1,et,Ct,kt)}function Tt(e){return Rt(e,!0,Xe,_t,St)}function Vt(e){return Rt(e,!0,tt,Et,Ot)}function Rt(e,t,n,r,o){if(!H(e))return e;if(e.__v_raw&&(!t||!e.__v_isReactive))return e;const i=o.get(e);if(i)return i;const a=(l=e).__v_skip||!Object.isExtensible(l)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}(K(l));var l;if(0===a)return e;const s=new Proxy(e,2===a?r:n);return o.set(e,s),s}function Lt(e){return At(e)?Lt(e.__v_raw):!(!e||!e.__v_isReactive)}function At(e){return!(!e||!e.__v_isReadonly)}function jt(e){return!(!e||!e.__v_isShallow)}function Bt(e){return Lt(e)||At(e)}function It(e){const t=e&&e.__v_raw;return t?It(t):e}function Mt(e){return le(e,"__v_skip",!0),e}const Ft=e=>H(e)?Nt(e):e,Dt=e=>H(e)?Tt(e):e;function Ut(e){Re&&ke&&Ie((e=It(e)).dep||(e.dep=ye()))}function $t(e,t){const n=(e=It(e)).dep;n&&Fe(n)}function Ht(e){return!(!e||!0!==e.__v_isRef)}function zt(e){return Wt(e,!1)}function qt(e){return Wt(e,!0)}function Wt(e,t){return Ht(e)?e:new Kt(e,t)}class Kt{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?e:It(e),this._value=t?e:Ft(e)}get value(){return Ut(this),this._value}set value(e){const t=this.__v_isShallow||jt(e)||At(e);e=t?e:It(e),ie(e,this._rawValue)&&(this._rawValue=e,this._value=t?e:Ft(e),$t(this))}}function Gt(e){$t(e)}function Zt(e){return Ht(e)?e.value:e}const Yt={get:(e,t,n)=>Zt(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Ht(o)&&!Ht(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function Jt(e){return Lt(e)?e:new Proxy(e,Yt)}class Qt{constructor(e){this.dep=void 0,this.__v_isRef=!0;const{get:t,set:n}=e((()=>Ut(this)),(()=>$t(this)));this._get=t,this._set=n}get value(){return this._get()}set value(e){this._set(e)}}function Xt(e){return new Qt(e)}function en(e){const t=j(e)?new Array(e.length):{};for(const n in e)t[n]=nn(e,n);return t}class tn{constructor(e,t,n){this._object=e,this._key=t,this._defaultValue=n,this.__v_isRef=!0}get value(){const e=this._object[this._key];return void 0===e?this._defaultValue:e}set value(e){this._object[this._key]=e}get dep(){return function(e,t){var n;return null===(n=Ce.get(e))||void 0===n?void 0:n.get(t)}(It(this._object),this._key)}}function nn(e,t,n){const r=e[t];return Ht(r)?r:new tn(e,t,n)}var rn;class on{constructor(e,t,n,r){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this[rn]=!1,this._dirty=!0,this.effect=new Ne(e,(()=>{this._dirty||(this._dirty=!0,$t(this))})),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=n}get value(){const e=It(this);return Ut(e),!e._dirty&&e._cacheable||(e._dirty=!1,e._value=e.effect.run()),e._value}set value(e){this._setter(e)}}rn="__v_isReadonly";function an(e,...t){}function ln(e,t){}function sn(e,t,n,r){let o;try{o=r?e(...r):e()}catch(e){un(e,t,n)}return o}function cn(e,t,n,r){if(D(e)){const o=sn(e,t,n,r);return o&&z(o)&&o.catch((e=>{un(e,t,n)})),o}const o=[];for(let i=0;i>>1;Sn(pn[r])Sn(e)-Sn(t))),gn=0;gnnull==e.id?1/0:e.id,On=(e,t)=>{const n=Sn(e)-Sn(t);if(0===n){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Nn(e){dn=!1,fn=!0,pn.sort(On);try{for(hn=0;hnPn.emit(e,...t))),Tn=[];else if("undefined"!=typeof window&&window.HTMLElement&&!(null===(r=null===(n=window.navigator)||void 0===n?void 0:n.userAgent)||void 0===r?void 0:r.includes("jsdom"))){(t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push((e=>{Rn(e,t)})),setTimeout((()=>{Pn||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,Vn=!0,Tn=[])}),3e3)}else Vn=!0,Tn=[]}function Ln(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||x;let o=n;const i=t.startsWith("update:"),a=i&&t.slice(7);if(a&&a in r){const e=`${"modelValue"===a?"model":a}Modifiers`,{number:t,trim:i}=r[e]||x;i&&(o=n.map((e=>U(e)?e.trim():e))),t&&(o=n.map(se))}let l;let s=r[l=oe(t)]||r[l=oe(ee(t))];!s&&i&&(s=r[l=oe(ne(t))]),s&&cn(s,e,6,o);const c=r[l+"Once"];if(c){if(e.emitted){if(e.emitted[l])return}else e.emitted={};e.emitted[l]=!0,cn(c,e,6,o)}}function An(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(void 0!==o)return o;const i=e.emits;let a={},l=!1;if(!D(e)){const r=e=>{const n=An(e,t,!0);n&&(l=!0,V(a,n))};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}return i||l?(j(i)?i.forEach((e=>a[e]=null)):V(a,i),H(e)&&r.set(e,a),a):(H(e)&&r.set(e,null),null)}function jn(e,t){return!(!e||!P(t))&&(t=t.slice(2).replace(/Once$/,""),A(e,t[0].toLowerCase()+t.slice(1))||A(e,ne(t))||A(e,t))}let Bn=null,In=null;function Mn(e){const t=Bn;return Bn=e,In=e&&e.type.__scopeId||null,t}function Fn(e){In=e}function Dn(){In=null}const Un=e=>$n;function $n(e,t=Bn,n){if(!t)return e;if(e._n)return e;const r=(...n)=>{r._d&&mi(-1);const o=Mn(t);let i;try{i=e(...n)}finally{Mn(o),r._d&&mi(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function Hn(e){const{type:t,vnode:n,proxy:r,withProxy:o,props:i,propsOptions:[a],slots:l,attrs:s,emit:c,render:u,renderCache:f,data:d,setupState:p,ctx:h,inheritAttrs:v}=e;let m,g;const y=Mn(e);try{if(4&n.shapeFlag){const e=o||r;m=Ai(u.call(e,e,f,i,p,d,h)),g=s}else{const e=t;0,m=Ai(e.length>1?e(i,{attrs:s,slots:l,emit:c}):e(i,null)),g=t.props?s:qn(s)}}catch(t){ui.length=0,un(t,e,1),m=Oi(si)}let b=m;if(g&&!1!==v){const e=Object.keys(g),{shapeFlag:t}=b;e.length&&7&t&&(a&&e.some(T)&&(g=Wn(g,a)),b=Ti(b,g))}return n.dirs&&(b=Ti(b),b.dirs=b.dirs?b.dirs.concat(n.dirs):n.dirs),n.transition&&(b.transition=n.transition),m=b,Mn(y),m}function zn(e){let t;for(let n=0;n{let t;for(const n in e)("class"===n||"style"===n||P(n))&&((t||(t={}))[n]=e[n]);return t},Wn=(e,t)=>{const n={};for(const r in e)T(r)&&r.slice(9)in t||(n[r]=e[r]);return n};function Kn(e,t,n){const r=Object.keys(t);if(r.length!==Object.keys(e).length)return!0;for(let o=0;oe.__isSuspense,Yn={name:"Suspense",__isSuspense:!0,process(e,t,n,r,o,i,a,l,s,c){null==e?function(e,t,n,r,o,i,a,l,s){const{p:c,o:{createElement:u}}=s,f=u("div"),d=e.suspense=Qn(e,o,r,t,f,n,i,a,l,s);c(null,d.pendingBranch=e.ssContent,f,null,r,d,i,a),d.deps>0?(Jn(e,"onPending"),Jn(e,"onFallback"),c(null,e.ssFallback,t,n,r,null,i,a),tr(d,e.ssFallback)):d.resolve()}(t,n,r,o,i,a,l,s,c):function(e,t,n,r,o,i,a,l,{p:s,um:c,o:{createElement:u}}){const f=t.suspense=e.suspense;f.vnode=t,t.el=e.el;const d=t.ssContent,p=t.ssFallback,{activeBranch:h,pendingBranch:v,isInFallback:m,isHydrating:g}=f;if(v)f.pendingBranch=d,Ci(d,v)?(s(v,d,f.hiddenContainer,null,o,f,i,a,l),f.deps<=0?f.resolve():m&&(s(h,p,n,r,o,null,i,a,l),tr(f,p))):(f.pendingId++,g?(f.isHydrating=!1,f.activeBranch=v):c(v,o,f),f.deps=0,f.effects.length=0,f.hiddenContainer=u("div"),m?(s(null,d,f.hiddenContainer,null,o,f,i,a,l),f.deps<=0?f.resolve():(s(h,p,n,r,o,null,i,a,l),tr(f,p))):h&&Ci(d,h)?(s(h,d,n,r,o,f,i,a,l),f.resolve(!0)):(s(null,d,f.hiddenContainer,null,o,f,i,a,l),f.deps<=0&&f.resolve()));else if(h&&Ci(d,h))s(h,d,n,r,o,f,i,a,l),tr(f,d);else if(Jn(t,"onPending"),f.pendingBranch=d,f.pendingId++,s(null,d,f.hiddenContainer,null,o,f,i,a,l),f.deps<=0)f.resolve();else{const{timeout:e,pendingId:t}=f;e>0?setTimeout((()=>{f.pendingId===t&&f.fallback(p)}),e):0===e&&f.fallback(p)}}(e,t,n,r,o,a,l,s,c)},hydrate:function(e,t,n,r,o,i,a,l,s){const c=t.suspense=Qn(t,r,n,e.parentNode,document.createElement("div"),null,o,i,a,l,!0),u=s(e,c.pendingBranch=t.ssContent,n,c,i,a);0===c.deps&&c.resolve();return u},create:Qn,normalize:function(e){const{shapeFlag:t,children:n}=e,r=32&t;e.ssContent=Xn(r?n.default:n),e.ssFallback=r?Xn(n.fallback):Oi(si)}};function Jn(e,t){const n=e.props&&e.props[t];D(n)&&n()}function Qn(e,t,n,r,o,i,a,l,s,c,u=!1){const{p:f,m:d,um:p,n:h,o:{parentNode:v,remove:m}}=c,g=e.props?ce(e.props.timeout):void 0;const y={vnode:e,parent:t,parentComponent:n,isSVG:a,container:r,hiddenContainer:o,anchor:i,deps:0,pendingId:0,timeout:"number"==typeof g?g:-1,activeBranch:null,pendingBranch:null,isInFallback:!0,isHydrating:u,isUnmounted:!1,effects:[],resolve(e=!1){const{vnode:t,activeBranch:n,pendingBranch:r,pendingId:o,effects:i,parentComponent:a,container:l}=y;if(y.isHydrating)y.isHydrating=!1;else if(!e){const e=n&&r.transition&&"out-in"===r.transition.mode;e&&(n.transition.afterLeave=()=>{o===y.pendingId&&d(r,l,t,0)});let{anchor:t}=y;n&&(t=h(n),p(n,a,y,!0)),e||d(r,l,t,0)}tr(y,r),y.pendingBranch=null,y.isInFallback=!1;let s=y.parent,c=!1;for(;s;){if(s.pendingBranch){s.effects.push(...i),c=!0;break}s=s.parent}c||En(i),y.effects=[],Jn(t,"onResolve")},fallback(e){if(!y.pendingBranch)return;const{vnode:t,activeBranch:n,parentComponent:r,container:o,isSVG:i}=y;Jn(t,"onFallback");const a=h(n),c=()=>{y.isInFallback&&(f(null,e,o,a,r,null,i,l,s),tr(y,e))},u=e.transition&&"out-in"===e.transition.mode;u&&(n.transition.afterLeave=c),y.isInFallback=!0,p(n,r,null,!0),u||c()},move(e,t,n){y.activeBranch&&d(y.activeBranch,e,t,n),y.container=e},next:()=>y.activeBranch&&h(y.activeBranch),registerDep(e,t){const n=!!y.pendingBranch;n&&y.deps++;const r=e.vnode.el;e.asyncDep.catch((t=>{un(t,e,0)})).then((o=>{if(e.isUnmounted||y.isUnmounted||y.pendingId!==e.suspenseId)return;e.asyncResolved=!0;const{vnode:i}=e;Ji(e,o,!1),r&&(i.el=r);const l=!r&&e.subTree.el;t(e,i,v(r||e.subTree.el),r?null:h(e.subTree),y,a,s),l&&m(l),Gn(e,i.el),n&&0==--y.deps&&y.resolve()}))},unmount(e,t){y.isUnmounted=!0,y.activeBranch&&p(y.activeBranch,n,e,t),y.pendingBranch&&p(y.pendingBranch,n,e,t)}};return y}function Xn(e){let t;if(D(e)){const n=vi&&e._c;n&&(e._d=!1,di()),e=e(),n&&(e._d=!0,t=fi,pi())}if(j(e)){const t=zn(e);0,e=t}return e=Ai(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter((t=>t!==e))),e}function er(e,t){t&&t.pendingBranch?j(e)?t.effects.push(...e):t.effects.push(e):En(e)}function tr(e,t){e.activeBranch=t;const{vnode:n,parentComponent:r}=e,o=n.el=t.el;r&&r.subTree===n&&(r.vnode.el=o,Gn(r,o))}function nr(e,t){if($i){let n=$i.provides;const r=$i.parent&&$i.parent.provides;r===n&&(n=$i.provides=Object.create(r)),n[e]=t}else 0}function rr(e,t,n=!1){const r=$i||Bn;if(r){const o=null==r.parent?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(o&&e in o)return o[e];if(arguments.length>1)return n&&D(t)?t.call(r.proxy):t}else 0}function or(e,t){return cr(e,null,t)}function ir(e,t){return cr(e,null,{flush:"post"})}function ar(e,t){return cr(e,null,{flush:"sync"})}const lr={};function sr(e,t,n){return cr(e,t,n)}function cr(e,t,{immediate:n,deep:r,flush:o,onTrack:i,onTrigger:a}=x){const l=me()===(null==$i?void 0:$i.scope)?$i:null;let s,c,u=!1,f=!1;if(Ht(e)?(s=()=>e.value,u=jt(e)):Lt(e)?(s=()=>e,r=!0):j(e)?(f=!0,u=e.some((e=>Lt(e)||jt(e))),s=()=>e.map((e=>Ht(e)?e.value:Lt(e)?dr(e):D(e)?sn(e,l,2):void 0))):s=D(e)?t?()=>sn(e,l,2):()=>{if(!l||!l.isUnmounted)return c&&c(),cn(e,l,3,[p])}:S,t&&r){const e=s;s=()=>dr(e())}let d,p=e=>{c=g.onStop=()=>{sn(e,l,4)}};if(Zi){if(p=S,t?n&&cn(t,l,3,[s(),f?[]:void 0,p]):s(),"sync"!==o)return S;{const e=ya();d=e.__watcherHandles||(e.__watcherHandles=[])}}let h=f?new Array(e.length).fill(lr):lr;const v=()=>{if(g.active)if(t){const e=g.run();(r||u||(f?e.some(((e,t)=>ie(e,h[t]))):ie(e,h)))&&(c&&c(),cn(t,l,3,[e,h===lr?void 0:f&&h[0]===lr?[]:h,p]),h=e)}else g.run()};let m;v.allowRecurse=!!t,"sync"===o?m=v:"post"===o?m=()=>Ko(v,l&&l.suspense):(v.pre=!0,l&&(v.id=l.uid),m=()=>Cn(v));const g=new Ne(s,m);t?n?v():h=g.run():"post"===o?Ko(g.run.bind(g),l&&l.suspense):g.run();const y=()=>{g.stop(),l&&l.scope&&R(l.scope.effects,g)};return d&&d.push(y),y}function ur(e,t,n){const r=this.proxy,o=U(e)?e.includes(".")?fr(r,e):()=>r[e]:e.bind(r,r);let i;D(t)?i=t:(i=t.handler,n=t);const a=$i;zi(this);const l=cr(o,i.bind(r),n);return a?zi(a):qi(),l}function fr(e,t){const n=t.split(".");return()=>{let t=e;for(let e=0;e{dr(e,t)}));else if(G(e))for(const n in e)dr(e[n],t);return e}function pr(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Mr((()=>{e.isMounted=!0})),Ur((()=>{e.isUnmounting=!0})),e}const hr=[Function,Array],vr={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:hr,onEnter:hr,onAfterEnter:hr,onEnterCancelled:hr,onBeforeLeave:hr,onLeave:hr,onAfterLeave:hr,onLeaveCancelled:hr,onBeforeAppear:hr,onAppear:hr,onAfterAppear:hr,onAppearCancelled:hr},setup(e,{slots:t}){const n=Hi(),r=pr();let o;return()=>{const i=t.default&&Cr(t.default(),!0);if(!i||!i.length)return;let a=i[0];if(i.length>1){let e=!1;for(const t of i)if(t.type!==si){0,a=t,e=!0;break}}const l=It(e),{mode:s}=l;if(r.isLeaving)return yr(a);const c=br(a);if(!c)return yr(a);const u=gr(c,l,r,n);wr(c,u);const f=n.subTree,d=f&&br(f);let p=!1;const{getTransitionKey:h}=c.type;if(h){const e=h();void 0===o?o=e:e!==o&&(o=e,p=!0)}if(d&&d.type!==si&&(!Ci(c,d)||p)){const e=gr(d,l,r,n);if(wr(d,e),"out-in"===s)return r.isLeaving=!0,e.afterLeave=()=>{r.isLeaving=!1,!1!==n.update.active&&n.update()},yr(a);"in-out"===s&&c.type!==si&&(e.delayLeave=(e,t,n)=>{mr(r,d)[String(d.key)]=d,e._leaveCb=()=>{t(),e._leaveCb=void 0,delete u.delayedLeave},u.delayedLeave=n})}return a}}};function mr(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function gr(e,t,n,r){const{appear:o,mode:i,persisted:a=!1,onBeforeEnter:l,onEnter:s,onAfterEnter:c,onEnterCancelled:u,onBeforeLeave:f,onLeave:d,onAfterLeave:p,onLeaveCancelled:h,onBeforeAppear:v,onAppear:m,onAfterAppear:g,onAppearCancelled:y}=t,b=String(e.key),w=mr(n,e),C=(e,t)=>{e&&cn(e,r,9,t)},_=(e,t)=>{const n=t[1];C(e,t),j(e)?e.every((e=>e.length<=1))&&n():e.length<=1&&n()},E={mode:i,persisted:a,beforeEnter(t){let r=l;if(!n.isMounted){if(!o)return;r=v||l}t._leaveCb&&t._leaveCb(!0);const i=w[b];i&&Ci(e,i)&&i.el._leaveCb&&i.el._leaveCb(),C(r,[t])},enter(e){let t=s,r=c,i=u;if(!n.isMounted){if(!o)return;t=m||s,r=g||c,i=y||u}let a=!1;const l=e._enterCb=t=>{a||(a=!0,C(t?i:r,[e]),E.delayedLeave&&E.delayedLeave(),e._enterCb=void 0)};t?_(t,[e,l]):l()},leave(t,r){const o=String(e.key);if(t._enterCb&&t._enterCb(!0),n.isUnmounting)return r();C(f,[t]);let i=!1;const a=t._leaveCb=n=>{i||(i=!0,r(),C(n?h:p,[t]),t._leaveCb=void 0,w[o]===e&&delete w[o])};w[o]=e,d?_(d,[t,a]):a()},clone:e=>gr(e,t,n,r)};return E}function yr(e){if(Sr(e))return(e=Ti(e)).children=null,e}function br(e){return Sr(e)?e.children?e.children[0]:void 0:e}function wr(e,t){6&e.shapeFlag&&e.component?wr(e.component.subTree,t):128&e.shapeFlag?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Cr(e,t=!1,n){let r=[],o=0;for(let i=0;i1)for(let e=0;e!!e.type.__asyncLoader;function xr(e){D(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:o=200,timeout:i,suspensible:a=!0,onError:l}=e;let s,c=null,u=0;const f=()=>{let e;return c||(e=c=t().catch((e=>{if(e=e instanceof Error?e:new Error(String(e)),l)return new Promise(((t,n)=>{l(e,(()=>t((u++,c=null,f()))),(()=>n(e)),u+1)}));throw e})).then((t=>e!==c&&c?c:(t&&(t.__esModule||"Module"===t[Symbol.toStringTag])&&(t=t.default),s=t,t))))};return _r({name:"AsyncComponentWrapper",__asyncLoader:f,get __asyncResolved(){return s},setup(){const e=$i;if(s)return()=>kr(s,e);const t=t=>{c=null,un(t,e,13,!r)};if(a&&e.suspense||Zi)return f().then((t=>()=>kr(t,e))).catch((e=>(t(e),()=>r?Oi(r,{error:e}):null)));const l=zt(!1),u=zt(),d=zt(!!o);return o&&setTimeout((()=>{d.value=!1}),o),null!=i&&setTimeout((()=>{if(!l.value&&!u.value){const e=new Error(`Async component timed out after ${i}ms.`);t(e),u.value=e}}),i),f().then((()=>{l.value=!0,e.parent&&Sr(e.parent.vnode)&&Cn(e.parent.update)})).catch((e=>{t(e),u.value=e})),()=>l.value&&s?kr(s,e):u.value&&r?Oi(r,{error:u.value}):n&&!d.value?Oi(n):void 0}})}function kr(e,t){const{ref:n,props:r,children:o,ce:i}=t.vnode,a=Oi(e,r,o);return a.ref=n,a.ce=i,delete t.vnode.ce,a}const Sr=e=>e.type.__isKeepAlive,Or={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=Hi(),r=n.ctx;if(!r.renderer)return()=>{const e=t.default&&t.default();return e&&1===e.length?e[0]:e};const o=new Map,i=new Set;let a=null;const l=n.suspense,{renderer:{p:s,m:c,um:u,o:{createElement:f}}}=r,d=f("div");function p(e){Lr(e),u(e,n,l,!0)}function h(e){o.forEach(((t,n)=>{const r=ra(t.type);!r||e&&e(r)||v(n)}))}function v(e){const t=o.get(e);a&&Ci(t,a)?a&&Lr(a):p(t),o.delete(e),i.delete(e)}r.activate=(e,t,n,r,o)=>{const i=e.component;c(e,t,n,0,l),s(i.vnode,e,t,n,i,l,r,e.slotScopeIds,o),Ko((()=>{i.isDeactivated=!1,i.a&&ae(i.a);const t=e.props&&e.props.onVnodeMounted;t&&Mi(t,i.parent,e)}),l)},r.deactivate=e=>{const t=e.component;c(e,d,null,1,l),Ko((()=>{t.da&&ae(t.da);const n=e.props&&e.props.onVnodeUnmounted;n&&Mi(n,t.parent,e),t.isDeactivated=!0}),l)},sr((()=>[e.include,e.exclude]),(([e,t])=>{e&&h((t=>Nr(e,t))),t&&h((e=>!Nr(t,e)))}),{flush:"post",deep:!0});let m=null;const g=()=>{null!=m&&o.set(m,Ar(n.subTree))};return Mr(g),Dr(g),Ur((()=>{o.forEach((e=>{const{subTree:t,suspense:r}=n,o=Ar(t);if(e.type!==o.type||e.key!==o.key)p(e);else{Lr(o);const e=o.component.da;e&&Ko(e,r)}}))})),()=>{if(m=null,!t.default)return null;const n=t.default(),r=n[0];if(n.length>1)return a=null,n;if(!(wi(r)&&(4&r.shapeFlag||128&r.shapeFlag)))return a=null,r;let l=Ar(r);const s=l.type,c=ra(Er(l)?l.type.__asyncResolved||{}:s),{include:u,exclude:f,max:d}=e;if(u&&(!c||!Nr(u,c))||f&&c&&Nr(f,c))return a=l,r;const p=null==l.key?s:l.key,h=o.get(p);return l.el&&(l=Ti(l),128&r.shapeFlag&&(r.ssContent=l)),m=p,h?(l.el=h.el,l.component=h.component,l.transition&&wr(l,l.transition),l.shapeFlag|=512,i.delete(p),i.add(p)):(i.add(p),d&&i.size>parseInt(d,10)&&v(i.values().next().value)),l.shapeFlag|=256,a=l,Zn(r.type)?r:l}}};function Nr(e,t){return j(e)?e.some((e=>Nr(e,t))):U(e)?e.split(",").includes(t):!!F(e)&&e.test(t)}function Pr(e,t){Vr(e,"a",t)}function Tr(e,t){Vr(e,"da",t)}function Vr(e,t,n=$i){const r=e.__wdc||(e.__wdc=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()});if(jr(t,r,n),n){let e=n.parent;for(;e&&e.parent;)Sr(e.parent.vnode)&&Rr(r,t,n,e),e=e.parent}}function Rr(e,t,n,r){const o=jr(t,e,r,!0);$r((()=>{R(r[t],o)}),n)}function Lr(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function Ar(e){return 128&e.shapeFlag?e.ssContent:e}function jr(e,t,n=$i,r=!1){if(n){const o=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...r)=>{if(n.isUnmounted)return;Ae(),zi(n);const o=cn(t,n,e,r);return qi(),je(),o});return r?o.unshift(i):o.push(i),i}}const Br=e=>(t,n=$i)=>(!Zi||"sp"===e)&&jr(e,((...e)=>t(...e)),n),Ir=Br("bm"),Mr=Br("m"),Fr=Br("bu"),Dr=Br("u"),Ur=Br("bum"),$r=Br("um"),Hr=Br("sp"),zr=Br("rtg"),qr=Br("rtc");function Wr(e,t=$i){jr("ec",e,t)}function Kr(e,t){const n=Bn;if(null===n)return e;const r=na(n)||n.proxy,o=e.dirs||(e.dirs=[]);for(let e=0;et(e,n,void 0,i&&i[n])));else{const n=Object.keys(e);o=new Array(n.length);for(let r=0,a=n.length;r{const t=r.fn(...e);return t&&(t.key=r.key),t}:r.fn)}return e}function io(e,t,n={},r,o){if(Bn.isCE||Bn.parent&&Er(Bn.parent)&&Bn.parent.isCE)return"default"!==t&&(n.name=t),Oi("slot",n,r&&r());let i=e[t];i&&i._c&&(i._d=!1),di();const a=i&&ao(i(n)),l=bi(ai,{key:n.key||a&&a.key||`_${t}`},a||(r?r():[]),a&&1===e._?64:-2);return!o&&l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),i&&i._c&&(i._d=!0),l}function ao(e){return e.some((e=>!wi(e)||e.type!==si&&!(e.type===ai&&!ao(e.children))))?e:null}function lo(e,t){const n={};for(const r in e)n[t&&/[A-Z]/.test(r)?`on:${r}`:oe(r)]=e[r];return n}const so=e=>e?Wi(e)?na(e)||e.proxy:so(e.parent):null,co=V(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>so(e.parent),$root:e=>so(e.root),$emit:e=>e.emit,$options:e=>yo(e),$forceUpdate:e=>e.f||(e.f=()=>Cn(e.update)),$nextTick:e=>e.n||(e.n=wn.bind(e.proxy)),$watch:e=>ur.bind(e)}),uo=(e,t)=>e!==x&&!e.__isScriptSetup&&A(e,t),fo={get({_:e},t){const{ctx:n,setupState:r,data:o,props:i,accessCache:a,type:l,appContext:s}=e;let c;if("$"!==t[0]){const l=a[t];if(void 0!==l)switch(l){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return i[t]}else{if(uo(r,t))return a[t]=1,r[t];if(o!==x&&A(o,t))return a[t]=2,o[t];if((c=e.propsOptions[0])&&A(c,t))return a[t]=3,i[t];if(n!==x&&A(n,t))return a[t]=4,n[t];ho&&(a[t]=0)}}const u=co[t];let f,d;return u?("$attrs"===t&&Be(e,0,t),u(e)):(f=l.__cssModules)&&(f=f[t])?f:n!==x&&A(n,t)?(a[t]=4,n[t]):(d=s.config.globalProperties,A(d,t)?d[t]:void 0)},set({_:e},t,n){const{data:r,setupState:o,ctx:i}=e;return uo(o,t)?(o[t]=n,!0):r!==x&&A(r,t)?(r[t]=n,!0):!A(e.props,t)&&(("$"!==t[0]||!(t.slice(1)in e))&&(i[t]=n,!0))},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:i}},a){let l;return!!n[a]||e!==x&&A(e,a)||uo(t,a)||(l=i[0])&&A(l,a)||A(r,a)||A(co,a)||A(o.config.globalProperties,a)},defineProperty(e,t,n){return null!=n.get?e._.accessCache[t]=0:A(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};const po=V({},fo,{get(e,t){if(t!==Symbol.unscopables)return fo.get(e,t,e)},has:(e,t)=>"_"!==t[0]&&!a(t)});let ho=!0;function vo(e){const t=yo(e),n=e.proxy,r=e.ctx;ho=!1,t.beforeCreate&&mo(t.beforeCreate,e,"bc");const{data:o,computed:i,methods:a,watch:l,provide:s,inject:c,created:u,beforeMount:f,mounted:d,beforeUpdate:p,updated:h,activated:v,deactivated:m,beforeDestroy:g,beforeUnmount:y,destroyed:b,unmounted:w,render:C,renderTracked:_,renderTriggered:E,errorCaptured:x,serverPrefetch:k,expose:O,inheritAttrs:N,components:P,directives:T,filters:V}=t;if(c&&function(e,t,n=S,r=!1){j(e)&&(e=_o(e));for(const n in e){const o=e[n];let i;i=H(o)?"default"in o?rr(o.from||n,o.default,!0):rr(o.from||n):rr(o),Ht(i)&&r?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e}):t[n]=i}}(c,r,null,e.appContext.config.unwrapInjectedRef),a)for(const e in a){const t=a[e];D(t)&&(r[e]=t.bind(n))}if(o){0;const t=o.call(n,n);0,H(t)&&(e.data=Nt(t))}if(ho=!0,i)for(const e in i){const t=i[e],o=D(t)?t.bind(n,n):D(t.get)?t.get.bind(n,n):S;0;const a=!D(t)&&D(t.set)?t.set.bind(n):S,l=ia({get:o,set:a});Object.defineProperty(r,e,{enumerable:!0,configurable:!0,get:()=>l.value,set:e=>l.value=e})}if(l)for(const e in l)go(l[e],r,n,e);if(s){const e=D(s)?s.call(n):s;Reflect.ownKeys(e).forEach((t=>{nr(t,e[t])}))}function R(e,t){j(t)?t.forEach((t=>e(t.bind(n)))):t&&e(t.bind(n))}if(u&&mo(u,e,"c"),R(Ir,f),R(Mr,d),R(Fr,p),R(Dr,h),R(Pr,v),R(Tr,m),R(Wr,x),R(qr,_),R(zr,E),R(Ur,y),R($r,w),R(Hr,k),j(O))if(O.length){const t=e.exposed||(e.exposed={});O.forEach((e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t})}))}else e.exposed||(e.exposed={});C&&e.render===S&&(e.render=C),null!=N&&(e.inheritAttrs=N),P&&(e.components=P),T&&(e.directives=T)}function mo(e,t,n){cn(j(e)?e.map((e=>e.bind(t.proxy))):e.bind(t.proxy),t,n)}function go(e,t,n,r){const o=r.includes(".")?fr(n,r):()=>n[r];if(U(e)){const n=t[e];D(n)&&sr(o,n)}else if(D(e))sr(o,e.bind(n));else if(H(e))if(j(e))e.forEach((e=>go(e,t,n,r)));else{const r=D(e.handler)?e.handler.bind(n):t[e.handler];D(r)&&sr(o,r,e)}else 0}function yo(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:i,config:{optionMergeStrategies:a}}=e.appContext,l=i.get(t);let s;return l?s=l:o.length||n||r?(s={},o.length&&o.forEach((e=>bo(s,e,a,!0))),bo(s,t,a)):s=t,H(t)&&i.set(t,s),s}function bo(e,t,n,r=!1){const{mixins:o,extends:i}=t;i&&bo(e,i,n,!0),o&&o.forEach((t=>bo(e,t,n,!0)));for(const o in t)if(r&&"expose"===o);else{const r=wo[o]||n&&n[o];e[o]=r?r(e[o],t[o]):t[o]}return e}const wo={data:Co,props:xo,emits:xo,methods:xo,computed:xo,beforeCreate:Eo,created:Eo,beforeMount:Eo,mounted:Eo,beforeUpdate:Eo,updated:Eo,beforeDestroy:Eo,beforeUnmount:Eo,destroyed:Eo,unmounted:Eo,activated:Eo,deactivated:Eo,errorCaptured:Eo,serverPrefetch:Eo,components:xo,directives:xo,watch:function(e,t){if(!e)return t;if(!t)return e;const n=V(Object.create(null),e);for(const r in t)n[r]=Eo(e[r],t[r]);return n},provide:Co,inject:function(e,t){return xo(_o(e),_o(t))}};function Co(e,t){return t?e?function(){return V(D(e)?e.call(this,this):e,D(t)?t.call(this,this):t)}:t:e}function _o(e){if(j(e)){const t={};for(let n=0;n{s=!0;const[n,r]=Oo(e,t,!0);V(a,n),r&&l.push(...r)};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}if(!i&&!s)return H(e)&&r.set(e,k),k;if(j(i))for(let e=0;e-1,r[1]=n<0||e-1||A(r,"default"))&&l.push(t)}}}}const c=[a,l];return H(e)&&r.set(e,c),c}function No(e){return"$"!==e[0]}function Po(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:null===e?"null":""}function To(e,t){return Po(e)===Po(t)}function Vo(e,t){return j(t)?t.findIndex((t=>To(t,e))):D(t)&&To(t,e)?0:-1}const Ro=e=>"_"===e[0]||"$stable"===e,Lo=e=>j(e)?e.map(Ai):[Ai(e)],Ao=(e,t,n)=>{if(t._n)return t;const r=$n(((...e)=>Lo(t(...e))),n);return r._c=!1,r},jo=(e,t,n)=>{const r=e._ctx;for(const n in e){if(Ro(n))continue;const o=e[n];if(D(o))t[n]=Ao(0,o,r);else if(null!=o){0;const e=Lo(o);t[n]=()=>e}}},Bo=(e,t)=>{const n=Lo(t);e.slots.default=()=>n},Io=(e,t)=>{if(32&e.vnode.shapeFlag){const n=t._;n?(e.slots=It(t),le(t,"_",n)):jo(t,e.slots={})}else e.slots={},t&&Bo(e,t);le(e.slots,Ei,1)},Mo=(e,t,n)=>{const{vnode:r,slots:o}=e;let i=!0,a=x;if(32&r.shapeFlag){const e=t._;e?n&&1===e?i=!1:(V(o,t),n||1!==e||delete o._):(i=!t.$stable,jo(t,o)),a=t}else t&&(Bo(e,t),a={default:1});if(i)for(const e in o)Ro(e)||e in a||delete o[e]};function Fo(){return{app:null,config:{isNativeTag:O,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Do=0;function Uo(e,t){return function(n,r=null){D(n)||(n=Object.assign({},n)),null==r||H(r)||(r=null);const o=Fo(),i=new Set;let a=!1;const l=o.app={_uid:Do++,_component:n,_props:r,_container:null,_context:o,_instance:null,version:_a,get config(){return o.config},set config(e){0},use:(e,...t)=>(i.has(e)||(e&&D(e.install)?(i.add(e),e.install(l,...t)):D(e)&&(i.add(e),e(l,...t))),l),mixin:e=>(o.mixins.includes(e)||o.mixins.push(e),l),component:(e,t)=>t?(o.components[e]=t,l):o.components[e],directive:(e,t)=>t?(o.directives[e]=t,l):o.directives[e],mount(i,s,c){if(!a){0;const u=Oi(n,r);return u.appContext=o,s&&t?t(u,i):e(u,i,c),a=!0,l._container=i,i.__vue_app__=l,na(u.component)||u.component.proxy}},unmount(){a&&(e(null,l._container),delete l._container.__vue_app__)},provide:(e,t)=>(o.provides[e]=t,l)};return l}}function $o(e,t,n,r,o=!1){if(j(e))return void e.forEach(((e,i)=>$o(e,t&&(j(t)?t[i]:t),n,r,o)));if(Er(r)&&!o)return;const i=4&r.shapeFlag?na(r.component)||r.component.proxy:r.el,a=o?null:i,{i:l,r:s}=e;const c=t&&t.r,u=l.refs===x?l.refs={}:l.refs,f=l.setupState;if(null!=c&&c!==s&&(U(c)?(u[c]=null,A(f,c)&&(f[c]=null)):Ht(c)&&(c.value=null)),D(s))sn(s,l,12,[a,u]);else{const t=U(s),r=Ht(s);if(t||r){const l=()=>{if(e.f){const n=t?A(f,s)?f[s]:u[s]:s.value;o?j(n)&&R(n,i):j(n)?n.includes(i)||n.push(i):t?(u[s]=[i],A(f,s)&&(f[s]=u[s])):(s.value=[i],e.k&&(u[e.k]=s.value))}else t?(u[s]=a,A(f,s)&&(f[s]=a)):r&&(s.value=a,e.k&&(u[e.k]=a))};a?(l.id=-1,Ko(l,n)):l()}else 0}}let Ho=!1;const zo=e=>/svg/.test(e.namespaceURI)&&"foreignObject"!==e.tagName,qo=e=>8===e.nodeType;function Wo(e){const{mt:t,p:n,o:{patchProp:r,createText:o,nextSibling:i,parentNode:a,remove:l,insert:s,createComment:c}}=e,u=(n,r,l,c,m,g=!1)=>{const y=qo(n)&&"["===n.data,b=()=>h(n,r,l,c,m,y),{type:w,ref:C,shapeFlag:_,patchFlag:E}=r;let x=n.nodeType;r.el=n,-2===E&&(g=!1,r.dynamicChildren=null);let k=null;switch(w){case li:3!==x?""===r.children?(s(r.el=o(""),a(n),n),k=n):k=b():(n.data!==r.children&&(Ho=!0,n.data=r.children),k=i(n));break;case si:k=8!==x||y?b():i(n);break;case ci:if(y&&(x=(n=i(n)).nodeType),1===x||3===x){k=n;const e=!r.children.length;for(let t=0;t{a=a||!!t.dynamicChildren;const{type:s,props:c,patchFlag:u,shapeFlag:f,dirs:p}=t,h="input"===s&&p||"option"===s;if(h||-1!==u){if(p&&Gr(t,null,n,"created"),c)if(h||!a||48&u)for(const t in c)(h&&t.endsWith("value")||P(t)&&!Y(t))&&r(e,t,null,c[t],!1,void 0,n);else c.onClick&&r(e,"onClick",null,c.onClick,!1,void 0,n);let s;if((s=c&&c.onVnodeBeforeMount)&&Mi(s,n,t),p&&Gr(t,null,n,"beforeMount"),((s=c&&c.onVnodeMounted)||p)&&er((()=>{s&&Mi(s,n,t),p&&Gr(t,null,n,"mounted")}),o),16&f&&(!c||!c.innerHTML&&!c.textContent)){let r=d(e.firstChild,t,e,n,o,i,a);for(;r;){Ho=!0;const e=r;r=r.nextSibling,l(e)}}else 8&f&&e.textContent!==t.children&&(Ho=!0,e.textContent=t.children)}return e.nextSibling},d=(e,t,r,o,i,a,l)=>{l=l||!!t.dynamicChildren;const s=t.children,c=s.length;for(let t=0;t{const{slotScopeIds:u}=t;u&&(o=o?o.concat(u):u);const f=a(e),p=d(i(e),t,f,n,r,o,l);return p&&qo(p)&&"]"===p.data?i(t.anchor=p):(Ho=!0,s(t.anchor=c("]"),f,p),p)},h=(e,t,r,o,s,c)=>{if(Ho=!0,t.el=null,c){const t=v(e);for(;;){const n=i(e);if(!n||n===t)break;l(n)}}const u=i(e),f=a(e);return l(e),n(null,t,f,u,r,o,zo(f),s),u},v=e=>{let t=0;for(;e;)if((e=i(e))&&qo(e)&&("["===e.data&&t++,"]"===e.data)){if(0===t)return i(e);t--}return e};return[(e,t)=>{if(!t.hasChildNodes())return n(null,e,t),kn(),void(t._vnode=e);Ho=!1,u(t.firstChild,e,null,null,null),kn(),t._vnode=e},u]}const Ko=er;function Go(e){return Yo(e)}function Zo(e){return Yo(e,Wo)}function Yo(e,t){fe().__VUE__=!0;const{insert:n,remove:r,patchProp:o,createElement:i,createText:a,createComment:l,setText:s,setElementText:c,parentNode:u,nextSibling:f,setScopeId:d=S,insertStaticContent:p}=e,h=(e,t,n,r=null,o=null,i=null,a=!1,l=null,s=!!t.dynamicChildren)=>{if(e===t)return;e&&!Ci(e,t)&&(r=q(e),D(e,o,i,!0),e=null),-2===t.patchFlag&&(s=!1,t.dynamicChildren=null);const{type:c,ref:u,shapeFlag:f}=t;switch(c){case li:v(e,t,n,r);break;case si:m(e,t,n,r);break;case ci:null==e&&g(t,n,r,a);break;case ai:P(e,t,n,r,o,i,a,l,s);break;default:1&f?b(e,t,n,r,o,i,a,l,s):6&f?T(e,t,n,r,o,i,a,l,s):(64&f||128&f)&&c.process(e,t,n,r,o,i,a,l,s,K)}null!=u&&o&&$o(u,e&&e.ref,i,t||e,!t)},v=(e,t,r,o)=>{if(null==e)n(t.el=a(t.children),r,o);else{const n=t.el=e.el;t.children!==e.children&&s(n,t.children)}},m=(e,t,r,o)=>{null==e?n(t.el=l(t.children||""),r,o):t.el=e.el},g=(e,t,n,r)=>{[e.el,e.anchor]=p(e.children,t,n,r,e.el,e.anchor)},y=({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=f(e),r(e),e=n;r(t)},b=(e,t,n,r,o,i,a,l,s)=>{a=a||"svg"===t.type,null==e?w(t,n,r,o,i,a,l,s):E(e,t,o,i,a,l,s)},w=(e,t,r,a,l,s,u,f)=>{let d,p;const{type:h,props:v,shapeFlag:m,transition:g,dirs:y}=e;if(d=e.el=i(e.type,s,v&&v.is,v),8&m?c(d,e.children):16&m&&_(e.children,d,null,a,l,s&&"foreignObject"!==h,u,f),y&&Gr(e,null,a,"created"),C(d,e,e.scopeId,u,a),v){for(const t in v)"value"===t||Y(t)||o(d,t,null,v[t],s,e.children,a,l,z);"value"in v&&o(d,"value",null,v.value),(p=v.onVnodeBeforeMount)&&Mi(p,a,e)}y&&Gr(e,null,a,"beforeMount");const b=(!l||l&&!l.pendingBranch)&&g&&!g.persisted;b&&g.beforeEnter(d),n(d,t,r),((p=v&&v.onVnodeMounted)||b||y)&&Ko((()=>{p&&Mi(p,a,e),b&&g.enter(d),y&&Gr(e,null,a,"mounted")}),l)},C=(e,t,n,r,o)=>{if(n&&d(e,n),r)for(let t=0;t{for(let c=s;c{const s=t.el=e.el;let{patchFlag:u,dynamicChildren:f,dirs:d}=t;u|=16&e.patchFlag;const p=e.props||x,h=t.props||x;let v;n&&Jo(n,!1),(v=h.onVnodeBeforeUpdate)&&Mi(v,n,t,e),d&&Gr(t,e,n,"beforeUpdate"),n&&Jo(n,!0);const m=i&&"foreignObject"!==t.type;if(f?O(e.dynamicChildren,f,s,n,r,m,a):l||B(e,t,s,null,n,r,m,a,!1),u>0){if(16&u)N(s,t,p,h,n,r,i);else if(2&u&&p.class!==h.class&&o(s,"class",null,h.class,i),4&u&&o(s,"style",p.style,h.style,i),8&u){const a=t.dynamicProps;for(let t=0;t{v&&Mi(v,n,t,e),d&&Gr(t,e,n,"updated")}),r)},O=(e,t,n,r,o,i,a)=>{for(let l=0;l{if(n!==r){if(n!==x)for(const s in n)Y(s)||s in r||o(e,s,n[s],null,l,t.children,i,a,z);for(const s in r){if(Y(s))continue;const c=r[s],u=n[s];c!==u&&"value"!==s&&o(e,s,u,c,l,t.children,i,a,z)}"value"in r&&o(e,"value",n.value,r.value)}},P=(e,t,r,o,i,l,s,c,u)=>{const f=t.el=e?e.el:a(""),d=t.anchor=e?e.anchor:a("");let{patchFlag:p,dynamicChildren:h,slotScopeIds:v}=t;v&&(c=c?c.concat(v):v),null==e?(n(f,r,o),n(d,r,o),_(t.children,r,d,i,l,s,c,u)):p>0&&64&p&&h&&e.dynamicChildren?(O(e.dynamicChildren,h,r,i,l,s,c),(null!=t.key||i&&t===i.subTree)&&Qo(e,t,!0)):B(e,t,r,d,i,l,s,c,u)},T=(e,t,n,r,o,i,a,l,s)=>{t.slotScopeIds=l,null==e?512&t.shapeFlag?o.ctx.activate(t,n,r,a,s):V(t,n,r,o,i,a,s):R(e,t,s)},V=(e,t,n,r,o,i,a)=>{const l=e.component=Ui(e,r,o);if(Sr(e)&&(l.ctx.renderer=K),Yi(l),l.asyncDep){if(o&&o.registerDep(l,L),!e.el){const e=l.subTree=Oi(si);m(null,e,t,n)}}else L(l,e,t,n,o,i,a)},R=(e,t,n)=>{const r=t.component=e.component;if(function(e,t,n){const{props:r,children:o,component:i}=e,{props:a,children:l,patchFlag:s}=t,c=i.emitsOptions;if(t.dirs||t.transition)return!0;if(!(n&&s>=0))return!(!o&&!l||l&&l.$stable)||r!==a&&(r?!a||Kn(r,a,c):!!a);if(1024&s)return!0;if(16&s)return r?Kn(r,a,c):!!a;if(8&s){const e=t.dynamicProps;for(let t=0;thn&&pn.splice(t,1)}(r.update),r.update()}else t.el=e.el,r.vnode=t},L=(e,t,n,r,o,i,a)=>{const l=e.effect=new Ne((()=>{if(e.isMounted){let t,{next:n,bu:r,u:l,parent:s,vnode:c}=e,f=n;0,Jo(e,!1),n?(n.el=c.el,j(e,n,a)):n=c,r&&ae(r),(t=n.props&&n.props.onVnodeBeforeUpdate)&&Mi(t,s,n,c),Jo(e,!0);const d=Hn(e);0;const p=e.subTree;e.subTree=d,h(p,d,u(p.el),q(p),e,o,i),n.el=d.el,null===f&&Gn(e,d.el),l&&Ko(l,o),(t=n.props&&n.props.onVnodeUpdated)&&Ko((()=>Mi(t,s,n,c)),o)}else{let a;const{el:l,props:s}=t,{bm:c,m:u,parent:f}=e,d=Er(t);if(Jo(e,!1),c&&ae(c),!d&&(a=s&&s.onVnodeBeforeMount)&&Mi(a,f,t),Jo(e,!0),l&&Z){const n=()=>{e.subTree=Hn(e),Z(l,e.subTree,e,o,null)};d?t.type.__asyncLoader().then((()=>!e.isUnmounted&&n())):n()}else{0;const a=e.subTree=Hn(e);0,h(null,a,n,r,e,o,i),t.el=a.el}if(u&&Ko(u,o),!d&&(a=s&&s.onVnodeMounted)){const e=t;Ko((()=>Mi(a,f,e)),o)}(256&t.shapeFlag||f&&Er(f.vnode)&&256&f.vnode.shapeFlag)&&e.a&&Ko(e.a,o),e.isMounted=!0,t=n=r=null}}),(()=>Cn(s)),e.scope),s=e.update=()=>l.run();s.id=e.uid,Jo(e,!0),s()},j=(e,t,n)=>{t.component=e;const r=e.vnode.props;e.vnode=t,e.next=null,function(e,t,n,r){const{props:o,attrs:i,vnode:{patchFlag:a}}=e,l=It(o),[s]=e.propsOptions;let c=!1;if(!(r||a>0)||16&a){let r;ko(e,t,o,i)&&(c=!0);for(const i in l)t&&(A(t,i)||(r=ne(i))!==i&&A(t,r))||(s?!n||void 0===n[i]&&void 0===n[r]||(o[i]=So(s,l,i,void 0,e,!0)):delete o[i]);if(i!==l)for(const e in i)t&&A(t,e)||(delete i[e],c=!0)}else if(8&a){const n=e.vnode.dynamicProps;for(let r=0;r{const u=e&&e.children,f=e?e.shapeFlag:0,d=t.children,{patchFlag:p,shapeFlag:h}=t;if(p>0){if(128&p)return void M(u,d,n,r,o,i,a,l,s);if(256&p)return void I(u,d,n,r,o,i,a,l,s)}8&h?(16&f&&z(u,o,i),d!==u&&c(n,d)):16&f?16&h?M(u,d,n,r,o,i,a,l,s):z(u,o,i,!0):(8&f&&c(n,""),16&h&&_(d,n,r,o,i,a,l,s))},I=(e,t,n,r,o,i,a,l,s)=>{t=t||k;const c=(e=e||k).length,u=t.length,f=Math.min(c,u);let d;for(d=0;du?z(e,o,i,!0,!1,f):_(t,n,r,o,i,a,l,s,f)},M=(e,t,n,r,o,i,a,l,s)=>{let c=0;const u=t.length;let f=e.length-1,d=u-1;for(;c<=f&&c<=d;){const r=e[c],u=t[c]=s?ji(t[c]):Ai(t[c]);if(!Ci(r,u))break;h(r,u,n,null,o,i,a,l,s),c++}for(;c<=f&&c<=d;){const r=e[f],c=t[d]=s?ji(t[d]):Ai(t[d]);if(!Ci(r,c))break;h(r,c,n,null,o,i,a,l,s),f--,d--}if(c>f){if(c<=d){const e=d+1,f=ed)for(;c<=f;)D(e[c],o,i,!0),c++;else{const p=c,v=c,m=new Map;for(c=v;c<=d;c++){const e=t[c]=s?ji(t[c]):Ai(t[c]);null!=e.key&&m.set(e.key,c)}let g,y=0;const b=d-v+1;let w=!1,C=0;const _=new Array(b);for(c=0;c=b){D(r,o,i,!0);continue}let u;if(null!=r.key)u=m.get(r.key);else for(g=v;g<=d;g++)if(0===_[g-v]&&Ci(r,t[g])){u=g;break}void 0===u?D(r,o,i,!0):(_[u-v]=c+1,u>=C?C=u:w=!0,h(r,t[u],n,null,o,i,a,l,s),y++)}const E=w?function(e){const t=e.slice(),n=[0];let r,o,i,a,l;const s=e.length;for(r=0;r>1,e[n[l]]0&&(t[r]=n[i-1]),n[i]=r)}}i=n.length,a=n[i-1];for(;i-- >0;)n[i]=a,a=t[a];return n}(_):k;for(g=E.length-1,c=b-1;c>=0;c--){const e=v+c,f=t[e],d=e+1{const{el:a,type:l,transition:s,children:c,shapeFlag:u}=e;if(6&u)return void F(e.component.subTree,t,r,o);if(128&u)return void e.suspense.move(t,r,o);if(64&u)return void l.move(e,t,r,K);if(l===ai){n(a,t,r);for(let e=0;e{let i;for(;e&&e!==t;)i=f(e),n(e,r,o),e=i;n(t,r,o)})(e,t,r);if(2!==o&&1&u&&s)if(0===o)s.beforeEnter(a),n(a,t,r),Ko((()=>s.enter(a)),i);else{const{leave:e,delayLeave:o,afterLeave:i}=s,l=()=>n(a,t,r),c=()=>{e(a,(()=>{l(),i&&i()}))};o?o(a,l,c):c()}else n(a,t,r)},D=(e,t,n,r=!1,o=!1)=>{const{type:i,props:a,ref:l,children:s,dynamicChildren:c,shapeFlag:u,patchFlag:f,dirs:d}=e;if(null!=l&&$o(l,null,n,e,!0),256&u)return void t.ctx.deactivate(e);const p=1&u&&d,h=!Er(e);let v;if(h&&(v=a&&a.onVnodeBeforeUnmount)&&Mi(v,t,e),6&u)H(e.component,n,r);else{if(128&u)return void e.suspense.unmount(n,r);p&&Gr(e,null,t,"beforeUnmount"),64&u?e.type.remove(e,t,n,o,K,r):c&&(i!==ai||f>0&&64&f)?z(c,t,n,!1,!0):(i===ai&&384&f||!o&&16&u)&&z(s,t,n),r&&U(e)}(h&&(v=a&&a.onVnodeUnmounted)||p)&&Ko((()=>{v&&Mi(v,t,e),p&&Gr(e,null,t,"unmounted")}),n)},U=e=>{const{type:t,el:n,anchor:o,transition:i}=e;if(t===ai)return void $(n,o);if(t===ci)return void y(e);const a=()=>{r(n),i&&!i.persisted&&i.afterLeave&&i.afterLeave()};if(1&e.shapeFlag&&i&&!i.persisted){const{leave:t,delayLeave:r}=i,o=()=>t(n,a);r?r(e.el,a,o):o()}else a()},$=(e,t)=>{let n;for(;e!==t;)n=f(e),r(e),e=n;r(t)},H=(e,t,n)=>{const{bum:r,scope:o,update:i,subTree:a,um:l}=e;r&&ae(r),o.stop(),i&&(i.active=!1,D(a,e,t,n)),l&&Ko(l,t),Ko((()=>{e.isUnmounted=!0}),t),t&&t.pendingBranch&&!t.isUnmounted&&e.asyncDep&&!e.asyncResolved&&e.suspenseId===t.pendingId&&(t.deps--,0===t.deps&&t.resolve())},z=(e,t,n,r=!1,o=!1,i=0)=>{for(let a=i;a6&e.shapeFlag?q(e.component.subTree):128&e.shapeFlag?e.suspense.next():f(e.anchor||e.el),W=(e,t,n)=>{null==e?t._vnode&&D(t._vnode,null,null,!0):h(t._vnode||null,e,t,null,null,null,n),xn(),kn(),t._vnode=e},K={p:h,um:D,m:F,r:U,mt:V,mc:_,pc:B,pbc:O,n:q,o:e};let G,Z;return t&&([G,Z]=t(K)),{render:W,hydrate:G,createApp:Uo(W,G)}}function Jo({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Qo(e,t,n=!1){const r=e.children,o=t.children;if(j(r)&&j(o))for(let e=0;ee.__isTeleport,ei=e=>e&&(e.disabled||""===e.disabled),ti=e=>"undefined"!=typeof SVGElement&&e instanceof SVGElement,ni=(e,t)=>{const n=e&&e.to;if(U(n)){if(t){const e=t(n);return e}return null}return n};function ri(e,t,n,{o:{insert:r},m:o},i=2){0===i&&r(e.targetAnchor,t,n);const{el:a,anchor:l,shapeFlag:s,children:c,props:u}=e,f=2===i;if(f&&r(a,t,n),(!f||ei(u))&&16&s)for(let e=0;e{16&y&&u(b,e,t,o,i,a,l,s)};g?m(n,c):f&&m(f,d)}else{t.el=e.el;const r=t.anchor=e.anchor,u=t.target=e.target,p=t.targetAnchor=e.targetAnchor,v=ei(e.props),m=v?n:u,y=v?r:p;if(a=a||ti(u),w?(d(e.dynamicChildren,w,m,o,i,a,l),Qo(e,t,!0)):s||f(e,t,m,y,o,i,a,l,!1),g)v||ri(t,n,r,c,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const e=t.target=ni(t.props,h);e&&ri(t,e,null,c,0)}else v&&ri(t,u,p,c,1)}ii(t)},remove(e,t,n,r,{um:o,o:{remove:i}},a){const{shapeFlag:l,children:s,anchor:c,targetAnchor:u,target:f,props:d}=e;if(f&&i(u),(a||!ei(d))&&(i(c),16&l))for(let e=0;e0?fi||k:null,pi(),vi>0&&fi&&fi.push(e),e}function yi(e,t,n,r,o,i){return gi(Si(e,t,n,r,o,i,!0))}function bi(e,t,n,r,o){return gi(Oi(e,t,n,r,o,!0))}function wi(e){return!!e&&!0===e.__v_isVNode}function Ci(e,t){return e.type===t.type&&e.key===t.key}function _i(e){hi=e}const Ei="__vInternal",xi=({key:e})=>null!=e?e:null,ki=({ref:e,ref_key:t,ref_for:n})=>null!=e?U(e)||Ht(e)||D(e)?{i:Bn,r:e,k:t,f:!!n}:e:null;function Si(e,t=null,n=null,r=0,o=null,i=(e===ai?0:1),a=!1,l=!1){const s={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&xi(t),ref:t&&ki(t),scopeId:In,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:Bn};return l?(Bi(s,n),128&i&&e.normalize(s)):n&&(s.shapeFlag|=U(n)?8:16),vi>0&&!a&&fi&&(s.patchFlag>0||6&i)&&32!==s.patchFlag&&fi.push(s),s}const Oi=Ni;function Ni(e,t=null,n=null,r=0,o=null,i=!1){if(e&&e!==Qr||(e=si),wi(e)){const r=Ti(e,t,!0);return n&&Bi(r,n),vi>0&&!i&&fi&&(6&r.shapeFlag?fi[fi.indexOf(e)]=r:fi.push(r)),r.patchFlag|=-2,r}if(oa(e)&&(e=e.__vccOpts),t){t=Pi(t);let{class:e,style:n}=t;e&&!U(e)&&(t.class=d(e)),H(n)&&(Bt(n)&&!j(n)&&(n=V({},n)),t.style=l(n))}return Si(e,t,n,r,o,U(e)?1:Zn(e)?128:Xo(e)?64:H(e)?4:D(e)?2:0,i,!0)}function Pi(e){return e?Bt(e)||Ei in e?V({},e):e:null}function Ti(e,t,n=!1){const{props:r,ref:o,patchFlag:i,children:a}=e,l=t?Ii(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&xi(l),ref:t&&t.ref?n&&o?j(o)?o.concat(ki(t)):[o,ki(t)]:ki(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ai?-1===i?16:16|i:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Ti(e.ssContent),ssFallback:e.ssFallback&&Ti(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Vi(e=" ",t=0){return Oi(li,null,e,t)}function Ri(e,t){const n=Oi(ci,null,e);return n.staticCount=t,n}function Li(e="",t=!1){return t?(di(),bi(si,null,e)):Oi(si,null,e)}function Ai(e){return null==e||"boolean"==typeof e?Oi(si):j(e)?Oi(ai,null,e.slice()):"object"==typeof e?ji(e):Oi(li,null,String(e))}function ji(e){return null===e.el&&-1!==e.patchFlag||e.memo?e:Ti(e)}function Bi(e,t){let n=0;const{shapeFlag:r}=e;if(null==t)t=null;else if(j(t))n=16;else if("object"==typeof t){if(65&r){const n=t.default;return void(n&&(n._c&&(n._d=!1),Bi(e,n()),n._c&&(n._d=!0)))}{n=32;const r=t._;r||Ei in t?3===r&&Bn&&(1===Bn.slots._?t._=1:(t._=2,e.patchFlag|=1024)):t._ctx=Bn}}else D(t)?(t={default:t,_ctx:Bn},n=32):(t=String(t),64&r?(n=16,t=[Vi(t)]):n=8);e.children=t,e.shapeFlag|=n}function Ii(...e){const t={};for(let n=0;n$i||Bn,zi=e=>{$i=e,e.scope.on()},qi=()=>{$i&&$i.scope.off(),$i=null};function Wi(e){return 4&e.vnode.shapeFlag}let Ki,Gi,Zi=!1;function Yi(e,t=!1){Zi=t;const{props:n,children:r}=e.vnode,o=Wi(e);!function(e,t,n,r=!1){const o={},i={};le(i,Ei,1),e.propsDefaults=Object.create(null),ko(e,t,o,i);for(const t in e.propsOptions[0])t in o||(o[t]=void 0);n?e.props=r?o:Pt(o):e.type.props?e.props=o:e.props=i,e.attrs=i}(e,n,o,t),Io(e,r);const i=o?function(e,t){const n=e.type;0;e.accessCache=Object.create(null),e.proxy=Mt(new Proxy(e.ctx,fo)),!1;const{setup:r}=n;if(r){const n=e.setupContext=r.length>1?ta(e):null;zi(e),Ae();const o=sn(r,e,0,[e.props,n]);if(je(),qi(),z(o)){if(o.then(qi,qi),t)return o.then((n=>{Ji(e,n,t)})).catch((t=>{un(t,e,0)}));e.asyncDep=o}else Ji(e,o,t)}else ea(e,t)}(e,t):void 0;return Zi=!1,i}function Ji(e,t,n){D(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:H(t)&&(e.setupState=Jt(t)),ea(e,n)}function Qi(e){Ki=e,Gi=e=>{e.render._rc&&(e.withProxy=new Proxy(e.ctx,po))}}const Xi=()=>!Ki;function ea(e,t,n){const r=e.type;if(!e.render){if(!t&&Ki&&!r.render){const t=r.template||yo(e).template;if(t){0;const{isCustomElement:n,compilerOptions:o}=e.appContext.config,{delimiters:i,compilerOptions:a}=r,l=V(V({isCustomElement:n,delimiters:i},o),a);r.render=Ki(t,l)}}e.render=r.render||S,Gi&&Gi(e)}zi(e),Ae(),vo(e),je(),qi()}function ta(e){const t=t=>{e.exposed=t||{}};let n;return{get attrs(){return n||(n=function(e){return new Proxy(e.attrs,{get:(t,n)=>(Be(e,0,"$attrs"),t[n])})}(e))},slots:e.slots,emit:e.emit,expose:t}}function na(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Jt(Mt(e.exposed)),{get:(t,n)=>n in t?t[n]:n in co?co[n](e):void 0,has:(e,t)=>t in e||t in co}))}function ra(e,t=!0){return D(e)?e.displayName||e.name:e.name||t&&e.__name}function oa(e){return D(e)&&"__vccOpts"in e}const ia=(e,t)=>function(e,t,n=!1){let r,o;const i=D(e);return i?(r=e,o=S):(r=e.get,o=e.set),new on(r,o,i||!o,n)}(e,0,Zi);function aa(){return null}function la(){return null}function sa(e){0}function ca(e,t){return null}function ua(){return da().slots}function fa(){return da().attrs}function da(){const e=Hi();return e.setupContext||(e.setupContext=ta(e))}function pa(e,t){const n=j(e)?e.reduce(((e,t)=>(e[t]={},e)),{}):e;for(const e in t){const r=n[e];r?j(r)||D(r)?n[e]={type:r,default:t[e]}:r.default=t[e]:null===r&&(n[e]={default:t[e]})}return n}function ha(e,t){const n={};for(const r in e)t.includes(r)||Object.defineProperty(n,r,{enumerable:!0,get:()=>e[r]});return n}function va(e){const t=Hi();let n=e();return qi(),z(n)&&(n=n.catch((e=>{throw zi(t),e}))),[n,()=>zi(t)]}function ma(e,t,n){const r=arguments.length;return 2===r?H(t)&&!j(t)?wi(t)?Oi(e,null,[t]):Oi(e,t):Oi(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):3===r&&wi(n)&&(n=[n]),Oi(e,t,n))}const ga=Symbol(""),ya=()=>{{const e=rr(ga);return e}};function ba(){return void 0}function wa(e,t,n,r){const o=n[r];if(o&&Ca(o,e))return o;const i=t();return i.memo=e.slice(),n[r]=i}function Ca(e,t){const n=e.memo;if(n.length!=t.length)return!1;for(let e=0;e0&&fi&&fi.push(e),!0}const _a="3.2.47",Ea={createComponentInstance:Ui,setupComponent:Yi,renderComponentRoot:Hn,setCurrentRenderingInstance:Mn,isVNode:wi,normalizeVNode:Ai},xa=null,ka=null,Sa="undefined"!=typeof document?document:null,Oa=Sa&&Sa.createElement("template"),Na={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t?Sa.createElementNS("http://www.w3.org/2000/svg",e):Sa.createElement(e,n?{is:n}:void 0);return"select"===e&&r&&null!=r.multiple&&o.setAttribute("multiple",r.multiple),o},createText:e=>Sa.createTextNode(e),createComment:e=>Sa.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Sa.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,i){const a=n?n.previousSibling:t.lastChild;if(o&&(o===i||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),o!==i&&(o=o.nextSibling););else{Oa.innerHTML=r?`${e}`:e;const o=Oa.content;if(r){const e=o.firstChild;for(;e.firstChild;)o.appendChild(e.firstChild);o.removeChild(e)}t.insertBefore(o,n)}return[a?a.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};const Pa=/\s*!important$/;function Ta(e,t,n){if(j(n))n.forEach((n=>Ta(e,t,n)));else if(null==n&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=function(e,t){const n=Ra[t];if(n)return n;let r=ee(t);if("filter"!==r&&r in e)return Ra[t]=r;r=re(r);for(let n=0;n{if(e._vts){if(e._vts<=n.attached)return}else e._vts=Date.now();cn(function(e,t){if(j(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map((e=>t=>!t._stopped&&e&&e(t)))}return t}(e,n.value),t,5,[e])};return n.value=e,n.attached=Fa(),n}(r,o);Aa(e,n,a,l)}else a&&(!function(e,t,n,r){e.removeEventListener(t,n,r)}(e,n,a,l),i[t]=void 0)}}const Ba=/(?:Once|Passive|Capture)$/;let Ia=0;const Ma=Promise.resolve(),Fa=()=>Ia||(Ma.then((()=>Ia=0)),Ia=Date.now());const Da=/^on[a-z]/;function Ua(e,t){const n=_r(e);class r extends za{constructor(e){super(n,e,t)}}return r.def=n,r}const $a=e=>Ua(e,Kl),Ha="undefined"!=typeof HTMLElement?HTMLElement:class{};class za extends Ha{constructor(e,t={},n){super(),this._def=e,this._props=t,this._instance=null,this._connected=!1,this._resolved=!1,this._numberProps=null,this.shadowRoot&&n?n(this._createVNode(),this.shadowRoot):(this.attachShadow({mode:"open"}),this._def.__asyncLoader||this._resolveProps(this._def))}connectedCallback(){this._connected=!0,this._instance||(this._resolved?this._update():this._resolveDef())}disconnectedCallback(){this._connected=!1,wn((()=>{this._connected||(Wl(null,this.shadowRoot),this._instance=null)}))}_resolveDef(){this._resolved=!0;for(let e=0;e{for(const t of e)this._setAttr(t.attributeName)})).observe(this,{attributes:!0});const e=(e,t=!1)=>{const{props:n,styles:r}=e;let o;if(n&&!j(n))for(const e in n){const t=n[e];(t===Number||t&&t.type===Number)&&(e in this._props&&(this._props[e]=ce(this._props[e])),(o||(o=Object.create(null)))[ee(e)]=!0)}this._numberProps=o,t&&this._resolveProps(e),this._applyStyles(r),this._update()},t=this._def.__asyncLoader;t?t().then((t=>e(t,!0))):e(this._def)}_resolveProps(e){const{props:t}=e,n=j(t)?t:Object.keys(t||{});for(const e of Object.keys(this))"_"!==e[0]&&n.includes(e)&&this._setProp(e,this[e],!0,!1);for(const e of n.map(ee))Object.defineProperty(this,e,{get(){return this._getProp(e)},set(t){this._setProp(e,t)}})}_setAttr(e){let t=this.getAttribute(e);const n=ee(e);this._numberProps&&this._numberProps[n]&&(t=ce(t)),this._setProp(n,t,!1)}_getProp(e){return this._props[e]}_setProp(e,t,n=!0,r=!0){t!==this._props[e]&&(this._props[e]=t,r&&this._instance&&this._update(),n&&(!0===t?this.setAttribute(ne(e),""):"string"==typeof t||"number"==typeof t?this.setAttribute(ne(e),t+""):t||this.removeAttribute(ne(e))))}_update(){Wl(this._createVNode(),this.shadowRoot)}_createVNode(){const e=Oi(this._def,V({},this._props));return this._instance||(e.ce=e=>{this._instance=e,e.isCE=!0;const t=(e,t)=>{this.dispatchEvent(new CustomEvent(e,{detail:t}))};e.emit=(e,...n)=>{t(e,n),ne(e)!==e&&t(ne(e),n)};let n=this;for(;n=n&&(n.parentNode||n.host);)if(n instanceof za){e.parent=n._instance,e.provides=n._instance.provides;break}}),e}_applyStyles(e){e&&e.forEach((e=>{const t=document.createElement("style");t.textContent=e,this.shadowRoot.appendChild(t)}))}}function qa(e="$style"){{const t=Hi();if(!t)return x;const n=t.type.__cssModules;if(!n)return x;const r=n[e];return r||x}}function Wa(e){const t=Hi();if(!t)return;const n=t.ut=(n=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach((e=>Ga(e,n)))},r=()=>{const r=e(t.proxy);Ka(t.subTree,r),n(r)};ir(r),Mr((()=>{const e=new MutationObserver(r);e.observe(t.subTree.el.parentNode,{childList:!0}),$r((()=>e.disconnect()))}))}function Ka(e,t){if(128&e.shapeFlag){const n=e.suspense;e=n.activeBranch,n.pendingBranch&&!n.isHydrating&&n.effects.push((()=>{Ka(n.activeBranch,t)}))}for(;e.component;)e=e.component.subTree;if(1&e.shapeFlag&&e.el)Ga(e.el,t);else if(e.type===ai)e.children.forEach((e=>Ka(e,t)));else if(e.type===ci){let{el:n,anchor:r}=e;for(;n&&(Ga(n,t),n!==r);)n=n.nextSibling}}function Ga(e,t){if(1===e.nodeType){const n=e.style;for(const e in t)n.setProperty(`--${e}`,t[e])}}const Za="transition",Ya="animation",Ja=(e,{slots:t})=>ma(vr,nl(e),t);Ja.displayName="Transition";const Qa={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Xa=Ja.props=V({},vr.props,Qa),el=(e,t=[])=>{j(e)?e.forEach((e=>e(...t))):e&&e(...t)},tl=e=>!!e&&(j(e)?e.some((e=>e.length>1)):e.length>1);function nl(e){const t={};for(const n in e)n in Qa||(t[n]=e[n]);if(!1===e.css)return t;const{name:n="v",type:r,duration:o,enterFromClass:i=`${n}-enter-from`,enterActiveClass:a=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:s=i,appearActiveClass:c=a,appearToClass:u=l,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:p=`${n}-leave-to`}=e,h=function(e){if(null==e)return null;if(H(e))return[rl(e.enter),rl(e.leave)];{const t=rl(e);return[t,t]}}(o),v=h&&h[0],m=h&&h[1],{onBeforeEnter:g,onEnter:y,onEnterCancelled:b,onLeave:w,onLeaveCancelled:C,onBeforeAppear:_=g,onAppear:E=y,onAppearCancelled:x=b}=t,k=(e,t,n)=>{il(e,t?u:l),il(e,t?c:a),n&&n()},S=(e,t)=>{e._isLeaving=!1,il(e,f),il(e,p),il(e,d),t&&t()},O=e=>(t,n)=>{const o=e?E:y,a=()=>k(t,e,n);el(o,[t,a]),al((()=>{il(t,e?s:i),ol(t,e?u:l),tl(o)||sl(t,r,v,a)}))};return V(t,{onBeforeEnter(e){el(g,[e]),ol(e,i),ol(e,a)},onBeforeAppear(e){el(_,[e]),ol(e,s),ol(e,c)},onEnter:O(!1),onAppear:O(!0),onLeave(e,t){e._isLeaving=!0;const n=()=>S(e,t);ol(e,f),dl(),ol(e,d),al((()=>{e._isLeaving&&(il(e,f),ol(e,p),tl(w)||sl(e,r,m,n))})),el(w,[e,n])},onEnterCancelled(e){k(e,!1),el(b,[e])},onAppearCancelled(e){k(e,!0),el(x,[e])},onLeaveCancelled(e){S(e),el(C,[e])}})}function rl(e){return ce(e)}function ol(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.add(t))),(e._vtc||(e._vtc=new Set)).add(t)}function il(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.remove(t)));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function al(e){requestAnimationFrame((()=>{requestAnimationFrame(e)}))}let ll=0;function sl(e,t,n,r){const o=e._endId=++ll,i=()=>{o===e._endId&&r()};if(n)return setTimeout(i,n);const{type:a,timeout:l,propCount:s}=cl(e,t);if(!a)return r();const c=a+"end";let u=0;const f=()=>{e.removeEventListener(c,d),i()},d=t=>{t.target===e&&++u>=s&&f()};setTimeout((()=>{u(n[e]||"").split(", "),o=r(`${Za}Delay`),i=r(`${Za}Duration`),a=ul(o,i),l=r(`${Ya}Delay`),s=r(`${Ya}Duration`),c=ul(l,s);let u=null,f=0,d=0;t===Za?a>0&&(u=Za,f=a,d=i.length):t===Ya?c>0&&(u=Ya,f=c,d=s.length):(f=Math.max(a,c),u=f>0?a>c?Za:Ya:null,d=u?u===Za?i.length:s.length:0);return{type:u,timeout:f,propCount:d,hasTransform:u===Za&&/\b(transform|all)(,|$)/.test(r(`${Za}Property`).toString())}}function ul(e,t){for(;e.lengthfl(t)+fl(e[n]))))}function fl(e){return 1e3*Number(e.slice(0,-1).replace(",","."))}function dl(){return document.body.offsetHeight}const pl=new WeakMap,hl=new WeakMap,vl={name:"TransitionGroup",props:V({},Xa,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=Hi(),r=pr();let o,i;return Dr((()=>{if(!o.length)return;const t=e.moveClass||`${e.name||"v"}-move`;if(!function(e,t,n){const r=e.cloneNode();e._vtc&&e._vtc.forEach((e=>{e.split(/\s+/).forEach((e=>e&&r.classList.remove(e)))}));n.split(/\s+/).forEach((e=>e&&r.classList.add(e))),r.style.display="none";const o=1===t.nodeType?t:t.parentNode;o.appendChild(r);const{hasTransform:i}=cl(r);return o.removeChild(r),i}(o[0].el,n.vnode.el,t))return;o.forEach(gl),o.forEach(yl);const r=o.filter(bl);dl(),r.forEach((e=>{const n=e.el,r=n.style;ol(n,t),r.transform=r.webkitTransform=r.transitionDuration="";const o=n._moveCb=e=>{e&&e.target!==n||e&&!/transform$/.test(e.propertyName)||(n.removeEventListener("transitionend",o),n._moveCb=null,il(n,t))};n.addEventListener("transitionend",o)}))})),()=>{const a=It(e),l=nl(a);let s=a.tag||ai;o=i,i=t.default?Cr(t.default()):[];for(let e=0;e{const t=e.props["onUpdate:modelValue"]||!1;return j(t)?e=>ae(t,e):t};function Cl(e){e.target.composing=!0}function _l(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const El={created(e,{modifiers:{lazy:t,trim:n,number:r}},o){e._assign=wl(o);const i=r||o.props&&"number"===o.props.type;Aa(e,t?"change":"input",(t=>{if(t.target.composing)return;let r=e.value;n&&(r=r.trim()),i&&(r=se(r)),e._assign(r)})),n&&Aa(e,"change",(()=>{e.value=e.value.trim()})),t||(Aa(e,"compositionstart",Cl),Aa(e,"compositionend",_l),Aa(e,"change",_l))},mounted(e,{value:t}){e.value=null==t?"":t},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:r,number:o}},i){if(e._assign=wl(i),e.composing)return;if(document.activeElement===e&&"range"!==e.type){if(n)return;if(r&&e.value.trim()===t)return;if((o||"number"===e.type)&&se(e.value)===t)return}const a=null==t?"":t;e.value!==a&&(e.value=a)}},xl={deep:!0,created(e,t,n){e._assign=wl(n),Aa(e,"change",(()=>{const t=e._modelValue,n=Pl(e),r=e.checked,o=e._assign;if(j(t)){const e=C(t,n),i=-1!==e;if(r&&!i)o(t.concat(n));else if(!r&&i){const n=[...t];n.splice(e,1),o(n)}}else if(I(t)){const e=new Set(t);r?e.add(n):e.delete(n),o(e)}else o(Tl(e,r))}))},mounted:kl,beforeUpdate(e,t,n){e._assign=wl(n),kl(e,t,n)}};function kl(e,{value:t,oldValue:n},r){e._modelValue=t,j(t)?e.checked=C(t,r.props.value)>-1:I(t)?e.checked=t.has(r.props.value):t!==n&&(e.checked=w(t,Tl(e,!0)))}const Sl={created(e,{value:t},n){e.checked=w(t,n.props.value),e._assign=wl(n),Aa(e,"change",(()=>{e._assign(Pl(e))}))},beforeUpdate(e,{value:t,oldValue:n},r){e._assign=wl(r),t!==n&&(e.checked=w(t,r.props.value))}},Ol={deep:!0,created(e,{value:t,modifiers:{number:n}},r){const o=I(t);Aa(e,"change",(()=>{const t=Array.prototype.filter.call(e.options,(e=>e.selected)).map((e=>n?se(Pl(e)):Pl(e)));e._assign(e.multiple?o?new Set(t):t:t[0])})),e._assign=wl(r)},mounted(e,{value:t}){Nl(e,t)},beforeUpdate(e,t,n){e._assign=wl(n)},updated(e,{value:t}){Nl(e,t)}};function Nl(e,t){const n=e.multiple;if(!n||j(t)||I(t)){for(let r=0,o=e.options.length;r-1:o.selected=t.has(i);else if(w(Pl(o),t))return void(e.selectedIndex!==r&&(e.selectedIndex=r))}n||-1===e.selectedIndex||(e.selectedIndex=-1)}}function Pl(e){return"_value"in e?e._value:e.value}function Tl(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Vl={created(e,t,n){Ll(e,t,n,null,"created")},mounted(e,t,n){Ll(e,t,n,null,"mounted")},beforeUpdate(e,t,n,r){Ll(e,t,n,r,"beforeUpdate")},updated(e,t,n,r){Ll(e,t,n,r,"updated")}};function Rl(e,t){switch(e){case"SELECT":return Ol;case"TEXTAREA":return El;default:switch(t){case"checkbox":return xl;case"radio":return Sl;default:return El}}}function Ll(e,t,n,r,o){const i=Rl(e.tagName,n.props&&n.props.type)[o];i&&i(e,t,n,r)}const Al=["ctrl","shift","alt","meta"],jl={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&0!==e.button,middle:e=>"button"in e&&1!==e.button,right:e=>"button"in e&&2!==e.button,exact:(e,t)=>Al.some((n=>e[`${n}Key`]&&!t.includes(n)))},Bl=(e,t)=>(n,...r)=>{for(let e=0;en=>{if(!("key"in n))return;const r=ne(n.key);return t.some((e=>e===r||Il[e]===r))?e(n):void 0},Fl={beforeMount(e,{value:t},{transition:n}){e._vod="none"===e.style.display?"":e.style.display,n&&t?n.beforeEnter(e):Dl(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),Dl(e,!0),r.enter(e)):r.leave(e,(()=>{Dl(e,!1)})):Dl(e,t))},beforeUnmount(e,{value:t}){Dl(e,t)}};function Dl(e,t){e.style.display=t?e._vod:"none"}const Ul=V({patchProp:(e,t,n,r,o=!1,i,a,l,s)=>{"class"===t?function(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),null==t?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}(e,r,o):"style"===t?function(e,t,n){const r=e.style,o=U(n);if(n&&!o){if(t&&!U(t))for(const e in t)null==n[e]&&Ta(r,e,"");for(const e in n)Ta(r,e,n[e])}else{const i=r.display;o?t!==n&&(r.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(r.display=i)}}(e,n,r):P(t)?T(t)||ja(e,t,0,r,a):("."===t[0]?(t=t.slice(1),1):"^"===t[0]?(t=t.slice(1),0):function(e,t,n,r){if(r)return"innerHTML"===t||"textContent"===t||!!(t in e&&Da.test(t)&&D(n));if("spellcheck"===t||"draggable"===t||"translate"===t)return!1;if("form"===t)return!1;if("list"===t&&"INPUT"===e.tagName)return!1;if("type"===t&&"TEXTAREA"===e.tagName)return!1;if(Da.test(t)&&U(n))return!1;return t in e}(e,t,r,o))?function(e,t,n,r,o,i,a){if("innerHTML"===t||"textContent"===t)return r&&a(r,o,i),void(e[t]=null==n?"":n);if("value"===t&&"PROGRESS"!==e.tagName&&!e.tagName.includes("-")){e._value=n;const r=null==n?"":n;return e.value===r&&"OPTION"!==e.tagName||(e.value=r),void(null==n&&e.removeAttribute(t))}let l=!1;if(""===n||null==n){const r=typeof e[t];"boolean"===r?n=b(n):null==n&&"string"===r?(n="",l=!0):"number"===r&&(n=0,l=!0)}try{e[t]=n}catch(e){}l&&e.removeAttribute(t)}(e,t,r,i,a,l,s):("true-value"===t?e._trueValue=r:"false-value"===t&&(e._falseValue=r),function(e,t,n,r,o){if(r&&t.startsWith("xlink:"))null==n?e.removeAttributeNS(La,t.slice(6,t.length)):e.setAttributeNS(La,t,n);else{const r=y(t);null==n||r&&!b(n)?e.removeAttribute(t):e.setAttribute(t,r?"":n)}}(e,t,r,o))}},Na);let $l,Hl=!1;function zl(){return $l||($l=Go(Ul))}function ql(){return $l=Hl?$l:Zo(Ul),Hl=!0,$l}const Wl=(...e)=>{zl().render(...e)},Kl=(...e)=>{ql().hydrate(...e)},Gl=(...e)=>{const t=zl().createApp(...e);const{mount:n}=t;return t.mount=e=>{const r=Yl(e);if(!r)return;const o=t._component;D(o)||o.render||o.template||(o.template=r.innerHTML),r.innerHTML="";const i=n(r,!1,r instanceof SVGElement);return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t},Zl=(...e)=>{const t=ql().createApp(...e);const{mount:n}=t;return t.mount=e=>{const t=Yl(e);if(t)return n(t,!0,t instanceof SVGElement)},t};function Yl(e){if(U(e)){return document.querySelector(e)}return e}let Jl=!1;const Ql=()=>{Jl||(Jl=!0,El.getSSRProps=({value:e})=>({value:e}),Sl.getSSRProps=({value:e},t)=>{if(t.props&&w(t.props.value,e))return{checked:!0}},xl.getSSRProps=({value:e},t)=>{if(j(e)){if(t.props&&C(e,t.props.value)>-1)return{checked:!0}}else if(I(e)){if(t.props&&e.has(t.props.value))return{checked:!0}}else if(e)return{checked:!0}},Vl.getSSRProps=(e,t)=>{if("string"!=typeof t.type)return;const n=Rl(t.type.toUpperCase(),t.props&&t.props.type);return n.getSSRProps?n.getSSRProps(e,t):void 0},Fl.getSSRProps=({value:e})=>{if(!e)return{style:{display:"none"}}})};function Xl(e){throw e}function es(e){}function ts(e,t,n,r){const o=new SyntaxError(String(e));return o.code=e,o.loc=t,o}const ns=Symbol(""),rs=Symbol(""),os=Symbol(""),is=Symbol(""),as=Symbol(""),ls=Symbol(""),ss=Symbol(""),cs=Symbol(""),us=Symbol(""),fs=Symbol(""),ds=Symbol(""),ps=Symbol(""),hs=Symbol(""),vs=Symbol(""),ms=Symbol(""),gs=Symbol(""),ys=Symbol(""),bs=Symbol(""),ws=Symbol(""),Cs=Symbol(""),_s=Symbol(""),Es=Symbol(""),xs=Symbol(""),ks=Symbol(""),Ss=Symbol(""),Os=Symbol(""),Ns=Symbol(""),Ps=Symbol(""),Ts=Symbol(""),Vs=Symbol(""),Rs=Symbol(""),Ls=Symbol(""),As=Symbol(""),js=Symbol(""),Bs=Symbol(""),Is=Symbol(""),Ms=Symbol(""),Fs=Symbol(""),Ds=Symbol(""),Us={[ns]:"Fragment",[rs]:"Teleport",[os]:"Suspense",[is]:"KeepAlive",[as]:"BaseTransition",[ls]:"openBlock",[ss]:"createBlock",[cs]:"createElementBlock",[us]:"createVNode",[fs]:"createElementVNode",[ds]:"createCommentVNode",[ps]:"createTextVNode",[hs]:"createStaticVNode",[vs]:"resolveComponent",[ms]:"resolveDynamicComponent",[gs]:"resolveDirective",[ys]:"resolveFilter",[bs]:"withDirectives",[ws]:"renderList",[Cs]:"renderSlot",[_s]:"createSlots",[Es]:"toDisplayString",[xs]:"mergeProps",[ks]:"normalizeClass",[Ss]:"normalizeStyle",[Os]:"normalizeProps",[Ns]:"guardReactiveProps",[Ps]:"toHandlers",[Ts]:"camelize",[Vs]:"capitalize",[Rs]:"toHandlerKey",[Ls]:"setBlockTracking",[As]:"pushScopeId",[js]:"popScopeId",[Bs]:"withCtx",[Is]:"unref",[Ms]:"isRef",[Fs]:"withMemo",[Ds]:"isMemoSame"};const $s={source:"",start:{line:1,column:1,offset:0},end:{line:1,column:1,offset:0}};function Hs(e,t,n,r,o,i,a,l=!1,s=!1,c=!1,u=$s){return e&&(l?(e.helper(ls),e.helper(yc(e.inSSR,c))):e.helper(gc(e.inSSR,c)),a&&e.helper(bs)),{type:13,tag:t,props:n,children:r,patchFlag:o,dynamicProps:i,directives:a,isBlock:l,disableTracking:s,isComponent:c,loc:u}}function zs(e,t=$s){return{type:17,loc:t,elements:e}}function qs(e,t=$s){return{type:15,loc:t,properties:e}}function Ws(e,t){return{type:16,loc:$s,key:U(e)?Ks(e,!0):e,value:t}}function Ks(e,t=!1,n=$s,r=0){return{type:4,loc:n,content:e,isStatic:t,constType:t?3:r}}function Gs(e,t=$s){return{type:8,loc:t,children:e}}function Zs(e,t=[],n=$s){return{type:14,loc:n,callee:e,arguments:t}}function Ys(e,t,n=!1,r=!1,o=$s){return{type:18,params:e,returns:t,newline:n,isSlot:r,loc:o}}function Js(e,t,n,r=!0){return{type:19,test:e,consequent:t,alternate:n,newline:r,loc:$s}}const Qs=e=>4===e.type&&e.isStatic,Xs=(e,t)=>e===t||e===ne(t);function ec(e){return Xs(e,"Teleport")?rs:Xs(e,"Suspense")?os:Xs(e,"KeepAlive")?is:Xs(e,"BaseTransition")?as:void 0}const tc=/^\d|[^\$\w]/,nc=e=>!tc.test(e),rc=/[A-Za-z_$\xA0-\uFFFF]/,oc=/[\.\?\w$\xA0-\uFFFF]/,ic=/\s+[.[]\s*|\s*[.[]\s+/g,ac=e=>{e=e.trim().replace(ic,(e=>e.trim()));let t=0,n=[],r=0,o=0,i=null;for(let a=0;a4===e.key.type&&e.key.content===r))}return n}function Ec(e,t){return`_${t}_${e.replace(/[^\w]/g,((t,n)=>"-"===t?"_":e.charCodeAt(n).toString()))}`}function xc(e,{helper:t,removeHelper:n,inSSR:r}){e.isBlock||(e.isBlock=!0,n(gc(r,e.isComponent)),t(ls),t(yc(r,e.isComponent)))}function kc(e,t){const n=t.options?t.options.compatConfig:t.compatConfig,r=n&&n[e];return"MODE"===e?r||3:r}function Sc(e,t){const n=kc("MODE",t),r=kc(e,t);return 3===n?!0===r:!1!==r}function Oc(e,t,n,...r){return Sc(e,t)}const Nc=/&(gt|lt|amp|apos|quot);/g,Pc={gt:">",lt:"<",amp:"&",apos:"'",quot:'"'},Tc={delimiters:["{{","}}"],getNamespace:()=>0,getTextMode:()=>0,isVoidTag:O,isPreTag:O,isCustomElement:O,decodeEntities:e=>e.replace(Nc,((e,t)=>Pc[t])),onError:Xl,onWarn:es,comments:!1};function Vc(e,t={}){const n=function(e,t){const n=V({},Tc);let r;for(r in t)n[r]=void 0===t[r]?Tc[r]:t[r];return{options:n,column:1,line:1,offset:0,originalSource:e,source:e,inPre:!1,inVPre:!1,onWarn:n.onWarn}}(e,t),r=qc(n);return function(e,t=$s){return{type:0,children:e,helpers:new Set,components:[],directives:[],hoists:[],imports:[],cached:0,temps:0,codegenNode:void 0,loc:t}}(Rc(n,0,[]),Wc(n,r))}function Rc(e,t,n){const r=Kc(n),o=r?r.ns:0,i=[];for(;!Xc(e,t,n);){const a=e.source;let l;if(0===t||1===t)if(!e.inVPre&&Gc(a,e.options.delimiters[0]))l=$c(e,t);else if(0===t&&"<"===a[0])if(1===a.length)Qc(e,5,1);else if("!"===a[1])Gc(a,"\x3c!--")?l=jc(e):Gc(a,""===a[2]){Qc(e,14,2),Zc(e,3);continue}if(/[a-z]/i.test(a[2])){Qc(e,23),Fc(e,1,r);continue}Qc(e,12,2),l=Bc(e)}else/[a-z]/i.test(a[1])?(l=Ic(e,n),Sc("COMPILER_NATIVE_TEMPLATE",e)&&l&&"template"===l.tag&&!l.props.some((e=>7===e.type&&Mc(e.name)))&&(l=l.children)):"?"===a[1]?(Qc(e,21,1),l=Bc(e)):Qc(e,12,1);if(l||(l=Hc(e,t)),j(l))for(let e=0;e/.exec(e.source);if(r){r.index<=3&&Qc(e,0),r[1]&&Qc(e,10),n=e.source.slice(4,r.index);const t=e.source.slice(0,r.index);let o=1,i=0;for(;-1!==(i=t.indexOf("\x3c!--",o));)Zc(e,i-o+1),i+4");return-1===o?(r=e.source.slice(n),Zc(e,e.source.length)):(r=e.source.slice(n,o),Zc(e,o+1)),{type:3,content:r,loc:Wc(e,t)}}function Ic(e,t){const n=e.inPre,r=e.inVPre,o=Kc(t),i=Fc(e,0,o),a=e.inPre&&!n,l=e.inVPre&&!r;if(i.isSelfClosing||e.options.isVoidTag(i.tag))return a&&(e.inPre=!1),l&&(e.inVPre=!1),i;t.push(i);const s=e.options.getTextMode(i,o),c=Rc(e,s,t);t.pop();{const t=i.props.find((e=>6===e.type&&"inline-template"===e.name));if(t&&Oc("COMPILER_INLINE_TEMPLATE",e,t.loc)){const n=Wc(e,i.loc.end);t.value={type:2,content:n.source,loc:n}}}if(i.children=c,eu(e.source,i.tag))Fc(e,1,o);else if(Qc(e,24,0,i.loc.start),0===e.source.length&&"script"===i.tag.toLowerCase()){const t=c[0];t&&Gc(t.loc.source,"\x3c!--")&&Qc(e,8)}return i.loc=Wc(e,i.loc.start),a&&(e.inPre=!1),l&&(e.inVPre=!1),i}const Mc=o("if,else,else-if,for,slot");function Fc(e,t,n){const r=qc(e),o=/^<\/?([a-z][^\t\r\n\f />]*)/i.exec(e.source),i=o[1],a=e.options.getNamespace(i,n);Zc(e,o[0].length),Yc(e);const l=qc(e),s=e.source;e.options.isPreTag(i)&&(e.inPre=!0);let c=Dc(e,t);0===t&&!e.inVPre&&c.some((e=>7===e.type&&"pre"===e.name))&&(e.inVPre=!0,V(e,l),e.source=s,c=Dc(e,t).filter((e=>"v-pre"!==e.name)));let u=!1;if(0===e.source.length?Qc(e,9):(u=Gc(e.source,"/>"),1===t&&u&&Qc(e,4),Zc(e,u?2:1)),1===t)return;let f=0;return e.inVPre||("slot"===i?f=2:"template"===i?c.some((e=>7===e.type&&Mc(e.name)))&&(f=3):function(e,t,n){const r=n.options;if(r.isCustomElement(e))return!1;if("component"===e||/^[A-Z]/.test(e)||ec(e)||r.isBuiltInComponent&&r.isBuiltInComponent(e)||r.isNativeTag&&!r.isNativeTag(e))return!0;for(let e=0;e0&&!Gc(e.source,">")&&!Gc(e.source,"/>");){if(Gc(e.source,"/")){Qc(e,22),Zc(e,1),Yc(e);continue}1===t&&Qc(e,3);const o=Uc(e,r);6===o.type&&o.value&&"class"===o.name&&(o.value.content=o.value.content.replace(/\s+/g," ").trim()),0===t&&n.push(o),/^[^\t\r\n\f />]/.test(e.source)&&Qc(e,15),Yc(e)}return n}function Uc(e,t){const n=qc(e),r=/^[^\t\r\n\f />][^\t\r\n\f />=]*/.exec(e.source)[0];t.has(r)&&Qc(e,2),t.add(r),"="===r[0]&&Qc(e,19);{const t=/["'<]/g;let n;for(;n=t.exec(r);)Qc(e,17,n.index)}let o;Zc(e,r.length),/^[\t\r\n\f ]*=/.test(e.source)&&(Yc(e),Zc(e,1),Yc(e),o=function(e){const t=qc(e);let n;const r=e.source[0],o='"'===r||"'"===r;if(o){Zc(e,1);const t=e.source.indexOf(r);-1===t?n=zc(e,e.source.length,4):(n=zc(e,t,4),Zc(e,1))}else{const t=/^[^\t\r\n\f >]+/.exec(e.source);if(!t)return;const r=/["'<=`]/g;let o;for(;o=r.exec(t[0]);)Qc(e,18,o.index);n=zc(e,t[0].length,4)}return{content:n,isQuoted:o,loc:Wc(e,t)}}(e),o||Qc(e,13));const i=Wc(e,n);if(!e.inVPre&&/^(v-[A-Za-z0-9-]|:|\.|@|#)/.test(r)){const t=/(?:^v-([a-z0-9-]+))?(?:(?::|^\.|^@|^#)(\[[^\]]+\]|[^\.]+))?(.+)?$/i.exec(r);let a,l=Gc(r,"."),s=t[1]||(l||Gc(r,":")?"bind":Gc(r,"@")?"on":"slot");if(t[2]){const o="slot"===s,i=r.lastIndexOf(t[2]),l=Wc(e,Jc(e,n,i),Jc(e,n,i+t[2].length+(o&&t[3]||"").length));let c=t[2],u=!0;c.startsWith("[")?(u=!1,c.endsWith("]")?c=c.slice(1,c.length-1):(Qc(e,27),c=c.slice(1))):o&&(c+=t[3]||""),a={type:4,content:c,isStatic:u,constType:u?3:0,loc:l}}if(o&&o.isQuoted){const e=o.loc;e.start.offset++,e.start.column++,e.end=sc(e.start,o.content),e.source=e.source.slice(1,-1)}const c=t[3]?t[3].slice(1).split("."):[];return l&&c.push("prop"),"bind"===s&&a&&c.includes("sync")&&Oc("COMPILER_V_BIND_SYNC",e,0,a.loc.source)&&(s="model",c.splice(c.indexOf("sync"),1)),{type:7,name:s,exp:o&&{type:4,content:o.content,isStatic:!1,constType:0,loc:o.loc},arg:a,modifiers:c,loc:i}}return!e.inVPre&&Gc(r,"v-")&&Qc(e,26),{type:6,name:r,value:o&&{type:2,content:o.content,loc:o.loc},loc:i}}function $c(e,t){const[n,r]=e.options.delimiters,o=e.source.indexOf(r,n.length);if(-1===o)return void Qc(e,25);const i=qc(e);Zc(e,n.length);const a=qc(e),l=qc(e),s=o-n.length,c=e.source.slice(0,s),u=zc(e,s,t),f=u.trim(),d=u.indexOf(f);d>0&&cc(a,c,d);return cc(l,c,s-(u.length-f.length-d)),Zc(e,r.length),{type:5,content:{type:4,isStatic:!1,constType:0,content:f,loc:Wc(e,a,l)},loc:Wc(e,i)}}function Hc(e,t){const n=3===t?["]]>"]:["<",e.options.delimiters[0]];let r=e.source.length;for(let t=0;to&&(r=o)}const o=qc(e);return{type:2,content:zc(e,r,t),loc:Wc(e,o)}}function zc(e,t,n){const r=e.source.slice(0,t);return Zc(e,t),2!==n&&3!==n&&r.includes("&")?e.options.decodeEntities(r,4===n):r}function qc(e){const{column:t,line:n,offset:r}=e;return{column:t,line:n,offset:r}}function Wc(e,t,n){return{start:t,end:n=n||qc(e),source:e.originalSource.slice(t.offset,n.offset)}}function Kc(e){return e[e.length-1]}function Gc(e,t){return e.startsWith(t)}function Zc(e,t){const{source:n}=e;cc(e,n,t),e.source=n.slice(t)}function Yc(e){const t=/^[\t\r\n\f ]+/.exec(e.source);t&&Zc(e,t[0].length)}function Jc(e,t,n){return sc(t,e.originalSource.slice(t.offset,n),n)}function Qc(e,t,n,r=qc(e)){n&&(r.offset+=n,r.column+=n),e.options.onError(ts(t,{start:r,end:r,source:""}))}function Xc(e,t,n){const r=e.source;switch(t){case 0:if(Gc(r,"=0;--e)if(eu(r,n[e].tag))return!0;break;case 1:case 2:{const e=Kc(n);if(e&&eu(r,e.tag))return!0;break}case 3:if(Gc(r,"]]>"))return!0}return!r}function eu(e,t){return Gc(e,"]/.test(e[2+t.length]||">")}function tu(e,t){ru(e,t,nu(e,e.children[0]))}function nu(e,t){const{children:n}=e;return 1===n.length&&1===t.type&&!mc(t)}function ru(e,t,n=!1){const{children:r}=e,o=r.length;let i=0;for(let e=0;e0){if(e>=2){o.codegenNode.patchFlag="-1",o.codegenNode=t.hoist(o.codegenNode),i++;continue}}else{const e=o.codegenNode;if(13===e.type){const n=cu(e);if((!n||512===n||1===n)&&lu(o,t)>=2){const n=su(o);n&&(e.props=t.hoist(n))}e.dynamicProps&&(e.dynamicProps=t.hoist(e.dynamicProps))}}}if(1===o.type){const e=1===o.tagType;e&&t.scopes.vSlot++,ru(o,t),e&&t.scopes.vSlot--}else if(11===o.type)ru(o,t,1===o.children.length);else if(9===o.type)for(let e=0;e1)for(let o=0;o`_${Us[E.helper(e)]}`,replaceNode(e){E.parent.children[E.childIndex]=E.currentNode=e},removeNode(e){const t=E.parent.children,n=e?t.indexOf(e):E.currentNode?E.childIndex:-1;e&&e!==E.currentNode?E.childIndex>n&&(E.childIndex--,E.onNodeRemoved()):(E.currentNode=null,E.onNodeRemoved()),E.parent.children.splice(n,1)},onNodeRemoved:()=>{},addIdentifiers(e){},removeIdentifiers(e){},hoist(e){U(e)&&(e=Ks(e)),E.hoists.push(e);const t=Ks(`_hoisted_${E.hoists.length}`,!1,e.loc,2);return t.hoisted=e,t},cache:(e,t=!1)=>function(e,t,n=!1){return{type:20,index:e,value:t,isVNode:n,loc:$s}}(E.cached++,e,t)};return E.filters=new Set,E}function fu(e,t){const n=uu(e,t);du(e,n),t.hoistStatic&&tu(e,n),t.ssr||function(e,t){const{helper:n}=t,{children:r}=e;if(1===r.length){const n=r[0];if(nu(e,n)&&n.codegenNode){const r=n.codegenNode;13===r.type&&xc(r,t),e.codegenNode=r}else e.codegenNode=n}else if(r.length>1){let r=64;i[64];0,e.codegenNode=Hs(t,n(ns),void 0,e.children,r+"",void 0,void 0,!0,void 0,!1)}}(e,n),e.helpers=new Set([...n.helpers.keys()]),e.components=[...n.components],e.directives=[...n.directives],e.imports=n.imports,e.hoists=n.hoists,e.temps=n.temps,e.cached=n.cached,e.filters=[...n.filters]}function du(e,t){t.currentNode=e;const{nodeTransforms:n}=t,r=[];for(let o=0;o{n--};for(;nt===e:t=>e.test(t);return(e,r)=>{if(1===e.type){const{props:o}=e;if(3===e.tagType&&o.some(hc))return;const i=[];for(let a=0;a`${Us[e]}: _${Us[e]}`;function mu(e,{mode:t="function",prefixIdentifiers:n="module"===t,sourceMap:r=!1,filename:o="template.vue.html",scopeId:i=null,optimizeImports:a=!1,runtimeGlobalName:l="Vue",runtimeModuleName:s="vue",ssrRuntimeModuleName:c="vue/server-renderer",ssr:u=!1,isTS:f=!1,inSSR:d=!1}){const p={mode:t,prefixIdentifiers:n,sourceMap:r,filename:o,scopeId:i,optimizeImports:a,runtimeGlobalName:l,runtimeModuleName:s,ssrRuntimeModuleName:c,ssr:u,isTS:f,inSSR:d,source:e.loc.source,code:"",column:1,line:1,offset:0,indentLevel:0,pure:!1,map:void 0,helper:e=>`_${Us[e]}`,push(e,t){p.code+=e},indent(){h(++p.indentLevel)},deindent(e=!1){e?--p.indentLevel:h(--p.indentLevel)},newline(){h(p.indentLevel)}};function h(e){p.push("\n"+" ".repeat(e))}return p}function gu(e,t={}){const n=mu(e,t);t.onContextCreated&&t.onContextCreated(n);const{mode:r,push:o,prefixIdentifiers:i,indent:a,deindent:l,newline:s,scopeId:c,ssr:u}=n,f=Array.from(e.helpers),d=f.length>0,p=!i&&"module"!==r,h=n;!function(e,t){const{ssr:n,prefixIdentifiers:r,push:o,newline:i,runtimeModuleName:a,runtimeGlobalName:l,ssrRuntimeModuleName:s}=t,c=l,u=Array.from(e.helpers);if(u.length>0&&(o(`const _Vue = ${c}\n`),e.hoists.length)){o(`const { ${[us,fs,ds,ps,hs].filter((e=>u.includes(e))).map(vu).join(", ")} } = _Vue\n`)}(function(e,t){if(!e.length)return;t.pure=!0;const{push:n,newline:r,helper:o,scopeId:i,mode:a}=t;r();for(let o=0;o0)&&s()),e.directives.length&&(yu(e.directives,"directive",n),e.temps>0&&s()),e.filters&&e.filters.length&&(s(),yu(e.filters,"filter",n),s()),e.temps>0){o("let ");for(let t=0;t0?", ":""}_temp${t}`)}return(e.components.length||e.directives.length||e.temps)&&(o("\n"),s()),u||o("return "),e.codegenNode?Cu(e.codegenNode,n):o("null"),p&&(l(),o("}")),l(),o("}"),{ast:e,code:n.code,preamble:"",map:n.map?n.map.toJSON():void 0}}function yu(e,t,{helper:n,push:r,newline:o,isTS:i}){const a=n("filter"===t?ys:"component"===t?vs:gs);for(let n=0;n3||!1;t.push("["),n&&t.indent(),wu(e,t,n),n&&t.deindent(),t.push("]")}function wu(e,t,n=!1,r=!0){const{push:o,newline:i}=t;for(let a=0;ae||"null"))}([i,a,l,s,c]),t),n(")"),f&&n(")");u&&(n(", "),Cu(u,t),n(")"))}(e,t);break;case 14:!function(e,t){const{push:n,helper:r,pure:o}=t,i=U(e.callee)?e.callee:r(e.callee);o&&n(hu);n(i+"(",e),wu(e.arguments,t),n(")")}(e,t);break;case 15:!function(e,t){const{push:n,indent:r,deindent:o,newline:i}=t,{properties:a}=e;if(!a.length)return void n("{}",e);const l=a.length>1||!1;n(l?"{":"{ "),l&&r();for(let e=0;e "),(s||l)&&(n("{"),r());a?(s&&n("return "),j(a)?bu(a,t):Cu(a,t)):l&&Cu(l,t);(s||l)&&(o(),n("}"));c&&(e.isNonScopedSlot&&n(", undefined, true"),n(")"))}(e,t);break;case 19:!function(e,t){const{test:n,consequent:r,alternate:o,newline:i}=e,{push:a,indent:l,deindent:s,newline:c}=t;if(4===n.type){const e=!nc(n.content);e&&a("("),_u(n,t),e&&a(")")}else a("("),Cu(n,t),a(")");i&&l(),t.indentLevel++,i||a(" "),a("? "),Cu(r,t),t.indentLevel--,i&&c(),i||a(" "),a(": ");const u=19===o.type;u||t.indentLevel++;Cu(o,t),u||t.indentLevel--;i&&s(!0)}(e,t);break;case 20:!function(e,t){const{push:n,helper:r,indent:o,deindent:i,newline:a}=t;n(`_cache[${e.index}] || (`),e.isVNode&&(o(),n(`${r(Ls)}(-1),`),a());n(`_cache[${e.index}] = `),Cu(e.value,t),e.isVNode&&(n(","),a(),n(`${r(Ls)}(1),`),a(),n(`_cache[${e.index}]`),i());n(")")}(e,t);break;case 21:wu(e.body,t,!0,!1)}}function _u(e,t){const{content:n,isStatic:r}=e;t.push(r?JSON.stringify(n):n,e)}function Eu(e,t){for(let n=0;nfunction(e,t,n,r){if(!("else"===t.name||t.exp&&t.exp.content.trim())){const r=t.exp?t.exp.loc:e.loc;n.onError(ts(28,t.loc)),t.exp=Ks("true",!1,r)}0;if("if"===t.name){const o=Su(e,t),i={type:9,loc:e.loc,branches:[o]};if(n.replaceNode(i),r)return r(i,o,!0)}else{const o=n.parent.children;let i=o.indexOf(e);for(;i-- >=-1;){const a=o[i];if(a&&3===a.type)n.removeNode(a);else{if(!a||2!==a.type||a.content.trim().length){if(a&&9===a.type){"else-if"===t.name&&void 0===a.branches[a.branches.length-1].condition&&n.onError(ts(30,e.loc)),n.removeNode();const o=Su(e,t);0,a.branches.push(o);const i=r&&r(a,o,!1);du(o,n),i&&i(),n.currentNode=null}else n.onError(ts(30,e.loc));break}n.removeNode(a)}}}}(e,t,n,((e,t,r)=>{const o=n.parent.children;let i=o.indexOf(e),a=0;for(;i-- >=0;){const e=o[i];e&&9===e.type&&(a+=e.branches.length)}return()=>{if(r)e.codegenNode=Ou(t,a,n);else{const r=function(e){for(;;)if(19===e.type){if(19!==e.alternate.type)return e;e=e.alternate}else 20===e.type&&(e=e.value)}(e.codegenNode);r.alternate=Ou(t,a+e.branches.length-1,n)}}}))));function Su(e,t){const n=3===e.tagType;return{type:10,loc:e.loc,condition:"else"===t.name?void 0:t.exp,children:n&&!uc(e,"for")?e.children:[e],userKey:fc(e,"key"),isTemplateIf:n}}function Ou(e,t,n){return e.condition?Js(e.condition,Nu(e,t,n),Zs(n.helper(ds),['""',"true"])):Nu(e,t,n)}function Nu(e,t,n){const{helper:r}=n,o=Ws("key",Ks(`${t}`,!1,$s,2)),{children:a}=e,l=a[0];if(1!==a.length||1!==l.type){if(1===a.length&&11===l.type){const e=l.codegenNode;return Cc(e,o,n),e}{let t=64;i[64];return Hs(n,r(ns),qs([o]),a,t+"",void 0,void 0,!0,!1,!1,e.loc)}}{const e=l.codegenNode,t=14===(s=e).type&&s.callee===Fs?s.arguments[1].returns:s;return 13===t.type&&xc(t,n),Cc(t,o,n),e}var s}const Pu=pu("for",((e,t,n)=>{const{helper:r,removeHelper:o}=n;return function(e,t,n,r){if(!t.exp)return void n.onError(ts(31,t.loc));const o=Lu(t.exp,n);if(!o)return void n.onError(ts(32,t.loc));const{addIdentifiers:i,removeIdentifiers:a,scopes:l}=n,{source:s,value:c,key:u,index:f}=o,d={type:11,loc:t.loc,source:s,valueAlias:c,keyAlias:u,objectIndexAlias:f,parseResult:o,children:vc(e)?e.children:[e]};n.replaceNode(d),l.vFor++;const p=r&&r(d);return()=>{l.vFor--,p&&p()}}(e,t,n,(t=>{const i=Zs(r(ws),[t.source]),a=vc(e),l=uc(e,"memo"),s=fc(e,"key"),c=s&&(6===s.type?Ks(s.value.content,!0):s.exp),u=s?Ws("key",c):null,f=4===t.source.type&&t.source.constType>0,d=f?64:s?128:256;return t.codegenNode=Hs(n,r(ns),void 0,i,d+"",void 0,void 0,!0,!f,!1,e.loc),()=>{let s;const{children:d}=t;const p=1!==d.length||1!==d[0].type,h=mc(e)?e:a&&1===e.children.length&&mc(e.children[0])?e.children[0]:null;if(h?(s=h.codegenNode,a&&u&&Cc(s,u,n)):p?s=Hs(n,r(ns),u?qs([u]):void 0,e.children,"64",void 0,void 0,!0,void 0,!1):(s=d[0].codegenNode,a&&u&&Cc(s,u,n),s.isBlock!==!f&&(s.isBlock?(o(ls),o(yc(n.inSSR,s.isComponent))):o(gc(n.inSSR,s.isComponent))),s.isBlock=!f,s.isBlock?(r(ls),r(yc(n.inSSR,s.isComponent))):r(gc(n.inSSR,s.isComponent))),l){const e=Ys(ju(t.parseResult,[Ks("_cached")]));e.body={type:21,body:[Gs(["const _memo = (",l.exp,")"]),Gs(["if (_cached",...c?[" && _cached.key === ",c]:[],` && ${n.helperString(Ds)}(_cached, _memo)) return _cached`]),Gs(["const _item = ",s]),Ks("_item.memo = _memo"),Ks("return _item")],loc:$s},i.arguments.push(e,Ks("_cache"),Ks(String(n.cached++)))}else i.arguments.push(Ys(ju(t.parseResult),s,!0))}}))}));const Tu=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,Vu=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,Ru=/^\(|\)$/g;function Lu(e,t){const n=e.loc,r=e.content,o=r.match(Tu);if(!o)return;const[,i,a]=o,l={source:Au(n,a.trim(),r.indexOf(a,i.length)),value:void 0,key:void 0,index:void 0};let s=i.trim().replace(Ru,"").trim();const c=i.indexOf(s),u=s.match(Vu);if(u){s=s.replace(Vu,"").trim();const e=u[1].trim();let t;if(e&&(t=r.indexOf(e,c+s.length),l.key=Au(n,e,t)),u[2]){const o=u[2].trim();o&&(l.index=Au(n,o,r.indexOf(o,l.key?t+e.length:c+s.length)))}}return s&&(l.value=Au(n,s,c)),l}function Au(e,t,n){return Ks(t,!1,lc(e,n,t.length))}function ju({value:e,key:t,index:n},r=[]){return function(e){let t=e.length;for(;t--&&!e[t];);return e.slice(0,t+1).map(((e,t)=>e||Ks("_".repeat(t+1),!1)))}([e,t,n,...r])}const Bu=Ks("undefined",!1),Iu=(e,t)=>{if(1===e.type&&(1===e.tagType||3===e.tagType)){const n=uc(e,"slot");if(n)return n.exp,t.scopes.vSlot++,()=>{t.scopes.vSlot--}}},Mu=(e,t,n)=>Ys(e,t,!1,!0,t.length?t[0].loc:n);function Fu(e,t,n=Mu){t.helper(Bs);const{children:r,loc:o}=e,i=[],a=[];let l=t.scopes.vSlot>0||t.scopes.vFor>0;const s=uc(e,"slot",!0);if(s){const{arg:e,exp:t}=s;e&&!Qs(e)&&(l=!0),i.push(Ws(e||Ks("default",!0),n(t,r,o)))}let c=!1,u=!1;const f=[],d=new Set;let p=0;for(let e=0;e{const i=n(e,r,o);return t.compatConfig&&(i.isNonScopedSlot=!0),Ws("default",i)};c?f.length&&f.some((e=>$u(e)))&&(u?t.onError(ts(39,f[0].loc)):i.push(e(void 0,f))):i.push(e(void 0,r))}const h=l?2:Uu(e.children)?3:1;let v=qs(i.concat(Ws("_",Ks(h+"",!1))),o);return a.length&&(v=Zs(t.helper(_s),[v,zs(a)])),{slots:v,hasDynamicSlots:l}}function Du(e,t,n){const r=[Ws("name",e),Ws("fn",t)];return null!=n&&r.push(Ws("key",Ks(String(n),!0))),qs(r)}function Uu(e){for(let t=0;tfunction(){if(1!==(e=t.currentNode).type||0!==e.tagType&&1!==e.tagType)return;const{tag:n,props:r}=e,o=1===e.tagType;let i=o?function(e,t,n=!1){let{tag:r}=e;const o=Gu(r),i=fc(e,"is");if(i)if(o||Sc("COMPILER_IS_ON_ELEMENT",t)){const e=6===i.type?i.value&&Ks(i.value.content,!0):i.exp;if(e)return Zs(t.helper(ms),[e])}else 6===i.type&&i.value.content.startsWith("vue:")&&(r=i.value.content.slice(4));const a=!o&&uc(e,"is");if(a&&a.exp)return Zs(t.helper(ms),[a.exp]);const l=ec(r)||t.isBuiltInComponent(r);if(l)return n||t.helper(l),l;return t.helper(vs),t.components.add(r),Ec(r,"component")}(e,t):`"${n}"`;const a=H(i)&&i.callee===ms;let l,s,c,u,f,d,p=0,h=a||i===rs||i===os||!o&&("svg"===n||"foreignObject"===n);if(r.length>0){const n=qu(e,t,void 0,o,a);l=n.props,p=n.patchFlag,f=n.dynamicPropNames;const r=n.directives;d=r&&r.length?zs(r.map((e=>function(e,t){const n=[],r=Hu.get(e);r?n.push(t.helperString(r)):(t.helper(gs),t.directives.add(e.name),n.push(Ec(e.name,"directive")));const{loc:o}=e;e.exp&&n.push(e.exp);e.arg&&(e.exp||n.push("void 0"),n.push(e.arg));if(Object.keys(e.modifiers).length){e.arg||(e.exp||n.push("void 0"),n.push("void 0"));const t=Ks("true",!1,o);n.push(qs(e.modifiers.map((e=>Ws(e,t))),o))}return zs(n,e.loc)}(e,t)))):void 0,n.shouldUseBlock&&(h=!0)}if(e.children.length>0){i===is&&(h=!0,p|=1024);if(o&&i!==rs&&i!==is){const{slots:n,hasDynamicSlots:r}=Fu(e,t);s=n,r&&(p|=1024)}else if(1===e.children.length&&i!==rs){const n=e.children[0],r=n.type,o=5===r||8===r;o&&0===ou(n,t)&&(p|=1),s=o||2===r?n:e.children}else s=e.children}0!==p&&(c=String(p),f&&f.length&&(u=function(e){let t="[";for(let n=0,r=e.length;n0;let p=!1,h=0,v=!1,m=!1,g=!1,y=!1,b=!1,w=!1;const C=[],_=e=>{c.length&&(u.push(qs(Wu(c),l)),c=[]),e&&u.push(e)},E=({key:e,value:n})=>{if(Qs(e)){const i=e.content,a=P(i);if(!a||r&&!o||"onclick"===i.toLowerCase()||"onUpdate:modelValue"===i||Y(i)||(y=!0),a&&Y(i)&&(w=!0),20===n.type||(4===n.type||8===n.type)&&ou(n,t)>0)return;"ref"===i?v=!0:"class"===i?m=!0:"style"===i?g=!0:"key"===i||C.includes(i)||C.push(i),!r||"class"!==i&&"style"!==i||C.includes(i)||C.push(i)}else b=!0};for(let o=0;o0&&c.push(Ws(Ks("ref_for",!0),Ks("true")))),"is"===n&&(Gu(a)||r&&r.content.startsWith("vue:")||Sc("COMPILER_IS_ON_ELEMENT",t)))continue;c.push(Ws(Ks(n,!0,lc(e,0,n.length)),Ks(r?r.content:"",o,r?r.loc:e)))}else{const{name:n,arg:o,exp:h,loc:v}=s,m="bind"===n,g="on"===n;if("slot"===n){r||t.onError(ts(40,v));continue}if("once"===n||"memo"===n)continue;if("is"===n||m&&dc(o,"is")&&(Gu(a)||Sc("COMPILER_IS_ON_ELEMENT",t)))continue;if(g&&i)continue;if((m&&dc(o,"key")||g&&d&&dc(o,"vue:before-update"))&&(p=!0),m&&dc(o,"ref")&&t.scopes.vFor>0&&c.push(Ws(Ks("ref_for",!0),Ks("true"))),!o&&(m||g)){if(b=!0,h)if(m){if(_(),Sc("COMPILER_V_BIND_OBJECT_ORDER",t)){u.unshift(h);continue}u.push(h)}else _({type:14,loc:v,callee:t.helper(Ps),arguments:r?[h]:[h,"true"]});else t.onError(ts(m?34:35,v));continue}const y=t.directiveTransforms[n];if(y){const{props:n,needRuntime:r}=y(s,e,t);!i&&n.forEach(E),g&&o&&!Qs(o)?_(qs(n,l)):c.push(...n),r&&(f.push(s),$(r)&&Hu.set(s,r))}else J(n)||(f.push(s),d&&(p=!0))}}let x;if(u.length?(_(),x=u.length>1?Zs(t.helper(xs),u,l):u[0]):c.length&&(x=qs(Wu(c),l)),b?h|=16:(m&&!r&&(h|=2),g&&!r&&(h|=4),C.length&&(h|=8),y&&(h|=32)),p||0!==h&&32!==h||!(v||w||f.length>0)||(h|=512),!t.inSSR&&x)switch(x.type){case 15:let e=-1,n=-1,r=!1;for(let t=0;t{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))})((e=>e.replace(Zu,((e,t)=>t?t.toUpperCase():"")))),Ju=(e,t)=>{if(mc(e)){const{children:n,loc:r}=e,{slotName:o,slotProps:i}=function(e,t){let n,r='"default"';const o=[];for(let t=0;t0){const{props:r,directives:i}=qu(e,t,o,!1,!1);n=r,i.length&&t.onError(ts(36,i[0].loc))}return{slotName:r,slotProps:n}}(e,t),a=[t.prefixIdentifiers?"_ctx.$slots":"$slots",o,"{}","undefined","true"];let l=2;i&&(a[2]=i,l=3),n.length&&(a[3]=Ys([],n,!1,!1,r),l=4),t.scopeId&&!t.slotted&&(l=5),a.splice(l),e.codegenNode=Zs(t.helper(Cs),a,r)}};const Qu=/^\s*([\w$_]+|(async\s*)?\([^)]*?\))\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/,Xu=(e,t,n,r)=>{const{loc:o,modifiers:i,arg:a}=e;let l;if(e.exp||i.length||n.onError(ts(35,o)),4===a.type)if(a.isStatic){let e=a.content;e.startsWith("vue:")&&(e=`vnode-${e.slice(4)}`);l=Ks(0!==t.tagType||e.startsWith("vnode")||!/[A-Z]/.test(e)?oe(ee(e)):`on:${e}`,!0,a.loc)}else l=Gs([`${n.helperString(Rs)}(`,a,")"]);else l=a,l.children.unshift(`${n.helperString(Rs)}(`),l.children.push(")");let s=e.exp;s&&!s.content.trim()&&(s=void 0);let c=n.cacheHandlers&&!s&&!n.inVOnce;if(s){const e=ac(s.content),t=!(e||Qu.test(s.content)),n=s.content.includes(";");0,(t||c&&e)&&(s=Gs([`${t?"$event":"(...args)"} => ${n?"{":"("}`,s,n?"}":")"]))}let u={props:[Ws(l,s||Ks("() => {}",!1,o))]};return r&&(u=r(u)),c&&(u.props[0].value=n.cache(u.props[0].value)),u.props.forEach((e=>e.key.isHandlerKey=!0)),u},ef=(e,t,n)=>{const{exp:r,modifiers:o,loc:i}=e,a=e.arg;return 4!==a.type?(a.children.unshift("("),a.children.push(') || ""')):a.isStatic||(a.content=`${a.content} || ""`),o.includes("camel")&&(4===a.type?a.isStatic?a.content=ee(a.content):a.content=`${n.helperString(Ts)}(${a.content})`:(a.children.unshift(`${n.helperString(Ts)}(`),a.children.push(")"))),n.inSSR||(o.includes("prop")&&tf(a,"."),o.includes("attr")&&tf(a,"^")),!r||4===r.type&&!r.content.trim()?(n.onError(ts(34,i)),{props:[Ws(a,Ks("",!0,i))]}):{props:[Ws(a,r)]}},tf=(e,t)=>{4===e.type?e.isStatic?e.content=t+e.content:e.content=`\`${t}\${${e.content}}\``:(e.children.unshift(`'${t}' + (`),e.children.push(")"))},nf=(e,t)=>{if(0===e.type||1===e.type||11===e.type||10===e.type)return()=>{const n=e.children;let r,o=!1;for(let e=0;e7===e.type&&!t.directiveTransforms[e.name]))||"template"===e.tag)))for(let e=0;e{if(1===e.type&&uc(e,"once",!0)){if(rf.has(e)||t.inVOnce)return;return rf.add(e),t.inVOnce=!0,t.helper(Ls),()=>{t.inVOnce=!1;const e=t.currentNode;e.codegenNode&&(e.codegenNode=t.cache(e.codegenNode,!0))}}},af=(e,t,n)=>{const{exp:r,arg:o}=e;if(!r)return n.onError(ts(41,e.loc)),lf();const i=r.loc.source,a=4===r.type?r.content:i,l=n.bindingMetadata[i];if("props"===l||"props-aliased"===l)return n.onError(ts(44,r.loc)),lf();if(!a.trim()||!ac(a))return n.onError(ts(42,r.loc)),lf();const s=o||Ks("modelValue",!0),c=o?Qs(o)?`onUpdate:${ee(o.content)}`:Gs(['"onUpdate:" + ',o]):"onUpdate:modelValue";let u;u=Gs([`${n.isTS?"($event: any)":"$event"} => ((`,r,") = $event)"]);const f=[Ws(s,e.exp),Ws(c,u)];if(e.modifiers.length&&1===t.tagType){const t=e.modifiers.map((e=>(nc(e)?e:JSON.stringify(e))+": true")).join(", "),n=o?Qs(o)?`${o.content}Modifiers`:Gs([o,' + "Modifiers"']):"modelModifiers";f.push(Ws(n,Ks(`{ ${t} }`,!1,e.loc,2)))}return lf(f)};function lf(e=[]){return{props:e}}const sf=/[\w).+\-_$\]]/,cf=(e,t)=>{Sc("COMPILER_FILTER",t)&&(5===e.type&&uf(e.content,t),1===e.type&&e.props.forEach((e=>{7===e.type&&"for"!==e.name&&e.exp&&uf(e.exp,t)})))};function uf(e,t){if(4===e.type)ff(e,t);else for(let n=0;n=0&&(e=n.charAt(t)," "===e);t--);e&&sf.test(e)||(u=!0)}}else void 0===a?(h=i+1,a=n.slice(0,i).trim()):m();function m(){v.push(n.slice(h,i).trim()),h=i+1}if(void 0===a?a=n.slice(0,i).trim():0!==h&&m(),v.length){for(i=0;i{if(1===e.type){const n=uc(e,"memo");if(!n||pf.has(e))return;return pf.add(e),()=>{const r=e.codegenNode||t.currentNode.codegenNode;r&&13===r.type&&(1!==e.tagType&&xc(r,t),e.codegenNode=Zs(t.helper(Fs),[n.exp,Ys(void 0,r),"_cache",String(t.cached++)]))}}};function vf(e,t={}){const n=t.onError||Xl,r="module"===t.mode;!0===t.prefixIdentifiers?n(ts(47)):r&&n(ts(48));t.cacheHandlers&&n(ts(49)),t.scopeId&&!r&&n(ts(50));const o=U(e)?Vc(e,t):e,[i,a]=[[of,ku,hf,Pu,cf,Ju,zu,Iu,nf],{on:Xu,bind:ef,model:af}];return fu(o,V({},t,{prefixIdentifiers:false,nodeTransforms:[...i,...t.nodeTransforms||[]],directiveTransforms:V({},a,t.directiveTransforms||{})})),gu(o,V({},t,{prefixIdentifiers:false}))}const mf=Symbol(""),gf=Symbol(""),yf=Symbol(""),bf=Symbol(""),wf=Symbol(""),Cf=Symbol(""),_f=Symbol(""),Ef=Symbol(""),xf=Symbol(""),kf=Symbol("");var Sf;let Of;Sf={[mf]:"vModelRadio",[gf]:"vModelCheckbox",[yf]:"vModelText",[bf]:"vModelSelect",[wf]:"vModelDynamic",[Cf]:"withModifiers",[_f]:"withKeys",[Ef]:"vShow",[xf]:"Transition",[kf]:"TransitionGroup"},Object.getOwnPropertySymbols(Sf).forEach((e=>{Us[e]=Sf[e]}));const Nf=o("style,iframe,script,noscript",!0),Pf={isVoidTag:m,isNativeTag:e=>h(e)||v(e),isPreTag:e=>"pre"===e,decodeEntities:function(e,t=!1){return Of||(Of=document.createElement("div")),t?(Of.innerHTML=`
`,Of.children[0].getAttribute("foo")):(Of.innerHTML=e,Of.textContent)},isBuiltInComponent:e=>Xs(e,"Transition")?xf:Xs(e,"TransitionGroup")?kf:void 0,getNamespace(e,t){let n=t?t.ns:0;if(t&&2===n)if("annotation-xml"===t.tag){if("svg"===e)return 1;t.props.some((e=>6===e.type&&"encoding"===e.name&&null!=e.value&&("text/html"===e.value.content||"application/xhtml+xml"===e.value.content)))&&(n=0)}else/^m(?:[ions]|text)$/.test(t.tag)&&"mglyph"!==e&&"malignmark"!==e&&(n=0);else t&&1===n&&("foreignObject"!==t.tag&&"desc"!==t.tag&&"title"!==t.tag||(n=0));if(0===n){if("svg"===e)return 1;if("math"===e)return 2}return n},getTextMode({tag:e,ns:t}){if(0===t){if("textarea"===e||"title"===e)return 1;if(Nf(e))return 2}return 0}},Tf=(e,t)=>{const n=f(e);return Ks(JSON.stringify(n),!1,t,3)};function Vf(e,t){return ts(e,t)}const Rf=o("passive,once,capture"),Lf=o("stop,prevent,self,ctrl,shift,alt,meta,exact,middle"),Af=o("left,right"),jf=o("onkeyup,onkeydown,onkeypress",!0),Bf=(e,t)=>Qs(e)&&"onclick"===e.content.toLowerCase()?Ks(t,!0):4!==e.type?Gs(["(",e,`) === "onClick" ? "${t}" : (`,e,")"]):e;const If=(e,t)=>{1!==e.type||0!==e.tagType||"script"!==e.tag&&"style"!==e.tag||(t.onError(Vf(61,e.loc)),t.removeNode())},Mf=[e=>{1===e.type&&e.props.forEach(((t,n)=>{6===t.type&&"style"===t.name&&t.value&&(e.props[n]={type:7,name:"bind",arg:Ks("style",!0,t.loc),exp:Tf(t.value.content,t.loc),modifiers:[],loc:t.loc})}))}],Ff={cloak:()=>({props:[]}),html:(e,t,n)=>{const{exp:r,loc:o}=e;return r||n.onError(Vf(51,o)),t.children.length&&(n.onError(Vf(52,o)),t.children.length=0),{props:[Ws(Ks("innerHTML",!0,o),r||Ks("",!0))]}},text:(e,t,n)=>{const{exp:r,loc:o}=e;return r||n.onError(Vf(53,o)),t.children.length&&(n.onError(Vf(54,o)),t.children.length=0),{props:[Ws(Ks("textContent",!0),r?ou(r,n)>0?r:Zs(n.helperString(Es),[r],o):Ks("",!0))]}},model:(e,t,n)=>{const r=af(e,t,n);if(!r.props.length||1===t.tagType)return r;e.arg&&n.onError(Vf(56,e.arg.loc));const{tag:o}=t,i=n.isCustomElement(o);if("input"===o||"textarea"===o||"select"===o||i){let a=yf,l=!1;if("input"===o||i){const r=fc(t,"type");if(r){if(7===r.type)a=wf;else if(r.value)switch(r.value.content){case"radio":a=mf;break;case"checkbox":a=gf;break;case"file":l=!0,n.onError(Vf(57,e.loc))}}else(function(e){return e.props.some((e=>!(7!==e.type||"bind"!==e.name||e.arg&&4===e.arg.type&&e.arg.isStatic)))})(t)&&(a=wf)}else"select"===o&&(a=bf);l||(r.needRuntime=n.helper(a))}else n.onError(Vf(55,e.loc));return r.props=r.props.filter((e=>!(4===e.key.type&&"modelValue"===e.key.content))),r},on:(e,t,n)=>Xu(e,t,n,(t=>{const{modifiers:r}=e;if(!r.length)return t;let{key:o,value:i}=t.props[0];const{keyModifiers:a,nonKeyModifiers:l,eventOptionModifiers:s}=((e,t,n,r)=>{const o=[],i=[],a=[];for(let r=0;r{const{exp:r,loc:o}=e;return r||n.onError(Vf(59,o)),{props:[],needRuntime:n.helper(Ef)}}};const Df=Object.create(null);function Uf(e,t){if(!U(e)){if(!e.nodeType)return S;e=e.innerHTML}const n=e,o=Df[n];if(o)return o;if("#"===e[0]){const t=document.querySelector(e);0,e=t?t.innerHTML:""}const i=V({hoistStatic:!0,onError:void 0,onWarn:S},t);i.isCustomElement||"undefined"==typeof customElements||(i.isCustomElement=e=>!!customElements.get(e));const{code:a}=function(e,t={}){return vf(e,V({},Pf,t,{nodeTransforms:[If,...Mf,...t.nodeTransforms||[]],directiveTransforms:V({},Ff,t.directiveTransforms||{}),transformHoist:null}))}(e,i);const l=new Function("Vue",a)(r);return l._rc=!0,Df[n]=l}Qi(Uf)}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var i=n[e]={id:e,loaded:!1,exports:{}};return t[e].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}r.m=t,e=[],r.O=(t,n,o,i)=>{if(!n){var a=1/0;for(u=0;u=i)&&Object.keys(r.O).every((e=>r.O[e](n[s])))?n.splice(s--,1):(l=!1,i0&&e[u-1][2]>i;u--)e[u]=e[u-1];e[u]=[n,o,i]},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e={260:0,143:0};r.O.j=t=>0===e[t];var t=(t,n)=>{var o,i,[a,l,s]=n,c=0;if(a.some((t=>0!==e[t]))){for(o in l)r.o(l,o)&&(r.m[o]=l[o]);if(s)var u=s(r)}for(t&&t(n);cr(500)));var o=r.O(void 0,[143],(()=>r(378)));o=r.O(o)})(); \ No newline at end of file diff --git a/public/vendor/log-viewer/mix-manifest.json b/public/vendor/log-viewer/mix-manifest.json index bbd1c4ae577..a66a90cee2b 100644 --- a/public/vendor/log-viewer/mix-manifest.json +++ b/public/vendor/log-viewer/mix-manifest.json @@ -1,6 +1,6 @@ { - "/app.js": "/app.js?id=8f85420e14aaa787b875beec380097e2", - "/app.css": "/app.css?id=c80ba28115138392f3cd32d1bdb5bb19", + "/app.js": "/app.js?id=5f574f36f456b103dffcfa21d5612785", + "/app.css": "/app.css?id=b701a4344131bb2c00e9f0b1ef1ab3c1", "/img/log-viewer-128.png": "/img/log-viewer-128.png?id=d576c6d2e16074d3f064e60fe4f35166", "/img/log-viewer-32.png": "/img/log-viewer-32.png?id=f8ec67d10f996aa8baf00df3b61eea6d", "/img/log-viewer-64.png": "/img/log-viewer-64.png?id=8902d596fc883ca9eb8105bb683568c6" From 5424abcd2d03979756c2606a162c1dfb3671e35b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sat, 2 Dec 2023 14:25:22 +0100 Subject: [PATCH 062/209] Add check and execute npm only if the package.json exists. (#2064) * fixes #2063 * bye bye npm --- scripts/post-merge | 4 ---- 1 file changed, 4 deletions(-) diff --git a/scripts/post-merge b/scripts/post-merge index e4a84fd3d08..409b2c78f42 100755 --- a/scripts/post-merge +++ b/scripts/post-merge @@ -16,10 +16,6 @@ else printf "\n${ORANGE}Dev mode detected${NO_COLOR}\n" echo "composer install" composer install - if command -v npm > /dev/null; then - echo "npm install --no-audit --no-fund" - npm install --no-audit --no-fund - fi else printf "\n${ORANGE}--no-dev mode detected${NO_COLOR}\n" echo "composer install --no-dev --prefer-dist" From be930d1d30404923106bff1b83aa884fc161fce0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sun, 3 Dec 2023 15:39:43 +0100 Subject: [PATCH 063/209] Add optimize database call (#2066) * add optimize database function * WRTC * Improved architecture --- app/Actions/Db/BaseOptimizer.php | 80 +++++++++++++++++++ app/Actions/Db/OptimizeDb.php | 33 ++++++++ app/Actions/Db/OptimizeTables.php | 33 ++++++++ app/Enum/DbDriverType.php | 15 ++++ .../Administration/OptimizeController.php | 36 +++++++++ .../Requests/Settings/OptimizeRequest.php | 23 ++++++ resources/views/list.blade.php | 16 ++++ routes/web-admin.php | 3 + tests/Feature/OptimizeTest.php | 39 +++++++++ 9 files changed, 278 insertions(+) create mode 100644 app/Actions/Db/BaseOptimizer.php create mode 100644 app/Actions/Db/OptimizeDb.php create mode 100644 app/Actions/Db/OptimizeTables.php create mode 100644 app/Enum/DbDriverType.php create mode 100644 app/Http/Controllers/Administration/OptimizeController.php create mode 100644 app/Http/Requests/Settings/OptimizeRequest.php create mode 100644 resources/views/list.blade.php create mode 100644 tests/Feature/OptimizeTest.php diff --git a/app/Actions/Db/BaseOptimizer.php b/app/Actions/Db/BaseOptimizer.php new file mode 100644 index 00000000000..7dae798aa53 --- /dev/null +++ b/app/Actions/Db/BaseOptimizer.php @@ -0,0 +1,80 @@ +connection = Schema::connection(null)->getConnection(); + } + + /** + * Get the kind of driver used. + * + * @param array $ret reference array for return messages + * + * @return DbDriverType|null + */ + protected function getDriverType(array &$ret): DbDriverType|null + { + $driverName = DbDriverType::tryFrom($this->connection->getDriverName()); + + $ret[] = match ($driverName) { + DbDriverType::MYSQL => 'MySql/MariaDB detected.', + DbDriverType::PGSQL => 'PostgreSQL detected.', + DbDriverType::SQLITE => 'SQLite detected.', + default => 'Warning:Unknown DBMS.', + }; + + return $driverName; + } + + /** + * get the list of tables in the Database. + * + * @return array + */ + protected function getTables(): array + { + return $this->connection->getDoctrineSchemaManager()->listTableNames(); + } + + /** + * Do the stuff. + * + * @return array + */ + abstract public function do(): array; + + /** + * Execute SQL statement. + * + * @param string $sql statment to be executed + * @param string $success success message + * @param array $ret reference array for return messages + * + * @return void + */ + protected function execStatement(string $sql, string $success, array &$ret): void + { + try { + DB::statement($sql); + $ret[] = $success; + } catch (\Throwable $th) { + $ret[] = 'Error: ' . $th->getMessage(); + } + } +} diff --git a/app/Actions/Db/OptimizeDb.php b/app/Actions/Db/OptimizeDb.php new file mode 100644 index 00000000000..1b7d109a2ea --- /dev/null +++ b/app/Actions/Db/OptimizeDb.php @@ -0,0 +1,33 @@ +getDriverType($ret); + $tables = $this->getTables(); + + /** @var string|null $sql */ + $sql = match ($driverName) { + DbDriverType::MYSQL => 'OPTIMIZE TABLE ', + DbDriverType::PGSQL => 'VACUUM(FULL, ANALYZE)', + DbDriverType::SQLITE => 'VACUUM', + default => null, + }; + + if ($driverName === DbDriverType::MYSQL) { + foreach ($tables as $table) { + $this->execStatement($sql . $table, $table . ' optimized.', $ret); + } + } elseif ($driverName !== null) { + $this->execStatement($sql, 'DB optimized.', $ret); + } + + return $ret; + } +} diff --git a/app/Actions/Db/OptimizeTables.php b/app/Actions/Db/OptimizeTables.php new file mode 100644 index 00000000000..6062a1513d5 --- /dev/null +++ b/app/Actions/Db/OptimizeTables.php @@ -0,0 +1,33 @@ +getDriverType($ret); + $tables = $this->getTables(); + + /** @var string|null $sql */ + $sql = match ($driverName) { + DbDriverType::MYSQL => 'ANALYZE TABLE ', + DbDriverType::PGSQL => 'ANALYZE ', + DbDriverType::SQLITE => 'ANALYZE ', + default => null, + }; + + if ($sql === null) { + return $ret; + } + + foreach ($tables as $table) { + $this->execStatement($sql . $table, $table . ' analyzed.', $ret); + } + + return $ret; + } +} diff --git a/app/Enum/DbDriverType.php b/app/Enum/DbDriverType.php new file mode 100644 index 00000000000..4c652980d6c --- /dev/null +++ b/app/Enum/DbDriverType.php @@ -0,0 +1,15 @@ +optimizeDb = $optimizeDb; + $this->optimizeTables = $optimizeTables; + } + + /** + * display the Jobs. + * + * @return View + * + * @throws QueryBuilderException + */ + public function view(OptimizeRequest $request): View + { + $result = collect($this->optimizeDb->do())->merge(collect($this->optimizeTables->do()))->all(); + + return view('list', ['lines' => $result]); + } +} diff --git a/app/Http/Requests/Settings/OptimizeRequest.php b/app/Http/Requests/Settings/OptimizeRequest.php new file mode 100644 index 00000000000..393f80d1f81 --- /dev/null +++ b/app/Http/Requests/Settings/OptimizeRequest.php @@ -0,0 +1,23 @@ + + + + Lychee + + + +
+@forelse($lines as $line)
+    {{ $line }}
+@empty
+	No Data found.
+@endforelse
+
+ + diff --git a/routes/web-admin.php b/routes/web-admin.php index 134610c898e..7093dcdbed2 100644 --- a/routes/web-admin.php +++ b/routes/web-admin.php @@ -35,3 +35,6 @@ Route::get('/Diagnostics', [DiagnosticsController::class, 'view']); Route::get('/Update', [UpdateController::class, 'view']); + +Route::get('/Optimize', [OptimizeController::class, 'view']); + diff --git a/tests/Feature/OptimizeTest.php b/tests/Feature/OptimizeTest.php new file mode 100644 index 00000000000..da6f4c3f5c4 --- /dev/null +++ b/tests/Feature/OptimizeTest.php @@ -0,0 +1,39 @@ +get('/Optimize', []); + $this->assertUnauthorized($response); + } + + public function testDoLogged(): void + { + Auth::loginUsingId(1); + $response = $this->get('/Optimize', []); + $this->assertStatus($response, 200); + $response->assertViewIs('list'); + Auth::logout(); + Session::flush(); + } +} From 31e706ad4d95539d070a46807b8f0e9431252651 Mon Sep 17 00:00:00 2001 From: Samuel FORESTIER Date: Sun, 10 Dec 2023 07:13:46 +0000 Subject: [PATCH 064/209] Adds missing space separator in Ghostbuster command advice (#2069) --- app/Console/Commands/Ghostbuster.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Console/Commands/Ghostbuster.php b/app/Console/Commands/Ghostbuster.php index bdaf1c5fa8e..a9d04244d8e 100644 --- a/app/Console/Commands/Ghostbuster.php +++ b/app/Console/Commands/Ghostbuster.php @@ -188,7 +188,7 @@ public function handle(): int $this->line($totalFiles . ' files would be deleted.'); $this->line($totalDbEntries . ' photos would be deleted or sanitized'); $this->line(''); - $this->line("Rerun the command '" . $this->col->yellow('php artisan lychee:ghostbuster --removeDeadSymLinks ' . ($removeDeadSymLinks ? '1' : '0') . ' --removeZombiePhotos ' . ($removeZombiePhotos ? '1' : '0') . '--dryrun 0') . "' to effectively remove the files."); + $this->line("Rerun the command '" . $this->col->yellow('php artisan lychee:ghostbuster --removeDeadSymLinks ' . ($removeDeadSymLinks ? '1' : '0') . ' --removeZombiePhotos ' . ($removeZombiePhotos ? '1' : '0') . ' --dryrun 0') . "' to effectively remove the files."); } if ($total > 0 && !$dryrun) { $this->line($totalDeadSymLinks . ' dead symbolic links have been deleted.'); From 0035d15bd089da894e15d154bdc3d9c0fda3618d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Thu, 21 Dec 2023 17:12:32 +0100 Subject: [PATCH 065/209] Drops support for singular public photos in search. (#2071) --- app/Http/Requests/Search/SearchRequest.php | 2 +- .../SetPublicSearchSettingRequest.php | 9 +- app/Http/Resources/ConfigurationResource.php | 3 +- app/Policies/PhotoQueryPolicy.php | 5 - ...2023_12_18_191723_config_public_search.php | 38 ++ .../Feature/Base/BaseSharingTestScenarios.php | 16 +- .../Base/BaseSharingWithNonAdminUser.php | 2 +- tests/Feature/BasePhotosAddHandler.php | 4 +- tests/Feature/Constants/TestConstants.php | 3 +- tests/Feature/GeoDataTest.php | 3 - tests/Feature/LibUnitTests/PhotosUnitTest.php | 5 +- tests/Feature/PhotosOperationsTest.php | 5 +- tests/Feature/SearchTest.php | 6 - tests/Feature/SettingsTest.php | 4 +- tests/Feature/SharingSpecialTest.php | 7 - ...aringWithAnonUserAndNoPublicSearchTest.php | 162 ----- ...SharingWithAnonUserAndPublicSearchTest.php | 195 ------ ...onUser.php => SharingWithAnonUserTest.php} | 145 ++++- ...gWithNonAdminUserAndNoPublicSearchTest.php | 215 ------- ...ingWithNonAdminUserAndPublicSearchTest.php | 250 -------- tests/Feature/SharingWithNonAdminUserTest.php | 573 ++++++++++++++++++ tests/Feature/Traits/CatchFailures.php | 20 +- 22 files changed, 791 insertions(+), 881 deletions(-) create mode 100644 database/migrations/2023_12_18_191723_config_public_search.php delete mode 100644 tests/Feature/SharingWithAnonUserAndNoPublicSearchTest.php delete mode 100644 tests/Feature/SharingWithAnonUserAndPublicSearchTest.php rename tests/Feature/{Base/BaseSharingWithAnonUser.php => SharingWithAnonUserTest.php} (69%) delete mode 100644 tests/Feature/SharingWithNonAdminUserAndNoPublicSearchTest.php delete mode 100644 tests/Feature/SharingWithNonAdminUserAndPublicSearchTest.php create mode 100644 tests/Feature/SharingWithNonAdminUserTest.php diff --git a/app/Http/Requests/Search/SearchRequest.php b/app/Http/Requests/Search/SearchRequest.php index ed16ab3e09b..655a37eb15c 100644 --- a/app/Http/Requests/Search/SearchRequest.php +++ b/app/Http/Requests/Search/SearchRequest.php @@ -20,7 +20,7 @@ class SearchRequest extends BaseApiRequest */ public function authorize(): bool { - return Auth::check() || Configs::getValueAsBool('public_search'); + return Auth::check() || Configs::getValueAsBool('search_public'); } /** diff --git a/app/Http/Requests/Settings/SetPublicSearchSettingRequest.php b/app/Http/Requests/Settings/SetPublicSearchSettingRequest.php index 91a7698ec64..9660c455355 100644 --- a/app/Http/Requests/Settings/SetPublicSearchSettingRequest.php +++ b/app/Http/Requests/Settings/SetPublicSearchSettingRequest.php @@ -4,16 +4,19 @@ class SetPublicSearchSettingRequest extends AbstractSettingRequest { - public const ATTRIBUTE = 'public_search'; + public const ATTRIBUTE = 'search_public'; public function rules(): array { - return [self::ATTRIBUTE => 'required|boolean']; + return [ + 'public_search' => 'required_without:search_public|boolean', // legacy + 'search_public' => 'required_without:public_search|boolean', // new value + ]; } protected function processValidatedValues(array $values, array $files): void { $this->name = self::ATTRIBUTE; - $this->value = self::toBoolean($values[self::ATTRIBUTE]); + $this->value = self::toBoolean($values['search_public'] ?? $values['public_search']); } } diff --git a/app/Http/Resources/ConfigurationResource.php b/app/Http/Resources/ConfigurationResource.php index 7eaab13e0aa..147b853b6f5 100644 --- a/app/Http/Resources/ConfigurationResource.php +++ b/app/Http/Resources/ConfigurationResource.php @@ -158,8 +158,7 @@ public function toArray($request): array 'nsfw_warning' => Configs::getValueAsBool('nsfw_warning'), 'nsfw_warning_admin' => Configs::getValueAsBool('nsfw_warning_admin'), 'photos_wraparound' => Configs::getValueAsBool('photos_wraparound'), - 'public_photos_hidden' => Configs::getValueAsBool('public_photos_hidden'), - 'public_search' => Configs::getValueAsBool('public_search'), + 'public_search' => Configs::getValueAsBool('search_public'), // legacy 'rss_enable' => Configs::getValueAsBool('rss_enable'), 'rss_max_items' => Configs::getValueAsInt('rss_max_items'), 'rss_recent_days' => Configs::getValueAsInt('rss_recent_days'), diff --git a/app/Policies/PhotoQueryPolicy.php b/app/Policies/PhotoQueryPolicy.php index 9723ebe598f..3edec3031ca 100644 --- a/app/Policies/PhotoQueryPolicy.php +++ b/app/Policies/PhotoQueryPolicy.php @@ -7,7 +7,6 @@ use App\Exceptions\Internal\InvalidQueryModelException; use App\Exceptions\Internal\QueryBuilderException; use App\Models\Album; -use App\Models\Configs; use App\Models\Photo; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Query\Builder as BaseBuilder; @@ -158,7 +157,6 @@ public function applySearchabilityFilter(FixedQueryBuilder $query, ?Album $origi public function appendSearchabilityConditions(BaseBuilder $query, int|string|null $originLeft, int|string|null $originRight): BaseBuilder { $userId = Auth::id(); - $maySearchPublic = !Configs::getValueAsBool('public_photos_hidden'); try { // there must be no unreachable album between the origin and the photo @@ -178,9 +176,6 @@ public function appendSearchabilityConditions(BaseBuilder $query, int|string|nul // allowed to access an album, they may also see its content) $query->whereNotNull('photos.album_id'); - if ($maySearchPublic) { - $query->orWhere('photos.is_public', '=', true); - } if ($userId !== null) { $query->orWhere('photos.owner_id', '=', $userId); } diff --git a/database/migrations/2023_12_18_191723_config_public_search.php b/database/migrations/2023_12_18_191723_config_public_search.php new file mode 100644 index 00000000000..0961ea4083e --- /dev/null +++ b/database/migrations/2023_12_18_191723_config_public_search.php @@ -0,0 +1,38 @@ +where('key', 'public_search')->update( + ['key' => 'search_public', 'cat' => self::MOD_SEARCH]); + DB::table('configs')->where('key', 'public_photos_hidden')->delete(); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + DB::table('configs')->where('key', 'search_public')->update( + ['key' => 'public_search', 'cat' => 'config']); + DB::table('configs')->insert([ + [ + 'key' => 'public_photos_hidden', + 'value' => '1', + 'confidentiality' => 0, + 'cat' => 'config', + 'type_range' => self::BOOL, + 'description' => 'Keep singular public pictures hidden from search results, smart albums & tag albums', + ], + ]); + } +}; diff --git a/tests/Feature/Base/BaseSharingTestScenarios.php b/tests/Feature/Base/BaseSharingTestScenarios.php index c4399251ac4..11c9a726634 100644 --- a/tests/Feature/Base/BaseSharingTestScenarios.php +++ b/tests/Feature/Base/BaseSharingTestScenarios.php @@ -17,7 +17,6 @@ namespace Tests\Feature\Base; -use App\Models\Configs; use App\SmartAlbums\OnThisDayAlbum; use App\SmartAlbums\RecentAlbum; use App\SmartAlbums\StarredAlbum; @@ -57,9 +56,6 @@ */ abstract class BaseSharingTestScenarios extends BaseSharingTest { - /** @var bool the previously configured visibility for public photos */ - protected bool $arePublicPhotosHidden; - /** @var string|null the ID of the current album 1 (if applicable by the test) */ protected ?string $albumID1; @@ -84,9 +80,6 @@ abstract class BaseSharingTestScenarios extends BaseSharingTest public function setUp(): void { parent::setUp(); - - $this->arePublicPhotosHidden = Configs::getValueAsBool(TestConstants::CONFIG_PUBLIC_HIDDEN); - // Reset all variables to ensure that a test implementation of the // child class does not accidentally use a value which it should not. $this->albumID1 = null; @@ -100,7 +93,6 @@ public function setUp(): void public function tearDown(): void { - Configs::set(TestConstants::CONFIG_PUBLIC_HIDDEN, $this->arePublicPhotosHidden); parent::tearDown(); } @@ -139,7 +131,7 @@ protected function prepareUnsortedPrivatePhoto(): void /** * Ensures that the user does not see the private photo. * - * See {@link SharingTestScenariosAbstract::prepareUnsortedPublicAndPrivatePhoto()} + * See {@link BaseSharingTestScenarios::prepareUnsortedPublicAndPrivatePhoto()} * for description of scenario. * * @return void @@ -196,7 +188,7 @@ abstract public function testUnsortedPublicAndPrivatePhoto(): void; * it and logs out. * * This scenario is similar to - * {@link SharingTestScenariosAbstract::prepareUnsortedPublicAndPrivatePhoto()} + * {@link BaseSharingTestScenarios::prepareUnsortedPublicAndPrivatePhoto()} * but with an album. * * @return void @@ -521,7 +513,7 @@ public function testPublicAlbumAndPasswordProtectedUnlockedAlbum(): void } /** - * Like {@link SharingTestScenariosAbstract::preparePublicAlbumAndPasswordProtectedAlbum}, + * Like {@link BaseSharingTestScenarios::preparePublicAlbumAndPasswordProtectedAlbum}, * but additionally the password-protected photo is starred. * * @return void @@ -786,7 +778,7 @@ public function testPublicAlbumAndHiddenAlbum(): void } /** - * Like {@link SharingTestScenariosAbstract::preparePublicAlbumAndHiddenAlbum}, but + * Like {@link BaseSharingTestScenarios::preparePublicAlbumAndHiddenAlbum}, but * additionally the hidden album is also password protected. * * @return void diff --git a/tests/Feature/Base/BaseSharingWithNonAdminUser.php b/tests/Feature/Base/BaseSharingWithNonAdminUser.php index aba2321e75e..7fba610b3da 100644 --- a/tests/Feature/Base/BaseSharingWithNonAdminUser.php +++ b/tests/Feature/Base/BaseSharingWithNonAdminUser.php @@ -21,7 +21,7 @@ use Tests\Feature\Constants\TestConstants; /** - * Implements the tests of {@link SharingTestScenariosAbstract} for a + * Implements the tests of {@link BaseSharingTestScenarios} for a * non-admin user whose results are independent of the setting for public * search. */ diff --git a/tests/Feature/BasePhotosAddHandler.php b/tests/Feature/BasePhotosAddHandler.php index 7efe36a035d..44cc05796a1 100644 --- a/tests/Feature/BasePhotosAddHandler.php +++ b/tests/Feature/BasePhotosAddHandler.php @@ -242,7 +242,7 @@ public function testAppleLivePhotoUpload1(): void $video = static::convertJsonToObject($this->photos_tests->upload( AbstractTestCase::createUploadedFile(TestConstants::SAMPLE_FILE_TRAIN_VIDEO), null, - 200 + [200, 201] )); $this->assertEquals($photo->id, $video->id); $this->assertEquals('E905E6C6-C747-4805-942F-9904A0281F02', $video->live_photo_content_id); @@ -268,7 +268,7 @@ public function testAppleLivePhotoUpload2(): void $photo = static::convertJsonToObject($this->photos_tests->upload( AbstractTestCase::createUploadedFile(TestConstants::SAMPLE_FILE_TRAIN_IMAGE), null, - 200 // associated image to video. + [200, 201] // associated image to video. )); $this->assertEquals('E905E6C6-C747-4805-942F-9904A0281F02', $photo->live_photo_content_id); $this->assertStringEndsWith('.mov', $photo->live_photo_url); diff --git a/tests/Feature/Constants/TestConstants.php b/tests/Feature/Constants/TestConstants.php index 236971a3116..0236f446e71 100644 --- a/tests/Feature/Constants/TestConstants.php +++ b/tests/Feature/Constants/TestConstants.php @@ -85,9 +85,8 @@ class TestConstants public const CONFIG_MAP_INCLUDE_SUBALBUMS = 'map_include_subalbums'; public const CONFIG_PHOTOS_SORTING_COL = 'sorting_photos_col'; public const CONFIG_PHOTOS_SORTING_ORDER = 'sorting_photos_order'; - public const CONFIG_PUBLIC_HIDDEN = 'public_photos_hidden'; public const CONFIG_PUBLIC_RECENT = 'public_recent'; - public const CONFIG_PUBLIC_SEARCH = 'public_search'; + public const CONFIG_PUBLIC_SEARCH = 'search_public'; public const CONFIG_PUBLIC_STARRED = 'public_starred'; public const CONFIG_PUBLIC_ON_THIS_DAY = 'public_on_this_day'; public const CONFIG_RAW_FORMATS = 'raw_formats'; diff --git a/tests/Feature/GeoDataTest.php b/tests/Feature/GeoDataTest.php index 0e09e0ca85b..36d7377f1ba 100644 --- a/tests/Feature/GeoDataTest.php +++ b/tests/Feature/GeoDataTest.php @@ -191,7 +191,6 @@ public function testGeo(): void public function testThumbnailsInsideHiddenAlbum(): void { $isRecentPublic = RecentAlbum::getInstance()->public_permissions() !== null; - $arePublicPhotosHidden = Configs::getValueAsBool(TestConstants::CONFIG_PUBLIC_HIDDEN); $isPublicSearchEnabled = Configs::getValueAsBool(TestConstants::CONFIG_PUBLIC_SEARCH); $displayMap = Configs::getValueAsBool(TestConstants::CONFIG_MAP_DISPLAY); $displayMapPublicly = Configs::getValueAsBool(TestConstants::CONFIG_MAP_DISPLAY_PUBLIC); @@ -200,7 +199,6 @@ public function testThumbnailsInsideHiddenAlbum(): void try { Auth::loginUsingId(1); RecentAlbum::getInstance()->setPublic(); - Configs::set(TestConstants::CONFIG_PUBLIC_HIDDEN, false); Configs::set(TestConstants::CONFIG_PUBLIC_SEARCH, true); Configs::set(TestConstants::CONFIG_MAP_DISPLAY, true); Configs::set(TestConstants::CONFIG_MAP_DISPLAY_PUBLIC, true); @@ -314,7 +312,6 @@ public function testThumbnailsInsideHiddenAlbum(): void $response->assertJsonMissing(['id' => $id]); } } finally { - Configs::set(TestConstants::CONFIG_PUBLIC_HIDDEN, $arePublicPhotosHidden); Configs::set(TestConstants::CONFIG_PUBLIC_SEARCH, $isPublicSearchEnabled); if ($isRecentPublic) { RecentAlbum::getInstance()->setPublic(); diff --git a/tests/Feature/LibUnitTests/PhotosUnitTest.php b/tests/Feature/LibUnitTests/PhotosUnitTest.php index b791fcb1085..15986a54bd6 100644 --- a/tests/Feature/LibUnitTests/PhotosUnitTest.php +++ b/tests/Feature/LibUnitTests/PhotosUnitTest.php @@ -40,7 +40,7 @@ public function __construct(AbstractTestCase $testCase) public function upload( UploadedFile $file, ?string $albumID = null, - int $expectedStatusCode = 201, + int|array $expectedStatusCodes = 201, ?string $assertSee = null, ?int $fileLastModifiedTime = 1678824303000 ): TestResponse { @@ -59,8 +59,7 @@ public function upload( 'Accept' => 'application/json', ] ); - - $this->assertStatus($response, $expectedStatusCode); + $this->assertStatus($response, $expectedStatusCodes); if ($assertSee !== null) { $response->assertSee($assertSee, false); } diff --git a/tests/Feature/PhotosOperationsTest.php b/tests/Feature/PhotosOperationsTest.php index 228e539b6c9..cde528dfa33 100644 --- a/tests/Feature/PhotosOperationsTest.php +++ b/tests/Feature/PhotosOperationsTest.php @@ -320,7 +320,6 @@ public function testTrueNegative(): void public function testThumbnailsInsideHiddenAlbum(): void { $isRecentPublic = RecentAlbum::getInstance()->public_permissions() !== null; - $arePublicPhotosHidden = Configs::getValueAsBool(TestConstants::CONFIG_PUBLIC_HIDDEN); $isPublicSearchEnabled = Configs::getValueAsBool(TestConstants::CONFIG_PUBLIC_SEARCH); $albumSortingColumn = Configs::getValueAsString(TestConstants::CONFIG_ALBUMS_SORTING_COL); $albumSortingOrder = Configs::getValueAsString(TestConstants::CONFIG_ALBUMS_SORTING_ORDER); @@ -330,7 +329,6 @@ public function testThumbnailsInsideHiddenAlbum(): void try { Auth::loginUsingId(1); RecentAlbum::getInstance()->setPublic(); - Configs::set(TestConstants::CONFIG_PUBLIC_HIDDEN, false); Configs::set(TestConstants::CONFIG_PUBLIC_SEARCH, true); Configs::set(TestConstants::CONFIG_ALBUMS_SORTING_COL, 'title'); Configs::set(TestConstants::CONFIG_ALBUMS_SORTING_ORDER, 'ASC'); @@ -452,7 +450,6 @@ public function testThumbnailsInsideHiddenAlbum(): void Configs::set(TestConstants::CONFIG_ALBUMS_SORTING_ORDER, $albumSortingOrder); Configs::set(TestConstants::CONFIG_PHOTOS_SORTING_COL, $photoSortingColumn); Configs::set(TestConstants::CONFIG_PHOTOS_SORTING_ORDER, $photoSortingOrder); - Configs::set(TestConstants::CONFIG_PUBLIC_HIDDEN, $arePublicPhotosHidden); Configs::set(TestConstants::CONFIG_PUBLIC_SEARCH, $isPublicSearchEnabled); if ($isRecentPublic) { RecentAlbum::getInstance()->setPublic(); @@ -550,7 +547,7 @@ public function testUploadTimeFromFileTimeNull(): void $this->photos_tests->upload( self::createUploadedFile(TestConstants::SAMPLE_FILE_MONGOLIA_IMAGE), albumID: null, - expectedStatusCode: 201, + expectedStatusCodes: 201, assertSee: null, fileLastModifiedTime: null); } diff --git a/tests/Feature/SearchTest.php b/tests/Feature/SearchTest.php index fa686c7caa8..03181945512 100644 --- a/tests/Feature/SearchTest.php +++ b/tests/Feature/SearchTest.php @@ -206,10 +206,8 @@ public function testDisabledPublicSearchWithAnonUser(): void public function testSearchAlbumByTitleWithAnonUser(): void { - $arePublicPhotosHidden = Configs::getValueAsBool(TestConstants::CONFIG_PUBLIC_HIDDEN); $isPublicSearchEnabled = Configs::getValueAsBool(TestConstants::CONFIG_PUBLIC_SEARCH); try { - Configs::set(TestConstants::CONFIG_PUBLIC_HIDDEN, false); Configs::set(TestConstants::CONFIG_PUBLIC_SEARCH, true); $albumID1 = $this->albums_tests->add(null, 'Matching private album')->offsetGet('id'); @@ -239,19 +237,16 @@ public function testSearchAlbumByTitleWithAnonUser(): void $response->assertJsonMissing(['id' => $albumID2]); $response->assertJsonMissing(['id' => $albumID4]); } finally { - Configs::set(TestConstants::CONFIG_PUBLIC_HIDDEN, $arePublicPhotosHidden); Configs::set(TestConstants::CONFIG_PUBLIC_SEARCH, $isPublicSearchEnabled); } } public function testSearchAlbumByTitleWithNonAdminUser(): void { - $arePublicPhotosHidden = Configs::getValueAsBool(TestConstants::CONFIG_PUBLIC_HIDDEN); $isPublicSearchEnabled = Configs::getValueAsBool(TestConstants::CONFIG_PUBLIC_SEARCH); $albumSortingColumn = Configs::getValueAsString(TestConstants::CONFIG_ALBUMS_SORTING_COL); $albumSortingOrder = Configs::getValueAsString(TestConstants::CONFIG_ALBUMS_SORTING_ORDER); try { - Configs::set(TestConstants::CONFIG_PUBLIC_HIDDEN, false); Configs::set(TestConstants::CONFIG_PUBLIC_SEARCH, true); Configs::set(TestConstants::CONFIG_ALBUMS_SORTING_COL, 'title'); Configs::set(TestConstants::CONFIG_ALBUMS_SORTING_ORDER, 'ASC'); @@ -287,7 +282,6 @@ public function testSearchAlbumByTitleWithNonAdminUser(): void } finally { Configs::set(TestConstants::CONFIG_ALBUMS_SORTING_COL, $albumSortingColumn); Configs::set(TestConstants::CONFIG_ALBUMS_SORTING_ORDER, $albumSortingOrder); - Configs::set(TestConstants::CONFIG_PUBLIC_HIDDEN, $arePublicPhotosHidden); Configs::set(TestConstants::CONFIG_PUBLIC_SEARCH, $isPublicSearchEnabled); } } diff --git a/tests/Feature/SettingsTest.php b/tests/Feature/SettingsTest.php index 8d2d7eaa393..b9e3083b8dd 100644 --- a/tests/Feature/SettingsTest.php +++ b/tests/Feature/SettingsTest.php @@ -179,8 +179,8 @@ public function testSetLocationShowPublic(): void // Route::post('/Settings::setPublicSearch', [Administration\SettingsController::class, 'setPublicSearch']); public function testSetPublicSearch(): void { - $this->sendKV('/Settings::setPublicSearch', 'public_search', 'wrong', 422); - $this->sendKV('/Settings::setPublicSearch', 'public_search', false); + $this->sendKV('/Settings::setPublicSearch', 'search_public', 'wrong', 422); + $this->sendKV('/Settings::setPublicSearch', 'search_public', false); } // Route::post('/Settings::setCSS', [Administration\SettingsController::class, 'setCSS']); diff --git a/tests/Feature/SharingSpecialTest.php b/tests/Feature/SharingSpecialTest.php index e5f4f07fdd2..b6e123442b4 100644 --- a/tests/Feature/SharingSpecialTest.php +++ b/tests/Feature/SharingSpecialTest.php @@ -12,7 +12,6 @@ namespace Tests\Feature; -use App\Models\Configs; use App\SmartAlbums\OnThisDayAlbum; use App\SmartAlbums\RecentAlbum; use App\SmartAlbums\StarredAlbum; @@ -36,8 +35,6 @@ class SharingSpecialTest extends BaseSharingTest protected ?string $photoID5 = null; protected ?string $photoID6 = null; - protected bool $arePublicPhotosHidden = false; - public function setUp(): void { parent::setUp(); @@ -55,14 +52,10 @@ public function setUp(): void $this->photoID4 = null; $this->photoID5 = null; $this->photoID6 = null; - - $this->arePublicPhotosHidden = Configs::getValueAsBool(TestConstants::CONFIG_PUBLIC_HIDDEN); - Configs::set(TestConstants::CONFIG_PUBLIC_HIDDEN, false); } public function tearDown(): void { - Configs::set(TestConstants::CONFIG_PUBLIC_HIDDEN, $this->arePublicPhotosHidden); parent::tearDown(); } diff --git a/tests/Feature/SharingWithAnonUserAndNoPublicSearchTest.php b/tests/Feature/SharingWithAnonUserAndNoPublicSearchTest.php deleted file mode 100644 index e1e87ace24c..00000000000 --- a/tests/Feature/SharingWithAnonUserAndNoPublicSearchTest.php +++ /dev/null @@ -1,162 +0,0 @@ -prepareUnsortedPublicAndPrivatePhoto(); - - $this->ensurePhotosWereTakenOnThisDay($this->photoID1, $this->photoID2); - - $responseForRoot = $this->root_album_tests->get(); - $responseForRoot->assertJson($this->generateExpectedRootJson()); - $responseForRoot->assertJsonMissing($this->generateUnexpectedRootJson()); - $responseForRoot->assertJsonMissing(['id' => $this->photoID1]); - $responseForRoot->assertJsonMissing(['id' => $this->photoID2]); - - $responseForRecent = $this->albums_tests->get(RecentAlbum::ID); - $responseForRecent->assertJson($this->generateExpectedSmartAlbumJson(true)); - $responseForRecent->assertJsonMissing(['id' => $this->photoID1]); - $responseForRecent->assertJsonMissing(['id' => $this->photoID2]); - - $responseForStarred = $this->albums_tests->get(StarredAlbum::ID); - $responseForStarred->assertJson($this->generateExpectedSmartAlbumJson(true)); - $responseForStarred->assertJsonMissing(['id' => $this->photoID1]); - $responseForStarred->assertJsonMissing(['id' => $this->photoID2]); - - $responseForOnThisDay = $this->albums_tests->get(OnThisDayAlbum::ID); - $responseForOnThisDay->assertJson($this->generateExpectedSmartAlbumJson(true)); - $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID1]); - $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID2]); - - // Even though the public photo is not searchable and hence does not - // show up in the smart albums, it can be fetched directly - $this->photos_tests->get($this->photoID1); - $this->photos_tests->get($this->photoID2, $this->getExpectedInaccessibleHttpStatusCode()); - } - - /** - * Ensures that the user does not see any photo, although the first is - * public (but not searchable). - * The first photo is still visible if directly accessed, but the user - * gets a `401 - Unauthenticated` for the album and the second photo. - * - * See - * {@link SharingTestScenariosAbstract::preparePublicAndPrivatePhotoInPrivateAlbum()} - * for description of scenario. - */ - public function testPublicAndPrivatePhotoInPrivateAlbum(): void - { - $this->preparePublicAndPrivatePhotoInPrivateAlbum(); - - $this->ensurePhotosWereTakenOnThisDay($this->photoID1, $this->photoID2); - - $responseForRoot = $this->root_album_tests->get(); - $responseForRoot->assertJson($this->generateExpectedRootJson()); - $responseForRoot->assertJsonMissing($this->generateUnexpectedRootJson()); - $responseForRoot->assertJsonMissing(['id' => $this->photoID1]); - $responseForRoot->assertJsonMissing(['id' => $this->photoID2]); - - $responseForRecent = $this->albums_tests->get(RecentAlbum::ID); - $responseForRecent->assertJson($this->generateExpectedSmartAlbumJson(true)); - $responseForRecent->assertJsonMissing(['id' => $this->photoID1]); - $responseForRecent->assertJsonMissing(['id' => $this->photoID2]); - - $responseForStarred = $this->albums_tests->get(StarredAlbum::ID); - $responseForStarred->assertJson($this->generateExpectedSmartAlbumJson(true)); - $responseForStarred->assertJsonMissing(['id' => $this->photoID1]); - $responseForStarred->assertJsonMissing(['id' => $this->photoID2]); - - $responseForOnThisDay = $this->albums_tests->get(OnThisDayAlbum::ID); - $responseForOnThisDay->assertJson($this->generateExpectedSmartAlbumJson(true)); - $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID1]); - $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID2]); - - $responseForTree = $this->root_album_tests->getTree(); - $responseForTree->assertJson($this->generateExpectedTreeJson()); - $responseForTree->assertJsonMissing(['id' => $this->albumID1]); - $responseForTree->assertJsonMissing(['id' => $this->photoID1]); - $responseForTree->assertJsonMissing(['id' => $this->photoID2]); - - // The album and photo 2 are not accessible, but photo 1 is - // because it is public even though it is contained in an inaccessible - // album - $this->albums_tests->get($this->albumID1, $this->getExpectedInaccessibleHttpStatusCode(), $this->getExpectedDefaultInaccessibleMessage(), TestConstants::EXPECTED_PASSWORD_REQUIRED_MSG); - $this->photos_tests->get($this->photoID1); - $this->photos_tests->get($this->photoID2, $this->getExpectedInaccessibleHttpStatusCode()); - } - - public function testPublicUnsortedPhotoAndPhotoInSharedAlbum(): void - { - $this->preparePublicUnsortedPhotoAndPhotoInSharedAlbum(); - - $this->ensurePhotosWereTakenOnThisDay($this->photoID1, $this->photoID2); - - $responseForRoot = $this->root_album_tests->get(); - $responseForRoot->assertJson($this->generateExpectedRootJson()); - $responseForRoot->assertJsonMissing($this->generateUnexpectedRootJson()); - $responseForRoot->assertJsonMissing(['id' => $this->albumID1]); - $responseForRoot->assertJsonMissing(['id' => $this->photoID1]); - $responseForRoot->assertJsonMissing(['id' => $this->photoID2]); - - $responseForRecent = $this->albums_tests->get(RecentAlbum::ID); - $responseForRecent->assertJson($this->generateExpectedSmartAlbumJson(true)); - $responseForRecent->assertJsonMissing(['id' => $this->photoID1]); - $responseForRecent->assertJsonMissing(['id' => $this->photoID2]); - - $responseForStarred = $this->albums_tests->get(StarredAlbum::ID); - $responseForStarred->assertJson($this->generateExpectedSmartAlbumJson(true)); - $responseForStarred->assertJsonMissing(['id' => $this->photoID1]); - $responseForStarred->assertJsonMissing(['id' => $this->photoID2]); - - $responseForOnThisDay = $this->albums_tests->get(OnThisDayAlbum::ID); - $responseForOnThisDay->assertJson($this->generateExpectedSmartAlbumJson(true)); - $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID1]); - $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID2]); - - $responseForTree = $this->root_album_tests->getTree(); - $responseForTree->assertJson($this->generateExpectedTreeJson()); - $responseForTree->assertJsonMissing(['id' => $this->photoID2]); - - $this->albums_tests->get($this->albumID1, $this->getExpectedInaccessibleHttpStatusCode(), $this->getExpectedDefaultInaccessibleMessage(), TestConstants::EXPECTED_PASSWORD_REQUIRED_MSG); - $this->photos_tests->get($this->photoID1); - $this->photos_tests->get($this->photoID2, $this->getExpectedInaccessibleHttpStatusCode()); - } -} diff --git a/tests/Feature/SharingWithAnonUserAndPublicSearchTest.php b/tests/Feature/SharingWithAnonUserAndPublicSearchTest.php deleted file mode 100644 index 4913b87e14f..00000000000 --- a/tests/Feature/SharingWithAnonUserAndPublicSearchTest.php +++ /dev/null @@ -1,195 +0,0 @@ -prepareUnsortedPublicAndPrivatePhoto(); - - $this->ensurePhotosWereTakenOnThisDay($this->photoID1, $this->photoID2); - - $responseForRoot = $this->root_album_tests->get(); - $responseForRoot->assertJson($this->generateExpectedRootJson( - null, $this->photoID1, null, $this->photoID1, $this->photoID1 - )); - $responseForRoot->assertJsonMissing($this->generateUnexpectedRootJson(null, $this->photoID1, null, $this->photoID1)); - $responseForRoot->assertJsonMissing(['id' => $this->photoID2]); - - $responseForRecent = $this->albums_tests->get(RecentAlbum::ID); - $responseForRecent->assertJson($this->generateExpectedSmartAlbumJson( - true, - $this->photoID1, [ - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_TRAIN_IMAGE, $this->photoID1, null), - ] - )); - $responseForRecent->assertJsonMissing(['id' => $this->photoID2]); - - $responseForStarred = $this->albums_tests->get(StarredAlbum::ID); - $responseForStarred->assertJson($this->generateExpectedSmartAlbumJson( - true, - $this->photoID1, [ - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_TRAIN_IMAGE, $this->photoID1, null), - ] - )); - $responseForStarred->assertJsonMissing(['id' => $this->photoID2]); - - $responseForOnThisDay = $this->albums_tests->get(OnThisDayAlbum::ID); - $responseForOnThisDay->assertJson($this->generateExpectedSmartAlbumJson( - true, - $this->photoID1, [ - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_TRAIN_IMAGE, $this->photoID1, null), - ] - )); - $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID2]); - - $this->photos_tests->get($this->photoID1); - $this->photos_tests->get($this->photoID2, $this->getExpectedInaccessibleHttpStatusCode()); - } - - /** - * Ensures that the user sees the public photo, but not the private one. - * Ensures that the user gets a `401 - Unauthenticated` for the album and - * the second photo. - * - * See - * {@link SharingTestScenariosAbstract::preparePublicAndPrivatePhotoInPrivateAlbum()} - * for description of scenario. - */ - public function testPublicAndPrivatePhotoInPrivateAlbum(): void - { - $this->preparePublicAndPrivatePhotoInPrivateAlbum(); - - $this->ensurePhotosWereTakenOnThisDay($this->photoID1, $this->photoID2); - - $responseForRoot = $this->root_album_tests->get(); - $responseForRoot->assertJson($this->generateExpectedRootJson( - null, $this->photoID1, null, $this->photoID1, $this->photoID1 - )); - $responseForRoot->assertJsonMissing($this->generateUnexpectedRootJson(null, $this->photoID1, null, $this->photoID1)); - $responseForRoot->assertJsonMissing(['id' => $this->photoID2]); - - $responseForRecent = $this->albums_tests->get(RecentAlbum::ID); - $responseForRecent->assertJson($this->generateExpectedSmartAlbumJson( - true, - $this->photoID1, [ - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_TRAIN_IMAGE, $this->photoID1, $this->albumID1), - ] - )); - $responseForRecent->assertJsonMissing(['id' => $this->photoID2]); - - $responseForStarred = $this->albums_tests->get(StarredAlbum::ID); - $responseForStarred->assertJson($this->generateExpectedSmartAlbumJson( - true, - $this->photoID1, [ - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_TRAIN_IMAGE, $this->photoID1, $this->albumID1), - ] - )); - $responseForStarred->assertJsonMissing(['id' => $this->photoID2]); - - $responseForOnThisDay = $this->albums_tests->get(OnThisDayAlbum::ID); - $responseForOnThisDay->assertJson($this->generateExpectedSmartAlbumJson( - true, - $this->photoID1, [ - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_TRAIN_IMAGE, $this->photoID1, $this->albumID1), - ] - )); - $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID2]); - - $responseForTree = $this->root_album_tests->getTree(); - $responseForTree->assertJson($this->generateExpectedTreeJson()); - $responseForTree->assertJsonMissing(['id' => $this->albumID1]); - $responseForTree->assertJsonMissing(['id' => $this->photoID1]); - $responseForTree->assertJsonMissing(['id' => $this->photoID2]); - - $this->albums_tests->get($this->albumID1, $this->getExpectedInaccessibleHttpStatusCode(), $this->getExpectedDefaultInaccessibleMessage(), TestConstants::EXPECTED_PASSWORD_REQUIRED_MSG); - $this->photos_tests->get($this->photoID1); - $this->photos_tests->get($this->photoID2, $this->getExpectedInaccessibleHttpStatusCode()); - } - - public function testPublicUnsortedPhotoAndPhotoInSharedAlbum(): void - { - $this->preparePublicUnsortedPhotoAndPhotoInSharedAlbum(); - - $this->ensurePhotosWereTakenOnThisDay($this->photoID1, $this->photoID2); - - $responseForRoot = $this->root_album_tests->get(); - $responseForRoot->assertJson($this->generateExpectedRootJson( - null, $this->photoID1, null, $this->photoID1, $this->photoID1 - )); - $responseForRoot->assertJsonMissing($this->generateUnexpectedRootJson(null, $this->photoID1, null, $this->photoID1)); - $responseForRoot->assertJsonMissing(['id' => $this->albumID1]); - $responseForRoot->assertJsonMissing(['id' => $this->photoID2]); - - $responseForRecent = $this->albums_tests->get(RecentAlbum::ID); - $responseForRecent->assertJson($this->generateExpectedSmartAlbumJson( - true, - $this->photoID1, [ - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_TRAIN_IMAGE, $this->photoID1, null), - ], - )); - $responseForRoot->assertJsonMissing(['id' => $this->photoID2]); - - $responseForStarred = $this->albums_tests->get(StarredAlbum::ID); - $responseForStarred->assertJson($this->generateExpectedSmartAlbumJson( - true, - $this->photoID1, [ - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_TRAIN_IMAGE, $this->photoID1, null), - ], - )); - $responseForStarred->assertJsonMissing(['id' => $this->photoID2]); - - $responseForOnThisDay = $this->albums_tests->get(OnThisDayAlbum::ID); - $responseForOnThisDay->assertJson($this->generateExpectedSmartAlbumJson( - true, - $this->photoID1, [ - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_TRAIN_IMAGE, $this->photoID1, null), - ], - )); - $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID2]); - - $responseForTree = $this->root_album_tests->getTree(); - $responseForTree->assertJson($this->generateExpectedTreeJson()); - $responseForTree->assertJsonMissing(['id' => $this->photoID2]); - - $this->albums_tests->get($this->albumID1, $this->getExpectedInaccessibleHttpStatusCode(), $this->getExpectedDefaultInaccessibleMessage(), TestConstants::EXPECTED_PASSWORD_REQUIRED_MSG); - $this->photos_tests->get($this->photoID1); - $this->photos_tests->get($this->photoID2, $this->getExpectedInaccessibleHttpStatusCode()); - } -} diff --git a/tests/Feature/Base/BaseSharingWithAnonUser.php b/tests/Feature/SharingWithAnonUserTest.php similarity index 69% rename from tests/Feature/Base/BaseSharingWithAnonUser.php rename to tests/Feature/SharingWithAnonUserTest.php index e77df0cc614..ae7e5b278a6 100644 --- a/tests/Feature/Base/BaseSharingWithAnonUser.php +++ b/tests/Feature/SharingWithAnonUserTest.php @@ -10,22 +10,28 @@ * @noinspection PhpUnhandledExceptionInspection */ -namespace Tests\Feature\Base; +namespace Tests\Feature; use App\SmartAlbums\OnThisDayAlbum; use App\SmartAlbums\PublicAlbum; use App\SmartAlbums\RecentAlbum; use App\SmartAlbums\StarredAlbum; use App\SmartAlbums\UnsortedAlbum; +use Tests\Feature\Base\BaseSharingTestScenarios; use Tests\Feature\Constants\TestConstants; /** - * Implements the tests of {@link SharingTestScenariosAbstract} for an + * Implements the tests of {@link BaseSharingTestScenarios} for an * anonymous user whose results are independent of the setting for public * search. */ -abstract class BaseSharingWithAnonUser extends BaseSharingTestScenarios +class SharingWithAnonUserTest extends BaseSharingTestScenarios { + public function setUp(): void + { + parent::setUp(); + } + public function testPhotosInSharedAndPrivateAlbum(): void { $this->preparePhotosInSharedAndPrivateAndRequireLinkAlbum(); @@ -341,4 +347,137 @@ protected function getExpectedDefaultInaccessibleMessage(): string { return TestConstants::EXPECTED_UNAUTHENTICATED_MSG; } + + /** + * Ensures that the user does not see the unsorted public photos as covers nor + * inside "Recent", "On This Day" and "Favorites" (as public search is disabled). + * The user can access the public photo nonetheless, but gets + * "401 - Unauthenticated" for the other. + * + * See + * {@link BaseSharingTestScenarios::prepareUnsortedPublicAndPrivatePhoto()} + * for description of scenario. + * + * @return void + */ + public function testUnsortedPublicAndPrivatePhoto(): void + { + $this->prepareUnsortedPublicAndPrivatePhoto(); + + $this->ensurePhotosWereTakenOnThisDay($this->photoID1, $this->photoID2); + + $responseForRoot = $this->root_album_tests->get(); + $responseForRoot->assertJson($this->generateExpectedRootJson()); + $responseForRoot->assertJsonMissing($this->generateUnexpectedRootJson()); + $responseForRoot->assertJsonMissing(['id' => $this->photoID1]); + $responseForRoot->assertJsonMissing(['id' => $this->photoID2]); + + $responseForRecent = $this->albums_tests->get(RecentAlbum::ID); + $responseForRecent->assertJson($this->generateExpectedSmartAlbumJson(true)); + $responseForRecent->assertJsonMissing(['id' => $this->photoID1]); + $responseForRecent->assertJsonMissing(['id' => $this->photoID2]); + + $responseForStarred = $this->albums_tests->get(StarredAlbum::ID); + $responseForStarred->assertJson($this->generateExpectedSmartAlbumJson(true)); + $responseForStarred->assertJsonMissing(['id' => $this->photoID1]); + $responseForStarred->assertJsonMissing(['id' => $this->photoID2]); + + $responseForOnThisDay = $this->albums_tests->get(OnThisDayAlbum::ID); + $responseForOnThisDay->assertJson($this->generateExpectedSmartAlbumJson(true)); + $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID1]); + $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID2]); + + // Even though the public photo is not searchable and hence does not + // show up in the smart albums, it can be fetched directly + $this->photos_tests->get($this->photoID1); + $this->photos_tests->get($this->photoID2, $this->getExpectedInaccessibleHttpStatusCode()); + } + + /** + * Ensures that the user does not see any photo, although the first is + * public (but not searchable). + * The first photo is still visible if directly accessed, but the user + * gets a `401 - Unauthenticated` for the album and the second photo. + * + * See + * {@link BaseSharingTestScenarios::preparePublicAndPrivatePhotoInPrivateAlbum()} + * for description of scenario. + */ + public function testPublicAndPrivatePhotoInPrivateAlbum(): void + { + $this->preparePublicAndPrivatePhotoInPrivateAlbum(); + + $this->ensurePhotosWereTakenOnThisDay($this->photoID1, $this->photoID2); + + $responseForRoot = $this->root_album_tests->get(); + $responseForRoot->assertJson($this->generateExpectedRootJson()); + $responseForRoot->assertJsonMissing($this->generateUnexpectedRootJson()); + $responseForRoot->assertJsonMissing(['id' => $this->photoID1]); + $responseForRoot->assertJsonMissing(['id' => $this->photoID2]); + + $responseForRecent = $this->albums_tests->get(RecentAlbum::ID); + $responseForRecent->assertJson($this->generateExpectedSmartAlbumJson(true)); + $responseForRecent->assertJsonMissing(['id' => $this->photoID1]); + $responseForRecent->assertJsonMissing(['id' => $this->photoID2]); + + $responseForStarred = $this->albums_tests->get(StarredAlbum::ID); + $responseForStarred->assertJson($this->generateExpectedSmartAlbumJson(true)); + $responseForStarred->assertJsonMissing(['id' => $this->photoID1]); + $responseForStarred->assertJsonMissing(['id' => $this->photoID2]); + + $responseForOnThisDay = $this->albums_tests->get(OnThisDayAlbum::ID); + $responseForOnThisDay->assertJson($this->generateExpectedSmartAlbumJson(true)); + $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID1]); + $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID2]); + + $responseForTree = $this->root_album_tests->getTree(); + $responseForTree->assertJson($this->generateExpectedTreeJson()); + $responseForTree->assertJsonMissing(['id' => $this->albumID1]); + $responseForTree->assertJsonMissing(['id' => $this->photoID1]); + $responseForTree->assertJsonMissing(['id' => $this->photoID2]); + + // The album and photo 2 are not accessible, but photo 1 is + // because it is public even though it is contained in an inaccessible + // album + $this->albums_tests->get($this->albumID1, $this->getExpectedInaccessibleHttpStatusCode(), $this->getExpectedDefaultInaccessibleMessage(), TestConstants::EXPECTED_PASSWORD_REQUIRED_MSG); + $this->photos_tests->get($this->photoID1); + $this->photos_tests->get($this->photoID2, $this->getExpectedInaccessibleHttpStatusCode()); + } + + public function testPublicUnsortedPhotoAndPhotoInSharedAlbum(): void + { + $this->preparePublicUnsortedPhotoAndPhotoInSharedAlbum(); + + $this->ensurePhotosWereTakenOnThisDay($this->photoID1, $this->photoID2); + + $responseForRoot = $this->root_album_tests->get(); + $responseForRoot->assertJson($this->generateExpectedRootJson()); + $responseForRoot->assertJsonMissing($this->generateUnexpectedRootJson()); + $responseForRoot->assertJsonMissing(['id' => $this->albumID1]); + $responseForRoot->assertJsonMissing(['id' => $this->photoID1]); + $responseForRoot->assertJsonMissing(['id' => $this->photoID2]); + + $responseForRecent = $this->albums_tests->get(RecentAlbum::ID); + $responseForRecent->assertJson($this->generateExpectedSmartAlbumJson(true)); + $responseForRecent->assertJsonMissing(['id' => $this->photoID1]); + $responseForRecent->assertJsonMissing(['id' => $this->photoID2]); + + $responseForStarred = $this->albums_tests->get(StarredAlbum::ID); + $responseForStarred->assertJson($this->generateExpectedSmartAlbumJson(true)); + $responseForStarred->assertJsonMissing(['id' => $this->photoID1]); + $responseForStarred->assertJsonMissing(['id' => $this->photoID2]); + + $responseForOnThisDay = $this->albums_tests->get(OnThisDayAlbum::ID); + $responseForOnThisDay->assertJson($this->generateExpectedSmartAlbumJson(true)); + $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID1]); + $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID2]); + + $responseForTree = $this->root_album_tests->getTree(); + $responseForTree->assertJson($this->generateExpectedTreeJson()); + $responseForTree->assertJsonMissing(['id' => $this->photoID2]); + + $this->albums_tests->get($this->albumID1, $this->getExpectedInaccessibleHttpStatusCode(), $this->getExpectedDefaultInaccessibleMessage(), TestConstants::EXPECTED_PASSWORD_REQUIRED_MSG); + $this->photos_tests->get($this->photoID1); + $this->photos_tests->get($this->photoID2, $this->getExpectedInaccessibleHttpStatusCode()); + } } diff --git a/tests/Feature/SharingWithNonAdminUserAndNoPublicSearchTest.php b/tests/Feature/SharingWithNonAdminUserAndNoPublicSearchTest.php deleted file mode 100644 index 04e954e1461..00000000000 --- a/tests/Feature/SharingWithNonAdminUserAndNoPublicSearchTest.php +++ /dev/null @@ -1,215 +0,0 @@ -prepareUnsortedPublicAndPrivatePhoto(); - - $this->ensurePhotosWereTakenOnThisDay($this->photoID1, $this->photoID2); - - $responseForRoot = $this->root_album_tests->get(); - $responseForRoot->assertJson($this->generateExpectedRootJson()); - $arrayUnexpected = $this->generateUnexpectedRootJson(); - if ($arrayUnexpected !== null) { - $responseForRoot->assertJsonMissing($arrayUnexpected); - } - $responseForRoot->assertJsonMissing(['id' => $this->photoID1]); - $responseForRoot->assertJsonMissing(['id' => $this->photoID2]); - - $responseForUnsorted = $this->albums_tests->get(UnsortedAlbum::ID); - $responseForUnsorted->assertJson($this->generateExpectedSmartAlbumJson(false)); - $responseForUnsorted->assertJsonMissing(['id' => $this->photoID1]); - $responseForUnsorted->assertJsonMissing(['id' => $this->photoID2]); - - $responseForRecent = $this->albums_tests->get(RecentAlbum::ID); - $responseForRecent->assertJson($this->generateExpectedSmartAlbumJson(true)); - $responseForRecent->assertJsonMissing(['id' => $this->photoID1]); - $responseForRecent->assertJsonMissing(['id' => $this->photoID2]); - - $responseForStarred = $this->albums_tests->get(StarredAlbum::ID); - $responseForStarred->assertJson($this->generateExpectedSmartAlbumJson(true)); - $responseForStarred->assertJsonMissing(['id' => $this->photoID1]); - $responseForStarred->assertJsonMissing(['id' => $this->photoID2]); - - $responseForOnThisDay = $this->albums_tests->get(OnThisDayAlbum::ID); - $responseForOnThisDay->assertJson($this->generateExpectedSmartAlbumJson(true)); - $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID1]); - $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID2]); - - // Even though the public photo is not searchable and hence does not - // show up in the smart albums, it can be fetched directly - $this->photos_tests->get($this->photoID1); - $this->photos_tests->get($this->photoID2, $this->getExpectedInaccessibleHttpStatusCode()); - } - - /** - * Ensures that the user does not see any photo, although the first is - * public (but not searchable). - * The first photo is still visible if directly accessed, but the user - * gets a `403 - Forbidden` for the album and the second photo. - * - * See - * {@link SharingTestScenariosAbstract::preparePublicAndPrivatePhotoInPrivateAlbum()} - * for description of scenario. - */ - public function testPublicAndPrivatePhotoInPrivateAlbum(): void - { - $this->preparePublicAndPrivatePhotoInPrivateAlbum(); - - $this->ensurePhotosWereTakenOnThisDay($this->photoID1, $this->photoID2); - - $responseForRoot = $this->root_album_tests->get(); - $responseForRoot->assertJson($this->generateExpectedRootJson()); - $arrayUnexpected = $this->generateUnexpectedRootJson(); - if ($arrayUnexpected !== null) { - $responseForRoot->assertJsonMissing($arrayUnexpected); - } - $responseForRoot->assertJsonMissing(['id' => $this->photoID1]); - $responseForRoot->assertJsonMissing(['id' => $this->photoID2]); - - $responseForUnsorted = $this->albums_tests->get(UnsortedAlbum::ID); - $responseForUnsorted->assertJson($this->generateExpectedSmartAlbumJson(false)); - $responseForUnsorted->assertJsonMissing(['id' => $this->photoID1]); - $responseForUnsorted->assertJsonMissing(['id' => $this->photoID2]); - - $responseForRecent = $this->albums_tests->get(RecentAlbum::ID); - $responseForRecent->assertJson($this->generateExpectedSmartAlbumJson(true)); - $responseForRecent->assertJsonMissing(['id' => $this->photoID1]); - $responseForRecent->assertJsonMissing(['id' => $this->photoID2]); - - $responseForStarred = $this->albums_tests->get(StarredAlbum::ID); - $responseForStarred->assertJson($this->generateExpectedSmartAlbumJson(true)); - $responseForStarred->assertJsonMissing(['id' => $this->photoID1]); - $responseForStarred->assertJsonMissing(['id' => $this->photoID2]); - - $responseForOnThisDay = $this->albums_tests->get(OnThisDayAlbum::ID); - $responseForOnThisDay->assertJson($this->generateExpectedSmartAlbumJson(true)); - $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID1]); - $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID2]); - - $responseForTree = $this->root_album_tests->getTree(); - $responseForTree->assertJson($this->generateExpectedTreeJson()); - $responseForTree->assertJsonMissing(['id' => $this->albumID1]); - $responseForTree->assertJsonMissing(['id' => $this->photoID1]); - $responseForTree->assertJsonMissing(['id' => $this->photoID2]); - - $this->albums_tests->get($this->albumID1, $this->getExpectedInaccessibleHttpStatusCode(), $this->getExpectedDefaultInaccessibleMessage(), TestConstants::EXPECTED_PASSWORD_REQUIRED_MSG); - // Even though public search is disabled, the photo is accessible - // by its direct link, because it is public. - $this->photos_tests->get($this->photoID1); - $this->photos_tests->get($this->photoID2, $this->getExpectedInaccessibleHttpStatusCode()); - } - - public function testPublicUnsortedPhotoAndPhotoInSharedAlbum(): void - { - $this->preparePublicUnsortedPhotoAndPhotoInSharedAlbum(); - - $this->ensurePhotosWereTakenOnThisDay($this->photoID1, $this->photoID2); - - $responseForRoot = $this->root_album_tests->get(); - $responseForRoot->assertJson($this->generateExpectedRootJson( - null, - $this->photoID2, - null, - $this->photoID2, - $this->photoID2, [ - $this->generateExpectedAlbumJson($this->albumID1, TestConstants::ALBUM_TITLE_1, null, $this->photoID2), - ] - )); - $arrayUnexpected = $this->generateUnexpectedRootJson( - null, $this->photoID1, null, $this->photoID2 - ); - if ($arrayUnexpected !== null) { - $responseForRoot->assertJsonMissing($arrayUnexpected); - } - $responseForRoot->assertJsonMissing(['id' => $this->photoID1]); - - $responseForUnsorted = $this->albums_tests->get(UnsortedAlbum::ID); - $responseForUnsorted->assertJson($this->generateExpectedSmartAlbumJson(false)); - $responseForUnsorted->assertJsonMissing(['id' => $this->photoID1]); - $responseForUnsorted->assertJsonMissing(['id' => $this->photoID2]); - - $responseForRecent = $this->albums_tests->get(RecentAlbum::ID); - $responseForRecent->assertJson($this->generateExpectedSmartAlbumJson( - true, - $this->photoID2, [ - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_MONGOLIA_IMAGE, $this->photoID2, $this->albumID1), - ] - )); - $responseForRecent->assertJsonMissing(['id' => $this->photoID1]); - - $responseForStarred = $this->albums_tests->get(StarredAlbum::ID); - $responseForStarred->assertJson($this->generateExpectedSmartAlbumJson( - true, - $this->photoID2, [ - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_MONGOLIA_IMAGE, $this->photoID2, $this->albumID1), - ] - )); - $responseForStarred->assertJsonMissing(['id' => $this->photoID1]); - - $responseForOnThisDay = $this->albums_tests->get(OnThisDayAlbum::ID); - $responseForOnThisDay->assertJson($this->generateExpectedSmartAlbumJson(true, - $this->photoID2, [ - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_MONGOLIA_IMAGE, $this->photoID2, $this->albumID1), - ] - )); - $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID1]); - - $responseForTree = $this->root_album_tests->getTree(); - $responseForTree->assertJson($this->generateExpectedTreeJson([ - $this->generateExpectedAlbumJson($this->albumID1, TestConstants::ALBUM_TITLE_1, null, $this->photoID2), - ])); - - $responseForAlbum = $this->albums_tests->get($this->albumID1); - $responseForAlbum->assertJson([ - 'id' => $this->albumID1, - 'title' => TestConstants::ALBUM_TITLE_1, - 'policy' => ['is_public' => false], - 'thumb' => $this->generateExpectedThumbJson($this->photoID2), - 'photos' => [ - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_MONGOLIA_IMAGE, $this->photoID2, $this->albumID1), - ], - ]); - - $this->photos_tests->get($this->photoID1); - $this->photos_tests->get($this->photoID2); - } -} diff --git a/tests/Feature/SharingWithNonAdminUserAndPublicSearchTest.php b/tests/Feature/SharingWithNonAdminUserAndPublicSearchTest.php deleted file mode 100644 index 619491f814f..00000000000 --- a/tests/Feature/SharingWithNonAdminUserAndPublicSearchTest.php +++ /dev/null @@ -1,250 +0,0 @@ -prepareUnsortedPublicAndPrivatePhoto(); - - $this->ensurePhotosWereTakenOnThisDay($this->photoID1, $this->photoID2); - - $responseForRoot = $this->root_album_tests->get(); - $responseForRoot->assertJson($this->generateExpectedRootJson( - $this->photoID1, $this->photoID1, $this->photoID1, $this->photoID1, $this->photoID1 - )); - $arrayUnexpected = $this->generateUnexpectedRootJson( - $this->photoID1, $this->photoID1, $this->photoID1, $this->photoID1 - ); - if ($arrayUnexpected !== null) { - $responseForRoot->assertJsonMissing($arrayUnexpected); - } - $responseForRoot->assertJsonMissing(['id' => $this->photoID2]); - - $responseForUnsorted = $this->albums_tests->get(UnsortedAlbum::ID); - $responseForUnsorted->assertJson($this->generateExpectedSmartAlbumJson( - false, - $this->photoID1, [ - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_TRAIN_IMAGE, $this->photoID1, null), - ] - )); - $responseForUnsorted->assertJsonMissing(['id' => $this->photoID2]); - $responseForUnsorted->assertJsonMissing(['title' => TestConstants::PHOTO_MONGOLIA_TITLE]); - - $responseForRecent = $this->albums_tests->get(RecentAlbum::ID); - $responseForRecent->assertJson($this->generateExpectedSmartAlbumJson( - true, - $this->photoID1, [ - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_TRAIN_IMAGE, $this->photoID1, null), - ] - )); - $responseForRecent->assertJsonMissing(['id' => $this->photoID2]); - $responseForRecent->assertJsonMissing(['title' => TestConstants::PHOTO_MONGOLIA_TITLE]); - - $responseForStarred = $this->albums_tests->get(StarredAlbum::ID); - $responseForStarred->assertJson($this->generateExpectedSmartAlbumJson( - true, - $this->photoID1, [ - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_TRAIN_IMAGE, $this->photoID1, null), - ] - )); - $responseForStarred->assertJsonMissing(['id' => $this->photoID2]); - $responseForStarred->assertJsonMissing(['title' => TestConstants::PHOTO_MONGOLIA_TITLE]); - - $responseForOnThisDay = $this->albums_tests->get(OnThisDayAlbum::ID); - $responseForOnThisDay->assertJson($this->generateExpectedSmartAlbumJson( - true, - $this->photoID1, [ - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_TRAIN_IMAGE, $this->photoID1, null), - ] - )); - $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID2]); - $responseForOnThisDay->assertJsonMissing(['title' => TestConstants::PHOTO_MONGOLIA_TITLE]); - - $this->photos_tests->get($this->photoID1); - $this->photos_tests->get($this->photoID2, $this->getExpectedInaccessibleHttpStatusCode()); - } - - /** - * Ensures that the user sees the public photo, but not the private one. - * Ensures that the user gets a `403 - Forbidden` for the album and - * the second photo. - * - * See - * {@link SharingTestScenariosAbstract::preparePublicAndPrivatePhotoInPrivateAlbum()} - * for description of scenario. - */ - public function testPublicAndPrivatePhotoInPrivateAlbum(): void - { - $this->preparePublicAndPrivatePhotoInPrivateAlbum(); - - $this->ensurePhotosWereTakenOnThisDay($this->photoID1, $this->photoID2); - - $responseForRoot = $this->root_album_tests->get(); - $responseForRoot->assertJson($this->generateExpectedRootJson( - null, $this->photoID1, $this->photoID1, $this->photoID1, $this->photoID1 - )); - $arrayUnexpected = $this->generateUnexpectedRootJson( - null, $this->photoID1, $this->photoID1, $this->photoID1 - ); - if ($arrayUnexpected !== null) { - $responseForRoot->assertJsonMissing($arrayUnexpected); - } - $responseForRoot->assertJsonMissing(['id' => $this->photoID2]); - - $responseForRecent = $this->albums_tests->get(RecentAlbum::ID); - $responseForRecent->assertJson($this->generateExpectedSmartAlbumJson( - true, - $this->photoID1, [ - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_TRAIN_IMAGE, $this->photoID1, $this->albumID1), - ] - )); - $responseForRecent->assertJsonMissing(['id' => $this->photoID2]); - - $responseForStarred = $this->albums_tests->get(StarredAlbum::ID); - $responseForStarred->assertJson($this->generateExpectedSmartAlbumJson( - true, - $this->photoID1, [ - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_TRAIN_IMAGE, $this->photoID1, $this->albumID1), - ] - )); - $responseForStarred->assertJsonMissing(['id' => $this->photoID2]); - - $responseForOnThisDay = $this->albums_tests->get(OnThisDayAlbum::ID); - $responseForOnThisDay->assertJson($this->generateExpectedSmartAlbumJson( - true, - $this->photoID1, [ - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_TRAIN_IMAGE, $this->photoID1, $this->albumID1), - ] - )); - $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID2]); - - $responseForTree = $this->root_album_tests->getTree(); - $responseForTree->assertJson($this->generateExpectedTreeJson()); - $responseForTree->assertJsonMissing(['id' => $this->albumID1]); - $responseForTree->assertJsonMissing(['id' => $this->photoID1]); - $responseForTree->assertJsonMissing(['id' => $this->photoID2]); - - $this->albums_tests->get($this->albumID1, $this->getExpectedInaccessibleHttpStatusCode(), $this->getExpectedDefaultInaccessibleMessage(), TestConstants::EXPECTED_PASSWORD_REQUIRED_MSG); - $this->photos_tests->get($this->photoID1); - $this->photos_tests->get($this->photoID2, $this->getExpectedInaccessibleHttpStatusCode()); - } - - public function testPublicUnsortedPhotoAndPhotoInSharedAlbum(): void - { - $this->preparePublicUnsortedPhotoAndPhotoInSharedAlbum(); - - $this->ensurePhotosWereTakenOnThisDay($this->photoID1); - $this->ensurePhotosWereNotTakenOnThisDay($this->photoID2); - - $responseForRoot = $this->root_album_tests->get(); - $responseForRoot->assertJson($this->generateExpectedRootJson( - $this->photoID1, - $this->photoID2, - $this->photoID1, - $this->photoID2, - $this->photoID1, [ - $this->generateExpectedAlbumJson($this->albumID1, TestConstants::ALBUM_TITLE_1, null, $this->photoID2), - ] - )); - $arrayUnexpected = $this->generateUnexpectedRootJson( - $this->photoID1, $this->photoID2, $this->photoID1, $this->photoID2 - ); - if ($arrayUnexpected !== null) { - $responseForRoot->assertJsonMissing($arrayUnexpected); - } - - $responseForUnsorted = $this->albums_tests->get(UnsortedAlbum::ID); - $responseForUnsorted->assertJson($this->generateExpectedSmartAlbumJson( - false, - $this->photoID1, [ - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_TRAIN_IMAGE, $this->photoID1, null), - ] - )); - $responseForUnsorted->assertJsonMissing(['id' => $this->photoID2]); - - $responseForRecent = $this->albums_tests->get(RecentAlbum::ID); - $responseForRecent->assertJson($this->generateExpectedSmartAlbumJson( - true, - $this->photoID2, [ // photo 2 is thumb, because both photos are starred, but photo 2 is sorted first - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_MONGOLIA_IMAGE, $this->photoID2, $this->albumID1), // photo 2 is alphabetically first - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_TRAIN_IMAGE, $this->photoID1, null), - ] - )); - - $responseForStarred = $this->albums_tests->get(StarredAlbum::ID); - $responseForStarred->assertJson([ - 'policy' => ['is_public' => true], - 'thumb' => $this->generateExpectedThumbJson($this->photoID2), - 'photos' => [ - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_MONGOLIA_IMAGE, $this->photoID2, $this->albumID1), // photo 2 is alphabetically first - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_TRAIN_IMAGE, $this->photoID1, null), - ], - ]); - - $responseForOnThisDay = $this->albums_tests->get(OnThisDayAlbum::ID); - $responseForOnThisDay->assertJson([ - 'policy' => ['is_public' => true], - 'thumb' => $this->generateExpectedThumbJson($this->photoID1), - 'photos' => [ - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_TRAIN_IMAGE, $this->photoID1, null), - ], - ]); - - $responseForTree = $this->root_album_tests->getTree(); - $responseForTree->assertJson($this->generateExpectedTreeJson([ - $this->generateExpectedAlbumJson($this->albumID1, TestConstants::ALBUM_TITLE_1, null, $this->photoID2), - ])); - - $responseForAlbum = $this->albums_tests->get($this->albumID1); - $responseForAlbum->assertJson([ - 'id' => $this->albumID1, - 'title' => TestConstants::ALBUM_TITLE_1, - 'policy' => ['is_public' => false], - 'thumb' => $this->generateExpectedThumbJson($this->photoID2), - 'photos' => [ - $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_MONGOLIA_IMAGE, $this->photoID2, $this->albumID1), - ], - ]); - - $this->photos_tests->get($this->photoID1); - $this->photos_tests->get($this->photoID2); - } -} diff --git a/tests/Feature/SharingWithNonAdminUserTest.php b/tests/Feature/SharingWithNonAdminUserTest.php new file mode 100644 index 00000000000..265e9475d7f --- /dev/null +++ b/tests/Feature/SharingWithNonAdminUserTest.php @@ -0,0 +1,573 @@ +albums_tests->get(UnsortedAlbum::ID); + $responseForUnsorted->assertJson($this->generateExpectedSmartAlbumJson(false)); + $responseForUnsorted->assertJsonMissing(['id' => $this->photoID1]); + } + + /** + * {@inheritDoc} + */ + public function testThreePhotosInPublicAlbum(): void + { + parent::testThreePhotosInPublicAlbum(); + + $responseForUnsorted = $this->albums_tests->get(UnsortedAlbum::ID); + $responseForUnsorted->assertJson($this->generateExpectedSmartAlbumJson(false)); + $responseForUnsorted->assertJsonMissing(['id' => $this->photoID1]); + $responseForUnsorted->assertJsonMissing(['id' => $this->photoID2]); + } + + public function testPhotosInSharedAndPrivateAlbum(): void + { + $this->preparePhotosInSharedAndPrivateAndRequireLinkAlbum(); + + $this->ensurePhotosWereTakenOnThisDay($this->photoID1, $this->photoID2); + $this->ensurePhotosWereNotTakenOnThisDay($this->photoID3); + + $responseForRoot = $this->root_album_tests->get(); + $responseForRoot->assertJson($this->generateExpectedRootJson( + null, + null, + null, + $this->photoID3, + $this->photoID1, [ + self::generateExpectedAlbumJson($this->albumID1, TestConstants::ALBUM_TITLE_1, null, $this->photoID1), + self::generateExpectedAlbumJson($this->albumID3, TestConstants::ALBUM_TITLE_3, null, $this->photoID3), + ] + )); + $responseForRoot->assertJsonMissing(['id' => $this->albumID2]); + $responseForRoot->assertJsonMissing(['id' => $this->photoID2]); + + $responseForStarred = $this->albums_tests->get(StarredAlbum::ID); + $responseForStarred->assertJson($this->generateExpectedSmartAlbumJson(true)); + $responseForStarred->assertJsonMissing(['id' => $this->albumID1]); + $responseForStarred->assertJsonMissing(['id' => $this->photoID1]); + $responseForStarred->assertJsonMissing(['id' => $this->albumID3]); + $responseForStarred->assertJsonMissing(['id' => $this->photoID3]); + + $responseForRecent = $this->albums_tests->get(RecentAlbum::ID); + $responseForRecent->assertJson($this->generateExpectedSmartAlbumJson( + true, + $this->photoID3, [ + $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_SUNSET_IMAGE, $this->photoID3, $this->albumID3), + $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_MONGOLIA_IMAGE, $this->photoID1, $this->albumID1), + ] + )); + $responseForRecent->assertJsonMissing(['id' => $this->albumID2]); + $responseForRecent->assertJsonMissing(['id' => $this->photoID2]); + + $responseForOnThisDay = $this->albums_tests->get(OnThisDayAlbum::ID); + $responseForOnThisDay->assertJson($this->generateExpectedSmartAlbumJson( + true, + $this->photoID1, [ + $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_MONGOLIA_IMAGE, $this->photoID1, $this->albumID1), + ] + )); + $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID2]); + $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID3]); + + $responseForTree = $this->root_album_tests->getTree(); + $responseForTree->assertJson($this->generateExpectedTreeJson([ + self::generateExpectedAlbumJson($this->albumID1, TestConstants::ALBUM_TITLE_1, null, $this->photoID1), + self::generateExpectedAlbumJson($this->albumID3, TestConstants::ALBUM_TITLE_3, null, $this->photoID3), + ])); + $responseForTree->assertJsonMissing(['id' => $this->albumID2]); + $responseForTree->assertJsonMissing(['id' => $this->photoID2]); + + $responseForAlbum1 = $this->albums_tests->get($this->albumID1); + $responseForAlbum1->assertJson(self::generateExpectedAlbumJson( + $this->albumID1, TestConstants::ALBUM_TITLE_1, null, $this->photoID1 + )); + $this->photos_tests->get($this->photoID1); + + $this->albums_tests->get($this->albumID2, $this->getExpectedInaccessibleHttpStatusCode(), $this->getExpectedDefaultInaccessibleMessage(), TestConstants::EXPECTED_PASSWORD_REQUIRED_MSG); + $this->photos_tests->get($this->photoID2, $this->getExpectedInaccessibleHttpStatusCode()); + + $responseForAlbum3 = $this->albums_tests->get($this->albumID3); + $responseForAlbum3->assertJson(self::generateExpectedAlbumJson( + $this->albumID3, TestConstants::ALBUM_TITLE_3, null, $this->photoID3 + )); + $this->photos_tests->get($this->photoID3); + } + + public function testPhotoInSharedPublicPasswordProtectedAlbum(): void + { + $this->preparePhotoInSharedPublicPasswordProtectedAlbum(); + + $this->ensurePhotosWereTakenOnThisDay($this->photoID1); + + $responseForRoot = $this->root_album_tests->get(); + $responseForRoot->assertJson($this->generateExpectedRootJson( + null, + null, + null, + $this->photoID1, + $this->photoID1, [ + self::generateExpectedAlbumJson($this->albumID1, TestConstants::ALBUM_TITLE_1, null, $this->photoID1), + ] + )); + + $responseForStarred = $this->albums_tests->get(StarredAlbum::ID); + $responseForStarred->assertJson($this->generateExpectedSmartAlbumJson(true)); + $responseForStarred->assertJsonMissing(['id' => $this->albumID1]); + $responseForStarred->assertJsonMissing(['id' => $this->photoID1]); + + $responseForRecent = $this->albums_tests->get(RecentAlbum::ID); + $responseForRecent->assertJson($this->generateExpectedSmartAlbumJson( + true, + $this->photoID1, [ + $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_MONGOLIA_IMAGE, $this->photoID1, $this->albumID1), + ] + )); + + $responseForOnThisDay = $this->albums_tests->get(OnThisDayAlbum::ID); + $responseForOnThisDay->assertJson($this->generateExpectedSmartAlbumJson( + true, + $this->photoID1, [ + $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_MONGOLIA_IMAGE, $this->photoID1, $this->albumID1), + ] + )); + + $responseForTree = $this->root_album_tests->getTree(); + $responseForTree->assertJson($this->generateExpectedTreeJson([ + self::generateExpectedAlbumJson($this->albumID1, TestConstants::ALBUM_TITLE_1, null, $this->photoID1), + ])); + + $responseForAlbum = $this->albums_tests->get($this->albumID1); + $responseForAlbum->assertJson($this->generateExpectedAlbumJson( + $this->albumID1, TestConstants::ALBUM_TITLE_1, null, $this->photoID1 + )); + $this->photos_tests->get($this->photoID1); + } + + public function testThreeAlbumsWithMixedSharingAndPasswordProtection(): void + { + $this->prepareThreeAlbumsWithMixedSharingAndPasswordProtection(); + + $this->ensurePhotosWereTakenOnThisDay($this->photoID2, $this->photoID3); + $this->ensurePhotosWereNotTakenOnThisDay($this->photoID1); + + $responseForRoot = $this->root_album_tests->get(); + $responseForRoot->assertJson($this->generateExpectedRootJson( + null, + null, + null, + $this->photoID1, // photo 1 is alphabetically first, as photo 3 is locked + $this->photoID2, // photo 1 was not taken on this day and photo 3 is locked + [ + $this->generateExpectedAlbumJson($this->albumID1, TestConstants::ALBUM_TITLE_1, null, $this->photoID1), + $this->generateExpectedAlbumJson($this->albumID2, TestConstants::ALBUM_TITLE_2, null, $this->photoID2), + $this->generateExpectedAlbumJson($this->albumID3, TestConstants::ALBUM_TITLE_3), // album 3 is locked, hence no thumb + ] + )); + $responseForRoot->assertJsonMissing(['id' => $this->photoID3]); + + $responseForStarred = $this->albums_tests->get(StarredAlbum::ID); + $responseForStarred->assertJson($this->generateExpectedSmartAlbumJson(true)); + $responseForStarred->assertJsonMissing(['id' => $this->albumID1]); + $responseForStarred->assertJsonMissing(['id' => $this->photoID1]); + $responseForStarred->assertJsonMissing(['id' => $this->albumID2]); + $responseForStarred->assertJsonMissing(['id' => $this->photoID2]); + $responseForStarred->assertJsonMissing(['id' => $this->albumID3]); + $responseForStarred->assertJsonMissing(['id' => $this->photoID3]); + + $responseForRecent = $this->albums_tests->get(RecentAlbum::ID); + $responseForRecent->assertJson($this->generateExpectedSmartAlbumJson( + true, + $this->photoID1, [ // photo 1 is alphabetically first, as photo 3 is locked + $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_NIGHT_IMAGE, $this->photoID1, $this->albumID1), + $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_TRAIN_IMAGE, $this->photoID2, $this->albumID2), + ] + )); + $responseForRecent->assertJsonMissing(['id' => $this->albumID3]); + $responseForRecent->assertJsonMissing(['id' => $this->photoID3]); + + $responseForOnThisDay = $this->albums_tests->get(OnThisDayAlbum::ID); + $responseForOnThisDay->assertJson($this->generateExpectedSmartAlbumJson( + true, + $this->photoID2, [ + $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_TRAIN_IMAGE, $this->photoID2, $this->albumID2), + ] + )); + $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID1]); + $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID3]); + + // TODO: Should public and password-protected albums appear in tree? Regression? + $responseForTree = $this->root_album_tests->getTree(); + $responseForTree->assertJson($this->generateExpectedTreeJson([ + $this->generateExpectedAlbumJson($this->albumID1, TestConstants::ALBUM_TITLE_1, null, $this->photoID1), + $this->generateExpectedAlbumJson($this->albumID2, TestConstants::ALBUM_TITLE_2, null, $this->photoID2), + ])); + $responseForTree->assertJsonMissing(['id' => $this->albumID3]); + $responseForTree->assertJsonMissing(['id' => $this->photoID3]); + + $responseForAlbum1 = $this->albums_tests->get($this->albumID1); + $responseForAlbum1->assertJson($this->generateExpectedAlbumJson( + $this->albumID1, TestConstants::ALBUM_TITLE_1, null, $this->photoID1 + )); + $this->photos_tests->get($this->photoID1); + $responseForAlbum2 = $this->albums_tests->get($this->albumID2); + $responseForAlbum2->assertJson($this->generateExpectedAlbumJson( + $this->albumID2, TestConstants::ALBUM_TITLE_2, null, $this->photoID2 + )); + $this->photos_tests->get($this->photoID2); + $this->albums_tests->get($this->albumID3, $this->getExpectedInaccessibleHttpStatusCode(), TestConstants::EXPECTED_PASSWORD_REQUIRED_MSG, $this->getExpectedDefaultInaccessibleMessage()); + $this->photos_tests->get($this->photoID3, $this->getExpectedInaccessibleHttpStatusCode()); + } + + public function testThreeUnlockedAlbumsWithMixedSharingAndPasswordProtection(): void + { + $this->prepareThreeAlbumsWithMixedSharingAndPasswordProtection(); + $this->albums_tests->unlock($this->albumID3, TestConstants::ALBUM_PWD_1); + + $this->ensurePhotosWereTakenOnThisDay($this->photoID2); + $this->ensurePhotosWereNotTakenOnThisDay($this->photoID1, $this->photoID3); + + $responseForRoot = $this->root_album_tests->get(); + $responseForRoot->assertJson($this->generateExpectedRootJson( + null, + null, + null, + $this->photoID3, // photo 3 is alphabetically first + $this->photoID2, // photo 2 was taken on this day + [ + $this->generateExpectedAlbumJson($this->albumID1, TestConstants::ALBUM_TITLE_1, null, $this->photoID1), + $this->generateExpectedAlbumJson($this->albumID2, TestConstants::ALBUM_TITLE_2, null, $this->photoID2), + $this->generateExpectedAlbumJson($this->albumID3, TestConstants::ALBUM_TITLE_3, null, $this->photoID3), + ] + )); + + $responseForStarred = $this->albums_tests->get(StarredAlbum::ID); + $responseForStarred->assertJson($this->generateExpectedSmartAlbumJson(true)); + $responseForStarred->assertJsonMissing(['id' => $this->albumID1]); + $responseForStarred->assertJsonMissing(['id' => $this->photoID1]); + $responseForStarred->assertJsonMissing(['id' => $this->albumID2]); + $responseForStarred->assertJsonMissing(['id' => $this->photoID2]); + $responseForStarred->assertJsonMissing(['id' => $this->albumID3]); + $responseForStarred->assertJsonMissing(['id' => $this->photoID3]); + + $responseForRecent = $this->albums_tests->get(RecentAlbum::ID); + $responseForRecent->assertJson($this->generateExpectedSmartAlbumJson( + true, + $this->photoID3, [ // photo 1 is alphabetically first + $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_MONGOLIA_IMAGE, $this->photoID3, $this->albumID3), + $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_NIGHT_IMAGE, $this->photoID1, $this->albumID1), + $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_TRAIN_IMAGE, $this->photoID2, $this->albumID2), + ] + )); + + $responseForOnThisDay = $this->albums_tests->get(OnThisDayAlbum::ID); + $responseForOnThisDay->assertJson($this->generateExpectedSmartAlbumJson( + true, + $this->photoID2, [ + $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_TRAIN_IMAGE, $this->photoID2, $this->albumID2), + ] + )); + $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID1]); + $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID3]); + + $responseForTree = $this->root_album_tests->getTree(); + $responseForTree->assertJson($this->generateExpectedTreeJson([ + $this->generateExpectedAlbumJson($this->albumID1, TestConstants::ALBUM_TITLE_1, null, $this->photoID1), + $this->generateExpectedAlbumJson($this->albumID2, TestConstants::ALBUM_TITLE_2, null, $this->photoID2), + $this->generateExpectedAlbumJson($this->albumID3, TestConstants::ALBUM_TITLE_3, null, $this->photoID3), + ])); + + $responseForAlbum1 = $this->albums_tests->get($this->albumID1); + $responseForAlbum1->assertJson($this->generateExpectedAlbumJson( + $this->albumID1, TestConstants::ALBUM_TITLE_1, null, $this->photoID1 + )); + $this->photos_tests->get($this->photoID1); + $responseForAlbum2 = $this->albums_tests->get($this->albumID2); + $responseForAlbum2->assertJson($this->generateExpectedAlbumJson( + $this->albumID2, TestConstants::ALBUM_TITLE_2, null, $this->photoID2 + )); + $this->photos_tests->get($this->photoID2); + $responseForAlbum3 = $this->albums_tests->get($this->albumID3); + $responseForAlbum3->assertJson($this->generateExpectedAlbumJson( + $this->albumID3, TestConstants::ALBUM_TITLE_3, null, $this->photoID3 + )); + $this->photos_tests->get($this->photoID3); + } + + protected function generateExpectedRootJson( + ?string $unsortedAlbumThumbID = null, + ?string $starredAlbumThumbID = null, + ?string $publicAlbumThumbID = null, + ?string $recentAlbumThumbID = null, + ?string $onThisDayAlbumThumbID = null, + array $expectedAlbumJson = [] + ): array { + return [ + 'smart_albums' => [ + UnsortedAlbum::ID => ['thumb' => $this->generateExpectedThumbJson($unsortedAlbumThumbID)], + StarredAlbum::ID => ['thumb' => $this->generateExpectedThumbJson($starredAlbumThumbID)], + PublicAlbum::ID => ['thumb' => $this->generateExpectedThumbJson($publicAlbumThumbID)], + RecentAlbum::ID => ['thumb' => $this->generateExpectedThumbJson($recentAlbumThumbID)], + OnThisDayAlbum::ID => ['thumb' => $this->generateExpectedThumbJson($onThisDayAlbumThumbID)], + ], + 'tag_albums' => [], + 'albums' => [], + 'shared_albums' => $expectedAlbumJson, + ]; + } + + protected function generateUnexpectedRootJson( + ?string $unsortedAlbumThumbID = null, + ?string $starredAlbumThumbID = null, + ?string $publicAlbumThumbID = null, + ?string $recentAlbumThumbID = null, + array $expectedAlbumJson = [] + ): ?array { + return null; + } + + protected function generateExpectedTreeJson(array $expectedAlbums = []): array + { + return [ + 'albums' => [], + 'shared_albums' => $expectedAlbums, + ]; + } + + protected function performPostPreparatorySteps(): void + { + Auth::loginUsingId($this->userID); + } + + protected function getExpectedInaccessibleHttpStatusCode(): int + { + return 403; + } + + protected function getExpectedDefaultInaccessibleMessage(): string + { + return TestConstants::EXPECTED_FORBIDDEN_MSG; + } + + /** + * Ensures that the user does not the unsorted public photos as covers nor + * inside "Recent", "On This Day" and "Favorites" (as public search is disabled). + * The user can access the public photo nonetheless, but gets + * "403 - Forbidden" for the other. + * + * See {@link BaseSharingTestScenarios::prepareUnsortedPublicAndPrivatePhoto()} + * for description of scenario. + * + * @return void + */ + public function testUnsortedPublicAndPrivatePhoto(): void + { + $this->prepareUnsortedPublicAndPrivatePhoto(); + + $this->ensurePhotosWereTakenOnThisDay($this->photoID1, $this->photoID2); + + $responseForRoot = $this->root_album_tests->get(); + $responseForRoot->assertJson($this->generateExpectedRootJson()); + $arrayUnexpected = $this->generateUnexpectedRootJson(); + if ($arrayUnexpected !== null) { + $responseForRoot->assertJsonMissing($arrayUnexpected); + } + $responseForRoot->assertJsonMissing(['id' => $this->photoID1]); + $responseForRoot->assertJsonMissing(['id' => $this->photoID2]); + + $responseForUnsorted = $this->albums_tests->get(UnsortedAlbum::ID); + $responseForUnsorted->assertJson($this->generateExpectedSmartAlbumJson(false)); + $responseForUnsorted->assertJsonMissing(['id' => $this->photoID1]); + $responseForUnsorted->assertJsonMissing(['id' => $this->photoID2]); + + $responseForRecent = $this->albums_tests->get(RecentAlbum::ID); + $responseForRecent->assertJson($this->generateExpectedSmartAlbumJson(true)); + $responseForRecent->assertJsonMissing(['id' => $this->photoID1]); + $responseForRecent->assertJsonMissing(['id' => $this->photoID2]); + + $responseForStarred = $this->albums_tests->get(StarredAlbum::ID); + $responseForStarred->assertJson($this->generateExpectedSmartAlbumJson(true)); + $responseForStarred->assertJsonMissing(['id' => $this->photoID1]); + $responseForStarred->assertJsonMissing(['id' => $this->photoID2]); + + $responseForOnThisDay = $this->albums_tests->get(OnThisDayAlbum::ID); + $responseForOnThisDay->assertJson($this->generateExpectedSmartAlbumJson(true)); + $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID1]); + $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID2]); + + // Even though the public photo is not searchable and hence does not + // show up in the smart albums, it can be fetched directly + $this->photos_tests->get($this->photoID1); + $this->photos_tests->get($this->photoID2, $this->getExpectedInaccessibleHttpStatusCode()); + } + + /** + * Ensures that the user does not see any photo, although the first is + * public (but not searchable). + * The first photo is still visible if directly accessed, but the user + * gets a `403 - Forbidden` for the album and the second photo. + * + * See + * {@link BaseSharingTestScenarios::preparePublicAndPrivatePhotoInPrivateAlbum()} + * for description of scenario. + */ + public function testPublicAndPrivatePhotoInPrivateAlbum(): void + { + $this->preparePublicAndPrivatePhotoInPrivateAlbum(); + + $this->ensurePhotosWereTakenOnThisDay($this->photoID1, $this->photoID2); + + $responseForRoot = $this->root_album_tests->get(); + $responseForRoot->assertJson($this->generateExpectedRootJson()); + $arrayUnexpected = $this->generateUnexpectedRootJson(); + if ($arrayUnexpected !== null) { + $responseForRoot->assertJsonMissing($arrayUnexpected); + } + $responseForRoot->assertJsonMissing(['id' => $this->photoID1]); + $responseForRoot->assertJsonMissing(['id' => $this->photoID2]); + + $responseForUnsorted = $this->albums_tests->get(UnsortedAlbum::ID); + $responseForUnsorted->assertJson($this->generateExpectedSmartAlbumJson(false)); + $responseForUnsorted->assertJsonMissing(['id' => $this->photoID1]); + $responseForUnsorted->assertJsonMissing(['id' => $this->photoID2]); + + $responseForRecent = $this->albums_tests->get(RecentAlbum::ID); + $responseForRecent->assertJson($this->generateExpectedSmartAlbumJson(true)); + $responseForRecent->assertJsonMissing(['id' => $this->photoID1]); + $responseForRecent->assertJsonMissing(['id' => $this->photoID2]); + + $responseForStarred = $this->albums_tests->get(StarredAlbum::ID); + $responseForStarred->assertJson($this->generateExpectedSmartAlbumJson(true)); + $responseForStarred->assertJsonMissing(['id' => $this->photoID1]); + $responseForStarred->assertJsonMissing(['id' => $this->photoID2]); + + $responseForOnThisDay = $this->albums_tests->get(OnThisDayAlbum::ID); + $responseForOnThisDay->assertJson($this->generateExpectedSmartAlbumJson(true)); + $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID1]); + $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID2]); + + $responseForTree = $this->root_album_tests->getTree(); + $responseForTree->assertJson($this->generateExpectedTreeJson()); + $responseForTree->assertJsonMissing(['id' => $this->albumID1]); + $responseForTree->assertJsonMissing(['id' => $this->photoID1]); + $responseForTree->assertJsonMissing(['id' => $this->photoID2]); + + $this->albums_tests->get($this->albumID1, $this->getExpectedInaccessibleHttpStatusCode(), $this->getExpectedDefaultInaccessibleMessage(), TestConstants::EXPECTED_PASSWORD_REQUIRED_MSG); + // Even though public search is disabled, the photo is accessible + // by its direct link, because it is public. + $this->photos_tests->get($this->photoID1); + $this->photos_tests->get($this->photoID2, $this->getExpectedInaccessibleHttpStatusCode()); + } + + public function testPublicUnsortedPhotoAndPhotoInSharedAlbum(): void + { + $this->preparePublicUnsortedPhotoAndPhotoInSharedAlbum(); + + $this->ensurePhotosWereTakenOnThisDay($this->photoID1, $this->photoID2); + + $responseForRoot = $this->root_album_tests->get(); + $responseForRoot->assertJson($this->generateExpectedRootJson( + null, + $this->photoID2, + null, + $this->photoID2, + $this->photoID2, [ + $this->generateExpectedAlbumJson($this->albumID1, TestConstants::ALBUM_TITLE_1, null, $this->photoID2), + ] + )); + $arrayUnexpected = $this->generateUnexpectedRootJson( + null, $this->photoID1, null, $this->photoID2 + ); + if ($arrayUnexpected !== null) { + $responseForRoot->assertJsonMissing($arrayUnexpected); + } + $responseForRoot->assertJsonMissing(['id' => $this->photoID1]); + + $responseForUnsorted = $this->albums_tests->get(UnsortedAlbum::ID); + $responseForUnsorted->assertJson($this->generateExpectedSmartAlbumJson(false)); + $responseForUnsorted->assertJsonMissing(['id' => $this->photoID1]); + $responseForUnsorted->assertJsonMissing(['id' => $this->photoID2]); + + $responseForRecent = $this->albums_tests->get(RecentAlbum::ID); + $responseForRecent->assertJson($this->generateExpectedSmartAlbumJson( + true, + $this->photoID2, [ + $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_MONGOLIA_IMAGE, $this->photoID2, $this->albumID1), + ] + )); + $responseForRecent->assertJsonMissing(['id' => $this->photoID1]); + + $responseForStarred = $this->albums_tests->get(StarredAlbum::ID); + $responseForStarred->assertJson($this->generateExpectedSmartAlbumJson( + true, + $this->photoID2, [ + $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_MONGOLIA_IMAGE, $this->photoID2, $this->albumID1), + ] + )); + $responseForStarred->assertJsonMissing(['id' => $this->photoID1]); + + $responseForOnThisDay = $this->albums_tests->get(OnThisDayAlbum::ID); + $responseForOnThisDay->assertJson($this->generateExpectedSmartAlbumJson(true, + $this->photoID2, [ + $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_MONGOLIA_IMAGE, $this->photoID2, $this->albumID1), + ] + )); + $responseForOnThisDay->assertJsonMissing(['id' => $this->photoID1]); + + $responseForTree = $this->root_album_tests->getTree(); + $responseForTree->assertJson($this->generateExpectedTreeJson([ + $this->generateExpectedAlbumJson($this->albumID1, TestConstants::ALBUM_TITLE_1, null, $this->photoID2), + ])); + + $responseForAlbum = $this->albums_tests->get($this->albumID1); + $responseForAlbum->assertJson([ + 'id' => $this->albumID1, + 'title' => TestConstants::ALBUM_TITLE_1, + 'policy' => ['is_public' => false], + 'thumb' => $this->generateExpectedThumbJson($this->photoID2), + 'photos' => [ + $this->generateExpectedPhotoJson(TestConstants::SAMPLE_FILE_MONGOLIA_IMAGE, $this->photoID2, $this->albumID1), + ], + ]); + + $this->photos_tests->get($this->photoID1); + $this->photos_tests->get($this->photoID2); + } +} diff --git a/tests/Feature/Traits/CatchFailures.php b/tests/Feature/Traits/CatchFailures.php index 4bb5f9553cc..db21c1367ab 100644 --- a/tests/Feature/Traits/CatchFailures.php +++ b/tests/Feature/Traits/CatchFailures.php @@ -2,6 +2,7 @@ namespace Tests\Feature\Traits; +use Illuminate\Testing\Assert as PHPUnit; use Illuminate\Testing\TestResponse; /** @@ -17,7 +18,7 @@ trait CatchFailures */ private array $catchFailureSilence = ["App\Exceptions\MediaFileOperationException"]; - protected function assertStatus(TestResponse $response, int $expectedStatusCode): void + protected function assertStatus(TestResponse $response, int|array $expectedStatusCode): void { if ($response->getStatusCode() === 500) { $exception = $response->json(); @@ -27,13 +28,16 @@ protected function assertStatus(TestResponse $response, int $expectedStatusCode) $this->trimException($exception); dump($exception); } + $expectedStatusCodeArray = is_int($expectedStatusCode) ? [$expectedStatusCode] : $expectedStatusCode; + // We remove 204 as it does not have content - if (!in_array($response->getStatusCode(), [204, 302, $expectedStatusCode], true)) { + // We remove 302 because it does not have json data. + if (!in_array($response->getStatusCode(), [204, 302, ...$expectedStatusCodeArray], true)) { $exception = $response->json(); $this->trimException($exception); dump($exception); } - $response->assertStatus($expectedStatusCode); + PHPUnit::assertContains($response->getStatusCode(), $expectedStatusCodeArray); } /** @@ -81,4 +85,14 @@ protected function assertNoContent(TestResponse $response): void { $this->assertStatus($response, 204); } + + protected function assertRedirect(TestResponse $response): void + { + $this->assertStatus($response, 302); + } + + protected function assertNotFound(TestResponse $response): void + { + $this->assertStatus($response, 404); + } } \ No newline at end of file From 573e7256e91d97eb456b01e4f7548dcc37b07ea2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Thu, 21 Dec 2023 17:14:11 +0100 Subject: [PATCH 066/209] Bye bye PHP 8.1, long live PHP 8.2 (#2060) --- .github/workflows/CICD.yml | 18 +- .phpstorm.meta.php | 77 ++ README.md | 6 +- .../Pipes/Checks/ForeignKeyListInfo.php | 6 +- .../Pipes/Checks/PHPVersionCheck.php | 6 +- app/Exceptions/Handler.php | 6 +- app/Factories/AlbumFactory.php | 19 +- .../Requests/Album/MergeAlbumsRequest.php | 12 +- app/Http/Requests/Album/MoveAlbumsRequest.php | 14 +- .../Requests/Album/SetAlbumTagsRequest.php | 8 +- app/Image/Handlers/GdHandler.php | 36 +- app/Models/Extensions/UTCBasedTimes.php | 15 +- app/SmartAlbums/OnThisDayAlbum.php | 4 +- app/SmartAlbums/PublicAlbum.php | 4 +- app/SmartAlbums/RecentAlbum.php | 4 +- app/SmartAlbums/StarredAlbum.php | 4 +- app/SmartAlbums/UnsortedAlbum.php | 4 +- composer.json | 6 +- composer.lock | 1076 +++++++++-------- phpstan.neon | 14 +- 20 files changed, 767 insertions(+), 572 deletions(-) diff --git a/.github/workflows/CICD.yml b/.github/workflows/CICD.yml index 32d559a64eb..3b914d1ab15 100644 --- a/.github/workflows/CICD.yml +++ b/.github/workflows/CICD.yml @@ -30,7 +30,7 @@ jobs: access_token: ${{ github.token }} php_syntax_errors: - name: 1️⃣ PHP 8.1 - Syntax errors + name: 1️⃣ PHP 8.2 - Syntax errors runs-on: ubuntu-latest needs: - kill_previous @@ -38,7 +38,7 @@ jobs: - name: Set up PHP uses: shivammathur/setup-php@v2 with: - php-version: 8.1 + php-version: 8.2 - name: Checkout code uses: actions/checkout@v3 @@ -50,7 +50,7 @@ jobs: run: vendor/bin/parallel-lint --exclude .git --exclude vendor . code_style_errors: - name: 2️⃣ PHP 8.1 - Code Style errors + name: 2️⃣ PHP 8.2 - Code Style errors runs-on: ubuntu-latest needs: - php_syntax_errors @@ -58,7 +58,7 @@ jobs: - name: Set up PHP uses: shivammathur/setup-php@v2 with: - php-version: 8.1 + php-version: 8.2 - name: Checkout code uses: actions/checkout@v3 @@ -70,7 +70,7 @@ jobs: run: PHP_CS_FIXER_IGNORE_ENV=1 vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.php --verbose --diff --dry-run phpstan: - name: 2️⃣ PHP 8.1 - PHPStan + name: 2️⃣ PHP 8.2 - PHPStan runs-on: ubuntu-latest needs: - php_syntax_errors @@ -81,7 +81,7 @@ jobs: - name: Setup PHP uses: shivammathur/setup-php@v2 with: - php-version: 8.1 + php-version: 8.2 coverage: none - name: Install Composer dependencies @@ -98,8 +98,8 @@ jobs: strategy: matrix: php-version: - - 8.1 - 8.2 + - 8.3 sql-versions: - mariadb - postgresql @@ -181,7 +181,7 @@ jobs: strategy: matrix: php-version: - - 8.1 + - 8.2 sql-versions: - mariadb - postgresql @@ -273,7 +273,7 @@ jobs: - name: Setup PHP uses: shivammathur/setup-php@v2 with: - php-version: 8.1 + php-version: 8.2 extensions: ${{ env.extensions }} coverage: none diff --git a/.phpstorm.meta.php b/.phpstorm.meta.php index 565cd37065a..f0dbabea643 100644 --- a/.phpstorm.meta.php +++ b/.phpstorm.meta.php @@ -46,6 +46,7 @@ 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, @@ -87,6 +88,7 @@ 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, @@ -127,10 +129,12 @@ 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, + 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -156,6 +160,7 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Opcodes\LogViewer\LogTypeRegistrar' => \Opcodes\LogViewer\LogTypeRegistrar::class, 'Spatie\ImageOptimizer\OptimizerChain' => \Spatie\ImageOptimizer\OptimizerChain::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \App\Services\Auth\SessionOrTokenGuard::class, @@ -198,6 +203,8 @@ 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, 'image-optimizer' => \Spatie\ImageOptimizer\OptimizerChain::class, 'log' => \Illuminate\Log\LogManager::class, + 'log-viewer' => \Opcodes\LogViewer\LogViewerService::class, + 'log-viewer-cache' => \Illuminate\Cache\Repository::class, 'mail.manager' => \Illuminate\Mail\MailManager::class, 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, @@ -257,6 +264,7 @@ 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, @@ -298,6 +306,7 @@ 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, @@ -338,10 +347,12 @@ 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, + 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -367,6 +378,7 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Opcodes\LogViewer\LogTypeRegistrar' => \Opcodes\LogViewer\LogTypeRegistrar::class, 'Spatie\ImageOptimizer\OptimizerChain' => \Spatie\ImageOptimizer\OptimizerChain::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \App\Services\Auth\SessionOrTokenGuard::class, @@ -409,6 +421,8 @@ 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, 'image-optimizer' => \Spatie\ImageOptimizer\OptimizerChain::class, 'log' => \Illuminate\Log\LogManager::class, + 'log-viewer' => \Opcodes\LogViewer\LogViewerService::class, + 'log-viewer-cache' => \Illuminate\Cache\Repository::class, 'mail.manager' => \Illuminate\Mail\MailManager::class, 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, @@ -468,6 +482,7 @@ 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, @@ -509,6 +524,7 @@ 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, @@ -549,10 +565,12 @@ 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, + 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -578,6 +596,7 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Opcodes\LogViewer\LogTypeRegistrar' => \Opcodes\LogViewer\LogTypeRegistrar::class, 'Spatie\ImageOptimizer\OptimizerChain' => \Spatie\ImageOptimizer\OptimizerChain::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \App\Services\Auth\SessionOrTokenGuard::class, @@ -620,6 +639,8 @@ 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, 'image-optimizer' => \Spatie\ImageOptimizer\OptimizerChain::class, 'log' => \Illuminate\Log\LogManager::class, + 'log-viewer' => \Opcodes\LogViewer\LogViewerService::class, + 'log-viewer-cache' => \Illuminate\Cache\Repository::class, 'mail.manager' => \Illuminate\Mail\MailManager::class, 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, @@ -679,6 +700,7 @@ 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, @@ -720,6 +742,7 @@ 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, @@ -760,10 +783,12 @@ 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, + 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -789,6 +814,7 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Opcodes\LogViewer\LogTypeRegistrar' => \Opcodes\LogViewer\LogTypeRegistrar::class, 'Spatie\ImageOptimizer\OptimizerChain' => \Spatie\ImageOptimizer\OptimizerChain::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \App\Services\Auth\SessionOrTokenGuard::class, @@ -831,6 +857,8 @@ 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, 'image-optimizer' => \Spatie\ImageOptimizer\OptimizerChain::class, 'log' => \Illuminate\Log\LogManager::class, + 'log-viewer' => \Opcodes\LogViewer\LogViewerService::class, + 'log-viewer-cache' => \Illuminate\Cache\Repository::class, 'mail.manager' => \Illuminate\Mail\MailManager::class, 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, @@ -890,6 +918,7 @@ 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, @@ -931,6 +960,7 @@ 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, @@ -971,10 +1001,12 @@ 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, + 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -1000,6 +1032,7 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Opcodes\LogViewer\LogTypeRegistrar' => \Opcodes\LogViewer\LogTypeRegistrar::class, 'Spatie\ImageOptimizer\OptimizerChain' => \Spatie\ImageOptimizer\OptimizerChain::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \App\Services\Auth\SessionOrTokenGuard::class, @@ -1042,6 +1075,8 @@ 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, 'image-optimizer' => \Spatie\ImageOptimizer\OptimizerChain::class, 'log' => \Illuminate\Log\LogManager::class, + 'log-viewer' => \Opcodes\LogViewer\LogViewerService::class, + 'log-viewer-cache' => \Illuminate\Cache\Repository::class, 'mail.manager' => \Illuminate\Mail\MailManager::class, 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, @@ -1101,6 +1136,7 @@ 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, @@ -1142,6 +1178,7 @@ 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, @@ -1182,10 +1219,12 @@ 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, + 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -1211,6 +1250,7 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Opcodes\LogViewer\LogTypeRegistrar' => \Opcodes\LogViewer\LogTypeRegistrar::class, 'Spatie\ImageOptimizer\OptimizerChain' => \Spatie\ImageOptimizer\OptimizerChain::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \App\Services\Auth\SessionOrTokenGuard::class, @@ -1253,6 +1293,8 @@ 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, 'image-optimizer' => \Spatie\ImageOptimizer\OptimizerChain::class, 'log' => \Illuminate\Log\LogManager::class, + 'log-viewer' => \Opcodes\LogViewer\LogViewerService::class, + 'log-viewer-cache' => \Illuminate\Cache\Repository::class, 'mail.manager' => \Illuminate\Mail\MailManager::class, 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, @@ -1312,6 +1354,7 @@ 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, @@ -1353,6 +1396,7 @@ 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, @@ -1393,10 +1437,12 @@ 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, + 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -1422,6 +1468,7 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Opcodes\LogViewer\LogTypeRegistrar' => \Opcodes\LogViewer\LogTypeRegistrar::class, 'Spatie\ImageOptimizer\OptimizerChain' => \Spatie\ImageOptimizer\OptimizerChain::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \App\Services\Auth\SessionOrTokenGuard::class, @@ -1464,6 +1511,8 @@ 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, 'image-optimizer' => \Spatie\ImageOptimizer\OptimizerChain::class, 'log' => \Illuminate\Log\LogManager::class, + 'log-viewer' => \Opcodes\LogViewer\LogViewerService::class, + 'log-viewer-cache' => \Illuminate\Cache\Repository::class, 'mail.manager' => \Illuminate\Mail\MailManager::class, 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, @@ -1523,6 +1572,7 @@ 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, @@ -1564,6 +1614,7 @@ 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, @@ -1604,10 +1655,12 @@ 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, + 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -1633,6 +1686,7 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Opcodes\LogViewer\LogTypeRegistrar' => \Opcodes\LogViewer\LogTypeRegistrar::class, 'Spatie\ImageOptimizer\OptimizerChain' => \Spatie\ImageOptimizer\OptimizerChain::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \App\Services\Auth\SessionOrTokenGuard::class, @@ -1675,6 +1729,8 @@ 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, 'image-optimizer' => \Spatie\ImageOptimizer\OptimizerChain::class, 'log' => \Illuminate\Log\LogManager::class, + 'log-viewer' => \Opcodes\LogViewer\LogViewerService::class, + 'log-viewer-cache' => \Illuminate\Cache\Repository::class, 'mail.manager' => \Illuminate\Mail\MailManager::class, 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, @@ -1734,6 +1790,7 @@ 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, @@ -1775,6 +1832,7 @@ 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, @@ -1815,10 +1873,12 @@ 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, + 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -1844,6 +1904,7 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Opcodes\LogViewer\LogTypeRegistrar' => \Opcodes\LogViewer\LogTypeRegistrar::class, 'Spatie\ImageOptimizer\OptimizerChain' => \Spatie\ImageOptimizer\OptimizerChain::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \App\Services\Auth\SessionOrTokenGuard::class, @@ -1886,6 +1947,8 @@ 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, 'image-optimizer' => \Spatie\ImageOptimizer\OptimizerChain::class, 'log' => \Illuminate\Log\LogManager::class, + 'log-viewer' => \Opcodes\LogViewer\LogViewerService::class, + 'log-viewer-cache' => \Illuminate\Cache\Repository::class, 'mail.manager' => \Illuminate\Mail\MailManager::class, 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, @@ -1945,6 +2008,7 @@ 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, @@ -1986,6 +2050,7 @@ 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, @@ -2026,10 +2091,12 @@ 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, + 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -2055,6 +2122,7 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Opcodes\LogViewer\LogTypeRegistrar' => \Opcodes\LogViewer\LogTypeRegistrar::class, 'Spatie\ImageOptimizer\OptimizerChain' => \Spatie\ImageOptimizer\OptimizerChain::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \App\Services\Auth\SessionOrTokenGuard::class, @@ -2097,6 +2165,8 @@ 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, 'image-optimizer' => \Spatie\ImageOptimizer\OptimizerChain::class, 'log' => \Illuminate\Log\LogManager::class, + 'log-viewer' => \Opcodes\LogViewer\LogViewerService::class, + 'log-viewer-cache' => \Illuminate\Cache\Repository::class, 'mail.manager' => \Illuminate\Mail\MailManager::class, 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, @@ -2156,6 +2226,7 @@ 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, 'Illuminate\Console\Scheduling\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::class, 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleInterruptCommand' => \Illuminate\Console\Scheduling\ScheduleInterruptCommand::class, 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, @@ -2197,6 +2268,7 @@ 'Illuminate\Foundation\Console\ComponentMakeCommand' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, 'Illuminate\Foundation\Console\ConfigCacheCommand' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, 'Illuminate\Foundation\Console\ConfigClearCommand' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'Illuminate\Foundation\Console\ConfigShowCommand' => \Illuminate\Foundation\Console\ConfigShowCommand::class, 'Illuminate\Foundation\Console\ConsoleMakeCommand' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, 'Illuminate\Foundation\Console\DocsCommand' => \Illuminate\Foundation\Console\DocsCommand::class, 'Illuminate\Foundation\Console\DownCommand' => \Illuminate\Foundation\Console\DownCommand::class, @@ -2237,10 +2309,12 @@ 'Illuminate\Foundation\Console\VendorPublishCommand' => \Illuminate\Foundation\Console\VendorPublishCommand::class, 'Illuminate\Foundation\Console\ViewCacheCommand' => \Illuminate\Foundation\Console\ViewCacheCommand::class, 'Illuminate\Foundation\Console\ViewClearCommand' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'Illuminate\Foundation\Console\ViewMakeCommand' => \Illuminate\Foundation\Console\ViewMakeCommand::class, 'Illuminate\Foundation\MaintenanceModeManager' => \Illuminate\Foundation\MaintenanceModeManager::class, 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, 'Illuminate\Foundation\Vite' => \Illuminate\Foundation\Vite::class, + 'Illuminate\Http\Client\Factory' => \Illuminate\Http\Client\Factory::class, 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, 'Illuminate\Notifications\Console\NotificationTableCommand' => \Illuminate\Notifications\Console\NotificationTableCommand::class, @@ -2266,6 +2340,7 @@ 'Illuminate\Session\Console\SessionTableCommand' => \Illuminate\Session\Console\SessionTableCommand::class, 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Opcodes\LogViewer\LogTypeRegistrar' => \Opcodes\LogViewer\LogTypeRegistrar::class, 'Spatie\ImageOptimizer\OptimizerChain' => \Spatie\ImageOptimizer\OptimizerChain::class, 'auth' => \Illuminate\Auth\AuthManager::class, 'auth.driver' => \App\Services\Auth\SessionOrTokenGuard::class, @@ -2308,6 +2383,8 @@ 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, 'image-optimizer' => \Spatie\ImageOptimizer\OptimizerChain::class, 'log' => \Illuminate\Log\LogManager::class, + 'log-viewer' => \Opcodes\LogViewer\LogViewerService::class, + 'log-viewer-cache' => \Illuminate\Cache\Repository::class, 'mail.manager' => \Illuminate\Mail\MailManager::class, 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, diff --git a/README.md b/README.md index 906b41577b6..a24d88bb2fe 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@

@LycheeOrg

[![GitHub Release][release-shield]](https://github.com/LycheeOrg/Lychee/releases) -[![PHP 8.1 & 8.2][php-shield]](https://lycheeorg.github.io/docs/#server-requirements) +[![PHP 8.2 & 8.3][php-shield]](https://lycheeorg.github.io/docs/#server-requirements) [![MIT License][license-shield]](https://github.com/LycheeOrg/Lychee/blob/master/LICENSE) [![Downloads][download-shield]](https://github.com/LycheeOrg/Lychee/releases)
@@ -32,7 +32,7 @@ Lychee is a free photo-management tool, which runs on your server or web-space. ## Installation -To run Lychee, everything you need is a web-server with PHP 8.1 or later and a database (MySQL/MariaDB, PostgreSQL or SQLite). Follow the instructions to install Lychee on your server. This version of Lychee is built on the Laravel framework. To install: +To run Lychee, everything you need is a web-server with PHP 8.2 or later and a database (MySQL/MariaDB, PostgreSQL or SQLite). Follow the instructions to install Lychee on your server. This version of Lychee is built on the Laravel framework. To install: 1. Clone this repo to your server and set the web root to `lychee/public` 2. Run `composer install --no-dev` to install dependencies @@ -96,7 +96,7 @@ We would like to thank Jetbrains for supporting us with their [Open Source Devel [build-status-shield]: https://img.shields.io/github/actions/workflow/status/LycheeOrg/Lychee/CICD.yml?branch=master [codecov-shield]: https://codecov.io/gh/LycheeOrg/Lychee/branch/master/graph/badge.svg [release-shield]: https://img.shields.io/github/release/LycheeOrg/Lychee.svg -[php-shield]: https://img.shields.io/badge/PHP-8.1%20|%208.2-blue +[php-shield]: https://img.shields.io/badge/PHP-8.2%20|%208.3-blue [license-shield]: https://img.shields.io/github/license/LycheeOrg/Lychee.svg [cii-shield]: https://img.shields.io/cii/summary/2855.svg [sonar-shield]: https://sonarcloud.io/api/project_badges/measure?project=LycheeOrg_Lychee-Laravel&metric=alert_status diff --git a/app/Actions/Diagnostics/Pipes/Checks/ForeignKeyListInfo.php b/app/Actions/Diagnostics/Pipes/Checks/ForeignKeyListInfo.php index 1b94b74af78..f374689eda3 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/ForeignKeyListInfo.php +++ b/app/Actions/Diagnostics/Pipes/Checks/ForeignKeyListInfo.php @@ -35,8 +35,7 @@ private function sqlite(array &$data): void $fks = DB::select("SELECT m.name , p.* FROM sqlite_master m JOIN pragma_foreign_key_list(m.name) p ON m.name != p.\"table\" WHERE m.type = 'table' ORDER BY m.name;"); foreach ($fks as $fk) { - /** @phpstan-ignore-next-line */ - $data[] = sprintf('Foreign key: %-30s → %-20s : %s', $fk->name . '.' . $fk->from, $fk->table . '.' . $fk->to, $fk->on_update); + $data[] = sprintf('Foreign key: %-30s → %-20s : %s', $fk->name . '.' . $fk->from, $fk->table . '.' . $fk->to, strval($fk->on_update)); } } @@ -51,11 +50,10 @@ private function mysql(array &$data): void order by fks.constraint_schema, fks.table_name; '); foreach ($fks as $fk) { - /** @phpstan-ignore-next-line */ $data[] = sprintf('Foreign key: %-30s → %-20s : %s', $fk->TABLE_NAME . '.' . $fk->COLUMN_NAME, $fk->REFERENCED_TABLE_NAME . '.' . $fk->REFERENCED_COLUMN_NAME, - $fk->UPDATE_RULE); + strval($fk->UPDATE_RULE)); } } diff --git a/app/Actions/Diagnostics/Pipes/Checks/PHPVersionCheck.php b/app/Actions/Diagnostics/Pipes/Checks/PHPVersionCheck.php index 276edbacc19..213da551750 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/PHPVersionCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/PHPVersionCheck.php @@ -11,9 +11,9 @@ class PHPVersionCheck implements DiagnosticPipe { // We only support the actively supported version of php. // See here: https://www.php.net/supported-versions.php - public const PHP_ERROR = 8.0; - public const PHP_WARNING = 8.1; - public const PHP_LATEST = 8.2; + public const PHP_ERROR = 8.1; + public const PHP_WARNING = 8.2; + public const PHP_LATEST = 8.3; /** * {@inheritDoc} diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 20ad4de790d..7faff50ac37 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -234,11 +234,7 @@ protected function prepareResponse($request, \Throwable $e): RedirectResponse|Re $e = new HttpException(500, $e->getMessage(), $e); } - // `renderHttpException` expects `$e` to be an instance of - // `HttpExceptionInterface`. - // This is ensured by `isHttpException` above, but PHPStan does not - // understand that. - // @phpstan-ignore-next-line + /** @var HttpExceptionInterface $e */ return $this->toIlluminateResponse($this->renderHttpException($e), $e); } diff --git a/app/Factories/AlbumFactory.php b/app/Factories/AlbumFactory.php index 040d653e061..11a0bc3a0e7 100644 --- a/app/Factories/AlbumFactory.php +++ b/app/Factories/AlbumFactory.php @@ -21,21 +21,12 @@ class AlbumFactory { - // PHP 8.2 - // public const BUILTIN_SMARTS_CLASS = [ - // SmartAlbumType::UNSORTED->value => UnsortedAlbum::class, - // SmartAlbumType::STARRED->value => StarredAlbum::class, - // SmartAlbumType::PUBLIC->value => PublicAlbum::class, - // SmartAlbumType::RECENT->value => RecentAlbum::class, - // SmartAlbumType::ON_THIS_DAY->value => OnThisDayAlbum::class, - // ]; - public const BUILTIN_SMARTS_CLASS = [ - 'unsorted' => UnsortedAlbum::class, - 'starred' => StarredAlbum::class, - 'public' => PublicAlbum::class, - 'recent' => RecentAlbum::class, - 'on_this_day' => OnThisDayAlbum::class, + SmartAlbumType::UNSORTED->value => UnsortedAlbum::class, + SmartAlbumType::STARRED->value => StarredAlbum::class, + SmartAlbumType::PUBLIC->value => PublicAlbum::class, + SmartAlbumType::RECENT->value => RecentAlbum::class, + SmartAlbumType::ON_THIS_DAY->value => OnThisDayAlbum::class, ]; /** diff --git a/app/Http/Requests/Album/MergeAlbumsRequest.php b/app/Http/Requests/Album/MergeAlbumsRequest.php index 5ba0514bda3..6ee9ba8987f 100644 --- a/app/Http/Requests/Album/MergeAlbumsRequest.php +++ b/app/Http/Requests/Album/MergeAlbumsRequest.php @@ -35,14 +35,14 @@ public function rules(): array */ protected function processValidatedValues(array $values, array $files): void { - $this->album = Album::query()->findOrFail($values[RequestAttribute::ALBUM_ID_ATTRIBUTE]); - // `findOrFail` returns a union type, but we know that it returns the - // correct collection in this case - // TODO: As part of our `FixedQueryBuilder` we should also consider adding a method `findManyOrFail` which does not return an union type, but only a `Collection`. - // This would avoid using phpstan-ignore-next-line here and in many similar cases. + /** @var string $id */ + $id = $values[RequestAttribute::ALBUM_ID_ATTRIBUTE]; + /** @var array $ids */ + $ids = $values[RequestAttribute::ALBUM_IDS_ATTRIBUTE]; + $this->album = Album::query()->findOrFail($id); // @phpstan-ignore-next-line $this->albums = Album::query() ->with(['children']) - ->findOrFail($values[RequestAttribute::ALBUM_IDS_ATTRIBUTE]); + ->findOrFail($ids); } } diff --git a/app/Http/Requests/Album/MoveAlbumsRequest.php b/app/Http/Requests/Album/MoveAlbumsRequest.php index 52bca816aed..d3b2e98cca4 100644 --- a/app/Http/Requests/Album/MoveAlbumsRequest.php +++ b/app/Http/Requests/Album/MoveAlbumsRequest.php @@ -35,13 +35,13 @@ public function rules(): array */ protected function processValidatedValues(array $values, array $files): void { - $targetAlbumID = $values[RequestAttribute::ALBUM_ID_ATTRIBUTE]; - $this->album = $targetAlbumID === null ? + /** @var string|null $id */ + $id = $values[RequestAttribute::ALBUM_ID_ATTRIBUTE]; + /** @var array $ids */ + $ids = $values[RequestAttribute::ALBUM_IDS_ATTRIBUTE]; + $this->album = $id === null ? null : - Album::query()->findOrFail($targetAlbumID); - // `findOrFail` returns a union type, but we know that it returns the - // correct collection in this case - // @phpstan-ignore-next-line - $this->albums = Album::query()->findOrFail($values[RequestAttribute::ALBUM_IDS_ATTRIBUTE]); + Album::findOrFail($id); + $this->albums = Album::findOrFail($ids); } } diff --git a/app/Http/Requests/Album/SetAlbumTagsRequest.php b/app/Http/Requests/Album/SetAlbumTagsRequest.php index 695e99f66f2..1a5c4a787fb 100644 --- a/app/Http/Requests/Album/SetAlbumTagsRequest.php +++ b/app/Http/Requests/Album/SetAlbumTagsRequest.php @@ -31,11 +31,9 @@ public function rules(): array */ protected function processValidatedValues(array $values, array $files): void { - // `findOrFail` returns the union `TagAlbum|Collectionalbum = TagAlbum::query()->findOrFail($values[RequestAttribute::ALBUM_ID_ATTRIBUTE]); + /** @var string $id */ + $id = $values[RequestAttribute::ALBUM_ID_ATTRIBUTE]; + $this->album = TagAlbum::query()->findOrFail($id); $this->tags = $values[RequestAttribute::SHOW_TAGS_ATTRIBUTE]; } } \ No newline at end of file diff --git a/app/Image/Handlers/GdHandler.php b/app/Image/Handlers/GdHandler.php index fbdc051006f..9feb0adf1b4 100644 --- a/app/Image/Handlers/GdHandler.php +++ b/app/Image/Handlers/GdHandler.php @@ -22,7 +22,6 @@ use function Safe\imagegif; use function Safe\imagejpeg; use function Safe\imagepng; -use function Safe\imagerotate; use function Safe\imagesx; use function Safe\imagesy; use function Safe\imagewebp; @@ -280,7 +279,7 @@ private function autoRotate(int $orientation): void }; if ($angle !== 0) { - $this->gdImage = imagerotate($this->gdImage, $angle, 0); + $this->gdImage = $this->imagerotate($this->gdImage, $angle, 0); } if ($flip !== 0) { @@ -374,7 +373,7 @@ public function cloneAndCrop(ImageDimension $dstDim): ImageHandlerInterface public function rotate(int $angle): ImageDimension { try { - $this->gdImage = imagerotate($this->gdImage, -$angle, 0); + $this->gdImage = $this->imagerotate($this->gdImage, -$angle, 0); return $this->getDimensions(); } catch (\ErrorException $e) { @@ -455,4 +454,35 @@ public function isLoaded(): bool { return $this->gdImageType !== 0 && $this->gdImage !== null; } + + /** + * CORRECTED from Safe/imagerotate. + * + * Rotates the image image using the given + * angle in degrees. + * + * The center of rotation is the center of the image, and the rotated + * image may have different dimensions than the original image. + * + * @param \GdImage $image a GdImage object, returned by one of the image creation functions, + * such as imagecreatetruecolor + * @param float $angle Rotation angle, in degrees. The rotation angle is interpreted as the + * number of degrees to rotate the image anticlockwise. + * @param int $background_color Specifies the color of the uncovered zone after the rotation + * + * @return \GdImage returns an image object for the rotated image + * + * @throws ImageException + */ + private function imagerotate($image, float $angle, int $background_color) + { + error_clear_last(); + // @phpstan-ignore-next-line + $safeResult = \imagerotate($image, $angle, $background_color); + if ($safeResult === false) { + throw ImageException::createFromPhpError(); + } + + return $safeResult; + } } diff --git a/app/Models/Extensions/UTCBasedTimes.php b/app/Models/Extensions/UTCBasedTimes.php index 89deeb9802a..ba8b0fb11e4 100644 --- a/app/Models/Extensions/UTCBasedTimes.php +++ b/app/Models/Extensions/UTCBasedTimes.php @@ -2,6 +2,7 @@ namespace App\Models\Extensions; +use App\Exceptions\Internal\LycheeLogicException; use Carbon\CarbonInterface; use Carbon\Exceptions\InvalidTimeZoneException; use Illuminate\Support\Carbon; @@ -81,10 +82,14 @@ public function fromDateTime($value): ?string // If $value is already an instance of Carbon, the method returns a // deep copy, hence it is safe to change the timezone below without // altering the original object + if ($value === null || $value === '') { + return null; + } + $carbonTime = $this->asDateTime($value); - $carbonTime?->setTimezone(self::$DB_TIMEZONE_NAME); + $carbonTime->setTimezone(self::$DB_TIMEZONE_NAME); - return $carbonTime?->format(self::$DB_DATETIME_FORMAT); + return $carbonTime->format(self::$DB_DATETIME_FORMAT); } /** @@ -123,14 +128,14 @@ public function fromDateTime($value): ?string * * @param mixed $value * - * @return Carbon|null + * @return Carbon * * @throws InvalidTimeZoneException */ - public function asDateTime($value): ?Carbon + public function asDateTime($value): Carbon { if ($value === null || $value === '') { - return null; + throw new LycheeLogicException('asDateTime called on null or empty string'); } // If this value is already a Carbon instance, we shall just return it as is. diff --git a/app/SmartAlbums/OnThisDayAlbum.php b/app/SmartAlbums/OnThisDayAlbum.php index 395dec66e77..68e86619be1 100644 --- a/app/SmartAlbums/OnThisDayAlbum.php +++ b/app/SmartAlbums/OnThisDayAlbum.php @@ -13,9 +13,7 @@ class OnThisDayAlbum extends BaseSmartAlbum { private static ?self $instance = null; - // PHP 8.2 - // public const ID = SmartAlbumType::ON_THIS_DAY->value; - public const ID = 'on_this_day'; + public const ID = SmartAlbumType::ON_THIS_DAY->value; /** * @throws InvalidFormatException diff --git a/app/SmartAlbums/PublicAlbum.php b/app/SmartAlbums/PublicAlbum.php index a4d834ee4ff..b494ef1126c 100644 --- a/app/SmartAlbums/PublicAlbum.php +++ b/app/SmartAlbums/PublicAlbum.php @@ -27,9 +27,7 @@ class PublicAlbum extends BaseSmartAlbum { private static ?self $instance = null; - // PHP 8.2 - // public const ID = SmartAlbumType::PUBLIC->value; - public const ID = 'public'; + public const ID = SmartAlbumType::PUBLIC->value; /** * Constructor. diff --git a/app/SmartAlbums/RecentAlbum.php b/app/SmartAlbums/RecentAlbum.php index cd034eff91b..2f688c2e172 100644 --- a/app/SmartAlbums/RecentAlbum.php +++ b/app/SmartAlbums/RecentAlbum.php @@ -14,9 +14,7 @@ class RecentAlbum extends BaseSmartAlbum { private static ?self $instance = null; - // PHP 8.2 - // public const ID = SmartAlbumType::RECENT->value; - public const ID = 'recent'; + public const ID = SmartAlbumType::RECENT->value; /** * @throws InvalidFormatException diff --git a/app/SmartAlbums/StarredAlbum.php b/app/SmartAlbums/StarredAlbum.php index 6d219c506be..293b1f701ff 100644 --- a/app/SmartAlbums/StarredAlbum.php +++ b/app/SmartAlbums/StarredAlbum.php @@ -10,9 +10,7 @@ class StarredAlbum extends BaseSmartAlbum { private static ?self $instance = null; - // PHP 8.2 - // public const ID = SmartAlbumType::STARRED->value; - public const ID = 'starred'; + public const ID = SmartAlbumType::STARRED->value; /** * @throws ConfigurationKeyMissingException diff --git a/app/SmartAlbums/UnsortedAlbum.php b/app/SmartAlbums/UnsortedAlbum.php index a65cf4d7fcb..1aade470113 100644 --- a/app/SmartAlbums/UnsortedAlbum.php +++ b/app/SmartAlbums/UnsortedAlbum.php @@ -10,9 +10,7 @@ class UnsortedAlbum extends BaseSmartAlbum { private static ?self $instance = null; - // PHP 8.2 - // public const ID = SmartAlbumType::UNSORTED->value; - public const ID = 'unsorted'; + public const ID = SmartAlbumType::UNSORTED->value; /** * @throws ConfigurationKeyMissingException diff --git a/composer.json b/composer.json index b043057f2ef..ada197ff7b9 100644 --- a/composer.json +++ b/composer.json @@ -33,7 +33,7 @@ "license": "MIT", "type": "project", "require": { - "php": "^8.1", + "php": "^8.2", "ext-bcmath": "*", "ext-ctype": "*", "ext-exif": "*", @@ -77,7 +77,7 @@ "itsgoingd/clockwork": "^5.1", "lychee-org/phpstan-lychee": "^v1.0.1", "mockery/mockery": "^1.5", - "nunomaduro/larastan": "^2.0", + "larastan/larastan": "^2.0", "php-parallel-lint/php-parallel-lint": "^1.3", "phpunit/phpunit": "^10.0" }, @@ -120,7 +120,7 @@ }, "config": { "platform": { - "php": "8.1" + "php": "8.2" }, "preferred-install": "dist", "sort-packages": true, diff --git a/composer.lock b/composer.lock index a5a55744392..3b562979542 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "faedff743ded3608ec8c9f03fd8c2e13", + "content-hash": "b158ae44fc79994db940f20d61f53fd8", "packages": [ { "name": "bepsvpt/secure-headers", @@ -139,25 +139,94 @@ ], "time": "2023-01-15T23:15:59+00:00" }, + { + "name": "carbonphp/carbon-doctrine-types", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "conflict": { + "doctrine/dbal": "<3.7.0 || >=4.0.0" + }, + "require-dev": { + "doctrine/dbal": "^3.7.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.1.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2023-12-11T17:09:12+00:00" + }, { "name": "clue/stream-filter", - "version": "v1.6.0", + "version": "v1.7.0", "source": { "type": "git", "url": "https://github.com/clue/stream-filter.git", - "reference": "d6169430c7731d8509da7aecd0af756a5747b78e" + "reference": "049509fef80032cb3f051595029ab75b49a3c2f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/clue/stream-filter/zipball/d6169430c7731d8509da7aecd0af756a5747b78e", - "reference": "d6169430c7731d8509da7aecd0af756a5747b78e", + "url": "https://api.github.com/repos/clue/stream-filter/zipball/049509fef80032cb3f051595029ab75b49a3c2f7", + "reference": "049509fef80032cb3f051595029ab75b49a3c2f7", "shasum": "" }, "require": { "php": ">=5.3" }, "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.36" + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" }, "type": "library", "autoload": { @@ -179,7 +248,7 @@ } ], "description": "A simple and modern approach to stream filtering in PHP", - "homepage": "https://github.com/clue/php-stream-filter", + "homepage": "https://github.com/clue/stream-filter", "keywords": [ "bucket brigade", "callback", @@ -191,7 +260,7 @@ ], "support": { "issues": "https://github.com/clue/stream-filter/issues", - "source": "https://github.com/clue/stream-filter/tree/v1.6.0" + "source": "https://github.com/clue/stream-filter/tree/v1.7.0" }, "funding": [ { @@ -203,7 +272,7 @@ "type": "github" } ], - "time": "2022-02-21T13:15:14+00:00" + "time": "2023-12-20T15:40:13+00:00" }, { "name": "dflydev/dot-access-data", @@ -1337,16 +1406,16 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.8.0", + "version": "7.8.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9" + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1110f66a6530a40fe7aea0378fe608ee2b2248f9", - "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", "shasum": "" }, "require": { @@ -1361,11 +1430,11 @@ "psr/http-client-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", + "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.29 || ^9.5.23", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -1443,7 +1512,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.8.0" + "source": "https://github.com/guzzle/guzzle/tree/7.8.1" }, "funding": [ { @@ -1459,28 +1528,28 @@ "type": "tidelift" } ], - "time": "2023-08-27T10:20:53+00:00" + "time": "2023-12-03T20:35:24+00:00" }, { "name": "guzzlehttp/promises", - "version": "2.0.1", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "111166291a0f8130081195ac4556a5587d7f1b5d" + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/111166291a0f8130081195ac4556a5587d7f1b5d", - "reference": "111166291a0f8130081195ac4556a5587d7f1b5d", + "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "type": "library", "extra": { @@ -1526,7 +1595,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.1" + "source": "https://github.com/guzzle/promises/tree/2.0.2" }, "funding": [ { @@ -1542,20 +1611,20 @@ "type": "tidelift" } ], - "time": "2023-08-03T15:11:55+00:00" + "time": "2023-12-03T20:19:20+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.6.1", + "version": "2.6.2", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727" + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/be45764272e8873c72dbe3d2edcfdfcc3bc9f727", - "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", "shasum": "" }, "require": { @@ -1569,9 +1638,9 @@ "psr/http-message-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", + "bamarni/composer-bin-plugin": "^1.8.2", "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -1642,7 +1711,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.6.1" + "source": "https://github.com/guzzle/psr7/tree/2.6.2" }, "funding": [ { @@ -1658,32 +1727,38 @@ "type": "tidelift" } ], - "time": "2023-08-27T10:13:57+00:00" + "time": "2023-12-03T20:05:35+00:00" }, { "name": "guzzlehttp/uri-template", - "version": "v1.0.2", + "version": "v1.0.3", "source": { "type": "git", "url": "https://github.com/guzzle/uri-template.git", - "reference": "61bf437fc2197f587f6857d3ff903a24f1731b5d" + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/uri-template/zipball/61bf437fc2197f587f6857d3ff903a24f1731b5d", - "reference": "61bf437fc2197f587f6857d3ff903a24f1731b5d", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/ecea8feef63bd4fef1f037ecb288386999ecc11c", + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", - "symfony/polyfill-php80": "^1.17" + "symfony/polyfill-php80": "^1.24" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", - "phpunit/phpunit": "^8.5.19 || ^9.5.8", + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", "uri-template/tests": "1.0.0" }, "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, "autoload": { "psr-4": { "GuzzleHttp\\UriTemplate\\": "src" @@ -1722,7 +1797,7 @@ ], "support": { "issues": "https://github.com/guzzle/uri-template/issues", - "source": "https://github.com/guzzle/uri-template/tree/v1.0.2" + "source": "https://github.com/guzzle/uri-template/tree/v1.0.3" }, "funding": [ { @@ -1738,7 +1813,7 @@ "type": "tidelift" } ], - "time": "2023-08-27T10:19:19+00:00" + "time": "2023-12-03T19:50:20+00:00" }, { "name": "laminas/laminas-servicemanager", @@ -2037,16 +2112,16 @@ }, { "name": "laravel/framework", - "version": "v10.33.0", + "version": "v10.38.1", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "4536872e3e5b6be51b1f655dafd12c9a4fa0cfe8" + "reference": "ced4689f495213e9d23995b36098f12a802cc15b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/4536872e3e5b6be51b1f655dafd12c9a4fa0cfe8", - "reference": "4536872e3e5b6be51b1f655dafd12c9a4fa0cfe8", + "url": "https://api.github.com/repos/laravel/framework/zipball/ced4689f495213e9d23995b36098f12a802cc15b", + "reference": "ced4689f495213e9d23995b36098f12a802cc15b", "shasum": "" }, "require": { @@ -2079,7 +2154,7 @@ "symfony/console": "^6.2", "symfony/error-handler": "^6.2", "symfony/finder": "^6.2", - "symfony/http-foundation": "^6.3", + "symfony/http-foundation": "^6.4", "symfony/http-kernel": "^6.2", "symfony/mailer": "^6.2", "symfony/mime": "^6.2", @@ -2092,6 +2167,8 @@ "voku/portable-ascii": "^2.0" }, "conflict": { + "carbonphp/carbon-doctrine-types": ">=3.0", + "doctrine/dbal": ">=4.0", "tightenco/collect": "<5.5.33" }, "provide": { @@ -2203,6 +2280,7 @@ "files": [ "src/Illuminate/Collections/helpers.php", "src/Illuminate/Events/functions.php", + "src/Illuminate/Filesystem/functions.php", "src/Illuminate/Foundation/helpers.php", "src/Illuminate/Support/helpers.php" ], @@ -2235,7 +2313,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-11-21T14:49:31+00:00" + "time": "2023-12-20T14:52:12+00:00" }, { "name": "laravel/prompts", @@ -2544,16 +2622,16 @@ }, { "name": "league/flysystem", - "version": "3.21.0", + "version": "3.23.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "a326d8a2d007e4ca327a57470846e34363789258" + "reference": "d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a326d8a2d007e4ca327a57470846e34363789258", - "reference": "a326d8a2d007e4ca327a57470846e34363789258", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc", + "reference": "d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc", "shasum": "" }, "require": { @@ -2581,7 +2659,7 @@ "friendsofphp/php-cs-fixer": "^3.5", "google/cloud-storage": "^1.23", "microsoft/azure-storage-blob": "^1.1", - "phpseclib/phpseclib": "^3.0.14", + "phpseclib/phpseclib": "^3.0.34", "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^9.5.11|^10.0", "sabre/dav": "^4.3.1" @@ -2618,7 +2696,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.21.0" + "source": "https://github.com/thephpleague/flysystem/tree/3.23.0" }, "funding": [ { @@ -2630,20 +2708,20 @@ "type": "github" } ], - "time": "2023-11-18T13:59:15+00:00" + "time": "2023-12-04T10:16:17+00:00" }, { "name": "league/flysystem-local", - "version": "3.21.0", + "version": "3.23.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-local.git", - "reference": "470eb1c09eaabd49ebd908ae06f23983ba3ecfe7" + "reference": "5cf046ba5f059460e86a997c504dd781a39a109b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/470eb1c09eaabd49ebd908ae06f23983ba3ecfe7", - "reference": "470eb1c09eaabd49ebd908ae06f23983ba3ecfe7", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/5cf046ba5f059460e86a997c504dd781a39a109b", + "reference": "5cf046ba5f059460e86a997c504dd781a39a109b", "shasum": "" }, "require": { @@ -2678,7 +2756,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem-local/issues", - "source": "https://github.com/thephpleague/flysystem-local/tree/3.21.0" + "source": "https://github.com/thephpleague/flysystem-local/tree/3.23.0" }, "funding": [ { @@ -2690,7 +2768,7 @@ "type": "github" } ], - "time": "2023-11-18T13:41:42+00:00" + "time": "2023-12-04T10:14:46+00:00" }, { "name": "league/mime-type-detection", @@ -3089,19 +3167,20 @@ }, { "name": "nesbot/carbon", - "version": "2.71.0", + "version": "2.72.1", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "98276233188583f2ff845a0f992a235472d9466a" + "reference": "2b3b3db0a2d0556a177392ff1a3bf5608fa09f78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/98276233188583f2ff845a0f992a235472d9466a", - "reference": "98276233188583f2ff845a0f992a235472d9466a", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/2b3b3db0a2d0556a177392ff1a3bf5608fa09f78", + "reference": "2b3b3db0a2d0556a177392ff1a3bf5608fa09f78", "shasum": "" }, "require": { + "carbonphp/carbon-doctrine-types": "*", "ext-json": "*", "php": "^7.1.8 || ^8.0", "psr/clock": "^1.0", @@ -3113,8 +3192,8 @@ "psr/clock-implementation": "1.0" }, "require-dev": { - "doctrine/dbal": "^2.0 || ^3.1.4", - "doctrine/orm": "^2.7", + "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", + "doctrine/orm": "^2.7 || ^3.0", "friendsofphp/php-cs-fixer": "^3.0", "kylekatarnls/multi-tester": "^2.0", "ondrejmirtes/better-reflection": "*", @@ -3191,7 +3270,7 @@ "type": "tidelift" } ], - "time": "2023-09-25T11:31:05+00:00" + "time": "2023-12-08T23:47:49+00:00" }, { "name": "nette/schema", @@ -3677,16 +3756,16 @@ }, { "name": "php-http/discovery", - "version": "1.19.1", + "version": "1.19.2", "source": { "type": "git", "url": "https://github.com/php-http/discovery.git", - "reference": "57f3de01d32085fea20865f9b16fb0e69347c39e" + "reference": "61e1a1eb69c92741f5896d9e05fb8e9d7e8bb0cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/discovery/zipball/57f3de01d32085fea20865f9b16fb0e69347c39e", - "reference": "57f3de01d32085fea20865f9b16fb0e69347c39e", + "url": "https://api.github.com/repos/php-http/discovery/zipball/61e1a1eb69c92741f5896d9e05fb8e9d7e8bb0cb", + "reference": "61e1a1eb69c92741f5896d9e05fb8e9d7e8bb0cb", "shasum": "" }, "require": { @@ -3749,9 +3828,9 @@ ], "support": { "issues": "https://github.com/php-http/discovery/issues", - "source": "https://github.com/php-http/discovery/tree/1.19.1" + "source": "https://github.com/php-http/discovery/tree/1.19.2" }, - "time": "2023-07-11T07:02:26+00:00" + "time": "2023-11-30T16:49:05+00:00" }, { "name": "php-http/guzzle7-adapter", @@ -5194,16 +5273,16 @@ }, { "name": "symfony/cache", - "version": "v6.3.8", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "ba33517043c22c94c7ab04b056476f6f86816cf8" + "reference": "ac2d25f97b17eec6e19760b6b9962a4f7c44356a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/ba33517043c22c94c7ab04b056476f6f86816cf8", - "reference": "ba33517043c22c94c7ab04b056476f6f86816cf8", + "url": "https://api.github.com/repos/symfony/cache/zipball/ac2d25f97b17eec6e19760b6b9962a4f7c44356a", + "reference": "ac2d25f97b17eec6e19760b6b9962a4f7c44356a", "shasum": "" }, "require": { @@ -5212,7 +5291,7 @@ "psr/log": "^1.1|^2|^3", "symfony/cache-contracts": "^2.5|^3", "symfony/service-contracts": "^2.5|^3", - "symfony/var-exporter": "^6.3.6" + "symfony/var-exporter": "^6.3.6|^7.0" }, "conflict": { "doctrine/dbal": "<2.13.1", @@ -5230,12 +5309,12 @@ "doctrine/dbal": "^2.13.1|^3|^4", "predis/predis": "^1.1|^2.0", "psr/simple-cache": "^1.0|^2.0|^3.0", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/filesystem": "^5.4|^6.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/messenger": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/filesystem": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -5270,7 +5349,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.3.8" + "source": "https://github.com/symfony/cache/tree/v6.4.0" }, "funding": [ { @@ -5286,7 +5365,7 @@ "type": "tidelift" } ], - "time": "2023-11-07T10:17:15+00:00" + "time": "2023-11-24T19:28:07+00:00" }, { "name": "symfony/cache-contracts", @@ -5366,16 +5445,16 @@ }, { "name": "symfony/console", - "version": "v6.3.8", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "0d14a9f6d04d4ac38a8cea1171f4554e325dae92" + "reference": "a550a7c99daeedef3f9d23fb82e3531525ff11fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/0d14a9f6d04d4ac38a8cea1171f4554e325dae92", - "reference": "0d14a9f6d04d4ac38a8cea1171f4554e325dae92", + "url": "https://api.github.com/repos/symfony/console/zipball/a550a7c99daeedef3f9d23fb82e3531525ff11fd", + "reference": "a550a7c99daeedef3f9d23fb82e3531525ff11fd", "shasum": "" }, "require": { @@ -5383,7 +5462,7 @@ "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^5.4|^6.0" + "symfony/string": "^5.4|^6.0|^7.0" }, "conflict": { "symfony/dependency-injection": "<5.4", @@ -5397,12 +5476,16 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -5436,7 +5519,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.3.8" + "source": "https://github.com/symfony/console/tree/v6.4.1" }, "funding": [ { @@ -5452,24 +5535,24 @@ "type": "tidelift" } ], - "time": "2023-10-31T08:09:35+00:00" + "time": "2023-11-30T10:54:28+00:00" }, { "name": "symfony/css-selector", - "version": "v6.3.2", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "883d961421ab1709877c10ac99451632a3d6fa57" + "reference": "bb51d46e53ef8d50d523f0c5faedba056a27943e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/883d961421ab1709877c10ac99451632a3d6fa57", - "reference": "883d961421ab1709877c10ac99451632a3d6fa57", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/bb51d46e53ef8d50d523f0c5faedba056a27943e", + "reference": "bb51d46e53ef8d50d523f0c5faedba056a27943e", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "type": "library", "autoload": { @@ -5501,7 +5584,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.3.2" + "source": "https://github.com/symfony/css-selector/tree/v7.0.0" }, "funding": [ { @@ -5517,7 +5600,7 @@ "type": "tidelift" } ], - "time": "2023-07-12T16:00:22+00:00" + "time": "2023-10-31T17:59:56+00:00" }, { "name": "symfony/deprecation-contracts", @@ -5588,30 +5671,31 @@ }, { "name": "symfony/error-handler", - "version": "v6.3.5", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "1f69476b64fb47105c06beef757766c376b548c4" + "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/1f69476b64fb47105c06beef757766c376b548c4", - "reference": "1f69476b64fb47105c06beef757766c376b548c4", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/c873490a1c97b3a0a4838afc36ff36c112d02788", + "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788", "shasum": "" }, "require": { "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "conflict": { - "symfony/deprecation-contracts": "<2.5" + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" }, "require-dev": { "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" + "symfony/http-kernel": "^6.4|^7.0", + "symfony/serializer": "^5.4|^6.0|^7.0" }, "bin": [ "Resources/bin/patch-type-declarations" @@ -5642,7 +5726,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.3.5" + "source": "https://github.com/symfony/error-handler/tree/v6.4.0" }, "funding": [ { @@ -5658,28 +5742,28 @@ "type": "tidelift" } ], - "time": "2023-09-12T06:57:20+00:00" + "time": "2023-10-18T09:43:34+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.3.2", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e" + "reference": "c459b40ffe67c49af6fd392aac374c9edf8a027e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/adb01fe097a4ee930db9258a3cc906b5beb5cf2e", - "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/c459b40ffe67c49af6fd392aac374c9edf8a027e", + "reference": "c459b40ffe67c49af6fd392aac374c9edf8a027e", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<5.4", + "symfony/dependency-injection": "<6.4", "symfony/service-contracts": "<2.5" }, "provide": { @@ -5688,13 +5772,13 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^5.4|^6.0" + "symfony/stopwatch": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -5722,7 +5806,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.2" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.0.0" }, "funding": [ { @@ -5738,7 +5822,7 @@ "type": "tidelift" } ], - "time": "2023-07-06T06:56:43+00:00" + "time": "2023-07-27T16:29:09+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -5818,23 +5902,23 @@ }, { "name": "symfony/finder", - "version": "v6.3.5", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4" + "reference": "11d736e97f116ac375a81f96e662911a34cd50ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/a1b31d88c0e998168ca7792f222cbecee47428c4", - "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4", + "url": "https://api.github.com/repos/symfony/finder/zipball/11d736e97f116ac375a81f96e662911a34cd50ce", + "reference": "11d736e97f116ac375a81f96e662911a34cd50ce", "shasum": "" }, "require": { "php": ">=8.1" }, "require-dev": { - "symfony/filesystem": "^6.0" + "symfony/filesystem": "^6.0|^7.0" }, "type": "library", "autoload": { @@ -5862,7 +5946,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.3.5" + "source": "https://github.com/symfony/finder/tree/v6.4.0" }, "funding": [ { @@ -5878,20 +5962,20 @@ "type": "tidelift" } ], - "time": "2023-09-26T12:56:25+00:00" + "time": "2023-10-31T17:30:12+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.3.8", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "ce332676de1912c4389222987193c3ef38033df6" + "reference": "44a6d39a9cc11e154547d882d5aac1e014440771" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ce332676de1912c4389222987193c3ef38033df6", - "reference": "ce332676de1912c4389222987193c3ef38033df6", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/44a6d39a9cc11e154547d882d5aac1e014440771", + "reference": "44a6d39a9cc11e154547d882d5aac1e014440771", "shasum": "" }, "require": { @@ -5906,12 +5990,12 @@ "require-dev": { "doctrine/dbal": "^2.13.1|^3|^4", "predis/predis": "^1.1|^2.0", - "symfony/cache": "^6.3", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", - "symfony/mime": "^5.4|^6.0", - "symfony/rate-limiter": "^5.2|^6.0" + "symfony/cache": "^6.3|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -5939,7 +6023,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.3.8" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.0" }, "funding": [ { @@ -5955,29 +6039,29 @@ "type": "tidelift" } ], - "time": "2023-11-07T10:17:15+00:00" + "time": "2023-11-20T16:41:16+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.3.8", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "929202375ccf44a309c34aeca8305408442ebcc1" + "reference": "2953274c16a229b3933ef73a6898e18388e12e1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/929202375ccf44a309c34aeca8305408442ebcc1", - "reference": "929202375ccf44a309c34aeca8305408442ebcc1", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/2953274c16a229b3933ef73a6898e18388e12e1b", + "reference": "2953274c16a229b3933ef73a6898e18388e12e1b", "shasum": "" }, "require": { "php": ">=8.1", "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^6.3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^6.3.4", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -5985,7 +6069,7 @@ "symfony/cache": "<5.4", "symfony/config": "<6.1", "symfony/console": "<5.4", - "symfony/dependency-injection": "<6.3.4", + "symfony/dependency-injection": "<6.4", "symfony/doctrine-bridge": "<5.4", "symfony/form": "<5.4", "symfony/http-client": "<5.4", @@ -5995,7 +6079,7 @@ "symfony/translation": "<5.4", "symfony/translation-contracts": "<2.5", "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", + "symfony/validator": "<6.4", "symfony/var-dumper": "<6.3", "twig/twig": "<2.13" }, @@ -6004,26 +6088,26 @@ }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/clock": "^6.2", - "symfony/config": "^6.1", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^6.3.4", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/clock": "^6.2|^7.0", + "symfony/config": "^6.1|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/dom-crawler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", "symfony/http-client-contracts": "^2.5|^3", - "symfony/process": "^5.4|^6.0", - "symfony/property-access": "^5.4.5|^6.0.5", - "symfony/routing": "^5.4|^6.0", - "symfony/serializer": "^6.3", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4.5|^6.0.5|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.3|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^5.4|^6.0", - "symfony/validator": "^6.3", - "symfony/var-exporter": "^6.2", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-exporter": "^6.2|^7.0", "twig/twig": "^2.13|^3.0.4" }, "type": "library", @@ -6052,7 +6136,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.3.8" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.1" }, "funding": [ { @@ -6068,20 +6152,20 @@ "type": "tidelift" } ], - "time": "2023-11-10T13:47:32+00:00" + "time": "2023-12-01T17:02:02+00:00" }, { "name": "symfony/mailer", - "version": "v6.3.5", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "d89611a7830d51b5e118bca38e390dea92f9ea06" + "reference": "ca8dcf8892cdc5b4358ecf2528429bb5e706f7ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/d89611a7830d51b5e118bca38e390dea92f9ea06", - "reference": "d89611a7830d51b5e118bca38e390dea92f9ea06", + "url": "https://api.github.com/repos/symfony/mailer/zipball/ca8dcf8892cdc5b4358ecf2528429bb5e706f7ba", + "reference": "ca8dcf8892cdc5b4358ecf2528429bb5e706f7ba", "shasum": "" }, "require": { @@ -6089,8 +6173,8 @@ "php": ">=8.1", "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^6.2", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/mime": "^6.2|^7.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -6101,10 +6185,10 @@ "symfony/twig-bridge": "<6.2.1" }, "require-dev": { - "symfony/console": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/messenger": "^6.2", - "symfony/twig-bridge": "^6.2" + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/messenger": "^6.2|^7.0", + "symfony/twig-bridge": "^6.2|^7.0" }, "type": "library", "autoload": { @@ -6132,7 +6216,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.3.5" + "source": "https://github.com/symfony/mailer/tree/v6.4.0" }, "funding": [ { @@ -6148,20 +6232,20 @@ "type": "tidelift" } ], - "time": "2023-09-06T09:47:15+00:00" + "time": "2023-11-12T18:02:22+00:00" }, { "name": "symfony/mime", - "version": "v6.3.5", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "d5179eedf1cb2946dbd760475ebf05c251ef6a6e" + "reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/d5179eedf1cb2946dbd760475ebf05c251ef6a6e", - "reference": "d5179eedf1cb2946dbd760475ebf05c251ef6a6e", + "url": "https://api.github.com/repos/symfony/mime/zipball/ca4f58b2ef4baa8f6cecbeca2573f88cd577d205", + "reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205", "shasum": "" }, "require": { @@ -6175,16 +6259,16 @@ "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", "symfony/mailer": "<5.4", - "symfony/serializer": "<6.2.13|>=6.3,<6.3.2" + "symfony/serializer": "<6.3.2" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "~6.2.13|^6.3.2" + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.3.2|^7.0" }, "type": "library", "autoload": { @@ -6216,7 +6300,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.3.5" + "source": "https://github.com/symfony/mime/tree/v6.4.0" }, "funding": [ { @@ -6232,7 +6316,7 @@ "type": "tidelift" } ], - "time": "2023-09-29T06:59:36+00:00" + "time": "2023-10-17T11:49:05+00:00" }, { "name": "symfony/polyfill-ctype", @@ -6974,16 +7058,16 @@ }, { "name": "symfony/process", - "version": "v6.3.4", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54" + "reference": "191703b1566d97a5425dc969e4350d32b8ef17aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/0b5c29118f2e980d455d2e34a5659f4579847c54", - "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54", + "url": "https://api.github.com/repos/symfony/process/zipball/191703b1566d97a5425dc969e4350d32b8ef17aa", + "reference": "191703b1566d97a5425dc969e4350d32b8ef17aa", "shasum": "" }, "require": { @@ -7015,7 +7099,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.3.4" + "source": "https://github.com/symfony/process/tree/v6.4.0" }, "funding": [ { @@ -7031,20 +7115,20 @@ "type": "tidelift" } ], - "time": "2023-08-07T10:39:22+00:00" + "time": "2023-11-17T21:06:49+00:00" }, { "name": "symfony/routing", - "version": "v6.3.5", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "82616e59acd3e3d9c916bba798326cb7796d7d31" + "reference": "0c95c164fdba18b12523b75e64199ca3503e6d40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/82616e59acd3e3d9c916bba798326cb7796d7d31", - "reference": "82616e59acd3e3d9c916bba798326cb7796d7d31", + "url": "https://api.github.com/repos/symfony/routing/zipball/0c95c164fdba18b12523b75e64199ca3503e6d40", + "reference": "0c95c164fdba18b12523b75e64199ca3503e6d40", "shasum": "" }, "require": { @@ -7060,11 +7144,11 @@ "require-dev": { "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", - "symfony/config": "^6.2", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" + "symfony/config": "^6.2|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -7098,7 +7182,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.3.5" + "source": "https://github.com/symfony/routing/tree/v6.4.1" }, "funding": [ { @@ -7114,7 +7198,7 @@ "type": "tidelift" } ], - "time": "2023-09-20T16:05:51+00:00" + "time": "2023-12-01T14:54:37+00:00" }, { "name": "symfony/service-contracts", @@ -7201,20 +7285,20 @@ }, { "name": "symfony/string", - "version": "v6.3.8", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "13880a87790c76ef994c91e87efb96134522577a" + "reference": "92bd2bfbba476d4a1838e5e12168bef2fd1e6620" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/13880a87790c76ef994c91e87efb96134522577a", - "reference": "13880a87790c76ef994c91e87efb96134522577a", + "url": "https://api.github.com/repos/symfony/string/zipball/92bd2bfbba476d4a1838e5e12168bef2fd1e6620", + "reference": "92bd2bfbba476d4a1838e5e12168bef2fd1e6620", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", @@ -7224,11 +7308,11 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/intl": "^6.2", + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^5.4|^6.0" + "symfony/var-exporter": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -7267,7 +7351,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.3.8" + "source": "https://github.com/symfony/string/tree/v7.0.0" }, "funding": [ { @@ -7283,20 +7367,20 @@ "type": "tidelift" } ], - "time": "2023-11-09T08:28:21+00:00" + "time": "2023-11-29T08:40:23+00:00" }, { "name": "symfony/translation", - "version": "v6.3.7", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "30212e7c87dcb79c83f6362b00bde0e0b1213499" + "reference": "b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/30212e7c87dcb79c83f6362b00bde0e0b1213499", - "reference": "30212e7c87dcb79c83f6362b00bde0e0b1213499", + "url": "https://api.github.com/repos/symfony/translation/zipball/b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37", + "reference": "b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37", "shasum": "" }, "require": { @@ -7321,17 +7405,17 @@ "require-dev": { "nikic/php-parser": "^4.13", "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", "symfony/http-client-contracts": "^2.5|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^5.4|^6.0", + "symfony/routing": "^5.4|^6.0|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^5.4|^6.0" + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -7362,7 +7446,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.3.7" + "source": "https://github.com/symfony/translation/tree/v6.4.0" }, "funding": [ { @@ -7378,7 +7462,7 @@ "type": "tidelift" } ], - "time": "2023-10-28T23:11:45+00:00" + "time": "2023-11-29T08:14:36+00:00" }, { "name": "symfony/translation-contracts", @@ -7460,16 +7544,16 @@ }, { "name": "symfony/uid", - "version": "v6.3.8", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "819fa5ac210fb7ddda4752b91a82f50be7493dd9" + "reference": "8092dd1b1a41372110d06374f99ee62f7f0b9a92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/819fa5ac210fb7ddda4752b91a82f50be7493dd9", - "reference": "819fa5ac210fb7ddda4752b91a82f50be7493dd9", + "url": "https://api.github.com/repos/symfony/uid/zipball/8092dd1b1a41372110d06374f99ee62f7f0b9a92", + "reference": "8092dd1b1a41372110d06374f99ee62f7f0b9a92", "shasum": "" }, "require": { @@ -7477,7 +7561,7 @@ "symfony/polyfill-uuid": "^1.15" }, "require-dev": { - "symfony/console": "^5.4|^6.0" + "symfony/console": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -7514,7 +7598,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v6.3.8" + "source": "https://github.com/symfony/uid/tree/v6.4.0" }, "funding": [ { @@ -7530,20 +7614,20 @@ "type": "tidelift" } ], - "time": "2023-10-31T08:07:48+00:00" + "time": "2023-10-31T08:18:17+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.3.8", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "81acabba9046550e89634876ca64bfcd3c06aa0a" + "reference": "c40f7d17e91d8b407582ed51a2bbf83c52c367f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/81acabba9046550e89634876ca64bfcd3c06aa0a", - "reference": "81acabba9046550e89634876ca64bfcd3c06aa0a", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c40f7d17e91d8b407582ed51a2bbf83c52c367f6", + "reference": "c40f7d17e91d8b407582ed51a2bbf83c52c367f6", "shasum": "" }, "require": { @@ -7556,10 +7640,11 @@ }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^6.3|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", "twig/twig": "^2.13|^3.0.4" }, "bin": [ @@ -7598,7 +7683,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.3.8" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.0" }, "funding": [ { @@ -7614,27 +7699,27 @@ "type": "tidelift" } ], - "time": "2023-11-08T10:42:36+00:00" + "time": "2023-11-09T08:28:32+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.3.6", + "version": "v7.0.1", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "374d289c13cb989027274c86206ddc63b16a2441" + "reference": "a3d7c877414fcd59ab7075ecdc3b8f9c00f7bcc3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/374d289c13cb989027274c86206ddc63b16a2441", - "reference": "374d289c13cb989027274c86206ddc63b16a2441", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/a3d7c877414fcd59ab7075ecdc3b8f9c00f7bcc3", + "reference": "a3d7c877414fcd59ab7075ecdc3b8f9c00f7bcc3", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "symfony/var-dumper": "^5.4|^6.0" + "symfony/var-dumper": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -7672,7 +7757,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.3.6" + "source": "https://github.com/symfony/var-exporter/tree/v7.0.1" }, "funding": [ { @@ -7688,7 +7773,7 @@ "type": "tidelift" } ], - "time": "2023-10-13T09:16:49+00:00" + "time": "2023-11-30T11:38:21+00:00" }, { "name": "thecodingmachine/safe", @@ -7831,23 +7916,23 @@ }, { "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.6", + "version": "v2.2.7", "source": { "type": "git", "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c" + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/c42125b83a4fa63b187fdf29f9c93cb7733da30c", - "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/83ee6f38df0a63106a9e4536e3060458b74ccedb", + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" }, "require-dev": { "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" @@ -7878,9 +7963,9 @@ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", "support": { "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.6" + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.2.7" }, - "time": "2023-01-03T09:29:04+00:00" + "time": "2023-12-08T13:03:43+00:00" }, { "name": "vlucas/phpdotenv", @@ -8831,16 +8916,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.40.0", + "version": "v3.41.1", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "27d2b3265b5d550ec411b4319967ae7cfddfb2e0" + "reference": "8b6ae8dcbaf23f09680643ab832a4a3a260265f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/27d2b3265b5d550ec411b4319967ae7cfddfb2e0", - "reference": "27d2b3265b5d550ec411b4319967ae7cfddfb2e0", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/8b6ae8dcbaf23f09680643ab832a4a3a260265f6", + "reference": "8b6ae8dcbaf23f09680643ab832a4a3a260265f6", "shasum": "" }, "require": { @@ -8870,8 +8955,6 @@ "php-cs-fixer/accessible-object": "^1.1", "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", - "phpspec/prophecy": "^1.17", - "phpspec/prophecy-phpunit": "^2.0", "phpunit/phpunit": "^9.6", "symfony/phpunit-bridge": "^6.3.8 || ^7.0", "symfony/yaml": "^5.4 || ^6.0 || ^7.0" @@ -8912,7 +8995,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.40.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.41.1" }, "funding": [ { @@ -8920,7 +9003,7 @@ "type": "github" } ], - "time": "2023-11-26T09:25:53+00:00" + "time": "2023-12-10T19:59:27+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -9041,6 +9124,107 @@ ], "time": "2022-12-13T00:04:12+00:00" }, + { + "name": "larastan/larastan", + "version": "v2.7.0", + "source": { + "type": "git", + "url": "https://github.com/larastan/larastan.git", + "reference": "a2610d46b9999cf558d9900ccb641962d1442f55" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/larastan/larastan/zipball/a2610d46b9999cf558d9900ccb641962d1442f55", + "reference": "a2610d46b9999cf558d9900ccb641962d1442f55", + "shasum": "" + }, + "require": { + "ext-json": "*", + "illuminate/console": "^9.52.16 || ^10.28.0", + "illuminate/container": "^9.52.16 || ^10.28.0", + "illuminate/contracts": "^9.52.16 || ^10.28.0", + "illuminate/database": "^9.52.16 || ^10.28.0", + "illuminate/http": "^9.52.16 || ^10.28.0", + "illuminate/pipeline": "^9.52.16 || ^10.28.0", + "illuminate/support": "^9.52.16 || ^10.28.0", + "php": "^8.0.2", + "phpmyadmin/sql-parser": "^5.8.2", + "phpstan/phpstan": "^1.10.41" + }, + "require-dev": { + "nikic/php-parser": "^4.17.1", + "orchestra/canvas": "^7.11.1 || ^8.11.0", + "orchestra/testbench": "^7.33.0 || ^8.13.0", + "phpunit/phpunit": "^9.6.13" + }, + "suggest": { + "orchestra/testbench": "Using Larastan for analysing a package needs Testbench" + }, + "type": "phpstan-extension", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "Larastan\\Larastan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Can Vural", + "email": "can9119@gmail.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Larastan - Discover bugs in your code without running it. A phpstan/phpstan wrapper for Laravel", + "keywords": [ + "PHPStan", + "code analyse", + "code analysis", + "larastan", + "laravel", + "package", + "php", + "static analysis" + ], + "support": { + "issues": "https://github.com/larastan/larastan/issues", + "source": "https://github.com/larastan/larastan/tree/v2.7.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/canvural", + "type": "github" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2023-12-04T19:21:38+00:00" + }, { "name": "lychee-org/phpstan-lychee", "version": "v1.0.2", @@ -9158,16 +9342,16 @@ }, { "name": "mockery/mockery", - "version": "1.6.6", + "version": "1.6.7", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e" + "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/b8e0bb7d8c604046539c1115994632c74dcb361e", - "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e", + "url": "https://api.github.com/repos/mockery/mockery/zipball/0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06", + "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06", "shasum": "" }, "require": { @@ -9180,9 +9364,7 @@ }, "require-dev": { "phpunit/phpunit": "^8.5 || ^9.6.10", - "psalm/plugin-phpunit": "^0.18.4", - "symplify/easy-coding-standard": "^11.5.0", - "vimeo/psalm": "^4.30" + "symplify/easy-coding-standard": "^12.0.8" }, "type": "library", "autoload": { @@ -9239,7 +9421,7 @@ "security": "https://github.com/mockery/mockery/security/advisories", "source": "https://github.com/mockery/mockery" }, - "time": "2023-08-09T00:03:52+00:00" + "time": "2023-12-10T02:24:34+00:00" }, { "name": "myclabs/deep-copy", @@ -9302,16 +9484,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.17.1", + "version": "v4.18.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999", + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999", "shasum": "" }, "require": { @@ -9352,105 +9534,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0" }, - "time": "2023-08-13T19:53:39+00:00" - }, - { - "name": "nunomaduro/larastan", - "version": "v2.6.4", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/larastan.git", - "reference": "6c5e8820f3db6397546f3ce48520af9d312aed27" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/larastan/zipball/6c5e8820f3db6397546f3ce48520af9d312aed27", - "reference": "6c5e8820f3db6397546f3ce48520af9d312aed27", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/console": "^9.47.0 || ^10.0.0", - "illuminate/container": "^9.47.0 || ^10.0.0", - "illuminate/contracts": "^9.47.0 || ^10.0.0", - "illuminate/database": "^9.47.0 || ^10.0.0", - "illuminate/http": "^9.47.0 || ^10.0.0", - "illuminate/pipeline": "^9.47.0 || ^10.0.0", - "illuminate/support": "^9.47.0 || ^10.0.0", - "php": "^8.0.2", - "phpmyadmin/sql-parser": "^5.6.0", - "phpstan/phpstan": "~1.10.6" - }, - "require-dev": { - "nikic/php-parser": "^4.15.2", - "orchestra/testbench": "^7.19.0 || ^8.0.0", - "phpunit/phpunit": "^9.5.27" - }, - "suggest": { - "orchestra/testbench": "Using Larastan for analysing a package needs Testbench" - }, - "type": "phpstan-extension", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "phpstan": { - "includes": [ - "extension.neon" - ] - } - }, - "autoload": { - "psr-4": { - "NunoMaduro\\Larastan\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "Larastan - Discover bugs in your code without running it. A phpstan/phpstan wrapper for Laravel", - "keywords": [ - "PHPStan", - "code analyse", - "code analysis", - "larastan", - "laravel", - "package", - "php", - "static analysis" - ], - "support": { - "issues": "https://github.com/nunomaduro/larastan/issues", - "source": "https://github.com/nunomaduro/larastan/tree/v2.6.4" - }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/canvural", - "type": "github" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2023-07-29T12:13:13+00:00" + "time": "2023-12-10T21:03:43+00:00" }, { "name": "phar-io/manifest", @@ -9820,16 +9906,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.24.4", + "version": "1.24.5", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496" + "reference": "fedf211ff14ec8381c9bf5714e33a7a552dd1acc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6bd0c26f3786cd9b7c359675cb789e35a8e07496", - "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fedf211ff14ec8381c9bf5714e33a7a552dd1acc", + "reference": "fedf211ff14ec8381c9bf5714e33a7a552dd1acc", "shasum": "" }, "require": { @@ -9861,22 +9947,22 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.4" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.5" }, - "time": "2023-11-26T18:29:22+00:00" + "time": "2023-12-16T09:33:33+00:00" }, { "name": "phpstan/phpstan", - "version": "1.10.45", + "version": "1.10.50", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "2f024fbb47432e2e62ad8a8032387aa2dd631c73" + "reference": "06a98513ac72c03e8366b5a0cb00750b487032e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/2f024fbb47432e2e62ad8a8032387aa2dd631c73", - "reference": "2f024fbb47432e2e62ad8a8032387aa2dd631c73", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/06a98513ac72c03e8366b5a0cb00750b487032e4", + "reference": "06a98513ac72c03e8366b5a0cb00750b487032e4", "shasum": "" }, "require": { @@ -9925,7 +10011,7 @@ "type": "tidelift" } ], - "time": "2023-11-27T14:15:06+00:00" + "time": "2023-12-13T10:59:42+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", @@ -10026,16 +10112,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "10.1.9", + "version": "10.1.10", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "a56a9ab2f680246adcf3db43f38ddf1765774735" + "reference": "599109c8ca6bae97b23482d557d2874c25a65e59" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/a56a9ab2f680246adcf3db43f38ddf1765774735", - "reference": "a56a9ab2f680246adcf3db43f38ddf1765774735", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/599109c8ca6bae97b23482d557d2874c25a65e59", + "reference": "599109c8ca6bae97b23482d557d2874c25a65e59", "shasum": "" }, "require": { @@ -10092,7 +10178,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.9" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.10" }, "funding": [ { @@ -10100,7 +10186,7 @@ "type": "github" } ], - "time": "2023-11-23T12:23:20+00:00" + "time": "2023-12-11T06:28:43+00:00" }, { "name": "phpunit/php-file-iterator", @@ -10347,16 +10433,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.4.2", + "version": "10.5.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "cacd8b9dd224efa8eb28beb69004126c7ca1a1a1" + "reference": "6fce887c71076a73f32fd3e0774a6833fc5c7f19" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/cacd8b9dd224efa8eb28beb69004126c7ca1a1a1", - "reference": "cacd8b9dd224efa8eb28beb69004126c7ca1a1a1", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/6fce887c71076a73f32fd3e0774a6833fc5c7f19", + "reference": "6fce887c71076a73f32fd3e0774a6833fc5c7f19", "shasum": "" }, "require": { @@ -10396,7 +10482,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.4-dev" + "dev-main": "10.5-dev" } }, "autoload": { @@ -10428,7 +10514,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.4.2" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.3" }, "funding": [ { @@ -10444,7 +10530,7 @@ "type": "tidelift" } ], - "time": "2023-10-26T07:21:45+00:00" + "time": "2023-12-13T07:25:23+00:00" }, { "name": "sebastian/cli-parser", @@ -10692,20 +10778,20 @@ }, { "name": "sebastian/complexity", - "version": "3.1.0", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "68cfb347a44871f01e33ab0ef8215966432f6957" + "reference": "68ff824baeae169ec9f2137158ee529584553799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68cfb347a44871f01e33ab0ef8215966432f6957", - "reference": "68cfb347a44871f01e33ab0ef8215966432f6957", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", "shasum": "" }, "require": { - "nikic/php-parser": "^4.10", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1" }, "require-dev": { @@ -10714,7 +10800,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.2-dev" } }, "autoload": { @@ -10738,7 +10824,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.1.0" + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" }, "funding": [ { @@ -10746,7 +10832,7 @@ "type": "github" } ], - "time": "2023-09-28T11:50:59+00:00" + "time": "2023-12-21T08:37:17+00:00" }, { "name": "sebastian/diff", @@ -11021,20 +11107,20 @@ }, { "name": "sebastian/lines-of-code", - "version": "2.0.1", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d" + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/649e40d279e243d985aa8fb6e74dd5bb28dc185d", - "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", "shasum": "" }, "require": { - "nikic/php-parser": "^4.10", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1" }, "require-dev": { @@ -11067,7 +11153,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.1" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" }, "funding": [ { @@ -11075,7 +11161,7 @@ "type": "github" } ], - "time": "2023-08-31T09:25:50+00:00" + "time": "2023-12-21T08:38:20+00:00" }, { "name": "sebastian/object-enumerator", @@ -11363,32 +11449,29 @@ }, { "name": "slam/phpstan-extensions", - "version": "v6.0.0", + "version": "v6.1.0", "source": { "type": "git", "url": "https://github.com/Slamdunk/phpstan-extensions.git", - "reference": "ddc65c09426b6a9d752c200f33d676caab53ca6d" + "reference": "0aa043e2d306566b132bb39ddecd209afa5065a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Slamdunk/phpstan-extensions/zipball/ddc65c09426b6a9d752c200f33d676caab53ca6d", - "reference": "ddc65c09426b6a9d752c200f33d676caab53ca6d", + "url": "https://api.github.com/repos/Slamdunk/phpstan-extensions/zipball/0aa043e2d306566b132bb39ddecd209afa5065a7", + "reference": "0aa043e2d306566b132bb39ddecd209afa5065a7", "shasum": "" }, "require": { - "nikic/php-parser": "^v4.13.1", - "php": ">=8.0", - "phpstan/phpstan": "^1.1.1" + "nikic/php-parser": "^4.17.1", + "php": "~8.2.0 || ~8.3.0", + "phpstan/phpstan": "^1.10.44" }, "require-dev": { - "malukenho/mcbumpface": "^1.1.5", - "nette/di": "^v3.0.11", - "nette/neon": "^v3.3.1", - "phpstan/phpstan-php-parser": "^1.0.0", - "phpstan/phpstan-phpunit": "^1.0.0", - "phpunit/phpunit": "^9.5.10", - "slam/php-cs-fixer-extensions": "^v3.1.0", - "slam/php-debug-r": "^v1.7.0" + "nette/di": "^3.1.8", + "nette/neon": "^3.4.1", + "phpstan/phpstan-phpunit": "^1.3.15", + "phpunit/phpunit": "^10.4.2", + "slam/php-cs-fixer-extensions": "^3.10.0" }, "type": "phpstan-extension", "extra": { @@ -11417,7 +11500,7 @@ "description": "Slam extension of phpstan", "support": { "issues": "https://github.com/Slamdunk/phpstan-extensions/issues", - "source": "https://github.com/Slamdunk/phpstan-extensions/tree/v6.0.0" + "source": "https://github.com/Slamdunk/phpstan-extensions/tree/v6.1.0" }, "funding": [ { @@ -11429,20 +11512,20 @@ "type": "github" } ], - "time": "2021-11-09T11:27:16+00:00" + "time": "2023-11-22T06:48:27+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.7.2", + "version": "3.8.0", "source": { "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879" + "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", + "reference": "5805f7a4e4958dbb5e944ef1e6edae0a303765e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879", - "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/5805f7a4e4958dbb5e944ef1e6edae0a303765e7", + "reference": "5805f7a4e4958dbb5e944ef1e6edae0a303765e7", "shasum": "" }, "require": { @@ -11452,7 +11535,7 @@ "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/phpcs", @@ -11471,39 +11554,62 @@ "authors": [ { "name": "Greg Sherwood", - "role": "lead" + "role": "Former lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "Current lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" } ], "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", "keywords": [ "phpcs", "standards", "static analysis" ], "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" + "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", + "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", + "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" }, - "time": "2023-02-22T23:07:41+00:00" + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + } + ], + "time": "2023-12-08T12:32:31+00:00" }, { "name": "symfony/filesystem", - "version": "v6.3.1", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae" + "reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", - "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/7da8ea2362a283771478c5f7729cfcb43a76b8b7", + "reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8" }, @@ -11533,7 +11639,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.3.1" + "source": "https://github.com/symfony/filesystem/tree/v7.0.0" }, "funding": [ { @@ -11549,24 +11655,24 @@ "type": "tidelift" } ], - "time": "2023-06-01T08:30:39+00:00" + "time": "2023-07-27T06:33:22+00:00" }, { "name": "symfony/options-resolver", - "version": "v6.3.0", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd" + "reference": "700ff4096e346f54cb628ea650767c8130f1001f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a10f19f5198d589d5c33333cffe98dc9820332dd", - "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/700ff4096e346f54cb628ea650767c8130f1001f", + "reference": "700ff4096e346f54cb628ea650767c8130f1001f", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", @@ -11600,7 +11706,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v6.3.0" + "source": "https://github.com/symfony/options-resolver/tree/v7.0.0" }, "funding": [ { @@ -11616,7 +11722,7 @@ "type": "tidelift" } ], - "time": "2023-05-12T14:21:09+00:00" + "time": "2023-08-08T10:20:21+00:00" }, { "name": "symfony/polyfill-php81", @@ -11699,20 +11805,20 @@ }, { "name": "symfony/stopwatch", - "version": "v6.3.0", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2" + "reference": "7bbfa3dd564a0ce12eb4acaaa46823c740f9cb7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", - "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/7bbfa3dd564a0ce12eb4acaaa46823c740f9cb7a", + "reference": "7bbfa3dd564a0ce12eb4acaaa46823c740f9cb7a", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/service-contracts": "^2.5|^3" }, "type": "library", @@ -11741,7 +11847,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v6.3.0" + "source": "https://github.com/symfony/stopwatch/tree/v7.0.0" }, "funding": [ { @@ -11757,7 +11863,7 @@ "type": "tidelift" } ], - "time": "2023-02-16T10:14:28+00:00" + "time": "2023-07-05T13:06:06+00:00" }, { "name": "symplify/phpstan-rules", @@ -12010,7 +12116,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^8.1", + "php": "^8.2", "ext-bcmath": "*", "ext-ctype": "*", "ext-exif": "*", @@ -12029,7 +12135,7 @@ "ext-zip": "*" }, "platform-overrides": { - "php": "8.1" + "php": "8.2" }, "plugin-api-version": "2.3.0" } diff --git a/phpstan.neon b/phpstan.neon index 0e2e04f4b08..d27dbca8118 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,5 +1,5 @@ includes: - - vendor/nunomaduro/larastan/extension.neon + - vendor/larastan/larastan/extension.neon - vendor/lychee-org/phpstan-lychee/phpstan.neon parameters: @@ -21,6 +21,13 @@ parameters: - phpstan/stubs/image.stub - phpstan/stubs/imageexception.stub ignoreErrors: + # False positive php8.2 + phpstan on interface @property + - '#Access to an undefined property App\\Contracts\\Models\\AbstractAlbum::\$id#' + - '#Access to an undefined property App\\Contracts\\Models\\AbstractAlbum::\$title#' + - '#Access to an undefined property App\\Contracts\\Models\\AbstractAlbum::\$photos#' + - '#Access to an undefined property App\\Contracts\\Image\\StreamStats::\$checksum#' + - '#Access to an undefined property App\\Contracts\\Image\\StreamStats::\$bytes#' + # bunch of false positives from Eloquent - '#Dynamic call to static method (Illuminate\\Database\\Query\\Builder|Illuminate\\Database\\Eloquent\\(Builder|Relations\\.*)|App\\Models\\Builders\\.*|App\\Eloquent\\FixedQueryBuilder)(<.*>)?::from\(\).#' - '#Dynamic call to static method (Illuminate\\Database\\Query\\Builder|Illuminate\\Database\\Eloquent\\(Builder|Relations\\.*)|App\\Models\\Builders\\.*|App\\Eloquent\\FixedQueryBuilder)(<.*>)?::limit\(\).#' @@ -43,11 +50,8 @@ parameters: - '#Call to protected method asDateTime\(\) of class Illuminate\\Database\\Eloquent\\Model.#' # Covariance - LSP princinple: https://en.wikipedia.org/wiki/Liskov_substitution_principle - - '#Return type \(Illuminate\\Support\\Carbon\|null\) of method App\\Models\\.*::asDateTime\(\) should be covariant with return type \(Illuminate\\Support\\Carbon\) of method Illuminate\\Database\\Eloquent\\Model::asDateTime\(\)#' - - '#Return type \(App\\Models\\Photo\) of method App\\Models\\Photo::replicate\(\) should be covariant with return type \(static\(.*\)\) of method Illuminate\\Database\\Eloquent\\Model::replicate\(\)#' -# - '#Return type \(Illuminate\\Support\\Collection&iterable\) of method App\\Http\\Requests\\Album\\.*::albums\(\) should be covariant with return type \(Illuminate\\Support\\Collection&iterable\) of method App\\Contracts\\Http\\Requests\\HasAlbums::albums\(\)#' - - message: '#Parameter \#1 \$column \(array\|Closure\|Illuminate\\Database\\Query\\Expression\|string\) of method .* should be contravariant with parameter \$column \(array\|\(Closure.*\)\|\(Closure.*\)\|Illuminate\\Database\\Query\\Expression\|string\) of method .*#' + message: '#Parameter \#1 \$column \(array\|Closure\|Illuminate\\Database\\Query\\Expression\|string\) of method .* should be contravariant with parameter \$column \(array\|\(Closure.*\)\|\(Closure.*\)\|Illuminate\\Contracts\\Database\\Query\\Expression\|string\) of method .*#' paths: - app/Eloquent/FixedQueryBuilderTrait.php - '#Parameter \#1 \$models \(array<.*>\) of method .*::initRelation\(\) should be contravariant with parameter \$models \(array\) of method .*::initRelation\(\)#' From 8019e1dfeea9bef06966a7038d740a4793db6b85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Thu, 21 Dec 2023 18:08:09 +0100 Subject: [PATCH 067/209] Add configuration check between int and positive (>0) (#2072) --- app/Models/Configs.php | 8 ++++- ...05_01_165730_add_random_photo_settings.php | 1 + ...12_19_122408_add_positive_requirements.php | 36 +++++++++++++++++++ 3 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 database/migrations/2023_12_19_122408_add_positive_requirements.php diff --git a/app/Models/Configs.php b/app/Models/Configs.php index 2eb718a8ce1..9cb21219038 100644 --- a/app/Models/Configs.php +++ b/app/Models/Configs.php @@ -56,6 +56,7 @@ class Configs extends Model use ThrowsConsistentExceptions; protected const INT = 'int'; + protected const POSTIIVE = 'positive'; protected const STRING = 'string'; protected const STRING_REQ = 'string_required'; protected const BOOL = '0|1'; @@ -122,7 +123,12 @@ public function sanity(?string $candidateValue, ?string $message_template = null case self::INT: // we make sure that we only have digits in the chosen value. if (!ctype_digit(strval($candidateValue))) { - $message = sprintf($message_template, 'positive integer'); + $message = sprintf($message_template, 'positive integer or 0'); + } + break; + case self::POSTIIVE: + if (!ctype_digit(strval($candidateValue)) || intval($candidateValue, 10) === 0) { + $message = sprintf($message_template, 'strictly positive integer'); } break; case self::BOOL: diff --git a/database/migrations/2023_05_01_165730_add_random_photo_settings.php b/database/migrations/2023_05_01_165730_add_random_photo_settings.php index 1e834fccf05..c0becdcdf19 100644 --- a/database/migrations/2023_05_01_165730_add_random_photo_settings.php +++ b/database/migrations/2023_05_01_165730_add_random_photo_settings.php @@ -1,6 +1,7 @@ whereIn('key', self::KEYS)->update(['type_range' => 'positive']); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + DB::table('configs')->whereIn('key', self::KEYS)->update(['type_range' => 'int']); + } +}; From cd4d9cb39c6171965aa610b07a54a7884dc23ed6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sun, 24 Dec 2023 19:21:05 +0100 Subject: [PATCH 068/209] Completely new front-end & version 5.0.0! (#2035) --- .env.example | 6 + .github/workflows/.env.mariadb | 1 + .github/workflows/.env.postgresql | 1 + .github/workflows/.env.sqlite | 1 + .github/workflows/CICD.yml | 41 + .gitignore | 2 + .prettierrc.json | 3 + Makefile | 19 +- .../Diagnostics/Pipes/Infos/SystemInfo.php | 10 + app/Actions/Search/PhotoSearch.php | 25 +- app/Assets/Helpers.php | 48 + app/Contracts/Livewire/Openable.php | 32 + app/Contracts/Livewire/Params.php | 17 + app/Contracts/Livewire/Reloadable.php | 8 + app/Enum/AlbumDecorationOrientation.php | 16 + app/Enum/AlbumDecorationType.php | 17 + app/Enum/AlbumLayoutType.php | 15 - app/Enum/ImageOverlayType.php | 16 + app/Enum/Livewire/FileStatus.php | 13 + app/Enum/Livewire/NotificationType.php | 11 + app/Enum/PhotoLayoutType.php | 34 + app/Enum/Traits/WireableEnumTrait.php | 35 + app/Exceptions/Handler.php | 61 +- .../Handlers/ViteManifestNotFoundHandler.php | 42 + .../PhotoCollectionEmptyException.php | 21 + app/Facades/Helpers.php | 1 + app/Http/Controllers/RedirectController.php | 7 + app/Http/Kernel.php | 1 + app/Http/Middleware/AcceptContentType.php | 36 + app/Http/Middleware/DisableCSP.php | 28 + .../Settings/SetLayoutSettingRequest.php | 6 +- app/Http/Requests/User/U2FRequest.php | 2 +- .../WebAuthn/DeleteCredentialRequest.php | 2 +- .../WebAuthn/ListCredentialsRequest.php | 6 +- .../Collections/AlbumCollectionResource.php | 19 + app/Http/Resources/ConfigurationResource.php | 4 +- app/Http/Resources/Models/AlbumResource.php | 3 +- app/Http/Resources/Models/PhotoResource.php | 75 +- .../Resources/Models/SizeVariantResource.php | 2 +- .../Resources/Rights/UserRightsResource.php | 1 - app/Http/RuleSets/AddAlbumRuleSet.php | 19 + app/Http/RuleSets/ChangeLoginRuleSet.php | 20 + app/Http/RuleSets/LoginRuleSet.php | 19 + .../RuleSets/Users/SetUserSettingsRuleSet.php | 2 +- app/Image/Files/NativeLocalFile.php | 35 + app/Livewire/Components/Base/ContextMenu.php | 78 + app/Livewire/Components/Base/Modal.php | 88 + .../Components/Forms/Add/ImportFromServer.php | 90 + .../Components/Forms/Add/ImportFromUrl.php | 107 + app/Livewire/Components/Forms/Add/Upload.php | 169 + .../Components/Forms/Album/Create.php | 102 + .../Components/Forms/Album/CreateTag.php | 103 + .../Components/Forms/Album/Delete.php | 101 + .../Components/Forms/Album/DeletePanel.php | 89 + app/Livewire/Components/Forms/Album/Merge.php | 134 + app/Livewire/Components/Forms/Album/Move.php | 127 + .../Components/Forms/Album/MovePanel.php | 111 + .../Components/Forms/Album/Properties.php | 137 + .../Components/Forms/Album/Rename.php | 93 + .../Components/Forms/Album/SearchAlbum.php | 182 + .../Components/Forms/Album/ShareWith.php | 155 + .../Components/Forms/Album/ShareWithLine.php | 83 + .../Components/Forms/Album/Transfer.php | 121 + .../Components/Forms/Album/UnlockAlbum.php | 76 + .../Components/Forms/Album/Visibility.php | 147 + .../Components/Forms/Confirms/SaveAll.php | 47 + .../Components/Forms/Photo/CopyTo.php | 124 + .../Components/Forms/Photo/Delete.php | 95 + .../Components/Forms/Photo/Download.php | 69 + app/Livewire/Components/Forms/Photo/Move.php | 118 + .../Components/Forms/Photo/Rename.php | 83 + app/Livewire/Components/Forms/Photo/Tag.php | 94 + .../Components/Forms/Profile/GetApiToken.php | 111 + .../Forms/Profile/ManageSecondFactor.php | 89 + .../Components/Forms/Profile/SecondFactor.php | 65 + .../Components/Forms/Profile/SetEmail.php | 67 + .../Components/Forms/Profile/SetLogin.php | 92 + .../Base/BaseConfigDoubleDropDown.php | 95 + .../Settings/Base/BaseConfigDropDown.php | 69 + .../Forms/Settings/Base/BooleanSetting.php | 77 + .../Forms/Settings/Base/StringSetting.php | 76 + .../SetAlbumDecorationOrientationSetting.php | 34 + .../Settings/SetAlbumDecorationSetting.php | 34 + .../Forms/Settings/SetAlbumSortingSetting.php | 56 + .../Forms/Settings/SetLangSetting.php | 35 + .../Forms/Settings/SetLayoutSetting.php | 34 + .../Settings/SetLicenseDefaultSetting.php | 34 + .../Forms/Settings/SetMapProviderSetting.php | 39 + .../Forms/Settings/SetPhotoOverlaySetting.php | 34 + .../Forms/Settings/SetPhotoSortingSetting.php | 56 + app/Livewire/Components/Menus/AlbumAdd.php | 69 + .../Components/Menus/AlbumDropdown.php | 61 + .../Components/Menus/AlbumsDropdown.php | 61 + app/Livewire/Components/Menus/LeftMenu.php | 137 + .../Components/Menus/PhotoDropdown.php | 118 + .../Components/Menus/PhotosDropdown.php | 102 + app/Livewire/Components/Modals/About.php | 56 + app/Livewire/Components/Modals/Login.php | 95 + .../Diagnostics/AbstractPreSection.php | 41 + .../Modules/Diagnostics/Configurations.php | 18 + .../Components/Modules/Diagnostics/Errors.php | 63 + .../Components/Modules/Diagnostics/Infos.php | 18 + .../Modules/Diagnostics/Optimize.php | 54 + .../Components/Modules/Diagnostics/Space.php | 51 + .../Components/Modules/Users/UserLine.php | 106 + app/Livewire/Components/Pages/AllSettings.php | 75 + app/Livewire/Components/Pages/Diagnostics.php | 34 + app/Livewire/Components/Pages/Frame.php | 113 + .../Components/Pages/Gallery/Album.php | 219 + .../Components/Pages/Gallery/Albums.php | 93 + .../Pages/Gallery/BaseAlbumComponent.php | 155 + .../Components/Pages/Gallery/Search.php | 168 + .../Pages/Gallery/SensitiveWarning.php | 60 + app/Livewire/Components/Pages/Jobs.php | 59 + app/Livewire/Components/Pages/Landing.php | 43 + app/Livewire/Components/Pages/Map.php | 91 + app/Livewire/Components/Pages/Profile.php | 58 + app/Livewire/Components/Pages/Settings.php | 97 + app/Livewire/Components/Pages/Sharing.php | 76 + app/Livewire/Components/Pages/Users.php | 121 + app/Livewire/DTO/AlbumFlags.php | 21 + app/Livewire/DTO/AlbumFormatted.php | 43 + app/Livewire/DTO/AlbumRights.php | 41 + app/Livewire/DTO/AlbumsFlags.php | 34 + app/Livewire/DTO/Layouts.php | 30 + app/Livewire/DTO/PhotoFlags.php | 18 + app/Livewire/DTO/SessionFlags.php | 34 + app/Livewire/Forms/AllConfigsForms.php | 76 + app/Livewire/Forms/ImportFromServerForm.php | 126 + app/Livewire/Forms/ImportFromUrlForm.php | 77 + app/Livewire/Forms/PhotoUpdateForm.php | 103 + app/Livewire/Synth/AlbumFlagsSynth.php | 80 + app/Livewire/Synth/AlbumSynth.php | 42 + app/Livewire/Synth/PhotoSynth.php | 38 + app/Livewire/Synth/SessionFlagsSynth.php | 81 + .../Traits/AlbumsPhotosContextMenus.php | 75 + .../Traits/InteractWithContextMenu.php | 18 + app/Livewire/Traits/InteractWithModal.php | 45 + app/Livewire/Traits/Notify.php | 24 + app/Livewire/Traits/SilentUpdate.php | 23 + app/Livewire/Traits/UseOpenable.php | 47 + app/Livewire/Traits/UsePhotoViewActions.php | 145 + app/Livewire/Traits/UseValidator.php | 37 + app/Livewire/Traits/UseWireable.php | 47 + app/Models/Album.php | 2 + app/Models/BaseAlbumImpl.php | 5 + app/Models/Extensions/BaseConfigMigration.php | 31 + .../ToArrayThrowsNotImplemented.php | 13 +- app/Models/Photo.php | 12 + app/Models/SizeVariant.php | 30 + app/Models/SymLink.php | 5 + app/Models/TagAlbum.php | 16 + app/Models/User.php | 7 + app/Policies/AlbumPolicy.php | 41 +- app/Policies/UserPolicy.php | 17 - app/Providers/AppServiceProvider.php | 17 + app/Providers/RouteServiceProvider.php | 3 + app/SmartAlbums/BaseSmartAlbum.php | 31 + app/View/Components/Footer.php | 74 + .../Components/Gallery/Album/SharingLinks.php | 31 + .../Components/Gallery/Album/Thumbs/Album.php | 73 + .../Gallery/Album/Thumbs/AlbumThumb.php | 48 + .../Components/Gallery/Album/Thumbs/Photo.php | 170 + .../Components/Gallery/Photo/Download.php | 61 + app/View/Components/Meta.php | 75 + composer.json | 5 +- composer.lock | 286 +- config/app.php | 23 + config/filesystems.php | 10 +- config/livewire.php | 158 + database/factories/AlbumFactory.php | 65 + database/factories/PhotoFactory.php | 136 + database/factories/SizeVariantFactory.php | 57 + database/factories/Traits/OwnedBy.php | 26 + database/factories/UserFactory.php | 59 +- ...odified_date_when_no_exit_date_setting.php | 42 +- ...110932_add_date_display_configurations.php | 70 + ..._223901_add_config_livewire_chunk_size.php | 22 + ...4_233717_refactor_type_layout_livewire.php | 36 + .../2023_09_25_123925_config_blur_nsfw.php | 22 + ..._232500_config_pagination_search_limit.php | 23 + ...3_12_19_115547_search_characters_limit.php | 23 + ...12_19_122408_add_positive_requirements.php | 2 + ...80854_add_setting_height_width_gallery.php | 58 + .../2023_12_23_160356_bump_version050000.php | 24 + lang/cz/lychee.php | 9 + lang/de/lychee.php | 9 + lang/el/lychee.php | 9 + lang/en/lychee.php | 11 +- lang/es/lychee.php | 9 + lang/fr/lychee.php | 9 + lang/hu/lychee.php | 9 + lang/it/lychee.php | 9 + lang/nl/lychee.php | 9 + lang/no/lychee.php | 9 + lang/pl/lychee.php | 9 + lang/pt/lychee.php | 9 + lang/ru/lychee.php | 9 + lang/sk/lychee.php | 9 + lang/sv/lychee.php | 9 + lang/vi/lychee.php | 9 + lang/zh_CN/lychee.php | 9 + lang/zh_TW/lychee.php | 9 + package-lock.json | 3523 +++++++++++++++++ package.json | 44 + phpstan.neon | 50 +- phpstan/stubs/Wireable.stub | 22 + phpunit.xml | 4 + postcss.config.js | 6 + public/vendor/log-viewer/app.css | 2 +- public/vendor/log-viewer/app.js | 2 +- public/vendor/log-viewer/app.js.LICENSE.txt | 2 + public/vendor/log-viewer/mix-manifest.json | 4 +- resources/css/app.css | 123 + resources/css/fonts.css | 68 + resources/css/photoDescription.css | 36 + resources/fonts/roboto-v29-300.woff2 | Bin 0 -> 50084 bytes resources/fonts/roboto-v29-400.woff2 | Bin 0 -> 50240 bytes resources/fonts/roboto-v29-700.woff2 | Bin 0 -> 50196 bytes resources/fonts/socials.eot | Bin 0 -> 2424 bytes resources/fonts/socials.svg | 15 + resources/fonts/socials.ttf | Bin 0 -> 2260 bytes resources/fonts/socials.woff | Bin 0 -> 2336 bytes resources/img/noise.png | Bin 0 -> 65982 bytes resources/js/app.ts | 20 + resources/js/data/panel/index.ts | 14 + resources/js/data/panel/photoFormPanel.ts | 68 + resources/js/data/panel/photoListingPanel.ts | 26 + resources/js/data/panel/photoSidebarPanel.ts | 41 + resources/js/data/panel/searchPanel.ts | 41 + resources/js/data/qrcode/qrBuilder.ts | 23 + resources/js/data/views/albumView.ts | 334 ++ resources/js/data/views/index.ts | 14 + resources/js/data/views/map.types.d.ts | 38 + resources/js/data/views/mapView.ts | 197 + resources/js/data/views/photoView.ts | 141 + resources/js/data/views/types.d.ts | 162 + resources/js/data/views/uploadView.ts | 101 + resources/js/data/webauthn/index.ts | 10 + resources/js/data/webauthn/loginWebAuthn.ts | 52 + .../js/data/webauthn/registerWebAuthn.ts | 47 + resources/js/global.d.ts | 10 + .../js/lycheeOrg/actions/albumActions.ts | 66 + resources/js/lycheeOrg/actions/keybindings.ts | 237 ++ resources/js/lycheeOrg/actions/selection.ts | 242 ++ resources/js/lycheeOrg/actions/sidebarMap.ts | 64 + resources/js/lycheeOrg/backend.d.ts | 457 +++ resources/js/lycheeOrg/flags/albumFlags.ts | 13 + resources/js/lycheeOrg/flags/photoFlags.ts | 36 + resources/js/lycheeOrg/layouts/PhotoLayout.ts | 48 + resources/js/lycheeOrg/layouts/types.d.ts | 9 + resources/js/lycheeOrg/layouts/useGrid.ts | 61 + resources/js/lycheeOrg/layouts/useJustify.ts | 41 + resources/js/lycheeOrg/layouts/useMasonry.ts | 71 + resources/js/lycheeOrg/layouts/useSquare.ts | 52 + resources/js/vendor/webauthn/webauthn.ts | 338 ++ .../components/context-menu/item.blade.php | 8 + .../context-menu/separator.blade.php | 1 + .../views/components/footer-landing.blade.php | 25 + resources/views/components/footer.blade.php | 40 + .../components/forms/buttons/action.blade.php | 7 + .../components/forms/buttons/cancel.blade.php | 7 + .../components/forms/buttons/create.blade.php | 7 + .../components/forms/buttons/danger.blade.php | 7 + .../components/forms/defaulttickbox.blade.php | 7 + .../views/components/forms/dropdown.blade.php | 12 + .../components/forms/error-message.blade.php | 4 + .../components/forms/inputs/date.blade.php | 6 + .../forms/inputs/important.blade.php | 7 + .../forms/inputs/password.blade.php | 15 + .../components/forms/inputs/text.blade.php | 7 + .../views/components/forms/textarea.blade.php | 3 + .../views/components/forms/tickbox.blade.php | 9 + .../views/components/forms/toggle.blade.php | 6 + .../gallery/album/details.blade.php | 42 + .../components/gallery/album/hero.blade.php | 15 + .../gallery/album/login-dialog.blade.php | 10 + .../gallery/album/menu/danger.blade.php | 8 + .../gallery/album/menu/item.blade.php | 10 + .../gallery/album/menu/menu.blade.php | 38 + .../gallery/album/sharing-links.blade.php | 35 + .../album/thumbs/album-thumb.blade.php | 16 + .../gallery/album/thumbs/album.blade.php | 97 + .../gallery/album/thumbs/photo.blade.php | 47 + .../views/components/gallery/badge.blade.php | 8 + .../components/gallery/divider.blade.php | 4 + .../components/gallery/photo/button.blade.php | 4 + .../gallery/photo/downloads.blade.php | 20 + .../components/gallery/photo/line.blade.php | 7 + .../gallery/photo/next-previous.blade.php | 19 + .../gallery/photo/overlay.blade.php | 20 + .../gallery/photo/properties.blade.php | 45 + .../gallery/photo/sidebar.blade.php | 119 + .../gallery/view/photo-listing.blade.php | 25 + .../components/gallery/view/photo.blade.php | 128 + .../components/header/actions-menus.blade.php | 34 + .../views/components/header/back.blade.php | 3 + .../views/components/header/bar.blade.php | 7 + .../views/components/header/button.blade.php | 4 + .../views/components/header/title.blade.php | 5 + .../views/components/help/cell.blade.php | 2 + .../views/components/help/head.blade.php | 1 + resources/views/components/help/kbd.blade.php | 1 + .../views/components/help/table.blade.php | 3 + .../views/components/icons/iconic.blade.php | 2 + .../views/components/layouts/app.blade.php | 29 + .../components/leftbar/leftbar-item.blade.php | 11 + resources/views/components/meta.blade.php | 24 + .../views/components/notifications.blade.php | 71 + .../views/components/shortcuts.blade.php | 116 + .../views/components/update-status.blade.php | 3 + .../views/components/webauthn/login.blade.php | 30 + resources/views/includes/svg.blade.php | 256 +- .../views/install/setup-success.blade.php | 2 +- .../components/context-menu.blade.php | 16 + .../livewire/components/left-menu.blade.php | 67 + .../views/livewire/components/modal.blade.php | 22 + .../context-menus/album-add.blade.php | 16 + .../context-menus/album-dropdown.blade.php | 10 + .../context-menus/albums-dropdown.blade.php | 7 + .../context-menus/photo-dropdown.blade.php | 15 + .../context-menus/photos-add.blade.php | 15 + .../context-menus/photos-dropdown.blade.php | 14 + .../livewire/forms/add/create-tag.blade.php | 23 + .../views/livewire/forms/add/create.blade.php | 19 + .../forms/add/import-from-server.blade.php | 15 + .../add/import-from-server.old.blade.php | 47 + .../forms/add/import-from-url.blade.php | 16 + .../views/livewire/forms/add/upload.blade.php | 94 + .../forms/album/delete-panel.blade.php | 6 + .../livewire/forms/album/delete.blade.php | 22 + .../livewire/forms/album/merge.blade.php | 37 + .../livewire/forms/album/move-panel.blade.php | 15 + .../views/livewire/forms/album/move.blade.php | 37 + .../livewire/forms/album/properties.blade.php | 26 + .../livewire/forms/album/rename.blade.php | 21 + .../forms/album/search-album.blade.php | 49 + .../forms/album/share-with-line.blade.php | 20 + .../livewire/forms/album/share-with.blade.php | 114 + .../livewire/forms/album/transfer.blade.php | 11 + .../forms/album/unlock-album.blade.php | 36 + .../livewire/forms/album/visibility.blade.php | 48 + .../forms/confirms/save-all.blade.php | 11 + .../views/livewire/forms/default.blade.php | 29 + .../livewire/forms/photo/copyTo.blade.php | 16 + .../livewire/forms/photo/delete.blade.php | 21 + .../livewire/forms/photo/download.blade.php | 9 + .../views/livewire/forms/photo/move.blade.php | 16 + .../livewire/forms/photo/rename.blade.php | 23 + .../views/livewire/forms/photo/tag.blade.php | 29 + .../forms/profile/get-api-token.blade.php | 22 + .../profile/manage-second-factor.blade.php | 4 + .../forms/profile/set-login.blade.php | 27 + .../forms/settings/double-drop-down.blade.php | 9 + .../forms/settings/drop-down.blade.php | 6 + .../livewire/forms/settings/input.blade.php | 9 + .../livewire/forms/settings/toggle.blade.php | 11 + .../views/livewire/modals/about.blade.php | 27 + .../views/livewire/modals/login.blade.php | 34 + .../modules/diagnostics/pre-colored.blade.php | 9 + .../modules/diagnostics/pre.blade.php | 9 + .../diagnostics/with-action-call.blade.php | 16 + .../gallery/sensitive-warning.blade.php | 14 + .../modules/profile/second-factor.blade.php | 31 + .../modules/users/user-line.blade.php | 15 + .../livewire/pages/all-settings.blade.php | 52 + .../livewire/pages/diagnostics.blade.php | 15 + .../livewire/pages/gallery/album.blade.php | 67 + .../livewire/pages/gallery/albums.blade.php | 79 + .../livewire/pages/gallery/frame.blade.php | 40 + .../livewire/pages/gallery/map.blade.php | 22 + .../livewire/pages/gallery/search.blade.php | 85 + resources/views/livewire/pages/jobs.blade.php | 24 + .../views/livewire/pages/landing.blade.php | 51 + .../views/livewire/pages/profile.blade.php | 20 + .../views/livewire/pages/settings.blade.php | 70 + .../views/livewire/pages/sharing.blade.php | 58 + .../views/livewire/pages/users.blade.php | 55 + .../vendor/livewire/simple-tailwind.blade.php | 45 + .../views/vendor/livewire/tailwind.blade.php | 171 + .../vendor/pagination/tailwind.blade.php | 148 + routes/web-livewire.php | 50 + routes/web.php | 13 +- scripts/post-merge | 9 + scripts/pre-commit | 15 + tailwind.config.js | 183 + tests/AbstractTestCase.php | 13 + tests/Feature/BasePhotosAddHandler.php | 2 +- tests/Feature/CommandFixPermissionsTest.php | 4 +- tests/Feature/CommandGenerateThumbsTest.php | 4 +- tests/Feature/CommandGhostbusterTest.php | 30 +- tests/Feature/CommandTakeDateTest.php | 2 +- tests/Feature/CommandVideoDataTest.php | 4 +- tests/Feature/PhotosAddMethodsTest.php | 20 +- tests/Feature/PhotosOperationsTest.php | 4 +- tests/Feature/Traits/RequiresEmptyUsers.php | 4 +- tests/Livewire/Base/BaseLivewireTest.php | 94 + tests/Livewire/Forms/Album/CreateTagTest.php | 49 + tests/Livewire/Forms/Album/CreateTest.php | 60 + .../Livewire/Forms/Album/DeletePanelTest.php | 52 + tests/Livewire/Forms/Album/DeleteTest.php | 58 + tests/Livewire/Forms/Album/MergeMoveTest.php | 132 + tests/Livewire/Forms/Album/MovePanelTest.php | 66 + tests/Livewire/Forms/Album/PropertiesTest.php | 43 + tests/Livewire/Forms/Album/RenameTest.php | 61 + .../Livewire/Forms/Album/SearchAlbumTest.php | 137 + tests/Livewire/Forms/Album/ShareWithTest.php | 105 + tests/Livewire/Forms/Album/TransferTest.php | 70 + tests/Livewire/Forms/Album/VisibilityTest.php | 123 + tests/Livewire/Forms/ConfirmTest.php | 42 + tests/Livewire/Forms/FormsProfileTest.php | 198 + tests/Livewire/Forms/ImportFromServerTest.php | 90 + tests/Livewire/Forms/ImportFromUrlTest.php | 57 + tests/Livewire/Forms/Photo/CopyToTest.php | 68 + tests/Livewire/Forms/Photo/DeleteTest.php | 58 + tests/Livewire/Forms/Photo/DownloadTest.php | 53 + tests/Livewire/Forms/Photo/MoveTest.php | 68 + tests/Livewire/Forms/Photo/RenameTest.php | 61 + tests/Livewire/Forms/Photo/TagTest.php | 70 + tests/Livewire/Forms/SettingsTest.php | 89 + tests/Livewire/Forms/UploadTest.php | 90 + tests/Livewire/Menus/AlbumAddTest.php | 67 + tests/Livewire/Menus/AlbumDropdownTest.php | 85 + tests/Livewire/Menus/AlbumsDropdownTest.php | 86 + tests/Livewire/Menus/ContextMenuTest.php | 43 + tests/Livewire/Menus/LeftMenuTest.php | 37 + tests/Livewire/Menus/PhotoDropdownTest.php | 136 + tests/Livewire/Menus/PhotosDropdownTest.php | 119 + tests/Livewire/Modals/AboutTest.php | 30 + tests/Livewire/Modals/LoginTest.php | 39 + tests/Livewire/Modals/ModalTest.php | 46 + tests/Livewire/Modules/ErrorsTest.php | 47 + tests/Livewire/Modules/SpaceTest.php | 51 + tests/Livewire/Modules/UserLineTest.php | 69 + tests/Livewire/Pages/AlbumTest.php | 134 + tests/Livewire/Pages/AllSettingsTest.php | 59 + tests/Livewire/Pages/DiagnosticsTest.php | 56 + tests/Livewire/Pages/FrameTest.php | 104 + tests/Livewire/Pages/GalleryTest.php | 34 + tests/Livewire/Pages/IndexTest.php | 69 + tests/Livewire/Pages/JobsTest.php | 39 + tests/Livewire/Pages/LandingTest.php | 48 + tests/Livewire/Pages/MapTest.php | 85 + tests/Livewire/Pages/ProfileTest.php | 45 + tests/Livewire/Pages/SettingsTest.php | 48 + tests/Livewire/Pages/SharingTest.php | 56 + tests/Livewire/Pages/UsersTest.php | 94 + tests/Livewire/WireableTest.php | 45 + tsconfig.json | 112 + version.md | 2 +- vite.config.js | 33 + 451 files changed, 25458 insertions(+), 215 deletions(-) create mode 100644 .prettierrc.json create mode 100644 app/Contracts/Livewire/Openable.php create mode 100644 app/Contracts/Livewire/Params.php create mode 100644 app/Contracts/Livewire/Reloadable.php delete mode 100644 app/Enum/AlbumLayoutType.php create mode 100644 app/Enum/Livewire/FileStatus.php create mode 100644 app/Enum/Livewire/NotificationType.php create mode 100644 app/Enum/PhotoLayoutType.php create mode 100644 app/Enum/Traits/WireableEnumTrait.php create mode 100644 app/Exceptions/Handlers/ViteManifestNotFoundHandler.php create mode 100644 app/Exceptions/PhotoCollectionEmptyException.php create mode 100644 app/Http/Resources/Collections/AlbumCollectionResource.php create mode 100644 app/Http/RuleSets/AddAlbumRuleSet.php create mode 100644 app/Http/RuleSets/ChangeLoginRuleSet.php create mode 100644 app/Http/RuleSets/LoginRuleSet.php create mode 100644 app/Livewire/Components/Base/ContextMenu.php create mode 100644 app/Livewire/Components/Base/Modal.php create mode 100644 app/Livewire/Components/Forms/Add/ImportFromServer.php create mode 100644 app/Livewire/Components/Forms/Add/ImportFromUrl.php create mode 100644 app/Livewire/Components/Forms/Add/Upload.php create mode 100644 app/Livewire/Components/Forms/Album/Create.php create mode 100644 app/Livewire/Components/Forms/Album/CreateTag.php create mode 100644 app/Livewire/Components/Forms/Album/Delete.php create mode 100644 app/Livewire/Components/Forms/Album/DeletePanel.php create mode 100644 app/Livewire/Components/Forms/Album/Merge.php create mode 100644 app/Livewire/Components/Forms/Album/Move.php create mode 100644 app/Livewire/Components/Forms/Album/MovePanel.php create mode 100644 app/Livewire/Components/Forms/Album/Properties.php create mode 100644 app/Livewire/Components/Forms/Album/Rename.php create mode 100644 app/Livewire/Components/Forms/Album/SearchAlbum.php create mode 100644 app/Livewire/Components/Forms/Album/ShareWith.php create mode 100644 app/Livewire/Components/Forms/Album/ShareWithLine.php create mode 100644 app/Livewire/Components/Forms/Album/Transfer.php create mode 100644 app/Livewire/Components/Forms/Album/UnlockAlbum.php create mode 100644 app/Livewire/Components/Forms/Album/Visibility.php create mode 100644 app/Livewire/Components/Forms/Confirms/SaveAll.php create mode 100644 app/Livewire/Components/Forms/Photo/CopyTo.php create mode 100644 app/Livewire/Components/Forms/Photo/Delete.php create mode 100644 app/Livewire/Components/Forms/Photo/Download.php create mode 100644 app/Livewire/Components/Forms/Photo/Move.php create mode 100644 app/Livewire/Components/Forms/Photo/Rename.php create mode 100644 app/Livewire/Components/Forms/Photo/Tag.php create mode 100644 app/Livewire/Components/Forms/Profile/GetApiToken.php create mode 100644 app/Livewire/Components/Forms/Profile/ManageSecondFactor.php create mode 100644 app/Livewire/Components/Forms/Profile/SecondFactor.php create mode 100644 app/Livewire/Components/Forms/Profile/SetEmail.php create mode 100644 app/Livewire/Components/Forms/Profile/SetLogin.php create mode 100644 app/Livewire/Components/Forms/Settings/Base/BaseConfigDoubleDropDown.php create mode 100644 app/Livewire/Components/Forms/Settings/Base/BaseConfigDropDown.php create mode 100644 app/Livewire/Components/Forms/Settings/Base/BooleanSetting.php create mode 100644 app/Livewire/Components/Forms/Settings/Base/StringSetting.php create mode 100644 app/Livewire/Components/Forms/Settings/SetAlbumDecorationOrientationSetting.php create mode 100644 app/Livewire/Components/Forms/Settings/SetAlbumDecorationSetting.php create mode 100644 app/Livewire/Components/Forms/Settings/SetAlbumSortingSetting.php create mode 100644 app/Livewire/Components/Forms/Settings/SetLangSetting.php create mode 100644 app/Livewire/Components/Forms/Settings/SetLayoutSetting.php create mode 100644 app/Livewire/Components/Forms/Settings/SetLicenseDefaultSetting.php create mode 100644 app/Livewire/Components/Forms/Settings/SetMapProviderSetting.php create mode 100644 app/Livewire/Components/Forms/Settings/SetPhotoOverlaySetting.php create mode 100644 app/Livewire/Components/Forms/Settings/SetPhotoSortingSetting.php create mode 100644 app/Livewire/Components/Menus/AlbumAdd.php create mode 100644 app/Livewire/Components/Menus/AlbumDropdown.php create mode 100644 app/Livewire/Components/Menus/AlbumsDropdown.php create mode 100644 app/Livewire/Components/Menus/LeftMenu.php create mode 100644 app/Livewire/Components/Menus/PhotoDropdown.php create mode 100644 app/Livewire/Components/Menus/PhotosDropdown.php create mode 100644 app/Livewire/Components/Modals/About.php create mode 100644 app/Livewire/Components/Modals/Login.php create mode 100644 app/Livewire/Components/Modules/Diagnostics/AbstractPreSection.php create mode 100644 app/Livewire/Components/Modules/Diagnostics/Configurations.php create mode 100644 app/Livewire/Components/Modules/Diagnostics/Errors.php create mode 100644 app/Livewire/Components/Modules/Diagnostics/Infos.php create mode 100644 app/Livewire/Components/Modules/Diagnostics/Optimize.php create mode 100644 app/Livewire/Components/Modules/Diagnostics/Space.php create mode 100644 app/Livewire/Components/Modules/Users/UserLine.php create mode 100644 app/Livewire/Components/Pages/AllSettings.php create mode 100644 app/Livewire/Components/Pages/Diagnostics.php create mode 100644 app/Livewire/Components/Pages/Frame.php create mode 100644 app/Livewire/Components/Pages/Gallery/Album.php create mode 100644 app/Livewire/Components/Pages/Gallery/Albums.php create mode 100644 app/Livewire/Components/Pages/Gallery/BaseAlbumComponent.php create mode 100644 app/Livewire/Components/Pages/Gallery/Search.php create mode 100644 app/Livewire/Components/Pages/Gallery/SensitiveWarning.php create mode 100644 app/Livewire/Components/Pages/Jobs.php create mode 100644 app/Livewire/Components/Pages/Landing.php create mode 100644 app/Livewire/Components/Pages/Map.php create mode 100644 app/Livewire/Components/Pages/Profile.php create mode 100644 app/Livewire/Components/Pages/Settings.php create mode 100644 app/Livewire/Components/Pages/Sharing.php create mode 100644 app/Livewire/Components/Pages/Users.php create mode 100644 app/Livewire/DTO/AlbumFlags.php create mode 100644 app/Livewire/DTO/AlbumFormatted.php create mode 100644 app/Livewire/DTO/AlbumRights.php create mode 100644 app/Livewire/DTO/AlbumsFlags.php create mode 100644 app/Livewire/DTO/Layouts.php create mode 100644 app/Livewire/DTO/PhotoFlags.php create mode 100644 app/Livewire/DTO/SessionFlags.php create mode 100644 app/Livewire/Forms/AllConfigsForms.php create mode 100644 app/Livewire/Forms/ImportFromServerForm.php create mode 100644 app/Livewire/Forms/ImportFromUrlForm.php create mode 100644 app/Livewire/Forms/PhotoUpdateForm.php create mode 100644 app/Livewire/Synth/AlbumFlagsSynth.php create mode 100644 app/Livewire/Synth/AlbumSynth.php create mode 100644 app/Livewire/Synth/PhotoSynth.php create mode 100644 app/Livewire/Synth/SessionFlagsSynth.php create mode 100644 app/Livewire/Traits/AlbumsPhotosContextMenus.php create mode 100644 app/Livewire/Traits/InteractWithContextMenu.php create mode 100644 app/Livewire/Traits/InteractWithModal.php create mode 100644 app/Livewire/Traits/Notify.php create mode 100644 app/Livewire/Traits/SilentUpdate.php create mode 100644 app/Livewire/Traits/UseOpenable.php create mode 100644 app/Livewire/Traits/UsePhotoViewActions.php create mode 100644 app/Livewire/Traits/UseValidator.php create mode 100644 app/Livewire/Traits/UseWireable.php create mode 100644 app/Models/Extensions/BaseConfigMigration.php create mode 100644 app/View/Components/Footer.php create mode 100644 app/View/Components/Gallery/Album/SharingLinks.php create mode 100644 app/View/Components/Gallery/Album/Thumbs/Album.php create mode 100644 app/View/Components/Gallery/Album/Thumbs/AlbumThumb.php create mode 100644 app/View/Components/Gallery/Album/Thumbs/Photo.php create mode 100644 app/View/Components/Gallery/Photo/Download.php create mode 100644 app/View/Components/Meta.php create mode 100644 config/livewire.php create mode 100644 database/factories/AlbumFactory.php create mode 100644 database/factories/PhotoFactory.php create mode 100644 database/factories/SizeVariantFactory.php create mode 100644 database/factories/Traits/OwnedBy.php create mode 100644 database/migrations/2023_09_24_110932_add_date_display_configurations.php create mode 100644 database/migrations/2023_09_24_223901_add_config_livewire_chunk_size.php create mode 100644 database/migrations/2023_09_24_233717_refactor_type_layout_livewire.php create mode 100644 database/migrations/2023_09_25_123925_config_blur_nsfw.php create mode 100644 database/migrations/2023_12_18_232500_config_pagination_search_limit.php create mode 100644 database/migrations/2023_12_19_115547_search_characters_limit.php create mode 100644 database/migrations/2023_12_20_180854_add_setting_height_width_gallery.php create mode 100644 database/migrations/2023_12_23_160356_bump_version050000.php create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 phpstan/stubs/Wireable.stub create mode 100644 postcss.config.js create mode 100644 resources/css/app.css create mode 100644 resources/css/fonts.css create mode 100644 resources/css/photoDescription.css create mode 100644 resources/fonts/roboto-v29-300.woff2 create mode 100644 resources/fonts/roboto-v29-400.woff2 create mode 100644 resources/fonts/roboto-v29-700.woff2 create mode 100644 resources/fonts/socials.eot create mode 100644 resources/fonts/socials.svg create mode 100644 resources/fonts/socials.ttf create mode 100644 resources/fonts/socials.woff create mode 100644 resources/img/noise.png create mode 100644 resources/js/app.ts create mode 100644 resources/js/data/panel/index.ts create mode 100644 resources/js/data/panel/photoFormPanel.ts create mode 100644 resources/js/data/panel/photoListingPanel.ts create mode 100644 resources/js/data/panel/photoSidebarPanel.ts create mode 100644 resources/js/data/panel/searchPanel.ts create mode 100644 resources/js/data/qrcode/qrBuilder.ts create mode 100644 resources/js/data/views/albumView.ts create mode 100644 resources/js/data/views/index.ts create mode 100644 resources/js/data/views/map.types.d.ts create mode 100644 resources/js/data/views/mapView.ts create mode 100644 resources/js/data/views/photoView.ts create mode 100644 resources/js/data/views/types.d.ts create mode 100644 resources/js/data/views/uploadView.ts create mode 100644 resources/js/data/webauthn/index.ts create mode 100644 resources/js/data/webauthn/loginWebAuthn.ts create mode 100644 resources/js/data/webauthn/registerWebAuthn.ts create mode 100644 resources/js/global.d.ts create mode 100644 resources/js/lycheeOrg/actions/albumActions.ts create mode 100644 resources/js/lycheeOrg/actions/keybindings.ts create mode 100644 resources/js/lycheeOrg/actions/selection.ts create mode 100644 resources/js/lycheeOrg/actions/sidebarMap.ts create mode 100644 resources/js/lycheeOrg/backend.d.ts create mode 100644 resources/js/lycheeOrg/flags/albumFlags.ts create mode 100644 resources/js/lycheeOrg/flags/photoFlags.ts create mode 100644 resources/js/lycheeOrg/layouts/PhotoLayout.ts create mode 100644 resources/js/lycheeOrg/layouts/types.d.ts create mode 100644 resources/js/lycheeOrg/layouts/useGrid.ts create mode 100644 resources/js/lycheeOrg/layouts/useJustify.ts create mode 100644 resources/js/lycheeOrg/layouts/useMasonry.ts create mode 100644 resources/js/lycheeOrg/layouts/useSquare.ts create mode 100644 resources/js/vendor/webauthn/webauthn.ts create mode 100644 resources/views/components/context-menu/item.blade.php create mode 100644 resources/views/components/context-menu/separator.blade.php create mode 100644 resources/views/components/footer-landing.blade.php create mode 100644 resources/views/components/footer.blade.php create mode 100644 resources/views/components/forms/buttons/action.blade.php create mode 100644 resources/views/components/forms/buttons/cancel.blade.php create mode 100644 resources/views/components/forms/buttons/create.blade.php create mode 100644 resources/views/components/forms/buttons/danger.blade.php create mode 100644 resources/views/components/forms/defaulttickbox.blade.php create mode 100644 resources/views/components/forms/dropdown.blade.php create mode 100644 resources/views/components/forms/error-message.blade.php create mode 100644 resources/views/components/forms/inputs/date.blade.php create mode 100644 resources/views/components/forms/inputs/important.blade.php create mode 100644 resources/views/components/forms/inputs/password.blade.php create mode 100644 resources/views/components/forms/inputs/text.blade.php create mode 100644 resources/views/components/forms/textarea.blade.php create mode 100644 resources/views/components/forms/tickbox.blade.php create mode 100644 resources/views/components/forms/toggle.blade.php create mode 100644 resources/views/components/gallery/album/details.blade.php create mode 100644 resources/views/components/gallery/album/hero.blade.php create mode 100644 resources/views/components/gallery/album/login-dialog.blade.php create mode 100644 resources/views/components/gallery/album/menu/danger.blade.php create mode 100644 resources/views/components/gallery/album/menu/item.blade.php create mode 100644 resources/views/components/gallery/album/menu/menu.blade.php create mode 100644 resources/views/components/gallery/album/sharing-links.blade.php create mode 100644 resources/views/components/gallery/album/thumbs/album-thumb.blade.php create mode 100644 resources/views/components/gallery/album/thumbs/album.blade.php create mode 100644 resources/views/components/gallery/album/thumbs/photo.blade.php create mode 100644 resources/views/components/gallery/badge.blade.php create mode 100644 resources/views/components/gallery/divider.blade.php create mode 100644 resources/views/components/gallery/photo/button.blade.php create mode 100644 resources/views/components/gallery/photo/downloads.blade.php create mode 100644 resources/views/components/gallery/photo/line.blade.php create mode 100644 resources/views/components/gallery/photo/next-previous.blade.php create mode 100644 resources/views/components/gallery/photo/overlay.blade.php create mode 100644 resources/views/components/gallery/photo/properties.blade.php create mode 100644 resources/views/components/gallery/photo/sidebar.blade.php create mode 100644 resources/views/components/gallery/view/photo-listing.blade.php create mode 100644 resources/views/components/gallery/view/photo.blade.php create mode 100644 resources/views/components/header/actions-menus.blade.php create mode 100644 resources/views/components/header/back.blade.php create mode 100644 resources/views/components/header/bar.blade.php create mode 100644 resources/views/components/header/button.blade.php create mode 100644 resources/views/components/header/title.blade.php create mode 100644 resources/views/components/help/cell.blade.php create mode 100644 resources/views/components/help/head.blade.php create mode 100644 resources/views/components/help/kbd.blade.php create mode 100644 resources/views/components/help/table.blade.php create mode 100644 resources/views/components/icons/iconic.blade.php create mode 100644 resources/views/components/layouts/app.blade.php create mode 100644 resources/views/components/leftbar/leftbar-item.blade.php create mode 100644 resources/views/components/meta.blade.php create mode 100644 resources/views/components/notifications.blade.php create mode 100644 resources/views/components/shortcuts.blade.php create mode 100644 resources/views/components/update-status.blade.php create mode 100644 resources/views/components/webauthn/login.blade.php create mode 100644 resources/views/livewire/components/context-menu.blade.php create mode 100644 resources/views/livewire/components/left-menu.blade.php create mode 100644 resources/views/livewire/components/modal.blade.php create mode 100644 resources/views/livewire/context-menus/album-add.blade.php create mode 100644 resources/views/livewire/context-menus/album-dropdown.blade.php create mode 100644 resources/views/livewire/context-menus/albums-dropdown.blade.php create mode 100644 resources/views/livewire/context-menus/photo-dropdown.blade.php create mode 100644 resources/views/livewire/context-menus/photos-add.blade.php create mode 100644 resources/views/livewire/context-menus/photos-dropdown.blade.php create mode 100644 resources/views/livewire/forms/add/create-tag.blade.php create mode 100644 resources/views/livewire/forms/add/create.blade.php create mode 100644 resources/views/livewire/forms/add/import-from-server.blade.php create mode 100644 resources/views/livewire/forms/add/import-from-server.old.blade.php create mode 100644 resources/views/livewire/forms/add/import-from-url.blade.php create mode 100644 resources/views/livewire/forms/add/upload.blade.php create mode 100644 resources/views/livewire/forms/album/delete-panel.blade.php create mode 100644 resources/views/livewire/forms/album/delete.blade.php create mode 100644 resources/views/livewire/forms/album/merge.blade.php create mode 100644 resources/views/livewire/forms/album/move-panel.blade.php create mode 100644 resources/views/livewire/forms/album/move.blade.php create mode 100644 resources/views/livewire/forms/album/properties.blade.php create mode 100644 resources/views/livewire/forms/album/rename.blade.php create mode 100644 resources/views/livewire/forms/album/search-album.blade.php create mode 100644 resources/views/livewire/forms/album/share-with-line.blade.php create mode 100644 resources/views/livewire/forms/album/share-with.blade.php create mode 100644 resources/views/livewire/forms/album/transfer.blade.php create mode 100644 resources/views/livewire/forms/album/unlock-album.blade.php create mode 100644 resources/views/livewire/forms/album/visibility.blade.php create mode 100644 resources/views/livewire/forms/confirms/save-all.blade.php create mode 100644 resources/views/livewire/forms/default.blade.php create mode 100644 resources/views/livewire/forms/photo/copyTo.blade.php create mode 100644 resources/views/livewire/forms/photo/delete.blade.php create mode 100644 resources/views/livewire/forms/photo/download.blade.php create mode 100644 resources/views/livewire/forms/photo/move.blade.php create mode 100644 resources/views/livewire/forms/photo/rename.blade.php create mode 100644 resources/views/livewire/forms/photo/tag.blade.php create mode 100644 resources/views/livewire/forms/profile/get-api-token.blade.php create mode 100644 resources/views/livewire/forms/profile/manage-second-factor.blade.php create mode 100644 resources/views/livewire/forms/profile/set-login.blade.php create mode 100644 resources/views/livewire/forms/settings/double-drop-down.blade.php create mode 100644 resources/views/livewire/forms/settings/drop-down.blade.php create mode 100644 resources/views/livewire/forms/settings/input.blade.php create mode 100644 resources/views/livewire/forms/settings/toggle.blade.php create mode 100644 resources/views/livewire/modals/about.blade.php create mode 100644 resources/views/livewire/modals/login.blade.php create mode 100644 resources/views/livewire/modules/diagnostics/pre-colored.blade.php create mode 100644 resources/views/livewire/modules/diagnostics/pre.blade.php create mode 100644 resources/views/livewire/modules/diagnostics/with-action-call.blade.php create mode 100644 resources/views/livewire/modules/gallery/sensitive-warning.blade.php create mode 100644 resources/views/livewire/modules/profile/second-factor.blade.php create mode 100644 resources/views/livewire/modules/users/user-line.blade.php create mode 100644 resources/views/livewire/pages/all-settings.blade.php create mode 100644 resources/views/livewire/pages/diagnostics.blade.php create mode 100644 resources/views/livewire/pages/gallery/album.blade.php create mode 100644 resources/views/livewire/pages/gallery/albums.blade.php create mode 100644 resources/views/livewire/pages/gallery/frame.blade.php create mode 100644 resources/views/livewire/pages/gallery/map.blade.php create mode 100644 resources/views/livewire/pages/gallery/search.blade.php create mode 100644 resources/views/livewire/pages/jobs.blade.php create mode 100644 resources/views/livewire/pages/landing.blade.php create mode 100644 resources/views/livewire/pages/profile.blade.php create mode 100644 resources/views/livewire/pages/settings.blade.php create mode 100644 resources/views/livewire/pages/sharing.blade.php create mode 100644 resources/views/livewire/pages/users.blade.php create mode 100644 resources/views/vendor/livewire/simple-tailwind.blade.php create mode 100644 resources/views/vendor/livewire/tailwind.blade.php create mode 100644 resources/views/vendor/pagination/tailwind.blade.php create mode 100644 routes/web-livewire.php create mode 100644 tailwind.config.js create mode 100644 tests/Livewire/Base/BaseLivewireTest.php create mode 100644 tests/Livewire/Forms/Album/CreateTagTest.php create mode 100644 tests/Livewire/Forms/Album/CreateTest.php create mode 100644 tests/Livewire/Forms/Album/DeletePanelTest.php create mode 100644 tests/Livewire/Forms/Album/DeleteTest.php create mode 100644 tests/Livewire/Forms/Album/MergeMoveTest.php create mode 100644 tests/Livewire/Forms/Album/MovePanelTest.php create mode 100644 tests/Livewire/Forms/Album/PropertiesTest.php create mode 100644 tests/Livewire/Forms/Album/RenameTest.php create mode 100644 tests/Livewire/Forms/Album/SearchAlbumTest.php create mode 100644 tests/Livewire/Forms/Album/ShareWithTest.php create mode 100644 tests/Livewire/Forms/Album/TransferTest.php create mode 100644 tests/Livewire/Forms/Album/VisibilityTest.php create mode 100644 tests/Livewire/Forms/ConfirmTest.php create mode 100644 tests/Livewire/Forms/FormsProfileTest.php create mode 100644 tests/Livewire/Forms/ImportFromServerTest.php create mode 100644 tests/Livewire/Forms/ImportFromUrlTest.php create mode 100644 tests/Livewire/Forms/Photo/CopyToTest.php create mode 100644 tests/Livewire/Forms/Photo/DeleteTest.php create mode 100644 tests/Livewire/Forms/Photo/DownloadTest.php create mode 100644 tests/Livewire/Forms/Photo/MoveTest.php create mode 100644 tests/Livewire/Forms/Photo/RenameTest.php create mode 100644 tests/Livewire/Forms/Photo/TagTest.php create mode 100644 tests/Livewire/Forms/SettingsTest.php create mode 100644 tests/Livewire/Forms/UploadTest.php create mode 100644 tests/Livewire/Menus/AlbumAddTest.php create mode 100644 tests/Livewire/Menus/AlbumDropdownTest.php create mode 100644 tests/Livewire/Menus/AlbumsDropdownTest.php create mode 100644 tests/Livewire/Menus/ContextMenuTest.php create mode 100644 tests/Livewire/Menus/LeftMenuTest.php create mode 100644 tests/Livewire/Menus/PhotoDropdownTest.php create mode 100644 tests/Livewire/Menus/PhotosDropdownTest.php create mode 100644 tests/Livewire/Modals/AboutTest.php create mode 100644 tests/Livewire/Modals/LoginTest.php create mode 100644 tests/Livewire/Modals/ModalTest.php create mode 100644 tests/Livewire/Modules/ErrorsTest.php create mode 100644 tests/Livewire/Modules/SpaceTest.php create mode 100644 tests/Livewire/Modules/UserLineTest.php create mode 100644 tests/Livewire/Pages/AlbumTest.php create mode 100644 tests/Livewire/Pages/AllSettingsTest.php create mode 100644 tests/Livewire/Pages/DiagnosticsTest.php create mode 100644 tests/Livewire/Pages/FrameTest.php create mode 100644 tests/Livewire/Pages/GalleryTest.php create mode 100644 tests/Livewire/Pages/IndexTest.php create mode 100644 tests/Livewire/Pages/JobsTest.php create mode 100644 tests/Livewire/Pages/LandingTest.php create mode 100644 tests/Livewire/Pages/MapTest.php create mode 100644 tests/Livewire/Pages/ProfileTest.php create mode 100644 tests/Livewire/Pages/SettingsTest.php create mode 100644 tests/Livewire/Pages/SharingTest.php create mode 100644 tests/Livewire/Pages/UsersTest.php create mode 100644 tests/Livewire/WireableTest.php create mode 100644 tsconfig.json create mode 100644 vite.config.js diff --git a/.env.example b/.env.example index dc65064bdb2..fe8f76839ca 100644 --- a/.env.example +++ b/.env.example @@ -9,6 +9,9 @@ APP_FORCE_HTTPS=false # Do note that this disable CSP!! DEBUGBAR_ENABLED=false +# enable or disable the v5 layout. +LIVEWIRE_ENABLED=true + # enable or disable log viewer. By default it is enabled. LOG_VIEWER_ENABLED=true @@ -101,3 +104,6 @@ TRUSTED_PROXIES=null # Comma-separated list of class names of diagnostics checks that should be skipped. #SKIP_DIAGNOSTICS_CHECKS= + +VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" +VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" \ No newline at end of file diff --git a/.github/workflows/.env.mariadb b/.github/workflows/.env.mariadb index 5b2b4f189d1..fd8a185fabc 100644 --- a/.github/workflows/.env.mariadb +++ b/.github/workflows/.env.mariadb @@ -3,6 +3,7 @@ APP_URL=https://localhost APP_ENV=dev APP_KEY=SomeRandomString APP_DEBUG=true +LIVEWIRE_ENABLED=false DB_CONNECTION=mysql DB_HOST=localhost diff --git a/.github/workflows/.env.postgresql b/.github/workflows/.env.postgresql index 2d6c582c84b..57702d51d0c 100644 --- a/.github/workflows/.env.postgresql +++ b/.github/workflows/.env.postgresql @@ -3,6 +3,7 @@ APP_URL=https://localhost APP_ENV=dev APP_KEY=SomeRandomString APP_DEBUG=true +LIVEWIRE_ENABLED=false DB_CONNECTION=pgsql DB_HOST=localhost diff --git a/.github/workflows/.env.sqlite b/.github/workflows/.env.sqlite index 1aff99054cb..676b77bfaff 100644 --- a/.github/workflows/.env.sqlite +++ b/.github/workflows/.env.sqlite @@ -3,6 +3,7 @@ APP_URL=https://localhost APP_ENV=dev APP_KEY=SomeRandomString APP_DEBUG=true +LIVEWIRE_ENABLED=false DB_CONNECTION=sqlite DB_LIST_FOREIGN_KEYS=true diff --git a/.github/workflows/CICD.yml b/.github/workflows/CICD.yml index 3b914d1ab15..69f1e3b84ee 100644 --- a/.github/workflows/CICD.yml +++ b/.github/workflows/CICD.yml @@ -69,6 +69,35 @@ jobs: - name: Check source code for code style errors run: PHP_CS_FIXER_IGNORE_ENV=1 vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.php --verbose --diff --dry-run + check_js: + name: 2️⃣ JS Node ${{ matrix.node-version }} - Code Style errors & Compilation + runs-on: ubuntu-latest + needs: + - php_syntax_errors + strategy: + matrix: + node-version: [16, 18, 20] + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + + - name: Install + run: npm install -D + + - name: Check Style + run: npm run check-formatting + + - name: Check TypeScript + run: npm run check + + - name: Compile Front-end + run: npm run build + phpstan: name: 2️⃣ PHP 8.2 - PHPStan runs-on: ubuntu-latest @@ -106,6 +135,7 @@ jobs: - sqlite test-suite: - Feature + - Livewire # Service containers to run with `container-job` services: # Label used to access the service container @@ -282,6 +312,17 @@ jobs: with: composer-options: --no-dev + - name: Use Node.js 20 + uses: actions/setup-node@v3 + with: + node-version: 20 + + - name: Install + run: npm install + + - name: Compile Front-end + run: npm run build + - name: Build Dist run: | make clean dist diff --git a/.gitignore b/.gitignore index e380c9e2f36..2db2a099c05 100644 --- a/.gitignore +++ b/.gitignore @@ -5,9 +5,11 @@ build/* # Those are personal public/dist/user.css public/dist/custom.js +public/build/* # Pictures we do not commit public/uploads/** +public/uploads-*/** # Storage stuff: useless /storage/*.key diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 00000000000..8760090e21e --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,3 @@ +{ + "printWidth": 150 +} diff --git a/Makefile b/Makefile index 17ae0a26169..4c6374b1f7d 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,13 @@ composer: composer install --prefer-dist --no-dev php artisan vendor:publish --tag=log-viewer-asset -dist-gen: clean composer +npm-build: + rm -r public/build 2> /dev/null || true + rm -r node_modules 2> /dev/null || true + npm install + npm run build + +dist-gen: clean composer npm-build @echo "packaging..." @mkdir Lychee @mkdir Lychee/public @@ -19,6 +25,7 @@ dist-gen: clean composer @cp -r config Lychee @cp -r composer-cache Lychee @cp -r database Lychee + @cp -r public/build Lychee/public @cp -r public/dist Lychee/public @cp -r public/vendor Lychee/public @cp -r public/installer Lychee/public @@ -46,6 +53,7 @@ dist-gen: clean composer @cp -r version.md Lychee @touch Lychee/storage/logs/laravel.log @touch Lychee/public/dist/user.css + @touch Lychee/public/dist/custom.js @touch Lychee/public/uploads/import/index.html @touch Lychee/public/sym/index.html @@ -63,6 +71,12 @@ dist: dist-clean clean: @rm build/* 2> /dev/null || true @rm -r Lychee 2> /dev/null || true + @rm -r public/build 2> /dev/null || true + @rm -r node_modules 2> /dev/null || true + @rm -r vendor 2> /dev/null || true + +install: composer npm-build + php artisan migrate test: @if [ -x "vendor/bin/phpunit" ]; then \ @@ -90,6 +104,7 @@ formatting: phpstan: vendor/bin/phpstan analyze +# Generating new versions gen_minor: php scripts/gen_release.php git add database @@ -106,6 +121,8 @@ gen_major: release_major: gen_major git commit -m "bump to version $(shell cat version.md)" +# Building tests 1 by 1 + TESTS_PHP := $(shell find tests/Feature -name "*Test.php" -printf "%f\n") TEST_DONE := $(addprefix build/,$(TESTS_PHP:.php=.done)) diff --git a/app/Actions/Diagnostics/Pipes/Infos/SystemInfo.php b/app/Actions/Diagnostics/Pipes/Infos/SystemInfo.php index ac35ab4d37b..34e8ccf5fb7 100644 --- a/app/Actions/Diagnostics/Pipes/Infos/SystemInfo.php +++ b/app/Actions/Diagnostics/Pipes/Infos/SystemInfo.php @@ -4,6 +4,8 @@ use App\Actions\Diagnostics\Diagnostics; use App\Contracts\DiagnosticPipe; +use App\Facades\Helpers; +use App\Livewire\Components\Forms\Add\Upload; use Carbon\CarbonTimeZone; use Illuminate\Database\QueryException; use Illuminate\Support\Facades\DB; @@ -53,10 +55,18 @@ public function handle(array &$data, \Closure $next): array $data[] = Diagnostics::line('Timezone:', ($timeZone !== false ? $timeZone : null)?->getName()); $data[] = Diagnostics::line('Max uploaded file size:', ini_get('upload_max_filesize')); $data[] = Diagnostics::line('Max post size:', ini_get('post_max_size')); + $this->getUploadLimit($data); $data[] = Diagnostics::line('Max execution time: ', ini_get('max_execution_time')); $data[] = Diagnostics::line($dbtype . ' Version:', $dbver); $data[] = ''; return $next($data); } + + private function getUploadLimit(array &$data): void + { + $size = Upload::getUploadLimit(); + + $data[] = Diagnostics::line('Livewire chunk size:', Helpers::getSymbolByQuantity($size)); + } } diff --git a/app/Actions/Search/PhotoSearch.php b/app/Actions/Search/PhotoSearch.php index f11a11bbc03..10f7b61070e 100644 --- a/app/Actions/Search/PhotoSearch.php +++ b/app/Actions/Search/PhotoSearch.php @@ -8,6 +8,7 @@ use App\Models\Extensions\SortingDecorator; use App\Models\Photo; use App\Policies\PhotoQueryPolicy; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Collection; class PhotoSearch @@ -20,9 +21,27 @@ public function __construct(PhotoQueryPolicy $photoQueryPolicy) } /** + * Apply search directly. + * * @throws InternalLycheeException */ public function query(array $terms): Collection + { + $query = $this->sqlQuery($terms); + $sorting = PhotoSortingCriterion::createDefault(); + + return (new SortingDecorator($query)) + ->orderBy($sorting->column, $sorting->order)->get(); + } + + /** + * Create the query manually. + * + * @param array $terms + * + * @return Builder + */ + public function sqlQuery(array $terms): Builder { $query = $this->photoQueryPolicy->applySearchabilityFilter( Photo::query()->with(['album', 'size_variants', 'size_variants.sym_links']) @@ -40,10 +59,6 @@ public function query(array $terms): Collection ); } - $sorting = PhotoSortingCriterion::createDefault(); - - return (new SortingDecorator($query)) - ->orderBy($sorting->column, $sorting->order) - ->get(); + return $query; } } diff --git a/app/Assets/Helpers.php b/app/Assets/Helpers.php index fbea1f9f342..c0281d67dbd 100644 --- a/app/Assets/Helpers.php +++ b/app/Assets/Helpers.php @@ -217,4 +217,52 @@ public function convertSize(string $size): int return $size; } + + /** + * Converts a decimal degree into integer degree, minutes and seconds. + * + * @param float|null $decimal + * @param bool $type - indicates if the passed decimal indicates a + * latitude (`true`) or a longitude (`false`) + * + * @returns string + */ + public function decimalToDegreeMinutesSeconds(float|null $decimal, bool $type): null|string + { + if ($decimal === null) { + return null; + } + + $d = abs($decimal); + + // absolute value of decimal must be smaller than 180; + if ($d > 180) { + return ''; + } + + // set direction; north assumed + if ($type && $decimal < 0) { + $direction = 'S'; + } elseif (!$type && $decimal < 0) { + $direction = 'W'; + } elseif (!$type) { + $direction = 'E'; + } else { + $direction = 'N'; + } + + // get degrees + $degrees = floor($d); + + // get seconds + $seconds = ($d - $degrees) * 3600; + + // get minutes + $minutes = floor($seconds / 60); + + // reset seconds + $seconds = floor($seconds - $minutes * 60); + + return $degrees . '° ' . $minutes . "' " . $seconds . '" ' . $direction; + } } diff --git a/app/Contracts/Livewire/Openable.php b/app/Contracts/Livewire/Openable.php new file mode 100644 index 00000000000..1fb10b4eb54 --- /dev/null +++ b/app/Contracts/Livewire/Openable.php @@ -0,0 +1,32 @@ + + */ + public static function localized(): array + { + return [ + self::ROW->value => __('lychee.ALBUM_DECORATION_ORIENTATION_ROW'), + self::ROW_REVERSE->value => __('lychee.ALBUM_DECORATION_ORIENTATION_ROW_REVERSE'), + self::COLUMN->value => __('lychee.ALBUM_DECORATION_ORIENTATION_COLUMN'), + self::COLUMN_REVERSE->value => __('lychee.ALBUM_DECORATION_ORIENTATION_COLUMN_REVERSE'), + ]; + } } diff --git a/app/Enum/AlbumDecorationType.php b/app/Enum/AlbumDecorationType.php index 46543a73f14..f6a59e6dda1 100644 --- a/app/Enum/AlbumDecorationType.php +++ b/app/Enum/AlbumDecorationType.php @@ -14,4 +14,21 @@ enum AlbumDecorationType: string case ALBUM = 'album'; case PHOTO = 'photo'; case ALL = 'all'; + + /** + * Convert the enum into it's translated format. + * Note that it is missing owner. + * + * @return array + */ + public static function localized(): array + { + return [ + self::NONE->value => __('lychee.ALBUM_DECORATION_NONE'), + self::LAYERS->value => __('lychee.ALBUM_DECORATION_ORIGINAL'), + self::ALBUM->value => __('lychee.ALBUM_DECORATION_ALBUM'), + self::PHOTO->value => __('lychee.ALBUM_DECORATION_PHOTO'), + self::ALL->value => __('lychee.ALBUM_DECORATION_ALL'), + ]; + } } diff --git a/app/Enum/AlbumLayoutType.php b/app/Enum/AlbumLayoutType.php deleted file mode 100644 index cfe890ee812..00000000000 --- a/app/Enum/AlbumLayoutType.php +++ /dev/null @@ -1,15 +0,0 @@ - + */ + public static function localized(): array + { + return [ + self::EXIF->value => __('lychee.OVERLAY_EXIF'), + self::DESC->value => __('lychee.OVERLAY_DESCRIPTION'), + self::DATE->value => __('lychee.OVERLAY_DATE'), + self::NONE->value => __('lychee.OVERLAY_NONE'), + ]; + } } diff --git a/app/Enum/Livewire/FileStatus.php b/app/Enum/Livewire/FileStatus.php new file mode 100644 index 00000000000..e9ca3b3a38b --- /dev/null +++ b/app/Enum/Livewire/FileStatus.php @@ -0,0 +1,13 @@ + + */ + public static function localized(): array + { + // yes, the UNJUSTIFIED is dropped. + return [ + self::SQUARE->value => __('lychee.LAYOUT_SQUARES'), + self::JUSTIFIED->value => __('lychee.LAYOUT_JUSTIFIED'), + self::MASONRY->value => __('lychee.LAYOUT_MASONRY'), + self::GRID->value => __('lychee.LAYOUT_GRID'), + ]; + } +} diff --git a/app/Enum/Traits/WireableEnumTrait.php b/app/Enum/Traits/WireableEnumTrait.php new file mode 100644 index 00000000000..edf5a498018 --- /dev/null +++ b/app/Enum/Traits/WireableEnumTrait.php @@ -0,0 +1,35 @@ +value; + } + + public static function fromLivewire(mixed $value): self + { + if (!is_string($value) && !is_int($value)) { + throw new LycheeLogicException('Enum could not be instanciated from ' . strval($value), null); + } + + return self::from($value); + } + + /** + * @return string[]|int[]|\Closure + * + * @psalm-return array | Closure(string):(int|string) + */ + protected static function values() + { + return function (string $name): string { + return mb_strtolower($name); + }; + } +} \ No newline at end of file diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 7faff50ac37..b2487d0fe30 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -10,10 +10,12 @@ use App\Exceptions\Handlers\InstallationHandler; use App\Exceptions\Handlers\MigrationHandler; use App\Exceptions\Handlers\NoEncryptionKey; +use App\Exceptions\Handlers\ViteManifestNotFoundHandler; use Illuminate\Auth\AuthenticationException; use Illuminate\Contracts\Container\BindingResolutionException; use Illuminate\Contracts\Container\Container; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; +use Illuminate\Foundation\ViteManifestNotFoundException; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Http\Response; @@ -95,6 +97,22 @@ class Handler extends ExceptionHandler TokenMismatchException::class, SessionExpiredException::class, NoWriteAccessOnLogsExceptions::class, + ViteManifestNotFoundException::class, + ]; + + /** @var array> */ + protected $exception_checks = [ + NoEncryptionKey::class, + AccessDBDenied::class, + InstallationHandler::class, + AdminSetterHandler::class, + MigrationHandler::class, + ViteManifestNotFoundHandler::class, + ]; + + /** @var array> */ + protected $force_exception_to_http = [ + ViteManifestNotFoundException::class, ]; /** @@ -226,18 +244,41 @@ protected function mapException(\Throwable $e): \Throwable */ protected function prepareResponse($request, \Throwable $e): RedirectResponse|Response { - if (!$this->isHttpException($e) && config('app.debug') === true) { - return $this->toIlluminateResponse($this->convertExceptionToResponse($e), $e); - } - if (!$this->isHttpException($e)) { - $e = new HttpException(500, $e->getMessage(), $e); + if ($this->mustForceToHttpException($e) || config('app.debug') !== true) { + $e = new HttpException(500, $e->getMessage(), $e); + } else { + return $this->toIlluminateResponse($this->convertExceptionToResponse($e), $e); + } } /** @var HttpExceptionInterface $e */ return $this->toIlluminateResponse($this->renderHttpException($e), $e); } + /** + * Check if the exception must be converted to HttpException. + * + * @param \Throwable $e to check + * + * @return bool true if conversion is required + */ + protected function mustForceToHttpException(\Throwable $e): bool + { + // This loop order is more efficient: + // We take the first layer of the exception, check if match any of the forced conversion + // then the next layer etc... + do { + foreach ($this->force_exception_to_http as $exception) { + if ($e instanceof $exception) { + return true; + } + } + } while ($e = $e->getPrevious()); + + return false; + } + /** * Renders the given HttpException into HTML. * @@ -280,13 +321,9 @@ protected function renderHttpException(HttpExceptionInterface $e): SymfonyRespon // We check, if any of our special handlers wants to do something. /** @var HttpExceptionHandler[] $checks */ - $checks = [ - new NoEncryptionKey(), - new AccessDBDenied(), - new InstallationHandler(), - new AdminSetterHandler(), - new MigrationHandler(), - ]; + $checks = collect($this->exception_checks) + ->map(fn ($c) => new $c()) + ->toArray(); foreach ($checks as $check) { if ($check->check($e)) { diff --git a/app/Exceptions/Handlers/ViteManifestNotFoundHandler.php b/app/Exceptions/Handlers/ViteManifestNotFoundHandler.php new file mode 100644 index 00000000000..93f6e316bb4 --- /dev/null +++ b/app/Exceptions/Handlers/ViteManifestNotFoundHandler.php @@ -0,0 +1,42 @@ +getPrevious()); + + return false; + } + + /** + * {@inheritDoc} + */ + public function renderHttpException(SymfonyResponse $defaultResponse, HttpException $e): SymfonyResponse + { + return response()->view('error.error', [ + 'code' => $e->getStatusCode(), + 'type' => class_basename($e), + 'message' => 'Vite manifest not found, please execute `npm run dev`', + ], $e->getStatusCode(), $e->getHeaders()); + } +} diff --git a/app/Exceptions/PhotoCollectionEmptyException.php b/app/Exceptions/PhotoCollectionEmptyException.php new file mode 100644 index 00000000000..7ed45102677 --- /dev/null +++ b/app/Exceptions/PhotoCollectionEmptyException.php @@ -0,0 +1,21 @@ +unlock->do($album, $request['password']); } + // If we are using livewire by default, we redirect to Livewire url intead. + if (config('app.livewire') === true) { + return $photoID === null ? + redirect(route('livewire-gallery-album', ['albumId' => $albumID])) : + redirect(route('livewire-gallery-photo', ['albumId' => $albumID, 'photoId' => $photoID])); + } + return $photoID === null ? redirect('gallery#' . $albumID) : redirect('gallery#' . $albumID . '/' . $photoID); diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index cd7300f5d39..a562195e0a3 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -92,5 +92,6 @@ class Kernel extends HttpKernel 'content_type' => \App\Http\Middleware\ContentType::class, 'accept_content_type' => \App\Http\Middleware\AcceptContentType::class, 'redirect-legacy-id' => \App\Http\Middleware\RedirectLegacyPhotoID::class, + 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, ]; } diff --git a/app/Http/Middleware/AcceptContentType.php b/app/Http/Middleware/AcceptContentType.php index e31d3c53795..c696f33798d 100644 --- a/app/Http/Middleware/AcceptContentType.php +++ b/app/Http/Middleware/AcceptContentType.php @@ -19,6 +19,15 @@ class AcceptContentType public const JSON = 'json'; public const HTML = 'html'; + /** + * The URIs that should be excluded from CSRF verification. + * + * @var array + */ + protected $except = [ + 'livewire/upload-file', + ]; + /** * Handles the incoming request. * @@ -36,6 +45,11 @@ class AcceptContentType */ public function handle(Request $request, \Closure $next, string $contentType): mixed { + // Skip $except + if ($this->inExceptArray($request)) { + return $next($request); + } + if ($contentType === self::JSON) { if (!$request->expectsJson()) { throw new UnexpectedContentType(self::JSON); @@ -60,4 +74,26 @@ public function handle(Request $request, \Closure $next, string $contentType): m return $next($request); } + + /** + * Determine if the request has a URI that should pass through CSRF verification. + * + * @param \Illuminate\Http\Request $request + * + * @return bool + */ + protected function inExceptArray($request) + { + foreach ($this->except as $except) { + if ($except !== '/') { + $except = trim($except, '/'); + } + + if ($request->fullUrlIs($except) || $request->is($except)) { + return true; + } + } + + return false; + } } diff --git a/app/Http/Middleware/DisableCSP.php b/app/Http/Middleware/DisableCSP.php index 43763e2ac47..d747858bccf 100644 --- a/app/Http/Middleware/DisableCSP.php +++ b/app/Http/Middleware/DisableCSP.php @@ -3,7 +3,10 @@ namespace App\Http\Middleware; use App\Contracts\Exceptions\LycheeException; +use Illuminate\Contracts\Container\BindingResolutionException; use Illuminate\Http\Request; +use Illuminate\Support\Facades\File; +use Illuminate\Support\Str; /** * Class DisableCSP. @@ -44,6 +47,31 @@ public function handle(Request $request, \Closure $next): mixed config(['secure-headers.csp.script-src.hashes.sha256' => []]); } + // disable unsafe-eval if we are on a Livewire page + if (config('app.livewire', false) === true || Str::startsWith($request->getRequestUri(), '/livewire/')) { + $this->handleLivewire(); + } + return $next($request); } + + /** + * Disabling rules because of poor decision from the designer of Livewire. + * + * @return void + * + * @throws BindingResolutionException + */ + private function handleLivewire() + { + // We have to disable unsafe-eval because Livewire requires it... + // So stupid.... + config(['secure-headers.csp.script-src.unsafe-eval' => true]); + + // if the public/hot file exists, it means that we need to disable CSP completely + // As we will be reloading on the fly the page and Vite has poor CSP support. + if (File::exists(public_path('hot'))) { + config(['secure-headers.csp.enable' => false]); + } + } } diff --git a/app/Http/Requests/Settings/SetLayoutSettingRequest.php b/app/Http/Requests/Settings/SetLayoutSettingRequest.php index c75354b105a..931ce3ca6d1 100644 --- a/app/Http/Requests/Settings/SetLayoutSettingRequest.php +++ b/app/Http/Requests/Settings/SetLayoutSettingRequest.php @@ -2,7 +2,7 @@ namespace App\Http\Requests\Settings; -use App\Enum\AlbumLayoutType; +use App\Enum\PhotoLayoutType; use Illuminate\Validation\Rules\Enum; class SetLayoutSettingRequest extends AbstractSettingRequest @@ -12,13 +12,13 @@ class SetLayoutSettingRequest extends AbstractSettingRequest public function rules(): array { return [ - self::ATTRIBUTE => ['required', new Enum(AlbumLayoutType::class)], + self::ATTRIBUTE => ['required', new Enum(PhotoLayoutType::class)], ]; } protected function processValidatedValues(array $values, array $files): void { $this->name = self::ATTRIBUTE; - $this->value = AlbumLayoutType::from($values[self::ATTRIBUTE]); + $this->value = PhotoLayoutType::from($values[self::ATTRIBUTE]); } } diff --git a/app/Http/Requests/User/U2FRequest.php b/app/Http/Requests/User/U2FRequest.php index 61611f71c41..8ec64a3520f 100644 --- a/app/Http/Requests/User/U2FRequest.php +++ b/app/Http/Requests/User/U2FRequest.php @@ -18,6 +18,6 @@ class U2FRequest extends AbstractEmptyRequest */ public function authorize(): bool { - return Gate::check(UserPolicy::CAN_USE_2FA, [User::class]); + return Gate::check(UserPolicy::CAN_EDIT, [User::class]); } } diff --git a/app/Http/Requests/WebAuthn/DeleteCredentialRequest.php b/app/Http/Requests/WebAuthn/DeleteCredentialRequest.php index 58ca94ea381..51b39e371d2 100644 --- a/app/Http/Requests/WebAuthn/DeleteCredentialRequest.php +++ b/app/Http/Requests/WebAuthn/DeleteCredentialRequest.php @@ -18,7 +18,7 @@ class DeleteCredentialRequest extends BaseApiRequest */ public function authorize(): bool { - return Gate::check(UserPolicy::CAN_USE_2FA, [User::class]); + return Gate::check(UserPolicy::CAN_EDIT, [User::class]); } public function rules(): array diff --git a/app/Http/Requests/WebAuthn/ListCredentialsRequest.php b/app/Http/Requests/WebAuthn/ListCredentialsRequest.php index 0667cb6f6e8..b38a1c2137e 100644 --- a/app/Http/Requests/WebAuthn/ListCredentialsRequest.php +++ b/app/Http/Requests/WebAuthn/ListCredentialsRequest.php @@ -3,9 +3,7 @@ namespace App\Http\Requests\WebAuthn; use App\Http\Requests\AbstractEmptyRequest; -use App\Models\User; -use App\Policies\UserPolicy; -use Illuminate\Support\Facades\Gate; +use Illuminate\Support\Facades\Auth; class ListCredentialsRequest extends AbstractEmptyRequest { @@ -14,6 +12,6 @@ class ListCredentialsRequest extends AbstractEmptyRequest */ public function authorize(): bool { - return Gate::check(UserPolicy::CAN_USE_2FA, [User::class]); + return Auth::check(); } } diff --git a/app/Http/Resources/Collections/AlbumCollectionResource.php b/app/Http/Resources/Collections/AlbumCollectionResource.php new file mode 100644 index 00000000000..99326aa7e47 --- /dev/null +++ b/app/Http/Resources/Collections/AlbumCollectionResource.php @@ -0,0 +1,19 @@ + Configs::getValueAsEnum('image_overlay_type', ImageOverlayType::class), 'landing_page_enable' => Configs::getValueAsBool('landing_page_enable'), 'lang' => Configs::getValueAsString('lang'), - 'layout' => Configs::getValueAsEnum('layout', AlbumLayoutType::class), + 'layout' => Configs::getValueAsEnum('layout', PhotoLayoutType::class), 'legacy_id_redirection' => Configs::getValueAsBool('legacy_id_redirection'), 'location_decoding' => Configs::getValueAsBool('location_decoding'), 'location_decoding_timeout' => Configs::getValueAsInt('location_decoding_timeout'), diff --git a/app/Http/Resources/Models/AlbumResource.php b/app/Http/Resources/Models/AlbumResource.php index b5a03fec7a4..c93938cd4a9 100644 --- a/app/Http/Resources/Models/AlbumResource.php +++ b/app/Http/Resources/Models/AlbumResource.php @@ -3,6 +3,7 @@ namespace App\Http\Resources\Models; use App\DTO\AlbumProtectionPolicy; +use App\Http\Resources\Collections\AlbumCollectionResource; use App\Http\Resources\Collections\PhotoCollectionResource; use App\Http\Resources\Rights\AlbumRightsResource; use App\Http\Resources\Traits\WithStatus; @@ -46,7 +47,7 @@ public function toArray($request) // children 'parent_id' => $this->resource->parent_id, 'has_albums' => !$this->resource->isLeaf(), - 'albums' => AlbumResource::collection($this->whenLoaded('children')), + 'albums' => AlbumCollectionResource::make($this->whenLoaded('children')), 'photos' => PhotoCollectionResource::make($this->whenLoaded('photos')), 'num_subalbums' => $this->resource->num_children, 'num_photos' => $this->resource->num_photos, diff --git a/app/Http/Resources/Models/PhotoResource.php b/app/Http/Resources/Models/PhotoResource.php index 54302d645e3..6cb43408557 100644 --- a/app/Http/Resources/Models/PhotoResource.php +++ b/app/Http/Resources/Models/PhotoResource.php @@ -2,12 +2,17 @@ namespace App\Http\Resources\Models; +use App\Enum\LicenseType; use App\Enum\SizeVariantType; +use App\Facades\Helpers; use App\Http\Resources\Rights\PhotoRightsResource; use App\Http\Resources\Traits\WithStatus; +use App\Models\Configs; use App\Models\Extensions\SizeVariants; use App\Models\Photo; +use App\Models\SizeVariant; use App\Policies\PhotoPolicy; +use GrahamCampbell\Markdown\Facades\Markdown; use Illuminate\Contracts\Support\Arrayable; use Illuminate\Http\Request; use Illuminate\Http\Resources\Json\JsonResource; @@ -65,12 +70,12 @@ public function toArray($request) 'description' => $this->resource->description, 'focal' => $this->resource->focal, 'img_direction' => null, - 'is_public' => $this->resource->is_public, + 'is_public' => $this->resource->is_public, // TO BE REMOVED LATER 'is_starred' => $this->resource->is_starred, 'iso' => $this->resource->iso, 'latitude' => $this->resource->latitude, 'lens' => $this->resource->lens, - 'license' => $this->resource->license->localization(), + 'license' => $this->resource->license, 'live_photo_checksum' => $this->resource->live_photo_checksum, 'live_photo_content_id' => $this->resource->live_photo_content_id, 'live_photo_url' => $this->resource->live_photo_url, @@ -83,7 +88,7 @@ public function toArray($request) 'size_variants' => [ 'medium' => $medium === null ? null : SizeVariantResource::make($medium)->toArray($request), 'medium2x' => $medium2x === null ? null : SizeVariantResource::make($medium2x)->toArray($request), - 'original' => $original === null ? null : SizeVariantResource::make($original)->noUrl($downgrade)->toArray($request), + 'original' => $original === null ? null : SizeVariantResource::make($original)->setNoUrl($downgrade)->toArray($request), 'small' => $small === null ? null : SizeVariantResource::make($small)->toArray($request), 'small2x' => $small2x === null ? null : SizeVariantResource::make($small2x)->toArray($request), 'thumb' => $thumb === null ? null : SizeVariantResource::make($thumb)->toArray($request), @@ -98,6 +103,70 @@ public function toArray($request) 'rights' => PhotoRightsResource::make($this->resource)->toArray($request), 'next_photo_id' => null, 'previous_photo_id' => null, + 'preformatted' => $this->preformatted($original), + 'precomputed' => $this->precomputed(), ]; } + + private function preformatted(?SizeVariant $original): array + { + $overlay_date_format = Configs::getValueAsString('date_format_photo_overlay'); + $date_format_uploaded = Configs::getValueAsString('date_format_sidebar_uploaded'); + $date_format_taken_at = Configs::getValueAsString('date_format_sidebar_taken_at'); + + return [ + 'created_at' => $this->resource->created_at->format($date_format_uploaded), + 'taken_at' => $this->resource->taken_at?->format($date_format_taken_at), + 'date_overlay' => ($this->resource->taken_at ?? $this->resource->created_at)->format($overlay_date_format) ?? '', + + 'shutter' => str_replace('s', 'sec', $this->resource->shutter ?? ''), + 'aperture' => str_replace('f/', '', $this->resource->aperture ?? ''), + 'iso' => sprintf(__('lychee.PHOTO_ISO'), $this->resource->iso), + 'lens' => ($this->resource->lens === '' || $this->resource->lens === null) ? '' : sprintf('(%s)', $this->resource->lens), + + 'duration' => Helpers::secondsToHMS(intval($this->resource->aperture)), + 'fps' => $this->resource->focal === null ? $this->resource->focal . ' fps' : '', + + 'filesize' => Helpers::getSymbolByQuantity($original?->filesize ?? 0), + 'resolution' => $original?->width . ' x ' . $original?->height, + 'latitude' => Helpers::decimalToDegreeMinutesSeconds($this->resource->latitude, true), + 'longitude' => Helpers::decimalToDegreeMinutesSeconds($this->resource->longitude, false), + 'altitude' => round($this->resource->altitude, 1) . 'm', + 'license' => $this->resource->license !== LicenseType::NONE ? $this->resource->license->localization() : '', + 'description' => ($this->resource->description ?? '') === '' ? '' : Markdown::convert($this->resource->description)->getContent(), + ]; + } + + private function precomputed(): array + { + return [ + 'is_video' => $this->resource->isVideo(), + 'is_raw' => $this->resource->isRaw(), + 'is_livephoto' => $this->resource->live_photo_url !== null, + 'is_camera_date' => $this->resource->taken_at !== null, + 'has_exif' => $this->genExifHash() !== '', + 'has_location' => $this->has_location(), + ]; + } + + private function has_location(): bool + { + return $this->resource->longitude !== null && + $this->resource->latitude !== null && + $this->resource->altitude !== null; + } + + private function genExifHash(): string + { + $exifHash = $this->resource->make; + $exifHash .= $this->resource->model; + $exifHash .= $this->resource->shutter; + if (!$this->resource->isVideo()) { + $exifHash .= $this->resource->aperture; + $exifHash .= $this->resource->focal; + } + $exifHash .= $this->resource->iso; + + return $exifHash; + } } diff --git a/app/Http/Resources/Models/SizeVariantResource.php b/app/Http/Resources/Models/SizeVariantResource.php index 4aa7efcfb7d..382c75d08fb 100644 --- a/app/Http/Resources/Models/SizeVariantResource.php +++ b/app/Http/Resources/Models/SizeVariantResource.php @@ -25,7 +25,7 @@ public function __construct(SizeVariant $sizeVariant) * * @return SizeVariantResource */ - public function noUrl(bool $noUrl): self + public function setNoUrl(bool $noUrl): self { $this->noUrl = $noUrl; diff --git a/app/Http/Resources/Rights/UserRightsResource.php b/app/Http/Resources/Rights/UserRightsResource.php index a6974728506..2129ced9e67 100644 --- a/app/Http/Resources/Rights/UserRightsResource.php +++ b/app/Http/Resources/Rights/UserRightsResource.php @@ -29,7 +29,6 @@ public function toArray($request) { return [ 'can_edit' => Gate::check(UserPolicy::CAN_EDIT, [User::class]), - 'can_use_2fa' => Gate::check(UserPolicy::CAN_USE_2FA, [User::class]), ]; } } diff --git a/app/Http/RuleSets/AddAlbumRuleSet.php b/app/Http/RuleSets/AddAlbumRuleSet.php new file mode 100644 index 00000000000..ea199a81aea --- /dev/null +++ b/app/Http/RuleSets/AddAlbumRuleSet.php @@ -0,0 +1,19 @@ + ['present', new RandomIDRule(true)], + RequestAttribute::TITLE_ATTRIBUTE => ['required', new TitleRule()], + ]; + } +} diff --git a/app/Http/RuleSets/ChangeLoginRuleSet.php b/app/Http/RuleSets/ChangeLoginRuleSet.php new file mode 100644 index 00000000000..c26dc678f60 --- /dev/null +++ b/app/Http/RuleSets/ChangeLoginRuleSet.php @@ -0,0 +1,20 @@ + ['sometimes', new UsernameRule(true)], + RequestAttribute::PASSWORD_ATTRIBUTE => ['required', 'confirmed', new PasswordRule(false)], + RequestAttribute::OLD_PASSWORD_ATTRIBUTE => ['required', new PasswordRule(false)], + ]; + } +} diff --git a/app/Http/RuleSets/LoginRuleSet.php b/app/Http/RuleSets/LoginRuleSet.php new file mode 100644 index 00000000000..e8feffcc82b --- /dev/null +++ b/app/Http/RuleSets/LoginRuleSet.php @@ -0,0 +1,19 @@ + ['required', new UsernameRule()], + RequestAttribute::PASSWORD_ATTRIBUTE => ['required', new PasswordRule(false)], + ]; + } +} diff --git a/app/Http/RuleSets/Users/SetUserSettingsRuleSet.php b/app/Http/RuleSets/Users/SetUserSettingsRuleSet.php index 0be59d22219..61e5ae1ee27 100644 --- a/app/Http/RuleSets/Users/SetUserSettingsRuleSet.php +++ b/app/Http/RuleSets/Users/SetUserSettingsRuleSet.php @@ -17,7 +17,7 @@ public static function rules(): array { return [ RequestAttribute::ID_ATTRIBUTE => ['required', new IntegerIDRule(false)], - RequestAttribute::USERNAME_ATTRIBUTE => ['required', new UsernameRule()], + RequestAttribute::USERNAME_ATTRIBUTE => ['required', new UsernameRule(), 'min:1'], RequestAttribute::PASSWORD_ATTRIBUTE => ['sometimes', new PasswordRule(false)], RequestAttribute::MAY_UPLOAD_ATTRIBUTE => 'present|boolean', RequestAttribute::MAY_EDIT_OWN_SETTINGS_ATTRIBUTE => 'present|boolean', diff --git a/app/Image/Files/NativeLocalFile.php b/app/Image/Files/NativeLocalFile.php index 37fd483c1c5..39df280681b 100644 --- a/app/Image/Files/NativeLocalFile.php +++ b/app/Image/Files/NativeLocalFile.php @@ -95,6 +95,41 @@ public function write($stream, bool $collectStatistics = false, ?string $mimeTyp } } + /** + * If new content is written to the file, the internally cached mime + * type is cleared. + * The mime type will be re-determined again upon the next invocation of + * {@link NativeLocalFile::getMimeType()}. + * This can be avoided by passing the MIME type of the stream. + * + * @param resource $stream the input stream which provides the input to write + * @param string|null $mimeType the mime type of `$stream` + * + * @returns void + */ + public function append($stream, bool $collectStatistics = false, ?string $mimeType = null): ?StreamStat + { + try { + $streamStat = $collectStatistics ? static::appendStatFilter($stream) : null; + + if (!is_resource($this->stream)) { + $this->stream = fopen($this->getPath(), 'a+b'); + } + $this->cachedMimeType = null; + stream_copy_to_stream($stream, $this->stream); + $this->cachedMimeType = $mimeType; + // File statistics info (filesize, access mode, etc.) are cached + // by PHP to avoid costly I/O calls. + // If cache is not cleared, an old size may be reported after + // write. + clearstatcache(true, $this->getPath()); + + return $streamStat; + } catch (\ErrorException $e) { + throw new MediaFileOperationException($e->getMessage(), $e); + } + } + /** * {@inheritDoc} */ diff --git a/app/Livewire/Components/Base/ContextMenu.php b/app/Livewire/Components/Base/ContextMenu.php new file mode 100644 index 00000000000..f443978c486 --- /dev/null +++ b/app/Livewire/Components/Base/ContextMenu.php @@ -0,0 +1,78 @@ +type = $type; + $this->params = $params; + $this->style = $style; + $this->open(); + } + + /** + * Close the ContextMenu component. + * + * @return void + */ + #[On('closeContextMenu')] + public function closeContextMenu(): void + { + $this->close(); + } + + /** + * Rendering of the Component. + * + * @return View + */ + public function render(): View + { + return view('livewire.components.context-menu'); + } +} diff --git a/app/Livewire/Components/Base/Modal.php b/app/Livewire/Components/Base/Modal.php new file mode 100644 index 00000000000..231b79de9d4 --- /dev/null +++ b/app/Livewire/Components/Base/Modal.php @@ -0,0 +1,88 @@ + no close button + * any other string correspond to the LANG text. + * + * @var string + */ + public string $close_text = ''; + + /** + * @var array defines the arguments to be passed to the + * Livewire component loaded inside the Modal + */ + public array $params = []; + + /** + * Css properties for the modal. + * + * @var string + */ + public string $modalSize = 'md:max-w-xl'; + + /** + * Open a Modal. + * + * @param string $type defines the Component loaded inside the modal + * @param string $close_text text to put if we use a close button + * @param array $params Arguments to pass to the modal + * + * @return void + */ + #[On('openModal')] + public function openModal(string $type, string $close_text = '', array $params = []): void + { + $this->open(); + $this->type = $type; + $this->close_text = $close_text; + $this->params = $params; + } + + /** + * Close the Modal component. + * + * @return void + */ + #[On('closeModal')] + public function closeModal(): void + { + $this->close(); + } + + /** + * Rendering of the Component. + * + * @return View + */ + public function render(): View + { + return view('livewire.components.modal'); + } +} diff --git a/app/Livewire/Components/Forms/Add/ImportFromServer.php b/app/Livewire/Components/Forms/Add/ImportFromServer.php new file mode 100644 index 00000000000..ef67252571b --- /dev/null +++ b/app/Livewire/Components/Forms/Add/ImportFromServer.php @@ -0,0 +1,90 @@ +fromServer = resolve(FromServer::class); + } + + /** + * We load the parameters. + * + * @param array{parentID:?string} $params set of parameters of the form + * + * @return void + */ + public function mount(array $params = ['parentID' => null]): void + { + Gate::authorize(AlbumPolicy::CAN_IMPORT_FROM_SERVER, AbstractAlbum::class); + + $this->form->init($params[Params::PARENT_ID] ?? null); + } + + /** + * Call the parametrized rendering. + * + * @return View + */ + public function render(): View + { + return view('livewire.forms.add.import-from-server'); + } + + /** + * Add an handle to close the modal form from a user-land call. + * + * @return void + */ + public function close(): void + { + $this->closeModal(); + } + + /** + * Hook the submit button. + * + * @return StreamedResponse + */ + public function submit(): StreamedResponse + { + Gate::authorize(AlbumPolicy::CAN_IMPORT_FROM_SERVER, AbstractAlbum::class); + + // Empty error bag + $this->resetErrorBag(); + + $this->form->prepare(); + $this->form->validate(); + + /** @var int $userId */ + $userId = Auth::id(); + + // Validate + return $this->fromServer->do($this->form->paths, $this->form->getAlbum(), $this->form->getImportMode(), $userId); + } +} diff --git a/app/Livewire/Components/Forms/Add/ImportFromUrl.php b/app/Livewire/Components/Forms/Add/ImportFromUrl.php new file mode 100644 index 00000000000..ec292b4708a --- /dev/null +++ b/app/Livewire/Components/Forms/Add/ImportFromUrl.php @@ -0,0 +1,107 @@ +fromUrl = resolve(FromUrl::class); + } + + public ImportFromUrlForm $form; + + /** + * We load the parameters. + * + * @param array{parentID:?string} $params set of parameters of the form + * + * @return void + */ + public function mount(array $params = ['parentID' => null]): void + { + $albumId = $params[Params::PARENT_ID] ?? null; + + /** @var Album $album */ + $album = $albumId === null ? null : Album::query()->findOrFail($albumId); + + Gate::authorize(AlbumPolicy::CAN_UPLOAD, [AbstractAlbum::class, $album]); + + $this->form->init($albumId); + } + + /** + * Call the parametrized rendering. + * + * @return View + */ + public function render(): View + { + return view('livewire.forms.add.import-from-url'); + } + + /** + * Add an handle to close the modal form from a user-land call. + * + * @return void + */ + public function close(): void + { + $this->closeModal(); + } + + /** + * A form has a Submit method. + * + * @return void + */ + public function submit(): void + { + // Reset error bag + $this->resetErrorBag(); + + $this->form->prepare(); + $this->form->validate(); + + Gate::authorize(AlbumPolicy::CAN_UPLOAD, [AbstractAlbum::class, $this->form->getAlbum()]); + + /** @var int $userId */ + $userId = Auth::id(); + + try { + $this->fromUrl->do($this->form->urls, $this->form->getAlbum(), $userId); + $this->notify(__('lychee.UPLOAD_IMPORT_COMPLETE')); + } catch (MassImportException $e) { + $this->notify($e->getMessage()); + } + // Do we want refresh or direcly open newly created Album ? + $this->dispatch('reloadPage')->to(PageGalleryAlbum::class); + $this->close(); + } +} diff --git a/app/Livewire/Components/Forms/Add/Upload.php b/app/Livewire/Components/Forms/Add/Upload.php new file mode 100644 index 00000000000..55834adc012 --- /dev/null +++ b/app/Livewire/Components/Forms/Add/Upload.php @@ -0,0 +1,169 @@ + */ + public array $uploads = []; + + public int $chunkSize; + public int $parallelism; + + /** + * Mount the component. + * + * @param array{parentID:?string} $params + * + * @return void + */ + public function mount(array $params = ['parentID' => null]): void + { + $this->albumId = $params[Params::PARENT_ID] ?? null; + $album = $this->albumId === null ? null : Album::findOrFail($this->albumId); + Gate::authorize(AlbumPolicy::CAN_UPLOAD, [AbstractAlbum::class, $album]); + + $this->chunkSize = self::getUploadLimit(); + $this->parallelism = Configs::getValueAsInt('upload_processing_limit'); + } + + public function render(): View + { + return view('livewire.forms.add.upload'); + } + + /** + * @param TemporaryUploadedFile $value + * @param string $key + * + * @return void + */ + public function updatedUploads($value, string $key): void + { + $keys = explode('.', $key); + $index = intval($keys[0]); + $attribute = $keys[1] ?? null; + + $fileDetails = $this->uploads[$index]; + // Initialize data if not existing. + $fileDetails['extension'] ??= '.' . pathinfo($fileDetails['fileName'], PATHINFO_EXTENSION); + $fileDetails['uuidName'] ??= strtr(base64_encode(random_bytes(12)), '+/', '-_') . $fileDetails['extension']; + + // Ensure data are set + $this->uploads[$index]['extension'] = $fileDetails['extension']; + $this->uploads[$index]['uuidName'] = $fileDetails['uuidName']; + $this->uploads[$index]['stage'] = $fileDetails['stage'] ?? FileStatus::UPLOADING->value; + $this->uploads[$index]['progress'] = $fileDetails['progress'] ?? 0; + + if ($attribute === 'fileChunk') { + $fileDetails = $this->uploads[$index]; + /** @var TemporaryUploadedFile $chunkFile */ + $chunkFile = $fileDetails['fileChunk']; + $final = new NativeLocalFile(Storage::path('/livewire-tmp/' . $fileDetails['uuidName'])); + $final->append($chunkFile->readStream()); + $chunkFile->delete(); + + $curSize = $final->getFilesize(); + + $this->uploads[$index]['progress'] = intval($curSize / $fileDetails['fileSize'] * 100); + if ($this->uploads[$index]['progress'] === 100) { + $this->uploads[$index]['stage'] = FileStatus::READY->value; + } + } + + $this->triggerProcessing(); + } + + public function triggerProcessing(): void + { + foreach ($this->uploads as $idx => $fileData) { + if ($fileData['stage'] === FileStatus::READY->value) { + $uploadedFile = new NativeLocalFile(Storage::path('/livewire-tmp/' . $fileData['uuidName'])); + $processableFile = new ProcessableJobFile( + $fileData['extension'], + $fileData['fileName'] + ); + $processableFile->write($uploadedFile->read()); + $uploadedFile->close(); + $uploadedFile->delete(); + $processableFile->close(); + // End of work-around + + try { + $this->uploads[$idx]['stage'] = FileStatus::PROCESSING->value; + + if (Configs::getValueAsBool('use_job_queues')) { + ProcessImageJob::dispatch($processableFile, $this->albumId, $fileData['lastModified']); + } else { + ProcessImageJob::dispatchSync($processableFile, $this->albumId, $fileData['lastModified']); + } + $this->uploads[$idx]['stage'] = FileStatus::DONE->value; + } catch (PhotoSkippedException $e) { + $this->uploads[$idx]['stage'] = FileStatus::SKIPPED->value; + } + } + } + } + + public static function getUploadLimit(): int + { + $size = Configs::getValueAsInt('upload_chunk_size'); + if ($size === 0) { + $size = (int) min( + Helpers::convertSize(ini_get('upload_max_filesize')), + Helpers::convertSize(ini_get('post_max_size')), + Helpers::convertSize(ini_get('memory_limit')) / 10 + ); + } + + /** @var array $rules */ + $rules = FileUploadConfiguration::rules(); + $sizeRule = collect($rules)->first(fn ($rule) => Str::startsWith($rule, 'max:'), 'max:12288'); + $LivewireSizeLimit = intval(Str::substr($sizeRule, 4)) * 1024; + + return min($size, $LivewireSizeLimit); + } + + /** + * Close the modal containing the Upload panel. + * + * @return void + */ + public function close(): void + { + $this->closeModal(); + } +} diff --git a/app/Livewire/Components/Forms/Album/Create.php b/app/Livewire/Components/Forms/Album/Create.php new file mode 100644 index 00000000000..6c355a81e83 --- /dev/null +++ b/app/Livewire/Components/Forms/Album/Create.php @@ -0,0 +1,102 @@ +parent_id = $params[Params::PARENT_ID]; + Gate::authorize(AlbumPolicy::CAN_EDIT_ID, [AbstractAlbum::class, [$this->parent_id]]); + } + + /** + * Call the parametrized rendering. + * + * @return View + */ + public function render(): View + { + return view('livewire.forms.add.create'); + } + + /** + * A form has a Submit method. + * + * @return void + */ + public function submit(): void + { + // Reset error bag + $this->resetErrorBag(); + + // Validate + $this->validate(); + + /** @var Album|null $parentAlbum */ + $parentAlbum = $this->parent_id === null ? null : Album::query()->findOrFail($this->parent_id); + + // Authorize + Gate::authorize(AlbumPolicy::CAN_EDIT, [AbstractAlbum::class, $parentAlbum]); + + /** @var int $ownerId */ + $ownerId = Auth::id() ?? throw new UnauthenticatedException(); + $create = new AlbumCreate($ownerId); + $new_album = $create->create($this->title, $parentAlbum); + + $this->redirect(route('livewire-gallery-album', ['albumId' => $new_album->id]), true); + } + + /** + * Add an handle to close the modal form from a user-land call. + * + * @return void + */ + public function close(): void + { + $this->closeModal(); + } +} diff --git a/app/Livewire/Components/Forms/Album/CreateTag.php b/app/Livewire/Components/Forms/Album/CreateTag.php new file mode 100644 index 00000000000..c280045ec70 --- /dev/null +++ b/app/Livewire/Components/Forms/Album/CreateTag.php @@ -0,0 +1,103 @@ +create = resolve(CreateTagAlbum::class); + } + + /** + * This defines the set of validation rules to be applied on the input. + * It would be a good idea to unify (namely reuse) the rules from the JSON api. + * + * @return array + */ + protected function rules(): array + { + return AddTagAlbumRuleSet::rules(); + } + + /** + * Mount the component. + * + * @param array $params + * + * @return void + */ + public function mount(array $params = []): void + { + Gate::authorize(AlbumPolicy::CAN_UPLOAD, [AbstractAlbum::class, null]); + } + + /** + * Call the parametrized rendering. + * + * @return View + */ + public function render(): View + { + return view('livewire.forms.add.create-tag'); + } + + /** + * A form has a Submit method. + * + * @return void + */ + public function submit(): void + { + // Reset error bag + $this->resetErrorBag(); + + $this->tags = explode(',', $this->tag); + + // Validate + $this->validate(); + + // Authorize + Gate::authorize(AlbumPolicy::CAN_EDIT, [AbstractAlbum::class, null]); + + // Create + $new_album = $this->create->create($this->title, $this->tags); + + // Do we want refresh or direcly open newly created Album ? + $this->close(); + $this->redirect(route('livewire-gallery-album', ['albumId' => $new_album->id]), true); + } + + /** + * Add an handle to close the modal form from a user-land call. + * + * @return void + */ + public function close(): void + { + $this->closeModal(); + } +} diff --git a/app/Livewire/Components/Forms/Album/Delete.php b/app/Livewire/Components/Forms/Album/Delete.php new file mode 100644 index 00000000000..114a7205e5d --- /dev/null +++ b/app/Livewire/Components/Forms/Album/Delete.php @@ -0,0 +1,101 @@ + */ + #[Locked] public array $albumIDs; + #[Locked] public string $parent_id; + #[Locked] public string $title = ''; + #[Locked] public int $num; + private AlbumFactory $albumFactory; + private DeleteAction $deleteAction; + + public function boot(): void + { + $this->albumFactory = resolve(AlbumFactory::class); + $this->deleteAction = resolve(DeleteAction::class); + } + + /** + * This is the equivalent of the constructor for Livewire Components. + * + * @param array{albumID?:string,albumIDs?:array,parentID:?string} $params to delete + * + * @return void + */ + public function mount(array $params = ['parentID' => null]): void + { + $id = $params[Params::ALBUM_ID] ?? null; + $this->albumIDs = $id !== null ? [$id] : $params[Params::ALBUM_IDS] ?? []; + $this->num = count($this->albumIDs); + + if ($this->num === 1) { + $this->title = $this->albumFactory->findBaseAlbumOrFail($this->albumIDs[0])->title; + } + + Gate::authorize(AlbumPolicy::CAN_DELETE_ID, [AbstractAlbum::class, $this->albumIDs]); + $this->parent_id = $params[Params::PARENT_ID] ?? SmartAlbumType::UNSORTED->value; + } + + /** + * Simply render the form. + * + * @return View + */ + public function render(): View + { + return view('livewire.forms.album.delete'); + } + + /** + * Execute deletion. + * + * @return void + */ + public function delete(): void + { + $this->validate(DeleteAlbumsRuleSet::rules()); + + Gate::authorize(AlbumPolicy::CAN_DELETE_ID, [AbstractAlbum::class, $this->albumIDs]); + + $fileDeleter = $this->deleteAction->do($this->albumIDs); + App::terminating(fn () => $fileDeleter->do()); + + if ($this->parent_id === SmartAlbumType::UNSORTED->value) { + $this->redirect(route('livewire-gallery'), true); + } else { + $this->redirect(route('livewire-gallery-album', ['albumId' => $this->parent_id]), true); + } + } + + /** + * Add an handle to close the modal form from a user-land call. + * + * @return void + */ + public function close(): void + { + $this->closeModal(); + } +} diff --git a/app/Livewire/Components/Forms/Album/DeletePanel.php b/app/Livewire/Components/Forms/Album/DeletePanel.php new file mode 100644 index 00000000000..073e99eaa8b --- /dev/null +++ b/app/Livewire/Components/Forms/Album/DeletePanel.php @@ -0,0 +1,89 @@ + */ + #[Locked] public array $albumIDs; + #[Locked] public string $title; + private AlbumFactory $albumFactory; + private DeleteAction $deleteAction; + + public function boot(): void + { + $this->albumFactory = resolve(AlbumFactory::class); + $this->deleteAction = resolve(DeleteAction::class); + } + + /** + * This is the equivalent of the constructor for Livewire Components. + * + * @param BaseAlbum $album to update the attributes of + * + * @return void + */ + public function mount(BaseAlbum $album): void + { + Gate::authorize(AlbumPolicy::CAN_DELETE, [AbstractAlbum::class, $album]); + + $this->albumIDs = [$album->id]; + $this->title = $album->title; + } + + /** + * Simply render the form. + * + * @return View + */ + public function render(): View + { + return view('livewire.forms.album.delete-panel'); + } + + /** + * Execute deletion. + * + * @return \Illuminate\Routing\Redirector|\Illuminate\Http\RedirectResponse + */ + public function delete(): \Illuminate\Routing\Redirector|\Illuminate\Http\RedirectResponse + { + $this->validate(DeleteAlbumsRuleSet::rules()); + + $baseAlbum = $this->albumFactory->findBaseAlbumOrFail($this->albumIDs[0], false); + + Gate::authorize(AlbumPolicy::CAN_DELETE, $baseAlbum); + + $parent_id = ($baseAlbum instanceof Album) ? $baseAlbum->parent_id : null; + + $fileDeleter = $this->deleteAction->do([$baseAlbum->id]); + App::terminating(fn () => $fileDeleter->do()); + + if ($parent_id !== null) { + return redirect()->to(route('livewire-gallery-album', ['albumId' => $parent_id])); + } + + return redirect()->to(route('livewire-gallery')); + } +} diff --git a/app/Livewire/Components/Forms/Album/Merge.php b/app/Livewire/Components/Forms/Album/Merge.php new file mode 100644 index 00000000000..e9654f24c51 --- /dev/null +++ b/app/Livewire/Components/Forms/Album/Merge.php @@ -0,0 +1,134 @@ + */ + #[Locked] public array $albumIDs; + #[Locked] public string $titleMoved = ''; + #[Locked] public int $num; + // Destination + #[Locked] public ?string $albumID = null; + #[Locked] public ?string $title = null; + #[Locked] public ?int $lft = null; + #[Locked] public ?int $rgt = null; + private AlbumFactory $albumFactory; + private AlbumMerge $mergeAlbums; + + public function boot(): void + { + $this->albumFactory = resolve(AlbumFactory::class); + $this->mergeAlbums = resolve(AlbumMerge::class); + } + + /** + * This is the equivalent of the constructor for Livewire Components. + * + * @param array{albumID?:string,albumIDs?:array,parentID:?string} $params to move + * + * @return void + */ + public function mount(array $params = ['parentID' => null]): void + { + $id = $params[Params::ALBUM_ID] ?? null; + $this->albumIDs = $id !== null ? [$id] : $params[Params::ALBUM_IDS] ?? []; + $this->num = count($this->albumIDs); + + if ($this->num === 1) { + /** @var Album $album */ + $album = $this->albumFactory->findBaseAlbumOrFail($this->albumIDs[0], false); + $this->lft = $album->_lft; + $this->rgt = $album->_rgt; + } elseif ($this->num > 1) { + $this->albumID = array_shift($this->albumIDs); + $this->title = $this->albumFactory->findBaseAlbumOrFail($this->albumID, false)->title; + } + + if (count($this->albumIDs) === 1) { + $this->titleMoved = $this->albumFactory->findBaseAlbumOrFail($this->albumIDs[0], false)->title; + } + + Gate::authorize(AlbumPolicy::CAN_EDIT_ID, [AbstractAlbum::class, $this->albumIDs]); + $this->parent_id = $params[Params::PARENT_ID] ?? null; + } + + /** + * Prepare confirmation step. + * + * @param string $id + * @param string $title + * + * @return void + */ + public function setAlbum(string $id, string $title): void + { + $this->albumID = $id; + $this->title = $title; + } + + public function submit(): void + { + $this->albumID = $this->albumID === '' ? null : $this->albumID; + + $this->validate(MergeAlbumsRuleSet::rules()); + Gate::authorize(AlbumPolicy::CAN_EDIT_ID, [AbstractAlbum::class, $this->albumIDs]); + + /** @var ?Album $album */ + $album = $this->albumID === null ? null : Album::query()->findOrFail($this->albumID); + Gate::authorize(AlbumPolicy::CAN_EDIT, [AbstractAlbum::class, $album]); + + // `findOrFail` returns a union type, but we know that it returns the + // correct collection in this case + /** @var Collection $albums */ + $albums = Album::query()->findOrFail($this->albumIDs); + + $this->mergeAlbums->do($album, $albums); + + if ($this->parent_id !== null) { + $this->redirect(route('livewire-gallery-album', ['albumId' => $this->parent_id]), true); + } else { + $this->redirect(route('livewire-gallery'), true); + } + $this->close(); + } + + /** + * Simply render the form. + * + * @return View + */ + public function render(): View + { + return view('livewire.forms.album.merge'); + } + + /** + * Add an handle to close the modal form from a user-land call. + * + * @return void + */ + public function close(): void + { + $this->closeModal(); + } +} diff --git a/app/Livewire/Components/Forms/Album/Move.php b/app/Livewire/Components/Forms/Album/Move.php new file mode 100644 index 00000000000..24ddcd49e32 --- /dev/null +++ b/app/Livewire/Components/Forms/Album/Move.php @@ -0,0 +1,127 @@ + */ + #[Locked] public array $albumIDs; + #[Locked] public string $titleMoved = ''; + #[Locked] public int $num; + // Destination + #[Locked] public ?string $albumID = null; + #[Locked] public ?string $title = null; + #[Locked] public int $lft; + #[Locked] public int $rgt; + private AlbumFactory $albumFactory; + private AlbumMove $moveAlbums; + + public function boot(): void + { + $this->albumFactory = resolve(AlbumFactory::class); + $this->moveAlbums = resolve(AlbumMove::class); + } + + /** + * This is the equivalent of the constructor for Livewire Components. + * + * @param array{albumID?:string,albumIDs?:array,parentID:?string} $params to move + * + * @return void + */ + public function mount(array $params = ['parentID' => null]): void + { + $id = $params[Params::ALBUM_ID] ?? null; + $this->albumIDs = $id !== null ? [$id] : $params[Params::ALBUM_IDS] ?? []; + $this->num = count($this->albumIDs); + + if ($this->num === 1) { + /** @var Album $album */ + $album = $this->albumFactory->findBaseAlbumOrFail($this->albumIDs[0], false); + $this->titleMoved = $album->title; + $this->lft = $album->_lft; + $this->rgt = $album->_rgt; + } + + Gate::authorize(AlbumPolicy::CAN_EDIT_ID, [AbstractAlbum::class, $this->albumIDs]); + $this->parent_id = $params[Params::PARENT_ID] ?? null; + } + + /** + * Prepare confirmation step. + * + * @param string $id + * @param string $title + * + * @return void + */ + public function setAlbum(string $id, string $title): void + { + $this->albumID = $id; + $this->title = $title; + } + + public function submit(): void + { + $this->albumID = $this->albumID === '' ? null : $this->albumID; + + $this->validate(MoveAlbumsRuleSet::rules()); + Gate::authorize(AlbumPolicy::CAN_EDIT_ID, [AbstractAlbum::class, $this->albumIDs]); + + /** @var ?Album $album */ + $album = $this->albumID === null ? null : Album::query()->findOrFail($this->albumID); + Gate::authorize(AlbumPolicy::CAN_EDIT, [AbstractAlbum::class, $album]); + + // `findOrFail` returns a union type, but we know that it returns the + // correct collection in this case + /** @var Collection $albums */ + $albums = Album::query()->findOrFail($this->albumIDs); + $this->moveAlbums->do($album, $albums); + + if ($this->parent_id !== null) { + $this->redirect(route('livewire-gallery-album', ['albumId' => $this->parent_id]), true); + } else { + $this->redirect(route('livewire-gallery'), true); + } + $this->close(); + } + + /** + * Simply render the form. + * + * @return View + */ + public function render(): View + { + return view('livewire.forms.album.move'); + } + + /** + * Add an handle to close the modal form from a user-land call. + * + * @return void + */ + public function close(): void + { + $this->closeModal(); + } +} diff --git a/app/Livewire/Components/Forms/Album/MovePanel.php b/app/Livewire/Components/Forms/Album/MovePanel.php new file mode 100644 index 00000000000..38041ca154f --- /dev/null +++ b/app/Livewire/Components/Forms/Album/MovePanel.php @@ -0,0 +1,111 @@ + */ + #[Locked] public array $albumIDs; + #[Locked] public ?string $titleMoved; + // Destination + #[Locked] public ?string $albumID = null; + #[Locked] public ?string $title = null; + #[Locked] public ?string $parent_id = null; + #[Locked] public int $lft; + #[Locked] public int $rgt; + private AlbumMove $moveAlbums; + + public function boot(): void + { + $this->moveAlbums = resolve(AlbumMove::class); + } + + /** + * This is the equivalent of the constructor for Livewire Components. + * + * @param Album $album to update the attributes of + * + * @return void + */ + public function mount(Album $album): void + { + Gate::authorize(AlbumPolicy::CAN_EDIT, [AbstractAlbum::class, $album]); + + $this->albumIDs = [$album->id]; + $this->titleMoved = $album->title; + $this->lft = $album->_lft; + $this->rgt = $album->_rgt; + $this->parent_id = $album->parent_id; + } + + /** + * Prepare confirmation step. + * + * @param string $id + * @param string $title + * + * @return void + */ + public function setAlbum(string $id, string $title) + { + $this->albumID = $id; + $this->title = $title; + } + + /** + * Simply render the form. + * + * @return View + */ + public function render(): View + { + return view('livewire.forms.album.move-panel'); + } + + /** + * Execute transfer of ownership. + */ + public function move(): void + { + $this->areValid(MoveAlbumsRuleSet::rules()); + + // set default for root. + $this->albumID = $this->albumID === '' ? null : $this->albumID; + Gate::authorize(AlbumPolicy::CAN_EDIT_ID, [AbstractAlbum::class, $this->albumIDs]); + + /** @var ?Album $album */ + $album = $this->albumID === null ? null : Album::query()->findOrFail($this->albumID); + Gate::authorize(AlbumPolicy::CAN_EDIT, [AbstractAlbum::class, $album]); + + // `findOrFail` returns a union type, but we know that it returns the + // correct collection in this case + /** @var Collection $albums */ + $albums = Album::query()->findOrFail($this->albumIDs); + $this->moveAlbums->do($album, $albums); + + if ($this->parent_id !== null) { + $this->redirect(route('livewire-gallery-album', ['albumId' => $this->parent_id]), true); + } else { + $this->redirect(route('livewire-gallery'), true); + } + } +} diff --git a/app/Livewire/Components/Forms/Album/Properties.php b/app/Livewire/Components/Forms/Album/Properties.php new file mode 100644 index 00000000000..108544ea0db --- /dev/null +++ b/app/Livewire/Components/Forms/Album/Properties.php @@ -0,0 +1,137 @@ +albumID = $album->id; + $this->title = $album->title; + $this->description = $album->description ?? ''; + $this->sorting_column = $album->sorting?->column->value ?? ''; + $this->sorting_order = $album->sorting?->order->value ?? ''; + if ($album instanceof ModelsAlbum) { + $this->license = $album->license->value; + } + } + + /** + * Simply render the form. + * + * @return View + */ + public function render(): View + { + return view('livewire.forms.album.properties'); + } + + /** + * Update Username & Password of current user. + */ + public function submit(AlbumFactory $albumFactory): void + { + $rules = [ + RequestAttribute::TITLE_ATTRIBUTE => ['required', new TitleRule()], + RequestAttribute::LICENSE_ATTRIBUTE => ['required', new Enum(LicenseType::class)], + ...SetAlbumDescriptionRuleSet::rules(), + ...SetAlbumSortingRuleSet::rules(), + ]; + + if (!$this->areValid($rules)) { + return; + } + + $baseAlbum = $albumFactory->findBaseAlbumOrFail($this->albumID, false); + Gate::authorize(AlbumPolicy::CAN_EDIT, $baseAlbum); + + $baseAlbum->title = $this->title; + $baseAlbum->description = $this->description; + + // Not super pretty but whatever. + $column = ColumnSortingPhotoType::tryFrom($this->sorting_column); + $order = OrderSortingType::tryFrom($this->sorting_order); + $sortingCriterion = $column === null ? null : new PhotoSortingCriterion($column->toColumnSortingType(), $order); + + $baseAlbum->sorting = $sortingCriterion; + + if ($baseAlbum instanceof ModelsAlbum) { + $baseAlbum->license = LicenseType::from($this->license); + } + + $this->notify(__('lychee.CHANGE_SUCCESS')); + $baseAlbum->save(); + } + + /** + * Return computed property so that it does not stay in memory. + * + * @return array column sorting + */ + final public function getPhotoSortingColumnsProperty(): array + { + // ? Dark magic: The ... will expand the array. + return ['' => '-', ...ColumnSortingPhotoType::localized()]; + } + + /** + * Return computed property so that it does not stay in memory. + * + * @return array order + */ + final public function getSortingOrdersProperty(): array + { + // ? Dark magic: The ... will expand the array. + return ['' => '-', ...OrderSortingType::localized()]; + } + + final public function getLicensesProperty(): array + { + return LicenseType::localized(); + } +} diff --git a/app/Livewire/Components/Forms/Album/Rename.php b/app/Livewire/Components/Forms/Album/Rename.php new file mode 100644 index 00000000000..b830776f269 --- /dev/null +++ b/app/Livewire/Components/Forms/Album/Rename.php @@ -0,0 +1,93 @@ + */ + #[Locked] public array $albumIDs; + #[Locked] public int $num; + public string $title = ''; + + private AlbumFactory $albumFactory; + + public function boot(): void + { + $this->albumFactory = resolve(AlbumFactory::class); + } + + /** + * This is the equivalent of the constructor for Livewire Components. + * + * @param array{albumID?:string,albumIDs?:array,parentID:?string} $params to move + * + * @return void + */ + public function mount(array $params = ['parentID' => null]): void + { + $id = $params[Params::ALBUM_ID] ?? null; + $this->albumIDs = $id !== null ? [$id] : $params[Params::ALBUM_IDS] ?? []; + $this->num = count($this->albumIDs); + + if ($this->num === 1) { + $this->title = $this->albumFactory->findBaseAlbumOrFail($this->albumIDs[0], false)->title; + } + + Gate::authorize(AlbumPolicy::CAN_EDIT_ID, [AbstractAlbum::class, $this->albumIDs]); + $this->parent_id = $params[Params::PARENT_ID] ?? SmartAlbumType::UNSORTED->value; + } + + /** + * Rename. + * + * @return void + */ + public function submit(): void + { + $this->validate(SetAlbumsTitleRuleSet::rules()); + Gate::authorize(AlbumPolicy::CAN_EDIT_ID, [AbstractAlbum::class, $this->albumIDs]); + BaseAlbumImpl::query()->whereIn('id', $this->albumIDs)->update(['title' => $this->title]); + + $this->close(); + $this->dispatch('reloadPage')->to(GalleryAlbum::class); + } + + /** + * Simply render the form. + * + * @return View + */ + public function render(): View + { + return view('livewire.forms.album.rename'); + } + + /** + * Add an handle to close the modal form from a user-land call. + * + * @return void + */ + public function close(): void + { + $this->closeModal(); + } +} diff --git a/app/Livewire/Components/Forms/Album/SearchAlbum.php b/app/Livewire/Components/Forms/Album/SearchAlbum.php new file mode 100644 index 00000000000..2a71f535790 --- /dev/null +++ b/app/Livewire/Components/Forms/Album/SearchAlbum.php @@ -0,0 +1,182 @@ +albumListSaved = $this->getAlbumsListWithPath($lft, $rgt, $parent_id); + } + + /** + * Give the tree of albums owned by the user. + * + * @return Collection + */ + public function getAlbumListProperty(): Collection + { + $filtered = collect($this->albumListSaved); + if ($this->search !== null && trim($this->search) !== '') { + return $filtered->filter(function (array $album) { + return Str::contains($album['title'], ltrim($this->search), true); + }); + } + + return $filtered; + } + + /** + * Simply render the form. + * + * @return View + */ + public function render(): View + { + return view('livewire.forms.album.search-album'); + } + + private function getAlbumsListWithPath(?int $lft, ?int $rgt, ?string $parent_id): array + { + $albumQueryPolicy = resolve(AlbumQueryPolicy::class); + $unfiltered = $albumQueryPolicy->applyReachabilityFilter( + // We remove all sub albums + // Otherwise it would create cyclic dependency + Album::query() + ->when($lft !== null, + fn ($q) => $q->where('_lft', '<', $lft)->orWhere('_rgt', '>', $rgt)) + ); + $sorting = AlbumSortingCriterion::createDefault(); + $query = (new SortingDecorator($unfiltered)) + ->orderBy($sorting->column, $sorting->order); + + /** @var NsCollection $albums */ + $albums = $query->get(); + $tree = $albums->toTree(null); + + $flat_tree = $this->flatten($tree); + + // Prepend with the possibility to move to root if parent is not already root. + if ($parent_id !== null) { + array_unshift( + $flat_tree, + [ + 'id' => null, + 'title' => __('lychee.ROOT'), + 'original' => __('lychee.ROOT'), + 'short_title' => __('lychee.ROOT'), + 'thumb' => 'img/no_images.svg', + ] + ); + } + + return $flat_tree; + } + + /** + * Flatten the tree and create bread crumb paths. + * + * @param mixed $collection + * @param string $prefix + * + * @return array + */ + private function flatten($collection, $prefix = ''): array + { + $flatArray = []; + foreach ($collection as $node) { + $title = $prefix . ($prefix !== '' ? '/' : '') . $node->title; + $short_title = $this->shorten($title); + $flatArray[] = [ + 'id' => $node->id, + 'title' => $title, + 'original' => $node->title, + 'short_title' => $short_title, + 'thumb' => $node->thumb?->thumbUrl ?? 'img/no_images.svg', + ]; + if ($node->children !== null) { + $flatArray = array_merge($flatArray, $this->flatten($node->children, $title)); + unset($node->children); + } + } + + return $flatArray; + } + + /** + * shorten the title to reach a targetted length. + * + * @param string $title to shorten + * + * @return string short version with elipsis + */ + private function shorten(string $title): string + { + $len = strlen($title); + + if ($len < self::SHORTEN_BY) { + return $title; + } + /** @var Collection $title_split */ + $title_split = collect(explode('/', $title)); + $last_elem = $title_split->last(); + $len_last_elem = strlen($last_elem); + + $num_chunks = $title_split->count() - 1; + + if ($num_chunks === 0) { + return Str::limit($last_elem, self::SHORTEN_BY, '…'); + } + + $title_split = $title_split->take($num_chunks); + /** @var Collection $title_lengths */ + $title_lengths = $title_split->map(fn ($v) => strlen($v)); + + // find best target length. + + $len_to_reduce = self::SHORTEN_BY - $len_last_elem - 2 * $num_chunks; + $unit_target_len = (int) ceil($len_to_reduce / $num_chunks); + + do { + $unit_target_len--; + $title_lengths = $title_lengths->map(fn ($v) => $v <= $unit_target_len ? $v : $unit_target_len + 1); + $resulting_len = $title_lengths->sum(); + } while ($len_to_reduce < $resulting_len); + + $title_split = $title_split->map(fn ($v) => Str::limit($v, $unit_target_len, '…')); + + return implode('/', $title_split->all()) . '/' . $last_elem; + } + + public function placeholder(): string + { + return "
Loading album list...
"; + } +} diff --git a/app/Livewire/Components/Forms/Album/ShareWith.php b/app/Livewire/Components/Forms/Album/ShareWith.php new file mode 100644 index 00000000000..f853041c192 --- /dev/null +++ b/app/Livewire/Components/Forms/Album/ShareWith.php @@ -0,0 +1,155 @@ +album = $album; + Gate::authorize(AlbumPolicy::CAN_SHARE_WITH_USERS, [AbstractAlbum::class, $this->album]); + $this->resetData(); + } + + /** + * Simply render the form. + * + * @return View + */ + public function render(): View + { + return view('livewire.forms.album.share-with'); + } + + /** + * Return the list of users to share with. + * This is basically: + * - Not the current user. + * - Not the owner of the album (just to be sure) + * - Not the admins (they already have all access) + * - Not users which have already been shared. + * + * @return array + * + * @throws UnauthorizedException + * @throws QueryBuilderException + */ + public function getUserListProperty(): array + { + $alreadySelected = collect($this->perms) + ->map(fn (AccessPermission $perm) => $perm->user_id) + ->all(); + + $id = Auth::id() ?? throw new UnauthorizedException(); + $filtered = User::query() + ->where('id', '<>', $id) + ->where('id', '<>', $this->album->owner_id) + ->where('may_administrate', '<>', true) + ->whereNotIn('id', $alreadySelected) + ->orderBy('username', 'ASC') + ->get() + ->map(fn (User $usr) => ['id' => $usr->id, 'username' => $usr->username]); + + if ($this->search !== null && trim($this->search) !== '') { + return $filtered->filter(function (array $album) { + return Str::contains($album['username'], ltrim($this->search), true); + })->all(); + } + + return $filtered->all(); + } + + public function add(): void + { + Gate::authorize(AlbumPolicy::CAN_SHARE_WITH_USERS, [AbstractAlbum::class, $this->album]); + + $perm = new AccessPermission(); + $perm->user_id = $this->userID; + $perm->base_album_id = $this->album->id; + $perm->grants_full_photo_access = $this->grants_full_photo_access; + $perm->grants_download = $this->grants_download; + $perm->grants_upload = $this->grants_upload; + $perm->grants_edit = $this->grants_edit; + $perm->grants_delete = $this->grants_delete; + $perm->save(); + + $this->resetData(); + } + + public function select(int $userID, string $username): void + { + $this->userID = $userID; + $this->username = $username; + } + + public function clearUsername(): void + { + $this->userID = null; + $this->username = null; + } + + private function resetData(): void + { + $this->perms = $this->album->access_permissions()->with(['user', 'album'])->whereNotNull('user_id')->get()->all(); + $this->grants_download = Configs::getValueAsBool('grants_download'); + $this->grants_full_photo_access = Configs::getValueAsBool('grants_full_photo_access'); + $this->grants_upload = false; + $this->grants_edit = false; + $this->grants_delete = false; + $this->search = null; + $this->userID = null; + $this->username = null; + } + + public function delete(int $id): void + { + $perm = AccessPermission::with('album')->findOrFail($id); + Gate::authorize(AlbumPolicy::CAN_SHARE_WITH_USERS, [AbstractAlbum::class, $perm->album]); + + AccessPermission::query()->where('id', '=', $id)->delete(); + $this->resetData(); + } +} diff --git a/app/Livewire/Components/Forms/Album/ShareWithLine.php b/app/Livewire/Components/Forms/Album/ShareWithLine.php new file mode 100644 index 00000000000..e42d1483d67 --- /dev/null +++ b/app/Livewire/Components/Forms/Album/ShareWithLine.php @@ -0,0 +1,83 @@ +album]); + + $this->album_title = $album_title; + $this->perm = $perm; + $this->username = $perm->user->username; + $this->grants_full_photo_access = $perm->grants_full_photo_access; + $this->grants_download = $perm->grants_download; + $this->grants_upload = $perm->grants_upload; + $this->grants_edit = $perm->grants_edit; + $this->grants_delete = $perm->grants_delete; + } + + /** + * Simply render the form. + * + * @return View + */ + public function render(): View + { + return view('livewire.forms.album.share-with-line'); + } + + /** + * This runs after a wired property is updated. + * + * @param mixed $field + * @param mixed $value + * + * @return void + */ + public function updated($field, $value): void + { + Gate::authorize(AlbumPolicy::CAN_SHARE_WITH_USERS, [AbstractAlbum::class, $this->perm->album]); + + $this->perm->grants_full_photo_access = $this->grants_full_photo_access; + $this->perm->grants_download = $this->grants_download; + $this->perm->grants_upload = $this->grants_upload; + $this->perm->grants_edit = $this->grants_edit; + $this->perm->grants_delete = $this->grants_delete; + $this->perm->save(); + $this->notify(__('lychee.CHANGE_SUCCESS')); + } +} diff --git a/app/Livewire/Components/Forms/Album/Transfer.php b/app/Livewire/Components/Forms/Album/Transfer.php new file mode 100644 index 00000000000..1c6e0aa785d --- /dev/null +++ b/app/Livewire/Components/Forms/Album/Transfer.php @@ -0,0 +1,121 @@ +albumID = $album->id; + $this->title = $album->title; + $this->current_owner = $album->owner_id; + $this->username = $this->getUsersProperty()[0]; + } + + /** + * Simply render the form. + * + * @return View + */ + public function render(): View + { + return view('livewire.forms.album.transfer'); + } + + /** + * Return a table with the user_id and associated username. + * + * @return array list of usernames + */ + public function getUsersProperty(): array + { + return User::query() + ->select('username') + ->where('id', '<>', $this->current_owner) + ->orderBy('id', 'ASC') + ->pluck('username') + ->all(); + } + + /** + * Execute transfer of ownership. + * + * @param AlbumFactory $albumFactory + * + * @return RedirectResponse|View + */ + public function transfer(AlbumFactory $albumFactory) + { + $this->areValid([ + 'albumID' => ['required', new AlbumIDRule(false)], + 'username' => ['required', new UsernameRule()], + ]); + + $baseAlbum = $albumFactory->findBaseAlbumOrFail($this->albumID, false); + + // We use CAN DELETE because it is pretty much the same. Only the owner and admin can transfer ownership + Gate::authorize(AlbumPolicy::CAN_DELETE, $baseAlbum); + + $userId = User::query() + ->select(['id']) + ->where('username', '=', $this->username) + ->firstOrFail(['id'])->id; + + $baseAlbum->owner_id = $userId; + $baseAlbum->save(); + + // If this is an Album, we also need to fix the children and photos ownership + if ($baseAlbum instanceof Album) { + $baseAlbum->makeRoot(); + $baseAlbum->save(); + $baseAlbum->fixOwnershipOfChildren(); + } + + // If we are not an administrator, this mean we no longer have access. + if (Auth::user()->may_administrate !== true) { + return redirect()->to(route('livewire-gallery')); + } + + // Remount the component and re-render. + $this->mount($baseAlbum); + $this->notify('Transfer successful!'); + + return $this->render(); + } +} diff --git a/app/Livewire/Components/Forms/Album/UnlockAlbum.php b/app/Livewire/Components/Forms/Album/UnlockAlbum.php new file mode 100644 index 00000000000..4dbac54c150 --- /dev/null +++ b/app/Livewire/Components/Forms/Album/UnlockAlbum.php @@ -0,0 +1,76 @@ +unlock = resolve(Unlock::class); + $this->albumFactory = resolve(AlbumFactory::class); + } + + /** + * This is the equivalent of the constructor for Livewire Components. + * + * @param $albumID album to unlock + * + * @return void + */ + public function mount(string $albumID): void + { + $this->albumID = $albumID; + } + + /** + * Simply render the form. + * + * @return View + */ + public function render(): View + { + return view('livewire.forms.album.unlock-album'); + } + + /** + * Method called from the front-end to unlock the album when given a password. + * This will throw an exception on failure! + * + * @return void + */ + public function submit(): void + { + if (!$this->areValid(UnlockAlbumRuleSet::rules())) { + return; + } + + $album = $this->albumFactory->findBaseAlbumOrFail($this->albumID); + $this->unlock->do($album, $this->password); + $this->redirect(route('livewire-gallery-album', ['albumId' => $this->albumID])); + } +} diff --git a/app/Livewire/Components/Forms/Album/Visibility.php b/app/Livewire/Components/Forms/Album/Visibility.php new file mode 100644 index 00000000000..71fabdd06ad --- /dev/null +++ b/app/Livewire/Components/Forms/Album/Visibility.php @@ -0,0 +1,147 @@ +albumID = $album->id; + $this->is_nsfw = $album->is_nsfw; + + /** @var AccessPermission $perm */ + $perm = $album->public_permissions(); + + $this->is_public = $perm !== null; + if ($this->is_public) { + $this->setPublic($perm); + } + } + + /** + * When we initialize, we also need to update the public attributes of the components. + * + * @param AccessPermission $perm + * + * @return void + */ + private function setPublic(AccessPermission $perm): void + { + $this->grants_full_photo_access = $perm->grants_full_photo_access; + $this->is_link_required = $perm->is_link_required; + $this->grants_download = $perm->grants_download; + $this->is_password_required = $perm->password !== null; + // ! We do NOT load the password as we do not want to expose it. + } + + /** + * When we set to Private, we automatically reset the all the attributes to false. + * The AccessPermission object associated will be destroyed later, as such it is better to reset the data. + * + * @return void + */ + private function setPrivate(): void + { + $this->grants_full_photo_access = false; + $this->is_link_required = false; + $this->is_password_required = false; + $this->grants_download = false; + $this->password = null; + } + + /** + * Simply render the form. + * + * @return View + */ + public function render(): View + { + return view('livewire.forms.album.visibility'); + } + + /** + * If any attributes are changed, we call this. + * + * @return void + */ + public function updated() + { + $albumFactory = resolve(AlbumFactory::class); + $baseAlbum = $albumFactory->findBaseAlbumOrFail($this->albumID, false); + + $this->validate(SetAlbumProtectionPolicyRuleSet::rules()); + + Gate::authorize(AlbumPolicy::CAN_EDIT, [AbstractAlbum::class, $baseAlbum]); + + if (!$this->is_public) { + $this->setPrivate(); + } + + $albumProtectionPolicy = new AlbumProtectionPolicy( + is_public: $this->is_public, + is_link_required: $this->is_link_required, + is_nsfw: $this->is_nsfw, + grants_full_photo_access: $this->grants_full_photo_access, + grants_download: $this->grants_download, + ); + + // No empty string. + if ($this->password === '') { + $this->password = null; + } + + // If password is required but password is empty this means that we do not want to change current password. + $passwordUpdateRequested = $this->is_password_required && $this->password !== null; + + // Override password if it is no longer required + if (!$this->is_password_required) { + $this->password = null; + $passwordUpdateRequested = true; + } + + $setProtectionPolicy = resolve(SetProtectionPolicy::class); + $setProtectionPolicy->do( + $baseAlbum, + $albumProtectionPolicy, + $passwordUpdateRequested, + $this->password + ); + $this->notify(__('lychee.CHANGE_SUCCESS')); + } +} diff --git a/app/Livewire/Components/Forms/Confirms/SaveAll.php b/app/Livewire/Components/Forms/Confirms/SaveAll.php new file mode 100644 index 00000000000..c3dc041d90c --- /dev/null +++ b/app/Livewire/Components/Forms/Confirms/SaveAll.php @@ -0,0 +1,47 @@ +closeModal(); + $this->dispatch('saveAll')->to(AllSettings::class); + } + + public function close(): void + { + $this->closeModal(); + } +} diff --git a/app/Livewire/Components/Forms/Photo/CopyTo.php b/app/Livewire/Components/Forms/Photo/CopyTo.php new file mode 100644 index 00000000000..a02d4f26b94 --- /dev/null +++ b/app/Livewire/Components/Forms/Photo/CopyTo.php @@ -0,0 +1,124 @@ + */ + #[Locked] public array $photoIDs; + #[Locked] public string $title = ''; + // Destination + #[Locked] public ?string $albumID = null; + #[Locked] public ?string $albumTitle = null; + #[Locked] public int $num; + /** + * Boot method. + */ + public function boot(): void + { + $this->duplicate = resolve(Duplicate::class); + } + + /** + * This is the equivalent of the constructor for Livewire Components. + * + * @param array{photoID?:string,photoIDs?:array,albumID:?string} $params to move + * + * @return void + */ + public function mount(array $params = ['albumID' => null]): void + { + $id = $params[Params::PHOTO_ID] ?? null; + $this->photoIDs = $id !== null ? [$id] : $params[Params::PHOTO_IDS] ?? []; + $this->num = count($this->photoIDs); + + if ($this->num === 1) { + /** @var Photo $photo */ + $photo = Photo::query()->findOrFail($this->photoIDs[0]); + $this->title = $photo->title; + } + + Gate::authorize(PhotoPolicy::CAN_EDIT_ID, [Photo::class, $this->photoIDs]); + $this->parent_id = $params[Params::ALBUM_ID] ?? SmartAlbumType::UNSORTED->value; + } + + /** + * Prepare confirmation step. + * + * @param string $id + * @param string $title + * + * @return void + */ + public function setAlbum(string $id, string $title): void + { + $this->albumID = $id; + $this->title = $title; + + $this->validate(DuplicatePhotosRuleSet::rules()); + Gate::authorize(PhotoPolicy::CAN_EDIT_ID, [Photo::class, $this->photoIDs]); + + $this->albumID = $this->albumID === '' ? null : $this->albumID; + + /** @var ?Album $album */ + $album = $this->albumID === null ? null : Album::query()->findOrFail($this->albumID); + Gate::authorize(AlbumPolicy::CAN_EDIT, [Album::class, $album]); + + $photos = Photo::query()->with(['size_variants'])->findOrFail($this->photoIDs); + + $copiedPhotos = $this->duplicate->do($photos, $album); + + $notify = new UserNotify(); + + $copiedPhotos->each(fn ($photo, $k) => $notify->do($photo)); + + // We stay in current album. + $this->redirect(route('livewire-gallery-album', ['albumId' => $this->parent_id]), true); + } + + /** + * Simply render the form. + * + * @return View + */ + public function render(): View + { + return view('livewire.forms.photo.copyTo'); + } + + /** + * Add an handle to close the modal form from a user-land call. + * + * @return void + */ + public function close(): void + { + $this->closeModal(); + } +} diff --git a/app/Livewire/Components/Forms/Photo/Delete.php b/app/Livewire/Components/Forms/Photo/Delete.php new file mode 100644 index 00000000000..ebf8855f3d1 --- /dev/null +++ b/app/Livewire/Components/Forms/Photo/Delete.php @@ -0,0 +1,95 @@ + */ + #[Locked] public array $photoIDs; + #[Locked] public ?string $albumId = null; + #[Locked] public string $title = ''; + #[Locked] public int $num; + /** + * This is the equivalent of the constructor for Livewire Components. + * + * @param array{albumID:?string,photoID?:string,photoIDs?:array} $params to delete + * + * @return void + */ + public function mount(array $params = ['albumID' => null]): void + { + $id = $params[Params::PHOTO_ID] ?? null; + $this->photoIDs = $id !== null ? [$id] : $params[Params::PHOTO_IDS] ?? []; + + Gate::authorize(PhotoPolicy::CAN_DELETE_BY_ID, [Photo::class, $this->photoIDs]); + + $this->num = count($this->photoIDs); + + if ($this->num === 1) { + /** @var Photo $photo */ + $photo = Photo::query()->findOrFail($this->photoIDs[0]); + $this->title = $photo->title; + } + + $this->albumId = $params[Params::ALBUM_ID] ?? null; + $this->num = count($this->photoIDs); + } + + /** + * Simply render the form. + * + * @return View + */ + public function render(): View + { + return view('livewire.forms.photo.delete'); + } + + /** + * Execute deletion. + * + * @return \Illuminate\Routing\Redirector|\Illuminate\Http\RedirectResponse + */ + public function submit(DeleteAction $delete): \Illuminate\Routing\Redirector|\Illuminate\Http\RedirectResponse + { + $this->validate(DeletePhotosRuleSet::rules()); + + Gate::authorize(PhotoPolicy::CAN_DELETE_BY_ID, [Photo::class, $this->photoIDs]); + + $fileDeleter = $delete->do($this->photoIDs); + App::terminating(fn () => $fileDeleter->do()); + + return redirect()->to(route('livewire-gallery-album', ['albumId' => $this->albumId ?? SmartAlbumType::UNSORTED->value])); + } + + /** + * Add an handle to close the modal form from a user-land call. + * + * @return void + */ + public function close(): void + { + $this->closeModal(); + } +} diff --git a/app/Livewire/Components/Forms/Photo/Download.php b/app/Livewire/Components/Forms/Photo/Download.php new file mode 100644 index 00000000000..7ff0b67f279 --- /dev/null +++ b/app/Livewire/Components/Forms/Photo/Download.php @@ -0,0 +1,69 @@ + */ + #[Locked] public array $photoIDs; + public Photo $photo; + + /** + * This is the equivalent of the constructor for Livewire Components. + * + * @param array{albumID:?string,photoID?:string,photoIDs?:array} $params to download + * + * @return void + */ + public function mount(array $params = ['albumID' => null]): void + { + $id = $params[Params::PHOTO_ID] ?? null; + $this->photoIDs = $id !== null ? [$id] : $params[Params::PHOTO_IDS] ?? []; + $num = count($this->photoIDs); + + if ($num === 1) { + $this->photo = Photo::query()->findOrFail($this->photoIDs[0]); + Gate::authorize(PhotoPolicy::CAN_DOWNLOAD, [Photo::class, $this->photo]); + } else { + $this->redirect(route('photo_download', ['kind' => DownloadVariantType::ORIGINAL->value]) . '&photoIDs=' . implode(',', $this->photoIDs)); + } + } + + /** + * Simply render the form. + * + * @return View + */ + public function render(): View + { + return view('livewire.forms.photo.download'); + } + + /** + * Add an handle to close the modal form from a user-land call. + * + * @return void + */ + public function close(): void + { + $this->closeModal(); + } +} diff --git a/app/Livewire/Components/Forms/Photo/Move.php b/app/Livewire/Components/Forms/Photo/Move.php new file mode 100644 index 00000000000..eaea905ce26 --- /dev/null +++ b/app/Livewire/Components/Forms/Photo/Move.php @@ -0,0 +1,118 @@ + */ + #[Locked] public array $photoIDs; + #[Locked] public string $title = ''; + #[Locked] public int $num; + // Destination + #[Locked] public ?string $albumID = null; + #[Locked] public ?string $albumTitle = null; + /** + * This is the equivalent of the constructor for Livewire Components. + * + * @param array{photoID?:string,photoIDs?:array,albumID:?string} $params to move + * + * @return void + */ + public function mount(array $params = ['albumID' => null]): void + { + $id = $params[Params::PHOTO_ID] ?? null; + $this->photoIDs = $id !== null ? [$id] : $params[Params::PHOTO_IDS] ?? []; + $this->num = count($this->photoIDs); + + if ($this->num === 1) { + /** @var Photo $photo */ + $photo = Photo::query()->findOrFail($this->photoIDs[0]); + $this->title = $photo->title; + } + + Gate::authorize(PhotoPolicy::CAN_EDIT_ID, [Photo::class, $this->photoIDs]); + $this->parent_id = $params[Params::ALBUM_ID] ?? SmartAlbumType::UNSORTED->value; + } + + /** + * Prepare confirmation step. + * + * @param string $id + * @param string $title + * + * @return void + */ + public function setAlbum(string $id, string $title): void + { + $this->albumID = $id; + $this->title = $title; + + $this->validate(MovePhotosRuleSet::rules()); + Gate::authorize(PhotoPolicy::CAN_EDIT_ID, [Photo::class, $this->photoIDs]); + + $this->albumID = $this->albumID === '' ? null : $this->albumID; + + /** @var ?Album $album */ + $album = $this->albumID === null ? null : Album::query()->findOrFail($this->albumID); + Gate::authorize(AlbumPolicy::CAN_EDIT, [Album::class, $album]); + + $photos = Photo::query()->findOrFail($this->photoIDs); + + $notify = new UserNotify(); + + /** @var Photo $photo */ + foreach ($photos as $photo) { + $photo->album_id = $album?->id; + // Avoid unnecessary DB request, when we access the album of a + // photo later (e.g. when a notification is sent). + $photo->setRelation('album', $album); + if ($album !== null) { + $photo->owner_id = $album->owner_id; + } + $photo->save(); + $notify->do($photo); + } + + // We stay in current album. + $this->redirect(route('livewire-gallery-album', ['albumId' => $this->parent_id]), true); + } + + /** + * Simply render the form. + * + * @return View + */ + public function render(): View + { + return view('livewire.forms.photo.move'); + } + + /** + * Add an handle to close the modal form from a user-land call. + * + * @return void + */ + public function close(): void + { + $this->closeModal(); + } +} diff --git a/app/Livewire/Components/Forms/Photo/Rename.php b/app/Livewire/Components/Forms/Photo/Rename.php new file mode 100644 index 00000000000..4993bd03662 --- /dev/null +++ b/app/Livewire/Components/Forms/Photo/Rename.php @@ -0,0 +1,83 @@ + */ + #[Locked] public array $photoIDs; + #[Locked] public int $num; + public string $title = ''; + + /** + * This is the equivalent of the constructor for Livewire Components. + * + * @param array{photoID?:string,photoIDs?:array,albumID:?string} $params to move + * + * @return void + */ + public function mount(array $params = ['albumID' => null]): void + { + $id = $params[Params::PHOTO_ID] ?? null; + $this->photoIDs = $id !== null ? [$id] : $params[Params::PHOTO_IDS] ?? []; + $this->num = count($this->photoIDs); + + if ($this->num === 1) { + /** @var Photo $photo */ + $photo = Photo::query()->findOrFail($this->photoIDs[0]); + $this->title = $photo->title; + } + + Gate::authorize(PhotoPolicy::CAN_EDIT_ID, [Photo::class, $this->photoIDs]); + } + + /** + * Rename. + * + * @return void + */ + public function submit(): void + { + $this->validate(SetPhotosTitleRuleSet::rules()); + Gate::authorize(PhotoPolicy::CAN_EDIT_ID, [Photo::class, $this->photoIDs]); + Photo::query()->whereIn('id', $this->photoIDs)->update(['title' => $this->title]); + + $this->close(); + $this->dispatch('reloadPage')->to(GalleryAlbum::class); + } + + /** + * Simply render the form. + * + * @return View + */ + public function render(): View + { + return view('livewire.forms.photo.rename'); + } + + /** + * Add an handle to close the modal form from a user-land call. + * + * @return void + */ + public function close(): void + { + $this->closeModal(); + } +} diff --git a/app/Livewire/Components/Forms/Photo/Tag.php b/app/Livewire/Components/Forms/Photo/Tag.php new file mode 100644 index 00000000000..71f7ac24a89 --- /dev/null +++ b/app/Livewire/Components/Forms/Photo/Tag.php @@ -0,0 +1,94 @@ + */ + #[Locked] public array $photoIDs; + #[Locked] public array $tags = []; + #[Locked] public int $num; + public bool $shall_override = false; + public ?string $tag = ''; + + /** + * This is the equivalent of the constructor for Livewire Components. + * + * @param array{photoID?:string,photoIDs?:array,albumID:?string} $params to move + * + * @return void + */ + public function mount(array $params = ['albumID' => null]): void + { + $id = $params[Params::PHOTO_ID] ?? null; + $this->photoIDs = $id !== null ? [$id] : $params[Params::PHOTO_IDS] ?? []; + $this->num = count($this->photoIDs); + + if ($this->num === 1) { + /** @var Photo $photo */ + $photo = Photo::query()->findOrFail($this->photoIDs[0]); + $this->tag = implode(', ', $photo->tags); + } + + Gate::authorize(PhotoPolicy::CAN_EDIT_ID, [Photo::class, $this->photoIDs]); + } + + /** + * Tag. + * + * @return void + */ + public function submit(): void + { + $this->tags = collect(explode(',', $this->tag))->map(fn ($v) => trim($v))->filter(fn ($v) => $v !== '')->all(); + + Gate::authorize(PhotoPolicy::CAN_EDIT_ID, [Photo::class, $this->photoIDs]); + + $photos = Photo::query()->whereIn('id', $this->photoIDs)->get(); + foreach ($photos as $photo) { + if ($this->shall_override) { + $photo->tags = $this->tags; + } else { + $photo->tags = array_unique(array_merge($photo->tags, $this->tags)); + } + $photo->save(); + } + + $this->close(); + $this->dispatch('reloadPage')->to(GalleryAlbum::class); + } + + /** + * Simply render the form. + * + * @return View + */ + public function render(): View + { + return view('livewire.forms.photo.tag'); + } + + /** + * Add an handle to close the modal form from a user-land call. + * + * @return void + */ + public function close(): void + { + $this->closeModal(); + } +} diff --git a/app/Livewire/Components/Forms/Profile/GetApiToken.php b/app/Livewire/Components/Forms/Profile/GetApiToken.php new file mode 100644 index 00000000000..7f9e528942e --- /dev/null +++ b/app/Livewire/Components/Forms/Profile/GetApiToken.php @@ -0,0 +1,111 @@ +tokenReset = resolve(TokenReset::class); + $this->tokenDisable = resolve(TokenDisable::class); + } + + /** + * Mount the current data of the user. + * $token is kept empty in order to avoid revealing the data. + * + * @return void + */ + public function mount(): void + { + $user = Auth::user() ?? throw new UnauthenticatedException(); + + $this->token = __('lychee.TOKEN_NOT_AVAILABLE'); + $this->isDisabled = true; + + if ($user->token === null) { + $this->token = __('lychee.DISABLED_TOKEN_STATUS_MSG'); + } + } + + /** + * Renders the modal content. + * + * @return View + */ + public function render(): View + { + return view('livewire.forms.profile.get-api-token'); + } + + /** + * Add an handle to close the modal form from a user-land call. + * + * @return void + */ + public function close(): void + { + $this->closeModal(); + } + + /** + * Method call from front-end to reset the Token. + * We generate a new one on the fly and display it. + * + * @return void + */ + public function resetToken(): void + { + /** + * Authorize the request. + */ + $this->authorize(UserPolicy::CAN_EDIT, [User::class]); + + $this->token = $this->tokenReset->do(); + $this->isDisabled = false; + } + + /** + * Method call from front-end to disable the token. + * We simply erase the current one. + * + * @return void + */ + public function disableToken(): void + { + /** + * Authorize the request. + */ + $this->authorize(UserPolicy::CAN_EDIT, [User::class]); + + $this->tokenDisable->do(); + $this->token = __('lychee.DISABLED_TOKEN_STATUS_MSG'); + $this->isDisabled = true; + } +} \ No newline at end of file diff --git a/app/Livewire/Components/Forms/Profile/ManageSecondFactor.php b/app/Livewire/Components/Forms/Profile/ManageSecondFactor.php new file mode 100644 index 00000000000..ab9c9d2921c --- /dev/null +++ b/app/Livewire/Components/Forms/Profile/ManageSecondFactor.php @@ -0,0 +1,89 @@ + 'required|string|min:5|max:255']; + } + + /** + * Just mount the component with the required WebAuthn Credentials. + * + * @param WebAuthnCredential $credential + * + * @return void + */ + public function mount(WebAuthnCredential $credential): void + { + $this->authorize(UserPolicy::CAN_EDIT, [User::class]); + + if ($credential->authenticatable_id !== (Auth::id() ?? throw new UnauthenticatedException())) { + throw new UnauthorizedException(); + } + + $this->credential = $credential; + $this->alias = $credential->alias ?? Str::substr($credential->id, 0, 30); + } + + /** + * Rendering of the front-end. + * + * @return View + */ + public function render(): View + { + return view('livewire.forms.profile.manage-second-factor'); + } + + /** + * This runs after a wired property is updated. + * + * @param mixed $field + * @param mixed $value + * + * @return void + */ + public function updated($field, $value): void + { + if (!$this->areValid($this->rules())) { + $this->has_error = true; + + return; + } + + $this->has_error = false; + $this->credential->alias = $this->alias; + $this->credential->save(); + $this->notify(__('lychee.CHANGE_SUCCESS')); + } +} diff --git a/app/Livewire/Components/Forms/Profile/SecondFactor.php b/app/Livewire/Components/Forms/Profile/SecondFactor.php new file mode 100644 index 00000000000..c1f96d18c47 --- /dev/null +++ b/app/Livewire/Components/Forms/Profile/SecondFactor.php @@ -0,0 +1,65 @@ +authorize(UserPolicy::CAN_EDIT, [User::class]); + + return view('livewire.modules.profile.second-factor'); + } + + /** + * Return the list of credentials associated to the current logged in user. + * + * @return Collection + * + * @throws UnauthenticatedException + */ + public function getCredentialsProperty(): Collection + { + /** @var \App\Models\User $user */ + $user = Auth::user() ?? throw new UnauthenticatedException(); + + return $user->webAuthnCredentials; + } + + /** + * Delete an existing credential. + * + * @param string $id + * + * @return void + * + * @throws \InvalidArgumentException + */ + public function delete(string $id): void + { + /** @var User $user */ + $user = Auth::user() ?? throw new UnauthenticatedException(); + + $user->webAuthnCredentials()->where('id', '=', $id)->delete(); + $this->notify(__('lychee.U2F_CREDENTIALS_DELETED')); + } +} diff --git a/app/Livewire/Components/Forms/Profile/SetEmail.php b/app/Livewire/Components/Forms/Profile/SetEmail.php new file mode 100644 index 00000000000..709945e6803 --- /dev/null +++ b/app/Livewire/Components/Forms/Profile/SetEmail.php @@ -0,0 +1,67 @@ +authorize(UserPolicy::CAN_EDIT, [User::class]); + + /** @var User $user */ + $user = Auth::user(); + $this->value = $user->email; + $this->description = __('lychee.ENTER_EMAIL'); + $this->action = __('lychee.SAVE'); + } + + /** + * Render the component with the email form. + * + * @return View + * + * @throws UnauthenticatedException + */ + public function render(): View + { + return view('livewire.forms.settings.input'); + } + + /** + * Save the email address entered. + * + * @return void + * + * @throws UnauthenticatedException + */ + public function save(): void + { + $this->validate(['value' => 'required|email']); + + $this->authorize(UserPolicy::CAN_EDIT, [User::class]); + + /** @var User $user */ + $user = Auth::user() ?? throw new UnauthenticatedException(); + $user->email = $this->value; + $user->save(); + } +} \ No newline at end of file diff --git a/app/Livewire/Components/Forms/Profile/SetLogin.php b/app/Livewire/Components/Forms/Profile/SetLogin.php new file mode 100644 index 00000000000..489ddd0a459 --- /dev/null +++ b/app/Livewire/Components/Forms/Profile/SetLogin.php @@ -0,0 +1,92 @@ +updateLogin = resolve(UpdateLogin::class); + } + + public function mount(): void + { + $this->authorize(UserPolicy::CAN_EDIT, [User::class]); + } + + /** + * Simply render the form. + * + * @return View + */ + public function render(): View + { + return view('livewire.forms.profile.set-login'); + } + + /** + * Update Username & Password of current user. + */ + public function submit(): void + { + $this->validate(ChangeLoginRuleSet::rules()); + $this->validate(['oldPassword' => new CurrentPasswordRule()]); + + $this->authorize(UserPolicy::CAN_EDIT, [User::class]); + + $currentUser = $this->updateLogin->do( + $this->username, + $this->password, + $this->oldPassword, + request()->ip() + ); + + // Update the session with the new credentials of the user. + // Otherwise, the session is out-of-sync and falsely assumes the user + // to be unauthenticated upon the next request. + Auth::login($currentUser); + $this->notify(__('lychee.CHANGE_SUCCESS')); + + $this->oldPassword = ''; + $this->username = ''; + $this->password = ''; + $this->password_confirmation = ''; + } + + /** + * Open a login modal box. + * + * @return void + */ + public function openApiTokenModal(): void + { + $this->openClosableModal('forms.profile.get-api-token', __('lychee.CLOSE')); + } +} \ No newline at end of file diff --git a/app/Livewire/Components/Forms/Settings/Base/BaseConfigDoubleDropDown.php b/app/Livewire/Components/Forms/Settings/Base/BaseConfigDoubleDropDown.php new file mode 100644 index 00000000000..d10ae9a52fc --- /dev/null +++ b/app/Livewire/Components/Forms/Settings/Base/BaseConfigDoubleDropDown.php @@ -0,0 +1,95 @@ +value1 = $this->config1->value; + $this->value2 = $this->config2->value; + + return view('livewire.forms.settings.double-drop-down'); + } + + /** + * This runs before a wired property is updated. + * + * @param mixed $field + * @param mixed $value + * + * @return void + * + * @throws InvalidCastException + * @throws JsonEncodingException + * @throws \RuntimeException + */ + public function updated($field, $value) + { + Gate::authorize(SettingsPolicy::CAN_EDIT, [Configs::class]); + $error_msg = $this->config1->sanity($this->value1); + if ($error_msg !== '') { + $this->notify($error_msg, NotificationType::ERROR); + + return; + } + $error_msg = $this->config2->sanity($this->value2); + if ($error_msg !== '') { + $this->notify($error_msg, NotificationType::ERROR); + + return; + } + + $this->config1->value = $this->value1; + $this->config1->save(); + $this->config2->value = $this->value2; + $this->config2->save(); + $this->notify(__('lychee.CHANGE_SUCCESS')); + } + + /** + * Defines accessor for the drop down options1. + * + * @return array + */ + abstract public function getOptions1Property(): array; + + /** + * Defines accessor for the drop down options2. + * + * @return array + */ + abstract public function getOptions2Property(): array; +} \ No newline at end of file diff --git a/app/Livewire/Components/Forms/Settings/Base/BaseConfigDropDown.php b/app/Livewire/Components/Forms/Settings/Base/BaseConfigDropDown.php new file mode 100644 index 00000000000..c7b2ac354a7 --- /dev/null +++ b/app/Livewire/Components/Forms/Settings/Base/BaseConfigDropDown.php @@ -0,0 +1,69 @@ +value = $this->config->value; + + return view('livewire.forms.settings.drop-down'); + } + + /** + * This runs before a wired property is updated. + * + * @param mixed $field + * @param mixed $value + * + * @return void + */ + public function updating($field, $value): void + { + Gate::authorize(SettingsPolicy::CAN_EDIT, [Configs::class]); + $error_msg = $this->config->sanity($value); + if ($error_msg !== '') { + $this->notify($error_msg, NotificationType::ERROR); + + return; + } + + $this->config->value = $value; + $this->config->save(); + $this->notify(__('lychee.CHANGE_SUCCESS')); + } + + /** + * Defines accessor for the drop down options1. + * + * @return array + */ + abstract public function getOptionsProperty(): array; +} \ No newline at end of file diff --git a/app/Livewire/Components/Forms/Settings/Base/BooleanSetting.php b/app/Livewire/Components/Forms/Settings/Base/BooleanSetting.php new file mode 100644 index 00000000000..694c3d8a379 --- /dev/null +++ b/app/Livewire/Components/Forms/Settings/Base/BooleanSetting.php @@ -0,0 +1,77 @@ +description = __('lychee.' . $description); + $this->footer = $footer !== '' ? __('lychee.' . $footer) : ''; + $this->config = Configs::where('key', '=', $name)->firstOrFail(); + } + + /** + * Render the toggle element. + * + * @return View + */ + public function render(): View + { + $this->flag = $this->config->value === '1'; + + return view('livewire.forms.settings.toggle'); + } + + /** + * This runs before a wired property is updated. + * + * @param mixed $field + * @param mixed $value + * + * @return void + * + * @throws InvalidCastException + * @throws JsonEncodingException + * @throws \RuntimeException + */ + public function updating($field, $value) + { + Gate::authorize(SettingsPolicy::CAN_EDIT, [Configs::class]); + + $this->config->value = $value === true ? '1' : '0'; + $this->config->save(); + $this->notify(__('lychee.CHANGE_SUCCESS')); + } +} \ No newline at end of file diff --git a/app/Livewire/Components/Forms/Settings/Base/StringSetting.php b/app/Livewire/Components/Forms/Settings/Base/StringSetting.php new file mode 100644 index 00000000000..d64f7b399ce --- /dev/null +++ b/app/Livewire/Components/Forms/Settings/Base/StringSetting.php @@ -0,0 +1,76 @@ +description = __('lychee.' . $description); + $this->action = __('lychee.' . $action); + $this->placeholder = __('lychee.' . $placeholder); + $this->config = Configs::where('key', '=', $name)->firstOrFail(); + } + + /** + * Renders the input form. + * + * @return View + */ + public function render(): View + { + $this->value = $this->config->value; + + return view('livewire.forms.settings.input'); + } + + /** + * Validation call to persist the data (as opposed to drop down menu and toggle which are instant). + * + * @return void + */ + public function save(): void + { + Gate::authorize(SettingsPolicy::CAN_EDIT, [Configs::class]); + $error_msg = $this->config->sanity($this->value); + if ($error_msg !== '') { + $this->notify($error_msg, NotificationType::ERROR); + $this->value = $this->config->value; + + return; + } + + $this->config->value = $this->value; + $this->config->save(); + $this->notify(__('lychee.CHANGE_SUCCESS')); + } +} \ No newline at end of file diff --git a/app/Livewire/Components/Forms/Settings/SetAlbumDecorationOrientationSetting.php b/app/Livewire/Components/Forms/Settings/SetAlbumDecorationOrientationSetting.php new file mode 100644 index 00000000000..cdab0a7ebd7 --- /dev/null +++ b/app/Livewire/Components/Forms/Settings/SetAlbumDecorationOrientationSetting.php @@ -0,0 +1,34 @@ +description = __('lychee.ALBUM_DECORATION_ORIENTATION'); + $this->config = Configs::where('key', '=', 'album_decoration_orientation')->firstOrFail(); + } +} \ No newline at end of file diff --git a/app/Livewire/Components/Forms/Settings/SetAlbumDecorationSetting.php b/app/Livewire/Components/Forms/Settings/SetAlbumDecorationSetting.php new file mode 100644 index 00000000000..a9fe65396e7 --- /dev/null +++ b/app/Livewire/Components/Forms/Settings/SetAlbumDecorationSetting.php @@ -0,0 +1,34 @@ +description = __('lychee.ALBUM_DECORATION'); + $this->config = Configs::where('key', '=', 'album_decoration')->firstOrFail(); + } +} \ No newline at end of file diff --git a/app/Livewire/Components/Forms/Settings/SetAlbumSortingSetting.php b/app/Livewire/Components/Forms/Settings/SetAlbumSortingSetting.php new file mode 100644 index 00000000000..c7d28fa5dd6 --- /dev/null +++ b/app/Livewire/Components/Forms/Settings/SetAlbumSortingSetting.php @@ -0,0 +1,56 @@ +begin = $matches[1]; + $this->middle = $matches[2]; + $this->end = $matches[3]; + + $this->config1 = Configs::where('key', '=', 'sorting_albums_col')->firstOrFail(); + $this->config2 = Configs::where('key', '=', 'sorting_albums_order')->firstOrFail(); + } + + /** + * Give the options on the column. + * + * @return array + */ + public function getOptions1Property(): array + { + return ColumnSortingAlbumType::localized(); + } + + /** + * Give the options on the ordering. + * + * @return array + */ + public function getOptions2Property(): array + { + return OrderSortingType::localized(); + } +} \ No newline at end of file diff --git a/app/Livewire/Components/Forms/Settings/SetLangSetting.php b/app/Livewire/Components/Forms/Settings/SetLangSetting.php new file mode 100644 index 00000000000..5f8a20e5124 --- /dev/null +++ b/app/Livewire/Components/Forms/Settings/SetLangSetting.php @@ -0,0 +1,35 @@ +description = __('lychee.LANG_TEXT'); + // We do not use Lang::get_code() because we want to be able to modify it. + // We are interested in the setting itself. + $this->config = Configs::where('key', '=', 'lang')->firstOrFail(); + } +} \ No newline at end of file diff --git a/app/Livewire/Components/Forms/Settings/SetLayoutSetting.php b/app/Livewire/Components/Forms/Settings/SetLayoutSetting.php new file mode 100644 index 00000000000..d7488c3cb7e --- /dev/null +++ b/app/Livewire/Components/Forms/Settings/SetLayoutSetting.php @@ -0,0 +1,34 @@ +description = __('lychee.LAYOUT_TYPE'); + $this->config = Configs::where('key', '=', 'layout')->firstOrFail(); + } +} \ No newline at end of file diff --git a/app/Livewire/Components/Forms/Settings/SetLicenseDefaultSetting.php b/app/Livewire/Components/Forms/Settings/SetLicenseDefaultSetting.php new file mode 100644 index 00000000000..0b5784829af --- /dev/null +++ b/app/Livewire/Components/Forms/Settings/SetLicenseDefaultSetting.php @@ -0,0 +1,34 @@ +description = __('lychee.DEFAULT_LICENSE'); + $this->config = Configs::where('key', '=', 'default_license')->firstOrFail(); + } +} \ No newline at end of file diff --git a/app/Livewire/Components/Forms/Settings/SetMapProviderSetting.php b/app/Livewire/Components/Forms/Settings/SetMapProviderSetting.php new file mode 100644 index 00000000000..238cd551e54 --- /dev/null +++ b/app/Livewire/Components/Forms/Settings/SetMapProviderSetting.php @@ -0,0 +1,39 @@ + __('lychee.MAP_PROVIDER_WIKIMEDIA'), + 'OpenStreetMap.org' => __('lychee.MAP_PROVIDER_OSM_ORG'), + 'OpenStreetMap.de' => __('lychee.MAP_PROVIDER_OSM_DE'), + 'OpenStreetMap.fr' => __('lychee.MAP_PROVIDER_OSM_FR'), + 'RRZE' => __('lychee.MAP_PROVIDER_RRZE'), + ]; + } + + /** + * Mount the config. + * + * @return void + */ + public function mount() + { + $this->description = __('lychee.MAP_PROVIDER'); + $this->config = Configs::where('key', '=', 'map_provider')->firstOrFail(); + } +} \ No newline at end of file diff --git a/app/Livewire/Components/Forms/Settings/SetPhotoOverlaySetting.php b/app/Livewire/Components/Forms/Settings/SetPhotoOverlaySetting.php new file mode 100644 index 00000000000..8b5a15f59ad --- /dev/null +++ b/app/Livewire/Components/Forms/Settings/SetPhotoOverlaySetting.php @@ -0,0 +1,34 @@ +description = __('lychee.OVERLAY_TYPE'); + $this->config = Configs::where('key', '=', 'image_overlay_type')->firstOrFail(); + } +} \ No newline at end of file diff --git a/app/Livewire/Components/Forms/Settings/SetPhotoSortingSetting.php b/app/Livewire/Components/Forms/Settings/SetPhotoSortingSetting.php new file mode 100644 index 00000000000..af16d021e77 --- /dev/null +++ b/app/Livewire/Components/Forms/Settings/SetPhotoSortingSetting.php @@ -0,0 +1,56 @@ +begin = $matches[1]; + $this->middle = $matches[2]; + $this->end = $matches[3]; + + $this->config1 = Configs::where('key', '=', 'sorting_photos_col')->firstOrFail(); + $this->config2 = Configs::where('key', '=', 'sorting_photos_order')->firstOrFail(); + } + + /** + * Give the columns options. + * + * @return array + */ + public function getOptions1Property(): array + { + return ColumnSortingPhotoType::localized(); + } + + /** + * Ordering ascending or descending. + * + * @return array + */ + public function getOptions2Property(): array + { + return OrderSortingType::localized(); + } +} \ No newline at end of file diff --git a/app/Livewire/Components/Menus/AlbumAdd.php b/app/Livewire/Components/Menus/AlbumAdd.php new file mode 100644 index 00000000000..c8a2a410b84 --- /dev/null +++ b/app/Livewire/Components/Menus/AlbumAdd.php @@ -0,0 +1,69 @@ +closeContextMenu(); + $this->openModal('forms.album.create', $this->params); + } + + /** + * Open Create Tag Album modal. + * + * @return void + */ + public function openTagAlbumCreateModal(): void + { + $this->closeContextMenu(); + $this->openModal('forms.album.create-tag', $this->params); + } + + public function openImportFromServerModal(): void + { + $this->closeContextMenu(); + $this->openModal('forms.add.import-from-server', $this->params); + } + + public function openImportFromUrlModal(): void + { + $this->closeContextMenu(); + $this->openModal('forms.add.import-from-url', $this->params); + } + + public function openUploadModal(): void + { + $this->closeContextMenu(); + $this->openModal('forms.add.upload', $this->params); + } +} diff --git a/app/Livewire/Components/Menus/AlbumDropdown.php b/app/Livewire/Components/Menus/AlbumDropdown.php new file mode 100644 index 00000000000..a944619cdad --- /dev/null +++ b/app/Livewire/Components/Menus/AlbumDropdown.php @@ -0,0 +1,61 @@ +closeContextMenu(); + $this->openModal('forms.album.rename', [Params::ALBUM_ID => $this->params[Params::ALBUM_ID], Params::PARENT_ID => $this->params[Params::PARENT_ID]]); + } + + public function merge(): void + { + $this->closeContextMenu(); + $this->openModal('forms.album.merge', [Params::ALBUM_ID => $this->params[Params::ALBUM_ID], Params::PARENT_ID => $this->params[Params::PARENT_ID]]); + } + + public function move(): void + { + $this->closeContextMenu(); + $this->openModal('forms.album.move', [Params::ALBUM_ID => $this->params[Params::ALBUM_ID], Params::PARENT_ID => $this->params[Params::PARENT_ID]]); + } + + public function delete(): void + { + $this->closeContextMenu(); + $this->openModal('forms.album.delete', [Params::ALBUM_ID => $this->params[Params::ALBUM_ID], Params::PARENT_ID => $this->params[Params::PARENT_ID]]); + } + + public function download(): void + { + $this->closeContextMenu(); + $this->redirect(route('download', ['albumIDs' => $this->params[Params::ALBUM_ID]])); + } +} diff --git a/app/Livewire/Components/Menus/AlbumsDropdown.php b/app/Livewire/Components/Menus/AlbumsDropdown.php new file mode 100644 index 00000000000..7cbe9e9d196 --- /dev/null +++ b/app/Livewire/Components/Menus/AlbumsDropdown.php @@ -0,0 +1,61 @@ +} */ + #[Locked] public array $params; + /** + * Renders the Add menu in the top right. + * + * @return View + */ + public function render(): View + { + return view('livewire.context-menus.albums-dropdown'); + } + + public function renameAll(): void + { + $this->closeContextMenu(); + $this->openModal('forms.album.rename', [Params::ALBUM_IDS => $this->params[Params::ALBUM_IDS], Params::PARENT_ID => $this->params[Params::PARENT_ID]]); + } + + public function mergeAll(): void + { + $this->closeContextMenu(); + $this->openModal('forms.album.merge', [Params::ALBUM_IDS => $this->params[Params::ALBUM_IDS], Params::PARENT_ID => $this->params[Params::PARENT_ID]]); + } + + public function moveAll(): void + { + $this->closeContextMenu(); + $this->openModal('forms.album.move', [Params::ALBUM_IDS => $this->params[Params::ALBUM_IDS], Params::PARENT_ID => $this->params[Params::PARENT_ID]]); + } + + public function deleteAll(): void + { + $this->closeContextMenu(); + $this->openModal('forms.album.delete', [Params::ALBUM_IDS => $this->params[Params::ALBUM_IDS], Params::PARENT_ID => $this->params[Params::PARENT_ID]]); + } + + public function downloadAll(): void + { + $this->redirect(route('download') . '?albumIDs=' . implode(',', $this->params[Params::ALBUM_IDS])); + $this->closeContextMenu(); + } +} diff --git a/app/Livewire/Components/Menus/LeftMenu.php b/app/Livewire/Components/Menus/LeftMenu.php new file mode 100644 index 00000000000..5c6e4943262 --- /dev/null +++ b/app/Livewire/Components/Menus/LeftMenu.php @@ -0,0 +1,137 @@ +loadDevMenu(); + + return view('livewire.components.left-menu'); + } + + /** + * Open the Context Menu. + * + * @return void + */ + #[On('openLeftMenu')] + public function openLeftMenu(): void + { + $this->open(); + } + + /** + * Close the LeftMenu component. + * + * @return void + */ + #[On('closeLeftMenu')] + public function closeLeftMenu(): void + { + $this->close(); + } + + /** + * Toggle the LeftMenu component. + * + * @return void + */ + #[On('toggleLeftMenu')] + public function toggleLeftMenu(): void + { + $this->toggle(); + } + + /** + * Open a about modal box. + * TODO Consider moving this directly to Blade. + * + * @return void + */ + public function openAboutModal(): void + { + $this->openClosableModal('modals.about', __('lychee.CLOSE')); + } + + /** + * We load some data about debuging tools section. + * + * @return void + */ + private function loadDevMenu(): void + { + $this->has_dev_tools = Gate::check(SettingsPolicy::CAN_ACCESS_DEV_TOOLS, [Configs::class]); + if (!$this->has_dev_tools) { + return; + } + + // Defining clockwork URL + $clockWorkEnabled = config('clockwork.enable') === true || (config('app.debug') === true && config('clockwork.enable') === null); + $clockWorkWeb = config('clockwork.web'); + if ($clockWorkEnabled && $clockWorkWeb === true || is_string($clockWorkWeb)) { + $this->clockwork_url = $clockWorkWeb === true ? URL::asset('clockwork/app') : $clockWorkWeb . '/app'; + } + + // API documentation + $this->doc_api_url = Route::has('scramble.docs.api') ? route('scramble.docs.api') : null; + + // Double check to avoid showing an empty section. + $this->has_dev_tools = $this->doc_api_url !== null && $this->clockwork_url !== null; + } +} diff --git a/app/Livewire/Components/Menus/PhotoDropdown.php b/app/Livewire/Components/Menus/PhotoDropdown.php new file mode 100644 index 00000000000..86c5488653e --- /dev/null +++ b/app/Livewire/Components/Menus/PhotoDropdown.php @@ -0,0 +1,118 @@ +params = $params; + $this->is_starred = Photo::query()->findOrFail($params[Params::PHOTO_ID])->is_starred; + } + + /** + * Renders the Add menu in the top right. + * + * @return View + */ + public function render(): View + { + return view('livewire.context-menus.photo-dropdown'); + } + + public function star(): void + { + $this->closeContextMenu(); + Gate::authorize(PhotoPolicy::CAN_EDIT_ID, [Photo::class, $this->params[Params::PHOTO_ID]]); + Photo::where('id', '=', $this->params[Params::PHOTO_ID])->update(['is_starred' => true]); + $this->dispatch('reloadPage')->to(GalleryAlbum::class); + } + + public function unstar(): void + { + $this->closeContextMenu(); + Gate::authorize(PhotoPolicy::CAN_EDIT_ID, [Photo::class, $this->params[Params::PHOTO_ID]]); + Photo::where('id', '=', $this->params[Params::PHOTO_ID])->update(['is_starred' => false]); + $this->dispatch('reloadPage')->to(GalleryAlbum::class); + } + + public function tag(): void + { + $this->closeContextMenu(); + $this->openModal('forms.photo.tag', [Params::PHOTO_ID => $this->params[Params::PHOTO_ID], Params::ALBUM_ID => $this->params[Params::ALBUM_ID]]); + } + + public function setAsCover(): void + { + /** @var Album $album */ + $album = Album::query()->findOrFail($this->params[Params::ALBUM_ID]); + + Gate::authorize(AlbumPolicy::CAN_EDIT, [AbstractAlbum::class, $album]); + $album->cover_id = $album->cover_id === $this->params[Params::PHOTO_ID] ? null : $this->params[Params::PHOTO_ID]; + $album->save(); + $this->dispatch('reloadPage')->to(GalleryAlbum::class); + $this->closeContextMenu(); + } + + public function rename(): void + { + $this->closeContextMenu(); + $this->openModal('forms.photo.rename', [Params::PHOTO_ID => $this->params[Params::PHOTO_ID], Params::ALBUM_ID => $this->params[Params::ALBUM_ID]]); + } + + public function copyTo(): void + { + $this->closeContextMenu(); + $this->openModal('forms.photo.copy-to', [Params::PHOTO_ID => $this->params[Params::PHOTO_ID], Params::ALBUM_ID => $this->params[Params::ALBUM_ID]]); + } + + public function move(): void + { + $this->closeContextMenu(); + $this->openModal('forms.photo.move', [Params::PHOTO_ID => $this->params[Params::PHOTO_ID], Params::ALBUM_ID => $this->params[Params::ALBUM_ID]]); + } + + public function delete(): void + { + $this->closeContextMenu(); + $this->openModal('forms.photo.delete', [Params::PHOTO_ID => $this->params[Params::PHOTO_ID], Params::ALBUM_ID => $this->params[Params::ALBUM_ID]]); + } + + public function download(): void + { + $this->closeContextMenu(); + $this->openModal('forms.photo.download', [Params::PHOTO_ID => $this->params[Params::PHOTO_ID], Params::ALBUM_ID => $this->params[Params::ALBUM_ID]]); + } +} diff --git a/app/Livewire/Components/Menus/PhotosDropdown.php b/app/Livewire/Components/Menus/PhotosDropdown.php new file mode 100644 index 00000000000..9e74d5caf34 --- /dev/null +++ b/app/Livewire/Components/Menus/PhotosDropdown.php @@ -0,0 +1,102 @@ +} */ + #[Locked] public array $params; + #[Locked] public bool $are_starred; + /** + * mount info and load star condition. + * + * @param array{albumID:?string,photoIDs:array} $params + * + * @return void + */ + public function mount(array $params): void + { + $this->params = $params; + $this->are_starred = count($params[Params::PHOTO_IDS]) === + Photo::query()->whereIn('id', $params[Params::PHOTO_IDS])->where('is_starred', '=', true)->count(); + } + + /** + * Renders the Add menu in the top right. + * + * @return View + */ + public function render(): View + { + return view('livewire.context-menus.photos-dropdown'); + } + + public function starAll(): void + { + $this->closeContextMenu(); + Gate::authorize(PhotoPolicy::CAN_EDIT_ID, [Photo::class, $this->params[Params::PHOTO_IDS]]); + Photo::whereIn('id', $this->params[Params::PHOTO_IDS])->update(['is_starred' => true]); + $this->dispatch('reloadPage')->to(GalleryAlbum::class); + } + + public function unstarAll(): void + { + $this->closeContextMenu(); + Gate::authorize(PhotoPolicy::CAN_EDIT_ID, [Photo::class, $this->params[Params::PHOTO_IDS]]); + Photo::whereIn('id', $this->params[Params::PHOTO_IDS])->update(['is_starred' => false]); + $this->dispatch('reloadPage')->to(GalleryAlbum::class); + } + + public function tagAll(): void + { + $this->closeContextMenu(); + $this->openModal('forms.photo.tag', [Params::PHOTO_IDS => $this->params[Params::PHOTO_IDS], Params::ALBUM_ID => $this->params[Params::ALBUM_ID]]); + } + + public function renameAll(): void + { + $this->closeContextMenu(); + $this->openModal('forms.photo.rename', [Params::PHOTO_IDS => $this->params[Params::PHOTO_IDS], Params::ALBUM_ID => $this->params[Params::ALBUM_ID]]); + } + + public function copyAllTo(): void + { + $this->closeContextMenu(); + $this->openModal('forms.photo.copy-to', [Params::PHOTO_IDS => $this->params[Params::PHOTO_IDS], Params::ALBUM_ID => $this->params[Params::ALBUM_ID]]); + } + + public function moveAll(): void + { + $this->closeContextMenu(); + $this->openModal('forms.photo.move', [Params::PHOTO_IDS => $this->params[Params::PHOTO_IDS], Params::ALBUM_ID => $this->params[Params::ALBUM_ID]]); + } + + public function deleteAll(): void + { + $this->closeContextMenu(); + $this->openModal('forms.photo.delete', [Params::PHOTO_IDS => $this->params[Params::PHOTO_IDS], Params::ALBUM_ID => $this->params[Params::ALBUM_ID]]); + } + + public function downloadAll(): void + { + $this->closeContextMenu(); + $this->openModal('forms.photo.download', [Params::PHOTO_IDS => $this->params[Params::PHOTO_IDS], Params::ALBUM_ID => $this->params[Params::ALBUM_ID]]); + } +} diff --git a/app/Livewire/Components/Modals/About.php b/app/Livewire/Components/Modals/About.php new file mode 100644 index 00000000000..33383e154e3 --- /dev/null +++ b/app/Livewire/Components/Modals/About.php @@ -0,0 +1,56 @@ +version = resolve(InstalledVersion::class)->getVersion()->toString(); + } + + $fileVersion = resolve(FileVersion::class); + $gitHubVersion = resolve(GitHubVersion::class); + if (Configs::getValueAsBool('check_for_updates')) { + // @codeCoverageIgnoreStart + $fileVersion->hydrate(); + $gitHubVersion->hydrate(); + // @codeCoverageIgnoreEnd + } + $this->is_new_release_available = !$fileVersion->isUpToDate(); + $this->is_git_update_available = !$gitHubVersion->isUpToDate(); + } + + /** + * Renders the About component. + * + * @return View + */ + public function render(): View + { + return view('livewire.modals.about'); + } +} diff --git a/app/Livewire/Components/Modals/Login.php b/app/Livewire/Components/Modals/Login.php new file mode 100644 index 00000000000..bbafa5e6ee7 --- /dev/null +++ b/app/Livewire/Components/Modals/Login.php @@ -0,0 +1,95 @@ +version = resolve(InstalledVersion::class)->getVersion()->toString(); + } + + $fileVersion = resolve(FileVersion::class); + $gitHubVersion = resolve(GitHubVersion::class); + if (Configs::getValueAsBool('check_for_updates')) { + // @codeCoverageIgnoreStart + $fileVersion->hydrate(); + $gitHubVersion->hydrate(); + // @codeCoverageIgnoreEnd + } + $this->is_new_release_available = !$fileVersion->isUpToDate(); + $this->is_git_update_available = !$gitHubVersion->isUpToDate(); + } + + /** + * Hook the submit button. + * + * @return void + * + * @throws \Throwable + * @throws ValidationException + * @throws BindingResolutionException + * @throws \InvalidArgumentException + * @throws QueryBuilderException + */ + public function submit(): void + { + // Empty error bag + $this->resetErrorBag(); + + // Call Livewire validation on the from + $data = $this->validate(LoginRuleSet::rules()); + + // apply login as admin and trigger a reload + if (Auth::attempt(['username' => $data['username'], 'password' => $data['password']])) { + Log::notice(__METHOD__ . ':' . __LINE__ . ' User (' . $data['username'] . ') has logged in from ' . request()->ip()); + $this->dispatch('login-close'); + $this->dispatch('reloadPage'); + + return; + } + + // Wrong login: stay on the modal and update the rendering. + $this->addError('wrongLogin', 'Wrong login or password.'); + Log::error(__METHOD__ . ':' . __LINE__ . ' User (' . $data['username'] . ') has tried to log in from ' . request()->ip()); + } +} diff --git a/app/Livewire/Components/Modules/Diagnostics/AbstractPreSection.php b/app/Livewire/Components/Modules/Diagnostics/AbstractPreSection.php new file mode 100644 index 00000000000..ab4b70fedc5 --- /dev/null +++ b/app/Livewire/Components/Modules/Diagnostics/AbstractPreSection.php @@ -0,0 +1,41 @@ +get() : []; + } +} diff --git a/app/Livewire/Components/Modules/Diagnostics/Errors.php b/app/Livewire/Components/Modules/Diagnostics/Errors.php new file mode 100644 index 00000000000..e1ea04ea885 --- /dev/null +++ b/app/Livewire/Components/Modules/Diagnostics/Errors.php @@ -0,0 +1,63 @@ + + Diagnostics + ----------- + ' . __('lychee.LOADING') . ' ... +

+'; + } + + /** + * Computable property to access the errors. + * If we are not ready to load, we return an empty array. + * + * @return array + */ + public function getDataProperty(): array + { + return collect(resolve(DiagnosticsErrors::class)->get())->map(function ($line) { + $arr = ['color' => '', 'type' => '', 'line' => $line]; + + if (Str::startsWith($line, 'Warning: ')) { + $arr['color'] = 'text-warning-600'; + $arr['type'] = 'Warning:'; + $arr['line'] = Str::substr($line, 9); + } + + if (Str::startsWith($line, 'Error: ')) { + // @codeCoverageIgnoreStart + $arr['color'] = 'text-danger-600'; + $arr['type'] = 'Error:'; + $arr['line'] = Str::substr($line, 7); + // @codeCoverageIgnoreEnd + } + + return $arr; + })->all(); + } + + /** + * Rendering of the front-end. + * + * @return View + */ + final public function render(): View + { + return view('livewire.modules.diagnostics.pre-colored'); + } +} diff --git a/app/Livewire/Components/Modules/Diagnostics/Infos.php b/app/Livewire/Components/Modules/Diagnostics/Infos.php new file mode 100644 index 00000000000..e9f437cd5f5 --- /dev/null +++ b/app/Livewire/Components/Modules/Diagnostics/Infos.php @@ -0,0 +1,18 @@ +get() : []; + } +} diff --git a/app/Livewire/Components/Modules/Diagnostics/Optimize.php b/app/Livewire/Components/Modules/Diagnostics/Optimize.php new file mode 100644 index 00000000000..f1753c97dc7 --- /dev/null +++ b/app/Livewire/Components/Modules/Diagnostics/Optimize.php @@ -0,0 +1,54 @@ +optimizeDb = resolve(OptimizeDb::class); + $this->optimizeTables = resolve(OptimizeTables::class); + $this->action = 'Optimize!'; + } + + /** + * Rendering of the front-end. + * + * @return View + */ + public function render(): View + { + if (!Gate::check(SettingsPolicy::CAN_SEE_DIAGNOSTICS, Configs::class)) { + $this->result[] = 'Error: You must have administrator rights to see this.'; + } + + return view('livewire.modules.diagnostics.with-action-call'); + } + + /** + * Return the size used by Lychee. + * We now separate this from the initial get() call as this is quite time consuming. + * + * @return void + */ + public function do(): void + { + Gate::authorize(SettingsPolicy::CAN_SEE_DIAGNOSTICS, Configs::class); + $this->result = collect($this->optimizeDb->do())->merge(collect($this->optimizeTables->do()))->all(); + } +} diff --git a/app/Livewire/Components/Modules/Diagnostics/Space.php b/app/Livewire/Components/Modules/Diagnostics/Space.php new file mode 100644 index 00000000000..cedb61f0dd8 --- /dev/null +++ b/app/Livewire/Components/Modules/Diagnostics/Space.php @@ -0,0 +1,51 @@ +diagnostics = resolve(DiagnosticsSpace::class); + $this->action = __('lychee.DIAGNOSTICS_GET_SIZE'); + } + + /** + * Rendering of the front-end. + * + * @return View + */ + public function render(): View + { + if (!Gate::check(SettingsPolicy::CAN_SEE_DIAGNOSTICS, Configs::class)) { + $this->result[] = 'Error: You must have administrator rights to see this.'; + } + + return view('livewire.modules.diagnostics.with-action-call'); + } + + /** + * Return the size used by Lychee. + * We now separate this from the initial get() call as this is quite time consuming. + * + * @return void + */ + public function do(): void + { + Gate::authorize(SettingsPolicy::CAN_SEE_DIAGNOSTICS, Configs::class); + $this->result = $this->diagnostics->get(); + } +} diff --git a/app/Livewire/Components/Modules/Users/UserLine.php b/app/Livewire/Components/Modules/Users/UserLine.php new file mode 100644 index 00000000000..ca900c32b23 --- /dev/null +++ b/app/Livewire/Components/Modules/Users/UserLine.php @@ -0,0 +1,106 @@ +save = resolve(Save::class); + } + + /** + * Given a user, load the properties. + * Note that password stays empty to ensure that we do not update it by mistake. + * + * @param User $user + * + * @return void + */ + public function mount(User $user): void + { + Gate::authorize(UserPolicy::CAN_CREATE_OR_EDIT_OR_DELETE, [User::class]); + + $this->user = $user; + $this->id = $user->id; + $this->username = $user->username; + $this->may_edit_own_settings = $user->may_edit_own_settings; + $this->may_upload = $user->may_upload; + } + + /** + * Rendering of the front-end. + * + * @return View + */ + public function render(): View + { + return view('livewire.modules.users.user-line'); + } + + /** + * computed property to check if the state is dirty. + * TODO: See if the dirty state of Livewire is usable instead. + * + * @return bool + */ + public function getHasChangedProperty(): bool + { + return $this->user->username !== $this->username || + $this->user->may_upload !== $this->may_upload || + $this->user->may_edit_own_settings !== $this->may_edit_own_settings || + $this->password !== ''; + } + + /** + * Save modification done to a user. + * Note that an admin can change the password of a user at will. + * + * @return void + */ + public function save(): void + { + if (!$this->areValid(SetUserSettingsRuleSet::rules())) { + return; + } + + Gate::authorize(UserPolicy::CAN_CREATE_OR_EDIT_OR_DELETE, [User::class]); + + $this->save->do( + $this->user, + $this->username, + $this->password, + $this->may_upload, + $this->may_edit_own_settings + ); + } +} diff --git a/app/Livewire/Components/Pages/AllSettings.php b/app/Livewire/Components/Pages/AllSettings.php new file mode 100644 index 00000000000..6429d9afbf4 --- /dev/null +++ b/app/Livewire/Components/Pages/AllSettings.php @@ -0,0 +1,75 @@ +form->setConfigs(Configs::orderBy('cat', 'asc')->get()); + } + + /** + * Rendering of the front-end. + * + * @return View + */ + public function render(): View + { + return view('livewire.pages.all-settings'); + } + + /** + * Open Saving confirmation modal. + * + * @return void + */ + public function openConfirmSave(): void + { + $this->openModal('forms.confirms.save-all'); + } + + /** + * Save everything. + * + * @return void + */ + #[On('saveAll')] + public function saveAll(): void + { + Gate::authorize(SettingsPolicy::CAN_EDIT, [Configs::class]); + + $this->form->save(); + } + + public function back(): mixed + { + $this->dispatch('closeLeftMenu')->to(LeftMenu::class); + + return $this->redirect(route('settings'), true); + } +} diff --git a/app/Livewire/Components/Pages/Diagnostics.php b/app/Livewire/Components/Pages/Diagnostics.php new file mode 100644 index 00000000000..a09e8ae2220 --- /dev/null +++ b/app/Livewire/Components/Pages/Diagnostics.php @@ -0,0 +1,34 @@ +dispatch('closeLeftMenu')->to(LeftMenu::class); + + return $this->redirect(route('livewire-gallery'), true); + } + + #[On('reloadPage')] + public function reloadPage(): void + { + $this->render(); + } +} diff --git a/app/Livewire/Components/Pages/Frame.php b/app/Livewire/Components/Pages/Frame.php new file mode 100644 index 00000000000..0a6bd082b38 --- /dev/null +++ b/app/Livewire/Components/Pages/Frame.php @@ -0,0 +1,113 @@ +albumId = $albumId ?? (($randomAlbumId !== '') ? $randomAlbumId : null); + + $album = $this->albumId === null ? null : $this->albumFactory->findAbstractAlbumOrFail($this->albumId); + Gate::authorize(AlbumPolicy::CAN_ACCESS, [AbstractAlbum::class, $album]); + + $this->title = $album?->title; + $this->loadPhoto(); + $this->timeout = Configs::getValueAsInt('mod_frame_refresh'); + $this->back = $albumId !== null ? route('livewire-gallery-album', ['albumId' => $albumId]) : route('livewire-gallery'); + } + + #[Renderless] + public function loadPhoto(int $retries = 5): array + { + // avoid infinite recursion + if ($retries === 0) { + $this->src = ''; + $this->srcset = ''; + + return ['src' => '', 'srcset' => '']; + } + + // default query + $query = $this->photoQueryPolicy->applySearchabilityFilter(Photo::query()->with(['album', 'size_variants', 'size_variants.sym_links'])); + + if ($this->albumId !== null) { + $query = $this->albumFactory->findAbstractAlbumOrFail($this->albumId) + ->photos() + ->with(['album', 'size_variants', 'size_variants.sym_links']); + } + + /** @var ?Photo $photo */ + // PHPStan does not understand that `firstOrFail` returns `Photo`, but assumes that it returns `Model` + // @phpstan-ignore-next-line + $photo = $query->inRandomOrder()->first(); + if ($photo === null) { + $this->title === null ? + throw new PhotoCollectionEmptyException() : throw new PhotoCollectionEmptyException('Photo collection of ' . $this->title . ' is empty'); + } + + // retry + if ($photo->isVideo()) { + return $this->loadPhoto($retries - 1); + } + + $this->src = $photo->size_variants->getMedium()?->url ?? $photo->size_variants->getOriginal()?->url; + + if ($photo->size_variants->getMedium() !== null && $photo->size_variants->getMedium2x() !== null) { + $this->srcset = $photo->size_variants->getMedium()->url . ' ' . $photo->size_variants->getMedium()->width . 'w'; + $this->srcset .= $photo->size_variants->getMedium2x()->url . ' ' . $photo->size_variants->getMedium2x()->width . 'w'; + } else { + $this->srcset = ''; + } + + return ['src' => $this->src, 'srcset' => $this->srcset]; + } + + public function boot(): void + { + $this->albumFactory = resolve(AlbumFactory::class); + $this->photoQueryPolicy = resolve(PhotoQueryPolicy::class); + } +} diff --git a/app/Livewire/Components/Pages/Gallery/Album.php b/app/Livewire/Components/Pages/Gallery/Album.php new file mode 100644 index 00000000000..22343893656 --- /dev/null +++ b/app/Livewire/Components/Pages/Gallery/Album.php @@ -0,0 +1,219 @@ +albumFactory = resolve(AlbumFactory::class); + $this->layouts = new Layouts(); + } + + public function mount(string $albumId, string $photoId = ''): void + { + $this->albumId = $albumId; + $this->photoId = $photoId; + $this->flags = new AlbumFlags(); + + $this->reloadPage(); + } + + /** + * Rendering of the blade template. + * + * @return View + */ + final public function render(): View + { + $this->sessionFlags = SessionFlags::get(); + $this->rights = AlbumRights::make($this->album); + + if ($this->flags->is_accessible) { + $this->num_users = User::count(); + $this->header_url ??= $this->fetchHeaderUrl()?->url; + $this->num_albums = $this->album instanceof ModelsAlbum ? $this->album->children->count() : 0; + $this->num_photos = $this->album->photos->count(); + + $is_latitude_longitude_found = false; + if ($this->album instanceof ModelsAlbum) { + $is_latitude_longitude_found = $this->album->all_photos()->whereNotNull('latitude')->whereNotNull('longitude')->count() > 0; + } else { + $is_latitude_longitude_found = $this->album->photos()->whereNotNull('latitude')->whereNotNull('longitude')->count() > 0; + } + // Only display if there are actual data + $this->flags->is_map_accessible = $this->flags->is_map_accessible && $is_latitude_longitude_found; + + $this->photoFlags = new PhotoFlags( + can_autoplay: true, + can_rotate: Configs::getValueAsBool('editor_enabled'), + can_edit: $this->rights->can_edit, + ); + } + + return view('livewire.pages.gallery.album'); + } + + /** + * Reload the data. + * + * @return void + */ + #[On('reloadPage')] + public function reloadPage(): void + { + $this->album = $this->albumFactory->findAbstractAlbumOrFail($this->albumId); + $this->flags->is_base_album = $this->album instanceof BaseAlbum; + $this->flags->is_accessible = Gate::check(AlbumPolicy::CAN_ACCESS, [ModelsAlbum::class, $this->album]); + + if (!$this->flags->is_accessible) { + $this->flags->is_password_protected = + $this->album->public_permissions() !== null && + $this->album->public_permissions()->password !== null; + } + + if (Auth::check() && !$this->flags->is_accessible && !$this->flags->is_password_protected) { + $this->redirect(route('livewire-gallery')); + } + } + + /** + * Return the photoIDs (no need to wait to compute the geometry). + * + * @return Collection + */ + public function getPhotosProperty(): Collection + { + return $this->album->photos; + } + + /** + * @return Collection|null + */ + public function getAlbumsProperty(): Collection|null + { + if ($this->album instanceof ModelsAlbum) { + return $this->album->children; + } + + return null; + } + + /** + * Used in the JS front-end to manage the selected albums. + * + * @return array + */ + public function getAlbumIDsProperty(): array + { + return $this->getAlbumsProperty()?->map(fn ($v, $k) => $v->id)?->all() ?? []; + } + + /** + * Fetch the header url + * TODO: Later this can be also a field from the album and if null we apply the rdm query. + * + * @return SizeVariant|null + * + * @throws QueryBuilderException + * @throws RelationNotFoundException + */ + private function fetchHeaderUrl(): SizeVariant|null + { + if ($this->album->photos->isEmpty()) { + return null; + } + + return SizeVariant::query() + ->where('type', '=', SizeVariantType::MEDIUM) + ->whereBelongsTo($this->album->photos) + ->where('ratio', '>', 1) + ->inRandomOrder() + ->first(); + } + + public function getBackProperty(): string + { + if ($this->album instanceof ModelsAlbum && $this->album->parent_id !== null) { + return route('livewire-gallery-album', ['albumId' => $this->album->parent_id]); + } + + return route('livewire-gallery'); + } + + public function getTitleProperty(): string + { + return $this->album->title; + } + + #[Renderless] + public function setCover(?string $photoID): void + { + if (!$this->album instanceof ModelsAlbum) { + return; + } + + Gate::authorize(AlbumPolicy::CAN_EDIT, [AbstractAlbum::class, $this->album]); + + $photo = $photoID === null ? null : Photo::query()->findOrFail($photoID); + if ($photo !== null) { + Gate::authorize(PhotoPolicy::CAN_SEE, [Photo::class, $photo]); + } + + $this->album->cover_id = ($this->album->cover_id === $photo->id) ? null : $photo->id; + $this->album->save(); + $this->notify(__('lychee.CHANGE_SUCCESS')); + } + + public function getAlbumFormattedProperty(): AlbumFormatted + { + return new AlbumFormatted($this->album, $this->fetchHeaderUrl()?->url); + } + + public function getNoImagesAlbumsMessageProperty(): string + { + return 'Nothing to see here'; + } +} diff --git a/app/Livewire/Components/Pages/Gallery/Albums.php b/app/Livewire/Components/Pages/Gallery/Albums.php new file mode 100644 index 00000000000..18ac64b26a4 --- /dev/null +++ b/app/Livewire/Components/Pages/Gallery/Albums.php @@ -0,0 +1,93 @@ + */ + #[Locked] public array $albumIDs; + #[Locked] public ?string $albumId = null; + public AlbumsFlags $flags; + public AlbumRights $rights; + public SessionFlags $sessionFlags; + + /** + * Render component. + * + * @return View + * + * @throws BindingResolutionException + */ + public function render(): View + { + $this->flags = new AlbumsFlags(); + $this->rights = AlbumRights::make(null); + $this->albumIDs = $this->topAlbums->albums->map(fn ($v, $k) => $v->id)->all(); + + return view('livewire.pages.gallery.albums'); + } + + public function mount(): void + { + $this->sessionFlags = SessionFlags::get(); + } + + #[On('reloadPage')] + public function reloadPage(): void + { + $this->topAlbums = resolve(Top::class)->get(); + } + + public function boot(): void + { + $this->topAlbums = resolve(Top::class)->get(); + $this->title = Configs::getValueAsString('site_title'); + } + + public function getAlbumsProperty(): Collection + { + return $this->topAlbums->albums; + } + + public function getSmartAlbumsProperty(): Collection + { + return $this->topAlbums->smart_albums + // We filter out the public one (we don't remove it completely to not break the other front-end). + ->filter(fn (AbstractAlbum $e, $k) => $e->id !== SmartAlbumType::PUBLIC->value) + ->concat($this->topAlbums->tag_albums) + ->reject(fn ($album) => $album === null); + } + + public function getSharedAlbumsProperty(): Collection + { + return $this->topAlbums->shared_albums; + } +} diff --git a/app/Livewire/Components/Pages/Gallery/BaseAlbumComponent.php b/app/Livewire/Components/Pages/Gallery/BaseAlbumComponent.php new file mode 100644 index 00000000000..270a9a0e899 --- /dev/null +++ b/app/Livewire/Components/Pages/Gallery/BaseAlbumComponent.php @@ -0,0 +1,155 @@ +getPhotosProperty()); + } + + /** + * Return the photoIDs (no need to wait to compute the geometry). + * + * @return Collection + */ + abstract public function getPhotosProperty(): Collection|LengthAwarePaginator; + + /** + * Return the albums. + * + * @return Collection|null + */ + abstract public function getAlbumsProperty(): Collection|null; + + /** + * Used in the JS front-end to manage the selected albums. + * + * @return array + */ + abstract public function getAlbumIDsProperty(): array; + + /** + * Back property used to retrieve the URL to step back and back arrow. + * + * @return string + */ + abstract public function getBackProperty(): string; + + /** + * Title property for the header. + * + * @return string + */ + abstract public function getTitleProperty(): string; + + /** + * Data for Details & Hero. + * + * @return AlbumFormatted|null + */ + abstract public function getAlbumFormattedProperty(): AlbumFormatted|null; + + /** + * Return the data used to generate the layout on the front-end. + * + * @return Layouts + */ + final public function getLayoutsProperty(): Layouts + { + return $this->layouts; + } + + /** + * Getter for the license types in the front-end. + * + * @return array associated array of license type and their localization + */ + final public function getLicensesProperty(): array + { + return LicenseType::localized(); + } + + /** + * Getter for the OverlayType displayed in photoView. + * + * @return string enum + */ + final public function getOverlayTypeProperty(): string + { + return Configs::getValueAsEnum('image_overlay_type', ImageOverlayType::class)->value; + } + + final public function getMapProviderProperty(): MapProviders + { + return Configs::getValueAsEnum('map_provider', MapProviders::class); + } + + /** + * Message displayed when no result or the page is empty. + * + * @return string + */ + abstract public function getNoImagesAlbumsMessageProperty(): string; +} diff --git a/app/Livewire/Components/Pages/Gallery/Search.php b/app/Livewire/Components/Pages/Gallery/Search.php new file mode 100644 index 00000000000..dfb8c284ec1 --- /dev/null +++ b/app/Livewire/Components/Pages/Gallery/Search.php @@ -0,0 +1,168 @@ + */ + private LengthAwarePaginator $photos; + /** @var Collection */ + private Collection $albums; + + #[Locked] + #[Url(history: true)] + public string $urlQuery = ''; + public string $searchQuery = ''; // ! Wired + + /** @var string[] */ + protected array $terms = []; + + #[Locked] + public int $search_minimum_length_required; + + public function boot(): void + { + $this->layouts = new Layouts(); + $this->albumSearch = resolve(AlbumSearch::class); + $this->photoSearch = resolve(PhotoSearch::class); + $this->photos = new LengthAwarePaginator([], 0, 200); + $this->albums = collect([]); + $this->num_albums = 0; + $this->num_photos = 0; + $this->search_minimum_length_required = Configs::getValueAsInt('search_minimum_length_required'); + } + + public function mount(string $albumId = ''): void + { + if (!Auth::check() && !Configs::getValueAsBool('search_public')) { + redirect(route('livewire-gallery')); + } + + $this->rights = AlbumRights::make(null); + + $this->flags = new AlbumFlags(); + $this->photoFlags = new PhotoFlags( + can_autoplay: true, + can_rotate: Configs::getValueAsBool('editor_enabled'), + can_edit: false, + ); + $this->sessionFlags = SessionFlags::get(); + $this->flags->is_base_album = false; + $this->flags->is_accessible = true; + } + + /** + * Whenever searchQuery is updated, we recompute the urlQuery. + * + * @return void + */ + public function updatedSearchQuery(): void + { + $this->urlQuery = base64_encode($this->searchQuery); + } + + /** + * Render component. + * + * @return View + */ + public function render(): View + { + $this->searchQuery = base64_decode($this->urlQuery, true); + $this->terms = explode(' ', str_replace( + ['\\', '%', '_'], + ['\\\\', '\\%', '\\_'], + $this->searchQuery + )); + + if (strlen($this->searchQuery) >= $this->search_minimum_length_required) { + /** @var LengthAwarePaginator $photoResults */ + /** @disregard P1013 Undefined method withQueryString() (stupid intelephense) */ + $photoResults = $this->photoSearch + ->sqlQuery($this->terms) + ->orderBy(ColumnSortingPhotoType::TAKEN_AT->value, OrderSortingType::ASC->value) + ->paginate(Configs::getValueAsInt('search_pagination_limit')) + ->withQueryString(); + $this->photos = $photoResults; + /** @var Collection $albumResults */ + $albumResults = $this->albumSearch->queryAlbums($this->terms); + $this->albums = $albumResults; + $this->num_albums = $this->albums->count(); + $this->num_photos = $this->photos->count(); + $this->albumId = ''; + $this->photoId = ''; + } + + return view('livewire.pages.gallery.search'); + } + + /** + * Return the photos. + * + * @return Collection + */ + public function getPhotosProperty(): Collection + { + return collect($this->photos->items()); + } + + public function getAlbumsProperty(): ?Collection + { + return $this->albums; + } + + public function getAlbumIDsProperty(): array + { + return $this->albums->map(fn ($v, $k) => $v->id)->all(); + } + + // For now, simple + public function getBackProperty(): string + { + return route('livewire-gallery'); + } + + // For now, simple + public function getTitleProperty(): string + { + return __('lychee.SEARCH'); + } + + public function getAlbumFormattedProperty(): null + { + return null; + } + + public function getNoImagesAlbumsMessageProperty(): string + { + return strlen($this->searchQuery) < 3 ? '' : 'No results'; + } +} diff --git a/app/Livewire/Components/Pages/Gallery/SensitiveWarning.php b/app/Livewire/Components/Pages/Gallery/SensitiveWarning.php new file mode 100644 index 00000000000..75fd651f999 --- /dev/null +++ b/app/Livewire/Components/Pages/Gallery/SensitiveWarning.php @@ -0,0 +1,60 @@ +text = Configs::getValueAsString('nsfw_banner_override'); + $this->isBlurred = Configs::getValueAsBool('nsfw_banner_blur_backdrop'); + + // TODO: remember if was open or not. + + if ($album instanceof Album) { + $this->isOpen = $album->is_nsfw; + + if (Auth::user()?->may_administrate === true) { + $this->isOpen = $this->isOpen && Configs::getValueAsBool('nsfw_warning_admin'); + } else { + $this->isOpen = $this->isOpen && Configs::getValueAsBool('nsfw_warning'); + } + } + } + + /** + * Render the associated view. + * + * @return View + */ + public function render(): View + { + return view('livewire.modules.gallery.sensitive-warning'); + } +} diff --git a/app/Livewire/Components/Pages/Jobs.php b/app/Livewire/Components/Pages/Jobs.php new file mode 100644 index 00000000000..b07d8c5eead --- /dev/null +++ b/app/Livewire/Components/Pages/Jobs.php @@ -0,0 +1,59 @@ +orderBy('id', 'desc') + ->limit(Configs::getValueAsInt('log_max_num_line')) + ->get(); + } + + /** + * Rendering of the front-end. + * + * @return View + */ + public function render(): View + { + return view('livewire.pages.jobs'); + } + + public function back(): mixed + { + $this->dispatch('closeLeftMenu')->to(LeftMenu::class); + + return $this->redirect(route('livewire-gallery'), true); + } +} diff --git a/app/Livewire/Components/Pages/Landing.php b/app/Livewire/Components/Pages/Landing.php new file mode 100644 index 00000000000..7fee45e3b4d --- /dev/null +++ b/app/Livewire/Components/Pages/Landing.php @@ -0,0 +1,43 @@ +title = Configs::getValueAsString('landing_title'); + $this->subtitle = Configs::getValueAsString('landing_subtitle'); + $background = Configs::getValueAsString('landing_background'); + if (!Str::startsWith($background, 'http')) { + $background = URL::asset($background); + } + $this->background = $background; + } + + /** + * Rendering of the front-end. + * + * @return View + */ + public function render(): View + { + return view('livewire.pages.landing'); + } +} diff --git a/app/Livewire/Components/Pages/Map.php b/app/Livewire/Components/Pages/Map.php new file mode 100644 index 00000000000..63691fff544 --- /dev/null +++ b/app/Livewire/Components/Pages/Map.php @@ -0,0 +1,91 @@ +map_provider = Configs::getValueAsEnum('map_provider', MapProviders::class); + + return view('livewire.pages.gallery.map'); + } + + public function mount(?string $albumId = null): void + { + $this->albumId = $albumId; + + if ($albumId !== null) { + $this->album = $this->albumFactory->findAbstractAlbumOrFail($this->albumId); + $this->title = $this->album->title; + } + + Gate::authorize(AlbumPolicy::CAN_ACCESS_MAP, [AbstractAlbum::class, $this->album]); + } + + /** + * @return array + */ + public function getDataProperty(): array + { + if ($this->albumId === null) { + /** @var array $ret */ + $ret = $this->rootPositionData->do()->toArray(request()); + + return $ret; + } + + $includeSubAlbums = Configs::getValueAsBool('map_include_subalbums'); + + /** @var array $ret */ + $ret = $this->albumPositionData->get($this->album, $includeSubAlbums)->toArray(request()); + + return $ret; + } + + public function boot(): void + { + $this->albumFactory = resolve(AlbumFactory::class); + $this->rootPositionData = resolve(RootPositionData::class); + $this->albumPositionData = resolve(AlbumPositionData::class); + $this->title = Configs::getValueAsString('site_title'); + } + + public function back(): mixed + { + if ($this->albumId === null) { + return $this->redirect(route('livewire-gallery'), true); + } else { + return $this->redirect(route('livewire-gallery-album', ['albumId' => $this->albumId]), true); + } + } +} diff --git a/app/Livewire/Components/Pages/Profile.php b/app/Livewire/Components/Pages/Profile.php new file mode 100644 index 00000000000..5c9f140a387 --- /dev/null +++ b/app/Livewire/Components/Pages/Profile.php @@ -0,0 +1,58 @@ +are_notification_active = Configs::getValueAsBool('new_photos_notification'); + $this->is_token_auh_active = config('auth.guards.lychee.driver', 'session-or-token') === 'session-or-token'; + } + + /** + * Rendering of the front-end. + * + * @return View + */ + public function render(): View + { + return view('livewire.pages.profile'); + } + + public function back(): mixed + { + $this->dispatch('closeLeftMenu')->to(LeftMenu::class); + + return $this->redirect(route('livewire-gallery'), true); + } +} diff --git a/app/Livewire/Components/Pages/Settings.php b/app/Livewire/Components/Pages/Settings.php new file mode 100644 index 00000000000..bd026a5440a --- /dev/null +++ b/app/Livewire/Components/Pages/Settings.php @@ -0,0 +1,97 @@ +css = Storage::disk('dist')->get('user.css'); + $this->js = Storage::disk('dist')->get('custom.js'); + } + + /** + * Rendering of the front-end. + * + * @return View + */ + public function render(): View + { + return view('livewire.pages.settings'); + } + + public function back(): mixed + { + $this->dispatch('closeLeftMenu')->to(LeftMenu::class); + + return $this->redirect(route('livewire-gallery'), true); + } + + /** + * Takes the css input text and put it into `dist/user.css`. + * This allows admins to actually personalize the look of their + * installation. + * + * @return void + * + * @throws InsufficientFilesystemPermissions + */ + public function setCSS(): void + { + Gate::authorize(SettingsPolicy::CAN_EDIT, Configs::class); + + if (Storage::disk('dist')->put('user.css', $this->css) === false) { + if (Storage::disk('dist')->get('user.css') !== $this->css) { + throw new InsufficientFilesystemPermissions('Could not save CSS'); + } + } + $this->notify(__('lychee.CHANGE_SUCCESS')); + } + + /** + * Takes the js input text and put it into `dist/custom.js`. + * This allows admins to actually execute custom js code on their + * Lychee-Laravel installation. + * + * @return void + * + * @throws InsufficientFilesystemPermissions + */ + public function setJS(): void + { + Gate::authorize(SettingsPolicy::CAN_EDIT, Configs::class); + + if (Storage::disk('dist')->put('custom.js', $this->js) === false) { + if (Storage::disk('dist')->get('custom.js') !== $this->js) { + throw new InsufficientFilesystemPermissions('Could not save JS'); + } + } + $this->notify(__('lychee.CHANGE_SUCCESS')); + } +} diff --git a/app/Livewire/Components/Pages/Sharing.php b/app/Livewire/Components/Pages/Sharing.php new file mode 100644 index 00000000000..a5249aad4fa --- /dev/null +++ b/app/Livewire/Components/Pages/Sharing.php @@ -0,0 +1,76 @@ + + */ + public function getPermsProperty(): array + { + // This could be optimized, but whatever. + return + AccessPermission::with(['album', 'user']) + ->when(!Auth::user()->may_administrate, fn ($q) => $q->whereIn('base_album_id', BaseAlbumImpl::select('id')->where('owner_id', '=', Auth::id()))) + ->whereNotNull('user_id') + ->orderBy('base_album_id', 'asc') + ->get()->all(); + } + + /** + * Set up the profile page. + * + * @return void + * + * @throws ConfigurationKeyMissingException + */ + public function mount(): void + { + Gate::authorize(AlbumPolicy::CAN_SHARE_WITH_USERS, [AbstractAlbum::class, null]); + } + + /** + * Rendering of the front-end. + * + * @return View + */ + public function render(): View + { + return view('livewire.pages.sharing'); + } + + public function back(): mixed + { + $this->dispatch('closeLeftMenu')->to(LeftMenu::class); + + return $this->redirect(route('livewire-gallery'), true); + } + + public function delete(int $id): void + { + $perm = AccessPermission::with('album')->findOrFail($id); + Gate::authorize(AlbumPolicy::CAN_SHARE_WITH_USERS, [AbstractAlbum::class, $perm->album]); + + AccessPermission::query()->where('id', '=', $id)->delete(); + } +} diff --git a/app/Livewire/Components/Pages/Users.php b/app/Livewire/Components/Pages/Users.php new file mode 100644 index 00000000000..c1d3032fb30 --- /dev/null +++ b/app/Livewire/Components/Pages/Users.php @@ -0,0 +1,121 @@ +create = resolve(Create::class); + } + + /** + * Load users. + * + * @return void + */ + public function mount(): void + { + Gate::authorize(UserPolicy::CAN_CREATE_OR_EDIT_OR_DELETE, User::class); + + $this->loadUsers(); + } + + /** + * Rendering of the front-end. + * + * @return View + */ + public function render(): View + { + return view('livewire.pages.users'); + } + + /** + * Refresh the user List. + * + * @return void + */ + public function loadUsers(): void + { + $this->users = User::orderBy('id', 'asc')->get(); + } + + /** + * Create a new user. + * + * @return void + */ + public function create(): void + { + Gate::authorize(UserPolicy::CAN_CREATE_OR_EDIT_OR_DELETE, User::class); + + // Create user + $this->create->do( + $this->username, + $this->password, + $this->may_upload, + $this->may_edit_own_settings); + + // reset attributes and reload user list (triggers refresh) + $this->username = ''; + $this->password = ''; + $this->may_upload = false; + $this->may_edit_own_settings = false; + $this->loadUsers(); + } + + public function back(): mixed + { + $this->dispatch('closeLeftMenu')->to(LeftMenu::class); + + return $this->redirect(route('livewire-gallery'), true); + } + + /** + * Delete an existing credential. + * + * @param int $id + * + * @return void + */ + public function delete(int $id): void + { + if ($id === Auth::id()) { + throw new UnauthorizedException('You are not allowed to delete yourself'); + } + + Gate::authorize(UserPolicy::CAN_CREATE_OR_EDIT_OR_DELETE, [User::class]); + + User::where('id', '=', $id)->delete(); + $this->loadUsers(); + } +} diff --git a/app/Livewire/DTO/AlbumFlags.php b/app/Livewire/DTO/AlbumFlags.php new file mode 100644 index 00000000000..0a0add67c14 --- /dev/null +++ b/app/Livewire/DTO/AlbumFlags.php @@ -0,0 +1,21 @@ +is_map_accessible = Configs::getValueAsBool('map_display'); + $this->is_map_accessible = $this->is_map_accessible && (Auth::check() || Configs::getValueAsBool('map_display_public')); + $this->is_mod_frame_enabled = Configs::getValueAsBool('mod_frame_enabled'); + } +} \ No newline at end of file diff --git a/app/Livewire/DTO/AlbumFormatted.php b/app/Livewire/DTO/AlbumFormatted.php new file mode 100644 index 00000000000..da6e042a0ee --- /dev/null +++ b/app/Livewire/DTO/AlbumFormatted.php @@ -0,0 +1,43 @@ +url = $url; + $this->title = $album->title; + if ($album instanceof BaseAlbum) { + $this->min_taken_at = $album->min_taken_at?->format($min_max_date_format); + $this->max_taken_at = $album->max_taken_at?->format($min_max_date_format); + $this->created_at = $album->created_at->format($create_date_format); + $this->description = $album->description; + } + if ($album instanceof Album) { + $this->num_children = $album->num_children; + $this->num_photos = $album->num_photos; + $this->license = $album->license === LicenseType::NONE ? '' : $album->license->localization(); + } + } +} \ No newline at end of file diff --git a/app/Livewire/DTO/AlbumRights.php b/app/Livewire/DTO/AlbumRights.php new file mode 100644 index 00000000000..764aff8f41b --- /dev/null +++ b/app/Livewire/DTO/AlbumRights.php @@ -0,0 +1,41 @@ +whereNotNull('longitude')->count() > 0; + $this->is_map_accessible = $count_locations && Configs::getValueAsBool('map_display'); + $this->is_map_accessible = $this->is_map_accessible && (Auth::check() || Configs::getValueAsBool('map_display_public')); + $this->is_mod_frame_enabled = Configs::getValueAsBool('mod_frame_enabled'); + $this->can_use_2fa = !Auth::check() && (WebAuthnCredential::query()->whereNull('disabled_at')->count() > 0); + $this->can_edit = Gate::check(AlbumPolicy::CAN_EDIT, [AbstractAlbum::class]); + $this->is_search_accessible = Auth::check() || Configs::getValueAsBool('search_public'); + } +} \ No newline at end of file diff --git a/app/Livewire/DTO/Layouts.php b/app/Livewire/DTO/Layouts.php new file mode 100644 index 00000000000..95ed6e9d7b4 --- /dev/null +++ b/app/Livewire/DTO/Layouts.php @@ -0,0 +1,30 @@ +photo_layout_justified_row_height ??= Configs::getValueAsInt('photo_layout_justified_row_height'); + $this->photo_layout_masonry_column_width ??= Configs::getValueAsInt('photo_layout_masonry_column_width'); + $this->photo_layout_grid_column_width ??= Configs::getValueAsInt('photo_layout_grid_column_width'); + $this->photo_layout_square_column_width ??= Configs::getValueAsInt('photo_layout_square_column_width'); + $this->photo_layout_gap ??= Configs::getValueAsInt('photo_layout_gap'); + $this->photos_layout ??= Configs::getValueAsEnum('layout', PhotoLayoutType::class)->value; + } + + public function photos_layout(): PhotoLayoutType + { + return PhotoLayoutType::from($this->photos_layout); + } +} diff --git a/app/Livewire/DTO/PhotoFlags.php b/app/Livewire/DTO/PhotoFlags.php new file mode 100644 index 00000000000..266739b85d9 --- /dev/null +++ b/app/Livewire/DTO/PhotoFlags.php @@ -0,0 +1,18 @@ + */ + #[Locked] + public array $configs; + + /** @var array */ + public array $values; + + /** + * This allows Livewire to know which values of the $configs we + * want to display in the wire:model. Sort of a white listing. + * + * @var array + */ + protected $rules = [ + 'values.*' => 'nullable', + ]; + + /** + * Initialize form data. + * + * @param Collection $configs + * + * @return void + */ + public function setConfigs(Collection $configs): void + { + // ! IMPORTANT, WE MUST use all() to get an array and not use the collections, + // ! otherwise this messes up the ordering. + $this->configs = $configs->all(); + $this->values = $configs->map(fn (Configs $c, int $k) => $c->value)->all(); + } + + /** + * Save form data. + * + * @return void + * + * @throws ValidationException + * @throws LycheeAssertionError + */ + public function save(): void + { + $this->validate(); + $n = count($this->values); + if ($n !== count($this->configs)) { + throw new LycheeAssertionError('Number of values do not match number of configs'); + } + + for ($idx = 0; $idx < $n; $idx++) { + $c = $this->configs[$idx]; + $candidateValue = $this->values[$idx]; + $template = 'Error: Expected %s, got ' . ($candidateValue ?? 'NULL') . '.'; + + $error_msg = $c->sanity($candidateValue, $template); + if ($error_msg === '') { + $c->value = $candidateValue; + $c->save(); + } else { + $this->addError('values.' . $idx, $error_msg); + } + } + } +} diff --git a/app/Livewire/Forms/ImportFromServerForm.php b/app/Livewire/Forms/ImportFromServerForm.php new file mode 100644 index 00000000000..a672b7998f7 --- /dev/null +++ b/app/Livewire/Forms/ImportFromServerForm.php @@ -0,0 +1,126 @@ + */ + public array $paths = []; + public bool $delete_imported; + public bool $skip_duplicates; + public bool $import_via_symlink; + public bool $resync_metadata; + + /** + * This allows Livewire to know which values of the $configs we + * want to display in the wire:model. Sort of a white listing. + * + * @return array + */ + protected function rules(): array + { + return [ + RequestAttribute::ALBUM_ID_ATTRIBUTE => ['present', new RandomIDRule(true)], + RequestAttribute::PATH_ATTRIBUTE => 'required|array|min:1', + RequestAttribute::PATH_ATTRIBUTE . '.*' => 'required|string|distinct', + RequestAttribute::DELETE_IMPORTED_ATTRIBUTE => 'sometimes|boolean', + RequestAttribute::SKIP_DUPLICATES_ATTRIBUTE => 'sometimes|boolean', + RequestAttribute::IMPORT_VIA_SYMLINK_ATTRIBUTE => 'sometimes|boolean', + RequestAttribute::RESYNC_METADATA_ATTRIBUTE => 'sometimes|boolean', + ]; + } + + /** + * split path into paths array. + * + * @return void + */ + public function prepare() + { + $subject = $this->path; + + // We split the given path string at unescaped spaces into an + // array or more precisely we create an array whose entries + // match strings with non-space characters or escaped spaces. + // After splitting, the escaped spaces must be replaced by + // proper spaces as escaping of spaces is a GUI-only thing to + // allow input of several paths into a single input field. + $matches = $this->split_escaped(' ', '\\', $subject); + + // drop first element: matched elements start at index 1 + // array_shift($matches); + $this->paths = array_map(fn ($v) => str_replace('\\ ', ' ', $v), $matches); + + // Remove empty elements + $this->paths = array_filter($this->paths, fn ($v) => $v === ''); + } + + /** + * Dark magic code from Stack Overflow + * https://stackoverflow.com/a/27135602. + * + * @param string $delimiter + * @param string $escaper + * @param string $text + * + * @return string[] + */ + private function split_escaped(string $delimiter, string $escaper, string $text): array + { + $d = preg_quote($delimiter, '~'); + $e = preg_quote($escaper, '~'); + $tokens = preg_split( + '~' . $e . '(' . $e . '|' . $d . ')(*SKIP)(*FAIL)|' . $d . '~', + $text + ); + $escaperReplacement = str_replace(['\\', '$'], ['\\\\', '\\$'], $escaper); + $delimiterReplacement = str_replace(['\\', '$'], ['\\\\', '\\$'], $delimiter); + + return preg_replace( + ['~' . $e . $e . '~', '~' . $e . $d . '~'], + [$escaperReplacement, $delimiterReplacement], + $tokens + ); + } + + /** + * Initialize form data. + * + * @param ?string $albumID + * + * @return void + */ + public function init(?string $albumID): void + { + $this->albumID = $albumID; + $this->path = public_path('uploads/import/'); + $this->delete_imported = Configs::getValueAsBool('delete_imported'); + $this->import_via_symlink = !Configs::getValueAsBool('delete_imported') && Configs::getValueAsBool('import_via_symlink'); + $this->skip_duplicates = Configs::getValueAsBool('skip_duplicates'); + $this->resync_metadata = false; + } + + public function getAlbum(): null|Album + { + /** @var Album $album */ + $album = $this->albumID === null ? null : Album::query()->findOrFail($this->albumID); + + return $album; + } + + public function getImportMode(): ImportMode + { + return new ImportMode($this->delete_imported, $this->skip_duplicates, $this->import_via_symlink, $this->resync_metadata); + } +} diff --git a/app/Livewire/Forms/ImportFromUrlForm.php b/app/Livewire/Forms/ImportFromUrlForm.php new file mode 100644 index 00000000000..c9427a3d595 --- /dev/null +++ b/app/Livewire/Forms/ImportFromUrlForm.php @@ -0,0 +1,77 @@ + */ + public array $urls = []; + + public string $url = ''; + + /** + * This allows Livewire to know which values of the $configs we + * want to display in the wire:model. Sort of a white listing. + * + * @return array + */ + protected function rules(): array + { + return [ + RequestAttribute::ALBUM_ID_ATTRIBUTE => ['present', new RandomIDRule(true)], + RequestAttribute::URLS_ATTRIBUTE => 'required|array|min:1', + RequestAttribute::URLS_ATTRIBUTE . '.*' => 'required|string', + ]; + } + + /** + * split path into paths array. + * + * @return void + */ + public function prepare() + { + $this->urls = [$this->url]; + + // The replacement below looks suspicious. + // If it was really necessary, then there would be much more special + // characters (e.i. for example umlauts in international domain names) + // which would require replacement by their corresponding %-encoding. + // However, I assume that the PHP method `fopen` is happily fine with + // any character and internally handles special characters itself. + // Hence, either use a proper encoding method here instead of our + // home-brewed, poor-man replacement or drop it entirely. + // TODO: Find out what is needed and proceed accordingly. + // ? We can't use URL encode because we need to preserve :// and ? + $this->urls = str_replace(' ', '%20', $this->urls); + } + + /** + * Initialize form data. + * + * @param ?string $albumID + * + * @return void + */ + public function init(?string $albumID): void + { + $this->albumID = $albumID; + } + + public function getAlbum(): null|Album + { + /** @var Album $album */ + $album = $this->albumID === null ? null : Album::query()->findOrFail($this->albumID); + + return $album; + } +} diff --git a/app/Livewire/Forms/PhotoUpdateForm.php b/app/Livewire/Forms/PhotoUpdateForm.php new file mode 100644 index 00000000000..cb9a3133490 --- /dev/null +++ b/app/Livewire/Forms/PhotoUpdateForm.php @@ -0,0 +1,103 @@ + */ + #[Locked] public array $tags = []; + #[Locked] public string $date = ''; + public function __construct( + public string $photoID, + public string $title, + public string $description, + public string $tagsWithComma, + public string $uploadDate, + public string $uploadTz, + public string $license, + ) { + $this->tags = collect(explode(',', $this->tagsWithComma))->map(fn ($v) => trim($v))->filter(fn ($v) => $v !== '')->all(); + $this->date = $this->uploadDate . ':' . $this->uploadTz; + } + + /** + * This allows Livewire to know which values of the $configs we + * want to display in the wire:model. Sort of a white listing. + * + * @return array + */ + protected function rules(): array + { + return [ + RequestAttribute::TITLE_ATTRIBUTE => ['required', new TitleRule()], + ...SetPhotoDescriptionRuleSet::rules(), + RequestAttribute::TAGS_ATTRIBUTE => 'present|array', + RequestAttribute::TAGS_ATTRIBUTE . '.*' => 'required|string|min:1', + RequestAttribute::LICENSE_ATTRIBUTE => ['required', new Enum(LicenseType::class)], + RequestAttribute::DATE_ATTRIBUTE => 'required|date', + ]; + } + + /** + * Validate form. + * + * @return array> + */ + public function validate(): array + { + /** @var Validator $validator */ + $validator = ValidatorFacade::make($this->all(), $this->rules()); + + if ($validator->fails()) { + return $validator->getMessageBag()->messages(); + } + + return []; + } + + /** + * Fetch photo associated with request. + * + * @return Photo + */ + public function getPhoto(): Photo + { + $this->photo = Photo::query()->findOrFail($this->photoID); + + return $this->photo; + } + + /** + * Save data in photo. + * + * @return void + */ + public function save(): void + { + $photo = Photo::query()->where('id', '=', $this->photoID)->first(); + + $photo->title = $this->title; + $photo->description = $this->description; + $photo->created_at = $this->date; + $photo->tags = $this->tags; + $photo->license = LicenseType::from($this->license); + $photo->save(); + } + + public function all(): array + { + return Utils::getPublicProperties($this); + } +} diff --git a/app/Livewire/Synth/AlbumFlagsSynth.php b/app/Livewire/Synth/AlbumFlagsSynth.php new file mode 100644 index 00000000000..f98a47633d9 --- /dev/null +++ b/app/Livewire/Synth/AlbumFlagsSynth.php @@ -0,0 +1,80 @@ +> + */ + public function dehydrate($target): array + { + $result = []; + $cls = new \ReflectionClass(AlbumFlags::class); + $props = $cls->getProperties(\ReflectionProperty::IS_PUBLIC); + foreach ($props as $prop) { + $propertyValue = $prop->getValue($target); + if (is_object($propertyValue)) { + throw new LycheeLogicException(sprintf('wrong value type for %s', get_class($propertyValue))); + } + $result[$prop->getName()] = $propertyValue; + } + + return [$result, []]; + } + + /** + * @param array $value + * + * @return AlbumFlags + */ + public function hydrate($value): AlbumFlags + { + $cls = new \ReflectionClass(AlbumFlags::class); + + /** @var AlbumFlags $flags */ + $flags = $cls->newInstanceWithoutConstructor(); + $props = $cls->getProperties(\ReflectionProperty::IS_PUBLIC); + foreach ($props as $prop) { + $flags->{$prop->getName()} = $value[$prop->getName()]; + } + + return $flags; + } + + /** + * @param AlbumFlags $target + * @param string $key + * + * @return string + */ + public function get(&$target, $key) + { + return $target->{$key}; + } + + /** + * @param AlbumFlags $target + * @param string $key + * @param bool $value + * + * @return void + */ + public function set(&$target, $key, $value) + { + $target->{$key} = $value; + } +} \ No newline at end of file diff --git a/app/Livewire/Synth/AlbumSynth.php b/app/Livewire/Synth/AlbumSynth.php new file mode 100644 index 00000000000..d6a62f19094 --- /dev/null +++ b/app/Livewire/Synth/AlbumSynth.php @@ -0,0 +1,42 @@ +> + */ + public function dehydrate($target): array + { + return [[ + 'id' => $target->id, + ], []]; + } + + /** + * @param array $value + * + * @return AbstractAlbum + */ + public function hydrate($value): AbstractAlbum + { + /** @var AlbumFactory $albumFactory */ + $albumFactory = resolve(AlbumFactory::class); + + return $albumFactory->findAbstractAlbumOrFail($value['id']); + } +} \ No newline at end of file diff --git a/app/Livewire/Synth/PhotoSynth.php b/app/Livewire/Synth/PhotoSynth.php new file mode 100644 index 00000000000..d8e762cf9f3 --- /dev/null +++ b/app/Livewire/Synth/PhotoSynth.php @@ -0,0 +1,38 @@ +> + */ + public function dehydrate($target): array + { + return [[ + 'id' => $target->id, + ], []]; + } + + /** + * @param array $value + * + * @return Photo + */ + public function hydrate($value): Photo + { + return Photo::findOrFail($value['id']); + } +} \ No newline at end of file diff --git a/app/Livewire/Synth/SessionFlagsSynth.php b/app/Livewire/Synth/SessionFlagsSynth.php new file mode 100644 index 00000000000..a872a7cbf79 --- /dev/null +++ b/app/Livewire/Synth/SessionFlagsSynth.php @@ -0,0 +1,81 @@ +> + */ + public function dehydrate($target): array + { + $result = []; + $cls = new \ReflectionClass(SessionFlags::class); + $props = $cls->getProperties(\ReflectionProperty::IS_PUBLIC); + foreach ($props as $prop) { + $propertyValue = $prop->getValue($target); + if (is_object($propertyValue)) { + throw new LycheeLogicException(sprintf('wrong value type for %s', get_class($propertyValue))); + } + $result[$prop->getName()] = $propertyValue; + } + + return [$result, []]; + } + + /** + * @param array $value + * + * @return SessionFlags + */ + public function hydrate($value): SessionFlags + { + $cls = new \ReflectionClass(SessionFlags::class); + + /** @var SessionFlags $flags */ + $flags = $cls->newInstanceWithoutConstructor(); + $props = $cls->getProperties(\ReflectionProperty::IS_PUBLIC); + foreach ($props as $prop) { + $flags->{$prop->getName()} = $value[$prop->getName()]; + } + + return $flags; + } + + /** + * @param SessionFlags $target + * @param string $key + * + * @return string + */ + public function get(&$target, $key) + { + return $target->{$key}; + } + + /** + * @param SessionFlags $target + * @param string $key + * @param bool $value + * + * @return void + */ + public function set(&$target, $key, $value) + { + $target->{$key} = $value; + $target->save(); + } +} \ No newline at end of file diff --git a/app/Livewire/Traits/AlbumsPhotosContextMenus.php b/app/Livewire/Traits/AlbumsPhotosContextMenus.php new file mode 100644 index 00000000000..29bae91ad1c --- /dev/null +++ b/app/Livewire/Traits/AlbumsPhotosContextMenus.php @@ -0,0 +1,75 @@ +dispatch( + 'openContextMenu', + 'menus.AlbumAdd', + [Params::PARENT_ID => $this->albumId], + 'right: 30px; top: 30px; transform-origin: top right;' + )->to(ContextMenu::class); + } + + #[Renderless] + public function openPhotoDropdown(int $x, int $y, string $photoId): void + { + $this->dispatch( + 'openContextMenu', + 'menus.PhotoDropdown', + [Params::ALBUM_ID => $this->albumId, Params::PHOTO_ID => $photoId], + $this->getCss($x, $y) + )->to(ContextMenu::class); + } + + #[Renderless] + public function openPhotosDropdown(int $x, int $y, array $photoIds): void + { + $this->dispatch( + 'openContextMenu', + 'menus.PhotosDropdown', + [Params::ALBUM_ID => $this->albumId, Params::PHOTO_IDS => $photoIds], + $this->getCss($x, $y) + )->to(ContextMenu::class); + } + + #[Renderless] + public function openAlbumDropdown(int $x, int $y, string $albumID): void + { + $this->dispatch( + 'openContextMenu', + 'menus.AlbumDropdown', + [Params::PARENT_ID => $this->albumId, Params::ALBUM_ID => $albumID], + $this->getCss($x, $y) + )->to(ContextMenu::class); + } + + #[Renderless] + public function openAlbumsDropdown(int $x, int $y, array $albumIds): void + { + $this->dispatch( + 'openContextMenu', + 'menus.AlbumsDropdown', + [Params::PARENT_ID => $this->albumId, Params::ALBUM_IDS => $albumIds], + $this->getCss($x, $y) + )->to(ContextMenu::class); + } + + private function getCss(int $x, int $y): string + { + return sprintf('transform-origin: top left; left: %dpx; top: %dpx;', $x, $y); + } +} diff --git a/app/Livewire/Traits/InteractWithContextMenu.php b/app/Livewire/Traits/InteractWithContextMenu.php new file mode 100644 index 00000000000..168942507ca --- /dev/null +++ b/app/Livewire/Traits/InteractWithContextMenu.php @@ -0,0 +1,18 @@ +dispatch('closeContextMenu')->to(ContextMenu::class); + } +} diff --git a/app/Livewire/Traits/InteractWithModal.php b/app/Livewire/Traits/InteractWithModal.php new file mode 100644 index 00000000000..6b98053546b --- /dev/null +++ b/app/Livewire/Traits/InteractWithModal.php @@ -0,0 +1,45 @@ +dispatch('openModal', $form, '', $params)->to(Modal::class); + } + + /** + * Open Modal with form and paramters. + * + * @param string $form Livewire component to include in the modal + * @param string $close_text text to put if we use a close button + * @param array $params Parameters for said component + * + * @return void + */ + protected function openClosableModal(string $form, string $close_text, array $params = []): void + { + $this->dispatch('openModal', $form, $close_text, $params)->to(Modal::class); + } + + /** + * Close the modal. + * + * @return void + */ + protected function closeModal(): void + { + $this->dispatch('closeModal')->to(Modal::class); + } +} diff --git a/app/Livewire/Traits/Notify.php b/app/Livewire/Traits/Notify.php new file mode 100644 index 00000000000..4b2a91ebe3f --- /dev/null +++ b/app/Livewire/Traits/Notify.php @@ -0,0 +1,24 @@ +dispatch('notify', ['msg' => $message, 'type' => $type->value]); + } +} \ No newline at end of file diff --git a/app/Livewire/Traits/SilentUpdate.php b/app/Livewire/Traits/SilentUpdate.php new file mode 100644 index 00000000000..03ad78cb1c7 --- /dev/null +++ b/app/Livewire/Traits/SilentUpdate.php @@ -0,0 +1,23 @@ +isOpen = true; + } + + /** + * Close the component. + * + * @return void + */ + #[On('close')] + public function close(): void + { + $this->isOpen = false; + } + + /** + * Toggle the component. + * + * @return void + */ + #[On('toggle')] + public function toggle(): void + { + $this->isOpen = !$this->isOpen; + } +} \ No newline at end of file diff --git a/app/Livewire/Traits/UsePhotoViewActions.php b/app/Livewire/Traits/UsePhotoViewActions.php new file mode 100644 index 00000000000..50137b70ac1 --- /dev/null +++ b/app/Livewire/Traits/UsePhotoViewActions.php @@ -0,0 +1,145 @@ +validate(); + if ($valdiation !== []) { + $msg = ''; + foreach ($valdiation as $value) { + $msg .= ($msg !== '' ? '
' : '') . implode('
', $value); + } + $this->notify($msg, NotificationType::ERROR); + + return null; + } + + Gate::authorize(PhotoPolicy::CAN_EDIT, [Photo::class, $form->getPhoto()]); + + $form->save(); + + $this->notify(__('lychee.CHANGE_SUCCESS')); + + return PhotoResource::make($form->getPhoto()); + } + + /** + * Flip the star of a given photo. + * + * @param array<0,string> $photoIDarg + * + * @return bool + */ + #[Renderless] + public function toggleStar(array $photoIDarg): bool + { + if (count($photoIDarg) !== 1 || !is_string($photoIDarg[0])) { + $this->notify('wrong ID', NotificationType::ERROR); + + return false; + } + $photo = Photo::query()->findOrFail($photoIDarg[0]); + + Gate::authorize(PhotoPolicy::CAN_EDIT, [Photo::class, $photo]); + $photo->is_starred = !$photo->is_starred; + $photo->save(); + + return true; + } + + /** + * Rotate selected photo Counter ClockWise. + * + * @param string $photoID + * + * @return void + */ + public function rotate_ccw(string $photoID): void + { + if (!Configs::getValueAsBool('editor_enabled')) { + return; + } + + $photo = Photo::query()->findOrFail($photoID); + Gate::authorize(PhotoPolicy::CAN_EDIT, [Photo::class, $photo]); + $rotateStrategy = new RotateStrategy($photo, -1); + $photo = $rotateStrategy->do(); + // Force hard refresh of the page (to load the rotated image) + $this->redirect(route('livewire-gallery-photo', ['albumId' => $this->albumId, 'photoId' => $photo->id])); + } + + /** + * Rotate selected photo ClockWise. + * + * @param string $photoID + * + * @return void + */ + public function rotate_cw(string $photoID): void + { + if (!Configs::getValueAsBool('editor_enabled')) { + return; + } + + $photo = Photo::query()->findOrFail($photoID); + Gate::authorize(PhotoPolicy::CAN_EDIT, [Photo::class, $photo]); + $rotateStrategy = new RotateStrategy($photo, 1); + $photo = $rotateStrategy->do(); + // Force hard refresh of the page (to load the rotated image) + $this->redirect(route('livewire-gallery-photo', ['albumId' => $this->albumId, 'photoId' => $photo->id])); + } + + /** + * Set all photos for given id as starred. + * + * @param array $photoIDs + * + * @return void + */ + #[Renderless] + public function setStar(array $photoIDs): void + { + Gate::authorize(PhotoPolicy::CAN_EDIT_ID, [Photo::class, $photoIDs]); + Photo::whereIn('id', $photoIDs)->update(['is_starred' => true]); + } + + /** + * Set all photos for given id as NOT starred. + * + * @param array $photoIDs + * + * @return void + */ + #[Renderless] + public function unsetStar(array $photoIDs): void + { + Gate::authorize(PhotoPolicy::CAN_EDIT_ID, [Photo::class, $photoIDs]); + Photo::whereIn('id', $photoIDs)->update(['is_starred' => false]); + } +} \ No newline at end of file diff --git a/app/Livewire/Traits/UseValidator.php b/app/Livewire/Traits/UseValidator.php new file mode 100644 index 00000000000..57225276714 --- /dev/null +++ b/app/Livewire/Traits/UseValidator.php @@ -0,0 +1,37 @@ +all(), $rules); + + if ($validator->fails()) { + $msg = ''; + foreach ($validator->getMessageBag()->messages() as $value) { + $msg .= ($msg !== '' ? '
' : '') . implode('
', $value); + } + $this->dispatch('notify', ['msg' => $msg, 'type' => 'error']); + + return false; + } + + return true; + } +} \ No newline at end of file diff --git a/app/Livewire/Traits/UseWireable.php b/app/Livewire/Traits/UseWireable.php new file mode 100644 index 00000000000..b3b78eae13a --- /dev/null +++ b/app/Livewire/Traits/UseWireable.php @@ -0,0 +1,47 @@ +getProperties(\ReflectionProperty::IS_PUBLIC); + + foreach ($props as $prop) { + $propertyValue = $prop->getValue($this); + if (is_object($propertyValue)) { + throw new LycheeLogicException(sprintf('Convertion of %s is not supported', get_class($propertyValue))); + } + $result[$prop->getName()] = $propertyValue; + } + + return $result; + } + + /** + * @param mixed $data + * + * @return self + * + * @throws LycheeLogicException + * @throws \ReflectionException + */ + public static function fromLivewire(mixed $data) + { + if (!is_array($data)) { + throw new LycheeLogicException('data is not an array'); + } + + $cls = new \ReflectionClass(self::class); + + return $cls->newInstanceArgs($data); + } +} \ No newline at end of file diff --git a/app/Models/Album.php b/app/Models/Album.php index c1f55cc3854..bcd030ebcdb 100644 --- a/app/Models/Album.php +++ b/app/Models/Album.php @@ -16,6 +16,7 @@ use App\Relations\HasManyChildPhotos; use App\Relations\HasManyPhotosRecursively; use Illuminate\Database\Eloquent\Collection; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Database\Query\Builder as BaseBuilder; use Illuminate\Http\UploadedFile; @@ -120,6 +121,7 @@ class Album extends BaseAlbum implements Node { use NodeTrait; use ToArrayThrowsNotImplemented; + use HasFactory; /** * The model's attributes. diff --git a/app/Models/BaseAlbumImpl.php b/app/Models/BaseAlbumImpl.php index 34bbfbcb3b5..2896d473423 100644 --- a/app/Models/BaseAlbumImpl.php +++ b/app/Models/BaseAlbumImpl.php @@ -194,6 +194,11 @@ class BaseAlbumImpl extends Model implements HasRandomID */ protected $with = ['owner', 'access_permissions']; + protected function _toArray(): array + { + return parent::toArray(); + } + /** * @param $query * diff --git a/app/Models/Extensions/BaseConfigMigration.php b/app/Models/Extensions/BaseConfigMigration.php new file mode 100644 index 00000000000..beccc0d95e8 --- /dev/null +++ b/app/Models/Extensions/BaseConfigMigration.php @@ -0,0 +1,31 @@ + + */ + abstract public function getConfigs(): array; + + /** + * Run the migrations. + */ + final public function up(): void + { + DB::table('configs')->insert($this->getConfigs()); + } + + /** + * Reverse the migrations. + */ + final public function down(): void + { + $keys = collect($this->getConfigs())->map(fn ($v) => $v['key'])->all(); + DB::table('configs')->whereIn('key', $keys)->delete(); + } +} diff --git a/app/Models/Extensions/ToArrayThrowsNotImplemented.php b/app/Models/Extensions/ToArrayThrowsNotImplemented.php index 9511ebc4b51..400986775e0 100644 --- a/app/Models/Extensions/ToArrayThrowsNotImplemented.php +++ b/app/Models/Extensions/ToArrayThrowsNotImplemented.php @@ -3,17 +3,28 @@ namespace App\Models\Extensions; use App\Exceptions\Internal\NotImplementedException; +use Illuminate\Support\Facades\Route; /** * Trait ToArrayThrowsNotImplemented. * * Now that we use Resources toArray should no longer be used. * Throw an exception if we encounter this function in the code. + * + * Because Livewire uses toArray to serialize models when passing them to sub components, + * we still need to allow those cases. Those can be detected by the Route::is() call */ trait ToArrayThrowsNotImplemented { + abstract protected function _toArray(): array; + final public function toArray(): array { - throw new NotImplementedException('->toArray() is deprecated, use Resources instead.'); + if (Route::is('livewire_index') || Route::is('livewire.message')) { + return $this->_toArray(); + } + $details = Route::getCurrentRoute()?->getName() ?? ''; + $details .= ($details !== '' ? ':' : '') . get_called_class(); + throw new NotImplementedException($details . '->toArray() is deprecated, use Resources instead.'); } } \ No newline at end of file diff --git a/app/Models/Photo.php b/app/Models/Photo.php index eee9734ec71..23d0ee7c501 100644 --- a/app/Models/Photo.php +++ b/app/Models/Photo.php @@ -24,6 +24,7 @@ use App\Models\Extensions\ToArrayThrowsNotImplemented; use App\Models\Extensions\UTCBasedTimes; use App\Relations\HasManySizeVariants; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Support\Carbon; @@ -122,6 +123,7 @@ */ class Photo extends Model { + use HasFactory; use UTCBasedTimes; use HasAttributesPatch; use HasRandomIDAndLegacyTimeBasedID; @@ -294,6 +296,16 @@ protected function getLicenseAttribute(?string $license): LicenseType return Configs::getValueAsEnum('default_license', LicenseType::class); } + /** + * This is to avoid loading the license from configs & albums. + * + * @return ?string + */ + public function getOriginalLicense(): ?string + { + return $this->attributes['license']; + } + /** * Accessor for attribute `focal`. * diff --git a/app/Models/SizeVariant.php b/app/Models/SizeVariant.php index 1c2df0c17b8..14dfed37132 100644 --- a/app/Models/SizeVariant.php +++ b/app/Models/SizeVariant.php @@ -18,6 +18,7 @@ use App\Models\Extensions\UTCBasedTimes; use App\Relations\HasManyBidirectionally; use Illuminate\Database\Eloquent\Collection; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Support\Facades\Auth; @@ -51,6 +52,7 @@ * @property string $full_path * @property int $width * @property int $height + * @property float $ratio * @property int $filesize * @property Collection $sym_links * @@ -82,6 +84,7 @@ class SizeVariant extends Model use HasBidirectionalRelationships; use ThrowsConsistentExceptions; use ToArrayThrowsNotImplemented; + use HasFactory; /** * This model has no own timestamps as it is inseparably bound to its @@ -102,6 +105,28 @@ class SizeVariant extends Model 'width' => 'integer', 'height' => 'integer', 'filesize' => 'integer', + 'ratio' => 'float', + ]; + + /** + * @var array The list of attributes which exist as columns of the DB + * relation but shall not be serialized to JSON + */ + protected $hidden = [ + 'id', // irrelevant, because a size variant is always serialized as an embedded object of its photo + 'photo', // see above and otherwise infinite loops will occur + 'photo_id', // see above + 'short_path', // serialize url instead + 'sym_links', // don't serialize relation of symlinks + ]; + + /** + * @var string[] The list of "virtual" attributes which do not exist as + * columns of the DB relation but which shall be appended to + * JSON from accessors + */ + protected $appends = [ + 'url', ]; /** @@ -114,6 +139,11 @@ public function newEloquentBuilder($query): SizeVariantBuilder return new SizeVariantBuilder($query); } + protected function _toArray(): array + { + return parent::toArray(); + } + /** * Returns the association to the photo which this size variant belongs * to. diff --git a/app/Models/SymLink.php b/app/Models/SymLink.php index f285eec69aa..fd55ef29307 100644 --- a/app/Models/SymLink.php +++ b/app/Models/SymLink.php @@ -79,6 +79,11 @@ class SymLink extends Model 'size_variant_id', // see above ]; + final protected function _toArray(): array + { + return parent::toArray(); + } + /** * @param $query * diff --git a/app/Models/TagAlbum.php b/app/Models/TagAlbum.php index 447442d5dde..7cab4c2569a 100644 --- a/app/Models/TagAlbum.php +++ b/app/Models/TagAlbum.php @@ -75,6 +75,14 @@ class TagAlbum extends BaseAlbum 'show_tags' => ArrayCast::class, ]; + /** + * @var array The list of attributes which exist as columns of the DB + * relation but shall not be serialized to JSON + */ + protected $hidden = [ + 'base_class', // don't serialize base class as a relation, the attributes of the base class are flatly merged into the JSON result + ]; + /** * @var string[] The list of "virtual" attributes which do not exist as * columns of the DB relation but which shall be appended to @@ -84,6 +92,14 @@ class TagAlbum extends BaseAlbum 'thumb', ]; + protected function _toArray(): array + { + $result = parent::toArray(); + $result['is_tag_album'] = true; + + return $result; + } + public function photos(): HasManyPhotosByTag { return new HasManyPhotosByTag($this); diff --git a/app/Models/User.php b/app/Models/User.php index 58caf939bc2..6b48e3dc748 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -11,6 +11,7 @@ use App\Models\Extensions\UTCBasedTimes; use Carbon\Exceptions\InvalidFormatException; use Illuminate\Database\Eloquent\Collection; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Query\Builder as BaseBuilder; @@ -74,6 +75,7 @@ */ class User extends Authenticatable implements WebAuthnAuthenticatable { + use HasFactory; use Notifiable; use WebAuthnAuthentication; use UTCBasedTimes; @@ -103,6 +105,11 @@ class User extends Authenticatable implements WebAuthnAuthenticatable 'may_edit_own_settings' => 'boolean', ]; + protected function _toArray(): array + { + return parent::toArray(); + } + /** * Create a new Eloquent query builder for the model. * diff --git a/app/Policies/AlbumPolicy.php b/app/Policies/AlbumPolicy.php index 57881cb1c24..d6810e87dd1 100644 --- a/app/Policies/AlbumPolicy.php +++ b/app/Policies/AlbumPolicy.php @@ -23,6 +23,7 @@ class AlbumPolicy extends BasePolicy public const IS_OWNER = 'isOwner'; public const CAN_SEE = 'canSee'; public const CAN_ACCESS = 'canAccess'; + public const CAN_ACCESS_MAP = 'canAccessMap'; public const CAN_DOWNLOAD = 'canDownload'; public const CAN_DELETE = 'canDelete'; public const CAN_UPLOAD = 'canUpload'; @@ -36,12 +37,12 @@ class AlbumPolicy extends BasePolicy /** * This ensures that current album is owned by current user. * - * @param User|null $user - * @param BaseAlbum $album + * @param User|null $user + * @param BaseAlbum|BaseAlbumImpl $album * * @return bool */ - public function isOwner(?User $user, BaseAlbum $album): bool + public function isOwner(?User $user, BaseAlbum|BaseAlbumImpl $album): bool { return $user !== null && $album->owner_id === $user->id; } @@ -120,6 +121,30 @@ public function canAccess(?User $user, ?AbstractAlbum $album): bool return false; } + /** + * Check if user can access the map. + * Note that this is not used to determine the visibility of the header button because + * 1. Admin will always return true. + * 2. We also check if there are pictures with location data to be display in the album. + * + * @param User|null $user + * @param AbstractAlbum|null $album + * + * @return bool + */ + public function canAccessMap(?User $user, ?AbstractAlbum $album): bool + { + if (!Configs::getValueAsBool('map_display')) { + return false; + } + + if ($user === null && !Configs::getValueAsBool('map_display_public')) { + return false; + } + + return $this->canAccess($user, $album); + } + /** * Check if current user can download the album. * @@ -353,16 +378,14 @@ public function canDeleteById(User $user, array $albumIDs): bool /** * Check if user can share selected album with another user. * - * @param User|null $user + * @param User $user * @param AbstractAlbum $abstractAlbum * * @return bool - * - * @throws ConfigurationKeyMissingException */ - public function canShareWithUsers(?User $user, ?AbstractAlbum $abstractAlbum): bool + public function canShareWithUsers(User $user, AbstractAlbum|BaseAlbumImpl|null $abstractAlbum): bool { - if ($user?->may_upload !== true) { + if ($user->may_upload !== true) { return false; } @@ -371,7 +394,7 @@ public function canShareWithUsers(?User $user, ?AbstractAlbum $abstractAlbum): b return true; } - if (!$abstractAlbum instanceof BaseAlbum) { + if (!$abstractAlbum instanceof BaseAlbum && !$abstractAlbum instanceof BaseAlbumImpl) { return false; } diff --git a/app/Policies/UserPolicy.php b/app/Policies/UserPolicy.php index b3b64c6fd45..7a1ee67d348 100644 --- a/app/Policies/UserPolicy.php +++ b/app/Policies/UserPolicy.php @@ -15,7 +15,6 @@ class UserPolicy extends BasePolicy public const CAN_EDIT = 'canEdit'; public const CAN_CREATE_OR_EDIT_OR_DELETE = 'canCreateOrEditOrDelete'; public const CAN_LIST = 'canList'; - public const CAN_USE_2FA = 'canUse2FA'; public function canCreateOrEditOrDelete(User $user): bool { @@ -28,22 +27,6 @@ public function canList(User $user): bool return $user->may_upload; } - /** - * This function returns false as it is bypassed by the before() - * which directly checks for admin rights. - * - * TODO: Later we will want to use this function to allow users - * to make use of 2FA as opposed to only the admin for now. - * - * @param User $user - * - * @return bool - */ - public function canUse2FA(User $user): bool - { - return false; - } - /** * This defines if user can edit their settings. * diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 78a95a7ba4e..1268e71f478 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -11,6 +11,10 @@ use App\Factories\AlbumFactory; use App\Image\SizeVariantDefaultFactory; use App\Image\StreamStatFilter; +use App\Livewire\Synth\AlbumFlagsSynth; +use App\Livewire\Synth\AlbumSynth; +use App\Livewire\Synth\PhotoSynth; +use App\Livewire\Synth\SessionFlagsSynth; use App\Metadata\Json\CommitsRequest; use App\Metadata\Json\UpdateRequest; use App\Metadata\Versions\FileVersion; @@ -32,6 +36,7 @@ use Illuminate\Support\Facades\Log; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Str; +use Livewire\Livewire; use Opcodes\LogViewer\Facades\LogViewer; use Safe\Exceptions\StreamException; use function Safe\stream_filter_register; @@ -78,6 +83,14 @@ class AppServiceProvider extends ServiceProvider GitTags::class => GitTags::class, ]; + private array $livewireSynth = + [ + AlbumSynth::class, + PhotoSynth::class, + SessionFlagsSynth::class, + AlbumFlagsSynth::class, + ]; + /** * Bootstrap any application services. * @@ -139,6 +152,10 @@ public function boot() // return true to allow viewing the Log Viewer. return Auth::authenticate() !== null && Gate::check(SettingsPolicy::CAN_SEE_LOGS, Configs::class); }); + + foreach ($this->livewireSynth as $synth) { + Livewire::propertySynthesizer($synth); + } } /** diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index d0ce993d6e3..e65f4f32dda 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -51,6 +51,9 @@ public function boot() Route::middleware('web-admin') ->group(base_path('routes/web-admin.php')); + Route::middleware('web') + ->group(base_path('routes/web-livewire.php')); + Route::middleware('web') ->group(base_path('routes/web.php')); }); diff --git a/app/SmartAlbums/BaseSmartAlbum.php b/app/SmartAlbums/BaseSmartAlbum.php index 1ddfc91a51e..b4e3b1f09ac 100644 --- a/app/SmartAlbums/BaseSmartAlbum.php +++ b/app/SmartAlbums/BaseSmartAlbum.php @@ -4,6 +4,7 @@ use App\Contracts\Exceptions\InternalLycheeException; use App\Contracts\Models\AbstractAlbum; +use App\DTO\AlbumProtectionPolicy; use App\DTO\PhotoSortingCriterion; use App\Enum\SmartAlbumType; use App\Exceptions\ConfigurationKeyMissingException; @@ -66,6 +67,36 @@ protected function __construct(SmartAlbumType $id, \Closure $smartCondition) } } + protected function _toArray(): array + { + // The properties `thumb` and `photos` are intentionally treated + // differently. + // + // 1. The result always includes `thumb`, hence we call the + // getter method to ensure that the property is initialized, if it + // has not already been accessed before. + // 2. The result only includes the collection `photos`, if it has + // already explicitly been accessed earlier and thus is initialized. + // + // Rationale: + // + // 1. This resembles the behaviour of a real Eloquent model, if the + // attribute `thumb` was part of the `append`-property of model. + // 2. This resembles the behaviour of a real Eloquent model for + // one-to-many relations. + // A relation is only included in the array representation, if the + // relation has been loaded. + // This avoids unnecessary hydration of photos if the album is + // only used within a listing of sub-albums. + return [ + 'id' => $this->id, + 'title' => $this->title, + 'thumb' => $this->getThumbAttribute(), + 'policy' => AlbumProtectionPolicy::ofSmartAlbum($this), + 'photos' => $this->photos?->toArray(), + ]; + } + /** * @throws InternalLycheeException */ diff --git a/app/View/Components/Footer.php b/app/View/Components/Footer.php new file mode 100644 index 00000000000..f2104cafd7a --- /dev/null +++ b/app/View/Components/Footer.php @@ -0,0 +1,74 @@ +layout = $layout; + $this->show_socials = Configs::getValueAsBool('footer_show_social_media'); + $this->facebook = Configs::getValueAsString('sm_facebook_url'); + $this->flickr = Configs::getValueAsString('sm_flickr_url'); + $this->twitter = Configs::getValueAsString('sm_twitter_url'); + $this->instagram = Configs::getValueAsString('sm_instagram_url'); + $this->youtube = Configs::getValueAsString('sm_youtube_url'); + + $this->hosted_by = __('lychee.HOSTED_WITH_LYCHEE'); + + if (Configs::getValueAsBool('footer_show_copyright')) { + $copyright_year = Configs::getValueAsString('site_copyright_begin'); + $copyright_year_end = Configs::getValueAsString('site_copyright_end'); + if ($copyright_year !== $copyright_year_end) { + $copyright_year = $copyright_year . '-' . $copyright_year_end; + } + + $this->copyright = sprintf( + __('lychee.FOOTER_COPYRIGHT'), + Configs::getValueAsString('site_owner'), + $copyright_year + ); + } + + $this->additional_footer_text = Configs::getValueAsString('footer_additional_text'); + } + + /** + * Render component. + * + * @return View + * + * @throws BindingResolutionException + */ + public function render(): View + { + return view('components.' . $this->layout); + } +} diff --git a/app/View/Components/Gallery/Album/SharingLinks.php b/app/View/Components/Gallery/Album/SharingLinks.php new file mode 100644 index 00000000000..065e5f8a740 --- /dev/null +++ b/app/View/Components/Gallery/Album/SharingLinks.php @@ -0,0 +1,31 @@ +url = route('livewire-gallery-album', ['albumId' => $album->id]); + $this->rawUrl = rawurlencode($this->url); + $raw_title = rawurlencode($album->title); + $this->twitter_link = 'https://twitter.com/share?url=' . $this->rawUrl; + $this->facebook_link = 'https://www.facebook.com/sharer.php?u=' . $this->rawUrl . '?t=' . $raw_title; + $this->mailTo_link = 'mailto:?subject=' . $raw_title . '&' . $this->rawUrl; + } + + public function render(): View + { + return view('components.gallery.album.sharing-links'); + } +} \ No newline at end of file diff --git a/app/View/Components/Gallery/Album/Thumbs/Album.php b/app/View/Components/Gallery/Album/Thumbs/Album.php new file mode 100644 index 00000000000..3f1d42f0919 --- /dev/null +++ b/app/View/Components/Gallery/Album/Thumbs/Album.php @@ -0,0 +1,73 @@ +subType = Configs::getValueAsEnum('album_subtitle_type', ThumbAlbumSubtitleType::class)->value; + + $this->id = $data->id; + $this->thumb = $data->thumb; + $this->title = $data->title; + + if ($data instanceof BaseSmartAlbum) { + $policy = AlbumProtectionPolicy::ofSmartAlbum($data); + } else { + /** @var BaseAlbum $data */ + $this->max_taken_at = $data->max_taken_at?->format($date_format); + $this->min_taken_at = $data->min_taken_at?->format($date_format); + $this->created_at = $data->created_at->format($date_format); + $policy = AlbumProtectionPolicy::ofBaseAlbum($data); + } + + $this->is_nsfw = $policy->is_nsfw; + $this->is_nsfw_blurred = $this->is_nsfw && Configs::getValueAsBool('nsfw_blur'); + $this->is_public = $policy->is_public; + $this->is_link_required = $policy->is_link_required; + $this->is_password_required = $policy->is_password_required; + + $this->is_tag_album = $data instanceof TagAlbum; + // This aims to indicate whether the current thumb is used to determine the parent. + $this->is_cover_id = $data instanceof AlbumModel && $data->thumb !== null && $data->parent?->cover_id === $data->thumb->id; + $this->has_subalbum = $data instanceof AlbumModel && !$data->isLeaf(); + } + + public function render() + { + return view('components.gallery.album.thumbs.album'); + } +} \ No newline at end of file diff --git a/app/View/Components/Gallery/Album/Thumbs/AlbumThumb.php b/app/View/Components/Gallery/Album/Thumbs/AlbumThumb.php new file mode 100644 index 00000000000..1fe15da36e8 --- /dev/null +++ b/app/View/Components/Gallery/Album/Thumbs/AlbumThumb.php @@ -0,0 +1,48 @@ +class = $class; + if ($thumb === 'uploads/thumb/') { + $this->src = Str::contains($type, 'video') ? URL::asset('img/play-icon.png') : URL::asset('img/placeholder.png'); + $this->dataSrc = Str::contains($type, 'raw') ? URL::asset('img/no_images.svg') : ''; + } else { + $this->src = URL::asset('img/no_images.svg'); + + if ($thumb !== '') { + $this->dataSrc = URL::asset($thumb); + } + } + + $this->src = sprintf("src='%s'", $this->src); + if ($this->dataSrc !== '') { + $this->dataSrc = sprintf("data-src='%s'", $this->dataSrc); + } + + if ($thumb2x !== '') { + $this->dataSrcSet = sprintf("data-srcset='%s 2x'", URL::asset($thumb2x)); + } + } + + public function render() + { + return view('components.gallery.album.thumbs.album-thumb'); + } +} diff --git a/app/View/Components/Gallery/Album/Thumbs/Photo.php b/app/View/Components/Gallery/Album/Thumbs/Photo.php new file mode 100644 index 00000000000..549bc318d41 --- /dev/null +++ b/app/View/Components/Gallery/Album/Thumbs/Photo.php @@ -0,0 +1,170 @@ +idx = $idx; + $date_format = Configs::getValueAsString('date_format_photo_thumb'); + + $this->album_id = $albumId; + $this->photo_id = $data->id; + $this->title = $data->title; + $this->taken_at = $data->taken_at?->format($date_format) ?? ''; + $this->created_at = $data->created_at->format($date_format); + + $this->is_video = $data->isVideo(); + $this->is_livephoto = $data->live_photo_url !== null; + $this->is_cover_id = $data->album?->cover_id === $data->id; + + $thumb = $data->size_variants->getSizeVariant(SizeVariantType::THUMB); + $thumb2x = $data->size_variants->getSizeVariant(SizeVariantType::THUMB2X); + + $this->set_src($thumb); + + $dim = 200; + $dim2x = 400; + $thumbUrl = $thumb?->url; + $thumb2xUrl = $thumb2x?->url; + + // Probably this code needs some fix/refactoring, too. However, where is this method invoked and + // what is the structure of the passed `data` array? (Could find any invocation.) + + if ($data->size_variants->hasMediumOrSmall()) { + $thumbsUrls = $this->setThumbUrls($data->size_variants); + + $this->_w = $thumbsUrls['w']; + $this->_h = $thumbsUrls['h']; + $dim2x = $thumbsUrls['w2x']; + $thumbUrl = $thumbsUrls['thumbUrl']; + $thumb2xUrl = $thumbsUrls['thumb2xUrl']; + + $dim = $this->_w; + } elseif (!$data->isVideo()) { + $original = $data->size_variants->getSizeVariant(SizeVariantType::ORIGINAL); + + $this->_w ??= $original->width; + $this->_h ??= $original->height; + // Fallback for images with no small or medium. + $thumbUrl ??= $original->url; + } elseif ($thumbUrl === null) { + // Fallback for videos with no small (the case of no thumb is handled else where). + $dim = 200; + $dim2x = 200; + } + + $this->srcset = sprintf("data-src='%s'", URL::asset($thumbUrl)); + $this->srcset2x = $thumb2xUrl !== null ? sprintf("data-srcset='%s %dw, %s %dw'", URL::asset($thumbUrl), $dim, URL::asset($thumb2xUrl), $dim2x) : ''; + } + + /** + * Define src. + * + * this is what will be first deplayed before loading. + * + * @param SizeVariant|null $thumb + * + * @return void + */ + private function set_src(?SizeVariant $thumb): void + { + // default is place holder + $this->src = URL::asset('img/placeholder.png'); + + // if thumb is not null then directly return: + // it will be replaced later by src-set + if ($thumb !== null) { + $this->src = sprintf("src='%s'", $this->src); + + return; + } + + // change the png in the other cases. + // no need to lazyload too. + $this->is_lazyload = false; + $this->src = $this->is_video ? URL::asset('img/play-icon.png') : $this->src; + $this->src = $this->is_livephoto ? URL::asset('img/live-photo-icon.png') : $this->src; + $this->src = sprintf("src='%s'", $this->src); + } + + /** + * Fetch the thumbs data. + * + * @param SizeVariants $sizeVariants + * + * @return array{w:int,w2x:int|null,h:int,thumbUrl:string,thumb2xUrl:string|null} + * + * @throws InvalidSizeVariantException + */ + private function setThumbUrls(SizeVariants $sizeVariants): array + { + $small = $sizeVariants->getSizeVariant(SizeVariantType::SMALL); + $small2x = $sizeVariants->getSizeVariant(SizeVariantType::SMALL2X); + $medium = $sizeVariants->getSizeVariant(SizeVariantType::MEDIUM); + $medium2x = $sizeVariants->getSizeVariant(SizeVariantType::MEDIUM2X); + + /** @var int $w */ + $w = $small?->width ?? $medium?->width; + $w2x = $small2x?->width ?? $medium2x?->width; + /** @var int $h */ + $h = $small?->height ?? $medium?->height; + + /** @var string $thumbUrl */ + $thumbUrl = $small?->url ?? $medium?->url; + $thumb2xUrl = $small2x?->url ?? $medium2x?->url; + + return ['w' => $w, 'w2x' => $w2x, 'h' => $h, 'thumbUrl' => $thumbUrl, 'thumb2xUrl' => $thumb2xUrl]; + } + + /** + * Get the view / contents that represent the component. + * + * @return \Illuminate\Contracts\View\View|\Closure|string + * + * @throws BindingResolutionException + */ + public function render() + { + return view('components.gallery.album.thumbs.photo'); + } +} diff --git a/app/View/Components/Gallery/Photo/Download.php b/app/View/Components/Gallery/Photo/Download.php new file mode 100644 index 00000000000..386232046ee --- /dev/null +++ b/app/View/Components/Gallery/Photo/Download.php @@ -0,0 +1,61 @@ +photoId = $photo->id; + + $downgrade = !Gate::check(PhotoPolicy::CAN_ACCESS_FULL_PHOTO, [Photo::class, $photo]) && + !$photo->isVideo() && + $photo->size_variants->hasMedium() === true; + + $rq = request(); + + // TODO: Add Live photo + $this->size_variants = collect(SizeVariantType::cases()) + ->map(fn ($v) => $photo->size_variants->getSizeVariant($v)) + ->filter(fn ($e) => $e !== null) + ->map(fn ($v) => SizeVariantResource::make($v)) + ->map(fn ($v, $k) => $k === 0 ? $v->setNoUrl($downgrade) : $v) // 0 = original + ->map(fn ($v) => $v->toArray($rq)) + ->map(function ($v) { + /** @var array{filesize:int} $v */ + $v['filesize'] = Helpers::getSymbolByQuantity(intval($v['filesize'])); + + return $v; + })->all(); + } + + /** + * Render the component. + * + * @return View + */ + public function render(): View + { + return view('components.gallery.photo.downloads'); + } +} diff --git a/app/View/Components/Meta.php b/app/View/Components/Meta.php new file mode 100644 index 00000000000..909abae6ef4 --- /dev/null +++ b/app/View/Components/Meta.php @@ -0,0 +1,75 @@ +photoId !== null) { + // $photo = Photo::findOrFail($this->photoId); + // $title = $photo->title; + // $description = $photo->description; + // $imageUrl = url()->to($photo->size_variants->getMedium()?->url ?? $photo->size_variants->getOriginal()->url); + // } elseif ($this->albumId !== null) { + // $albumFactory = resolve(AlbumFactory::class); + // $album = $albumFactory->findAbstractAlbumOrFail($this->albumId, false); + // $title = $album->title; + // $description = $album instanceof BaseAlbum ? $album->description : ''; + // $imageUrl = url()->to($album->thumb->thumbUrl ?? ''); + // } + + $this->pageTitle = $siteTitle . (!blank($siteTitle) && !blank($title) ? ' – ' : '') . $title; + $this->pageDescription = !blank($description) ? $description . ' – via Lychee' : ''; + $this->siteOwner = Configs::getValueAsString('site_owner'); + $this->imageUrl = $imageUrl; + $this->pageUrl = url()->current(); + $this->rssEnable = Configs::getValueAsBool('rss_enable'); + $this->userCssUrl = IndexController::getUserCustomFiles('user.css'); + $this->userJsUrl = IndexController::getUserCustomFiles('custom.js'); + $this->frame = ''; + } + + /** + * Render component. + * + * @return View + * + * @throws BindingResolutionException + */ + public function render(): View + { + return view('components.meta'); + } +} \ No newline at end of file diff --git a/composer.json b/composer.json index ada197ff7b9..d9bc0fadbd3 100644 --- a/composer.json +++ b/composer.json @@ -49,9 +49,11 @@ "doctrine/dbal": "^3.1", "geocoder-php/cache-provider": "^4.3", "geocoder-php/nominatim-provider": "^5.5", + "graham-campbell/markdown": "^15.0", "laminas/laminas-text": "^2.9", "laragear/webauthn": "^1.2.0", "laravel/framework": "^10.0", + "livewire/livewire": "^3.0", "lychee-org/nestedset": "^8.0", "lychee-org/php-exif": "^1.0.0", "maennchen/zipstream-php": "^3.1", @@ -79,7 +81,8 @@ "mockery/mockery": "^1.5", "larastan/larastan": "^2.0", "php-parallel-lint/php-parallel-lint": "^1.3", - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^10.0", + "fakerphp/faker": "^1.23.0" }, "autoload": { "classmap": [ diff --git a/composer.lock b/composer.lock index 3b562979542..dc5df53efc9 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "b158ae44fc79994db940f20d61f53fd8", + "content-hash": "4e0a59023e0ef37787f242d7b0d54c54", "packages": [ { "name": "bepsvpt/secure-headers", @@ -1220,25 +1220,25 @@ }, { "name": "geocoder-php/common-http", - "version": "4.5.0", + "version": "4.6.0", "source": { "type": "git", "url": "https://github.com/geocoder-php/php-common-http.git", - "reference": "4ee2cee60d21631e2a09c196bf6b9fd296bca728" + "reference": "15629fd7bf771f525282ad1b60d2106bcf630ce9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/geocoder-php/php-common-http/zipball/4ee2cee60d21631e2a09c196bf6b9fd296bca728", - "reference": "4ee2cee60d21631e2a09c196bf6b9fd296bca728", + "url": "https://api.github.com/repos/geocoder-php/php-common-http/zipball/15629fd7bf771f525282ad1b60d2106bcf630ce9", + "reference": "15629fd7bf771f525282ad1b60d2106bcf630ce9", "shasum": "" }, "require": { - "php": "^7.4 || ^8.0", + "php": "^8.0", "php-http/client-implementation": "^1.0", "php-http/discovery": "^1.6", "php-http/httplug": "^1.0 || ^2.0", "php-http/message-factory": "^1.0.2", - "psr/http-message": "^1.0", + "psr/http-message": "^1.0 || ^2.0", "psr/http-message-implementation": "^1.0", "willdurand/geocoder": "^4.0" }, @@ -1247,7 +1247,7 @@ "php-http/message": "^1.0", "php-http/mock-client": "^1.0", "phpunit/phpunit": "^9.5", - "symfony/stopwatch": "~2.5" + "symfony/stopwatch": "~2.5 || ~5.0" }, "type": "library", "extra": { @@ -1279,9 +1279,9 @@ "http geocoder" ], "support": { - "source": "https://github.com/geocoder-php/php-common-http/tree/4.5.0" + "source": "https://github.com/geocoder-php/php-common-http/tree/4.6.0" }, - "time": "2022-07-30T12:09:30+00:00" + "time": "2023-07-31T20:07:24+00:00" }, { "name": "geocoder-php/nominatim-provider", @@ -1342,6 +1342,86 @@ }, "time": "2023-03-01T10:18:27+00:00" }, + { + "name": "graham-campbell/markdown", + "version": "v15.1.0", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Laravel-Markdown.git", + "reference": "94917d0d712c26788095ad2b5eafd9b33cd43095" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Laravel-Markdown/zipball/94917d0d712c26788095ad2b5eafd9b33cd43095", + "reference": "94917d0d712c26788095ad2b5eafd9b33cd43095", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^8.75 || ^9.0 || ^10.0", + "illuminate/filesystem": "^8.75 || ^9.0 || ^10.0", + "illuminate/support": "^8.75 || ^9.0 || ^10.0", + "illuminate/view": "^8.75 || ^9.0 || ^10.0", + "league/commonmark": "^2.4.1", + "php": "^7.4.15 || ^8.0.2" + }, + "require-dev": { + "graham-campbell/analyzer": "^4.1", + "graham-campbell/testbench": "^6.1", + "mockery/mockery": "^1.6.6", + "phpunit/phpunit": "^9.6.15 || ^10.4.2" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "GrahamCampbell\\Markdown\\MarkdownServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "GrahamCampbell\\Markdown\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Markdown Is A CommonMark Wrapper For Laravel", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Laravel Markdown", + "Laravel-Markdown", + "common mark", + "commonmark", + "framework", + "laravel", + "markdown" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Laravel-Markdown/issues", + "source": "https://github.com/GrahamCampbell/Laravel-Markdown/tree/v15.1.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/markdown", + "type": "tidelift" + } + ], + "time": "2023-12-04T02:43:19+00:00" + }, { "name": "graham-campbell/result-type", "version": "v1.1.2", @@ -2826,6 +2906,80 @@ ], "time": "2023-10-17T14:13:20+00:00" }, + { + "name": "livewire/livewire", + "version": "v3.3.3", + "source": { + "type": "git", + "url": "https://github.com/livewire/livewire.git", + "reference": "6dd3bec8c711cd792742be4620057637e261e6f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/livewire/livewire/zipball/6dd3bec8c711cd792742be4620057637e261e6f7", + "reference": "6dd3bec8c711cd792742be4620057637e261e6f7", + "shasum": "" + }, + "require": { + "illuminate/database": "^10.0", + "illuminate/support": "^10.0", + "illuminate/validation": "^10.0", + "league/mime-type-detection": "^1.9", + "php": "^8.1", + "symfony/http-kernel": "^6.2" + }, + "require-dev": { + "calebporzio/sushi": "^2.1", + "laravel/framework": "^10.0", + "laravel/prompts": "^0.1.6", + "mockery/mockery": "^1.3.1", + "orchestra/testbench": "^8.0", + "orchestra/testbench-dusk": "^8.0", + "phpunit/phpunit": "^9.0", + "psy/psysh": "@stable" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Livewire\\LivewireServiceProvider" + ], + "aliases": { + "Livewire": "Livewire\\Livewire" + } + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Livewire\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Caleb Porzio", + "email": "calebporzio@gmail.com" + } + ], + "description": "A front-end framework for Laravel.", + "support": { + "issues": "https://github.com/livewire/livewire/issues", + "source": "https://github.com/livewire/livewire/tree/v3.3.3" + }, + "funding": [ + { + "url": "https://github.com/livewire", + "type": "github" + } + ], + "time": "2023-12-20T05:34:05+00:00" + }, { "name": "lychee-org/nestedset", "version": "v8.0.0", @@ -4506,16 +4660,16 @@ }, { "name": "psr/http-message", - "version": "1.1", + "version": "2.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", - "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", "shasum": "" }, "require": { @@ -4524,7 +4678,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -4539,7 +4693,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP messages", @@ -4553,9 +4707,9 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/1.1" + "source": "https://github.com/php-fig/http-message/tree/2.0" }, - "time": "2023-04-04T09:50:52+00:00" + "time": "2023-04-04T09:54:51+00:00" }, { "name": "psr/log", @@ -8843,6 +8997,74 @@ ], "time": "2023-02-20T08:34:36+00:00" }, + { + "name": "fakerphp/faker", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", + "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "conflict": { + "fzaninotto/faker": "*" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", + "ext-intl": "*", + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" + }, + "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "v1.21-dev" + } + }, + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "support": { + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v1.23.0" + }, + "time": "2023-06-12T08:44:38+00:00" + }, { "name": "filp/whoops", "version": "2.15.4", @@ -10112,23 +10334,23 @@ }, { "name": "phpunit/php-code-coverage", - "version": "10.1.10", + "version": "10.1.11", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "599109c8ca6bae97b23482d557d2874c25a65e59" + "reference": "78c3b7625965c2513ee96569a4dbb62601784145" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/599109c8ca6bae97b23482d557d2874c25a65e59", - "reference": "599109c8ca6bae97b23482d557d2874c25a65e59", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/78c3b7625965c2513ee96569a4dbb62601784145", + "reference": "78c3b7625965c2513ee96569a4dbb62601784145", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.15", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1", "phpunit/php-file-iterator": "^4.0", "phpunit/php-text-template": "^3.0", @@ -10178,7 +10400,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.10" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.11" }, "funding": [ { @@ -10186,7 +10408,7 @@ "type": "github" } ], - "time": "2023-12-11T06:28:43+00:00" + "time": "2023-12-21T15:38:30+00:00" }, { "name": "phpunit/php-file-iterator", @@ -10836,16 +11058,16 @@ }, { "name": "sebastian/diff", - "version": "5.0.3", + "version": "5.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b" + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/912dc2fbe3e3c1e7873313cc801b100b6c68c87b", - "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/fbf413a49e54f6b9b17e12d900ac7f6101591b7f", + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f", "shasum": "" }, "require": { @@ -10858,7 +11080,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -10891,7 +11113,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.0" }, "funding": [ { @@ -10899,7 +11121,7 @@ "type": "github" } ], - "time": "2023-05-01T07:48:21+00:00" + "time": "2023-12-22T10:55:06+00:00" }, { "name": "sebastian/environment", diff --git a/config/app.php b/config/app.php index a9ad42350de..9dbeaaebd5c 100644 --- a/config/app.php +++ b/config/app.php @@ -30,6 +30,18 @@ 'env' => env('APP_ENV', 'production'), + /* + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines whether livewire front-end is enabled as it is + | currently under development. + | + */ + + 'livewire' => (bool) env('LIVEWIRE_ENABLED', true), + /* |-------------------------------------------------------------------------- | Application Debug Mode @@ -243,5 +255,16 @@ 'aliases' => Facade::defaultAliases()->merge([ 'DebugBar' => Barryvdh\Debugbar\Facades\Debugbar::class, 'Helpers' => App\Facades\Helpers::class, + // Aliases for easier access in the blade templates + 'Configs' => App\Models\Configs::class, + 'AlbumPolicy' => App\Policies\AlbumPolicy::class, + 'PhotoPolicy' => App\Policies\PhotoPolicy::class, + 'SettingsPolicy' => App\Policies\SettingsPolicy::class, + 'UserPolicy' => App\Policies\UserPolicy::class, + 'User' => App\Models\User::class, + 'SizeVariantType' => App\Enum\SizeVariantType::class, + 'FileStatus' => App\Enum\Livewire\FileStatus::class, + 'Params' => App\Contracts\Livewire\Params::class, + 'PhotoLayoutType' => \App\Enum\PhotoLayoutType::class, ])->toArray(), ]; diff --git a/config/filesystems.php b/config/filesystems.php index 472d7225589..b857a508b6b 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -44,8 +44,8 @@ // Lychee uses the disk "images" to store the media files 'images' => [ 'driver' => 'local', - 'root' => env('LYCHEE_UPLOADS', public_path('uploads/')), - 'url' => env('LYCHEE_UPLOADS_URL', 'uploads/'), + 'root' => env('LYCHEE_UPLOADS', public_path(env('LYCHEE_UPLOADS_DIR', 'uploads/'))), + 'url' => env('LYCHEE_UPLOADS_URL', env('APP_URL', 'http://localhost') . '/' . env('LYCHEE_UPLOADS_DIR', 'uploads/')), 'visibility' => env('LYCHEE_IMAGE_VISIBILITY', 'public'), 'directory_visibility' => env('LYCHEE_IMAGE_VISIBILITY', 'public'), 'permissions' => [ @@ -99,5 +99,11 @@ 'url' => env('LYCHEE_SYM_URL', 'sym'), 'visibility' => 'public', ], + + 'tmp-for-tests' => [ + 'driver' => 'local', + 'root' => storage_path('image-tmp/'), + 'visibility' => 'private', + ], ], ]; diff --git a/config/livewire.php b/config/livewire.php new file mode 100644 index 00000000000..dc056de88f7 --- /dev/null +++ b/config/livewire.php @@ -0,0 +1,158 @@ + 'App\\Livewire\\Components', + + /* + |--------------------------------------------------------------------------- + | View Path + |--------------------------------------------------------------------------- + | + | This value is used to specify where Livewire component Blade templates are + | stored when running file creation commands like `artisan make:livewire`. + | It is also used if you choose to omit a component's render() method. + | + */ + + 'view_path' => resource_path('views/livewire'), + + /* + |--------------------------------------------------------------------------- + | Layout + |--------------------------------------------------------------------------- + | The view that will be used as the layout when rendering a single component + | as an entire page via `Route::get('/post/create', CreatePost::class);`. + | In this case, the view returned by CreatePost will render into $slot. + | + */ + + 'layout' => 'components.layouts.app', + + /* + |--------------------------------------------------------------------------- + | Lazy Loading Placeholder + |--------------------------------------------------------------------------- + | Livewire allows you to lazy load components that would otherwise slow down + | the initial page load. Every component can have a custom placeholder or + | you can define the default placeholder view for all components below. + | + */ + + 'lazy_placeholder' => null, + + /* + |--------------------------------------------------------------------------- + | Temporary File Uploads + |--------------------------------------------------------------------------- + | + | Livewire handles file uploads by storing uploads in a temporary directory + | before the file is stored permanently. All file uploads are directed to + | a global endpoint for temporary storage. You may configure this below: + | + */ + + 'temporary_file_upload' => [ + 'disk' => null, // Example: 'local', 's3' | Default: 'default' + 'rules' => null, // Example: ['file', 'mimes:png,jpg'] | Default: ['required', 'file', 'max:12288'] (12MB) + 'directory' => null, // Example: 'tmp' | Default: 'livewire-tmp' + 'middleware' => null, // Example: 'throttle:5,1' | Default: 'throttle:60,1' + 'preview_mimes' => [ // Supported file types for temporary pre-signed file URLs... + 'png', 'gif', 'bmp', 'svg', 'wav', 'mp4', + 'mov', 'avi', 'wmv', 'mp3', 'm4a', + 'jpg', 'jpeg', 'mpga', 'webp', 'wma', + ], + 'max_upload_time' => 5, // Max duration (in minutes) before an upload is invalidated... + ], + + /* + |--------------------------------------------------------------------------- + | Render On Redirect + |--------------------------------------------------------------------------- + | + | This value determines if Livewire will run a component's `render()` method + | after a redirect has been triggered using something like `redirect(...)` + | Setting this to true will render the view once more before redirecting + | + */ + + 'render_on_redirect' => false, + + /* + |--------------------------------------------------------------------------- + | Eloquent Model Binding + |--------------------------------------------------------------------------- + | + | Previous versions of Livewire supported binding directly to eloquent model + | properties using wire:model by default. However, this behavior has been + | deemed too "magical" and has therefore been put under a feature flag. + | + */ + + 'legacy_model_binding' => false, + + /* + |--------------------------------------------------------------------------- + | Auto-inject Frontend Assets + |--------------------------------------------------------------------------- + | + | By default, Livewire automatically injects its JavaScript and CSS into the + | and of pages containing Livewire components. By disabling + | this behavior, you need to use @livewireStyles and @livewireScripts. + | + */ + + 'inject_assets' => true, + + /* + |--------------------------------------------------------------------------- + | Navigate (SPA mode) + |--------------------------------------------------------------------------- + | + | By adding `wire:navigate` to links in your Livewire application, Livewire + | will prevent the default link handling and instead request those pages + | via AJAX, creating an SPA-like effect. Configure this behavior here. + | + */ + + 'navigate' => [ + 'show_progress_bar' => true, + 'progress_bar_color' => '#2299dd', + ], + + /* + |--------------------------------------------------------------------------- + | HTML Morph Markers + |--------------------------------------------------------------------------- + | + | Livewire intelligently "morphs" existing HTML into the newly rendered HTML + | after each update. To make this process more reliable, Livewire injects + | "markers" into the rendered Blade surrounding @if, @class & @foreach. + | + */ + + 'inject_morph_markers' => true, + + /* + |--------------------------------------------------------------------------- + | Pagination Theme + |--------------------------------------------------------------------------- + | + | When enabling Livewire's pagination feature by using the `WithPagination` + | trait, Livewire will use Tailwind templates to render pagination views + | on the page. If you want Bootstrap CSS, you can specify: "bootstrap" + | + */ + + 'pagination_theme' => 'tailwind', +]; diff --git a/database/factories/AlbumFactory.php b/database/factories/AlbumFactory.php new file mode 100644 index 00000000000..e74325b045e --- /dev/null +++ b/database/factories/AlbumFactory.php @@ -0,0 +1,65 @@ + + */ +class AlbumFactory extends Factory +{ + use OwnedBy; + + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Album::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'title' => fake()->country() . ' ' . fake()->year(), + 'owner_id' => 1, + ]; + } + + /** + * Defines the parent of the create album. + * + * @param Album $parent + * + * @return self + */ + public function children_of(Album $parent): Factory + { + return $this->afterMaking( + fn (Album $album) => $parent->appendNode($album) + ) + ->afterCreating(function (Album $album) use ($parent) { + $parent->load('children'); + $parent->fixOwnershipOfChildren(); + }); + } + + /** + * Make the album root. + * + * @return self + */ + public function as_root(): self + { + return $this->afterMaking(function (Album $album) { + $album->makeRoot(); + }); + } +} diff --git a/database/factories/PhotoFactory.php b/database/factories/PhotoFactory.php new file mode 100644 index 00000000000..ebd1c46f66e --- /dev/null +++ b/database/factories/PhotoFactory.php @@ -0,0 +1,136 @@ + + */ +class PhotoFactory extends Factory +{ + use OwnedBy; + + private bool $with_size_variants = true; + + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Photo::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'title' => 'CR_' . fake()->numerify('####'), + 'description' => null, + 'tags' => '', + 'is_public' => false, + 'owner_id' => 1, + 'type' => 'image/jpeg', + 'iso' => '100', + 'aperture' => 'f/2', + 'make' => 'Canon', + 'model' => 'Canon EOS R', + 'lens' => 'EF200mm f/2L IS', + 'shutter' => '1/320 s', + 'focal' => '200mm', + 'taken_at' => now(), + 'taken_at_orig_tz' => null, + 'is_starred' => false, + 'album_id' => null, + 'checksum' => sha1(rand()), + 'original_checksum' => sha1(rand()), + 'license' => 'none', + 'created_at' => now(), + 'updated_at' => now(), + ]; + } + + /** + * Indicate that the user is suspended. + */ + public function without_size_variants(): Factory + { + $this->with_size_variants = false; + + return $this; + } + + /** + * Set a bunch of GPS coordinates (in Netherlands). + * + * @return array + */ + public function with_GPS_coordinates(): self + { + return $this->state(function (array $attributes) { + return [ + 'latitude' => '51.81738000', + 'longitude' => '5.86694306', + 'altitude' => '83.1000', + ]; + }); + } + + /** + * Set a bunch of GPS coordinates (in Netherlands). + * + * @return array + */ + public function with_subGPS_coordinates(): self + { + return $this->state(function (array $attributes) { + return [ + 'latitude' => '-51.81738000', + 'longitude' => '-5.86694306', + 'altitude' => '83.1000', + ]; + }); + } + + /** + * Set a bunch of GPS coordinates (in Netherlands). + * + * @return self + */ + public function in(Album $album): self + { + return $this->state(function (array $attributes) use ($album) { + return [ + 'album_id' => $album->id, + ]; + })->afterCreating(function (Photo $photo) { + $photo->load('album', 'owner'); + }); + } + + /** + * Configure the model factory. + * We create 7 random Size Variants. + */ + public function configure(): static + { + return $this->afterCreating(function (Photo $photo) { + // Creates the size variants + if ($this->with_size_variants) { + SizeVariant::factory()->count(7)->allSizeVariants()->create(['photo_id' => $photo->id]); + $photo->fresh(); + $photo->load('size_variants'); + } + + // Reset the value if it was disabled. + $this->with_size_variants = true; + }); + } +} diff --git a/database/factories/SizeVariantFactory.php b/database/factories/SizeVariantFactory.php new file mode 100644 index 00000000000..e2a0bcc097a --- /dev/null +++ b/database/factories/SizeVariantFactory.php @@ -0,0 +1,57 @@ + + */ +class SizeVariantFactory extends Factory +{ + private const H = 360; + private const W = 540; + private const FS = 141011; + + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = SizeVariant::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + $hash = fake()->sha1(); + $url = substr($hash, 0, 2) . '/' . substr($hash, 2, 2) . '/' . substr($hash, 4) . '.jpg'; + + return ['type' => SizeVariantType::ORIGINAL, 'short_path' => SizeVariantType::ORIGINAL->name() . '/' . $url, 'ratio' => 1.5, 'height' => self::H * 8, 'width' => self::W * 8, 'filesize' => 64 * self::FS]; + } + + /** + * Creates 7 size variant with correct type and size,. + */ + public function allSizeVariants(): Factory + { + $hash = fake()->sha1(); + $url = substr($hash, 0, 2) . '/' . substr($hash, 2, 2) . '/' . substr($hash, 4) . '.jpg'; + + return $this->state(new Sequence( + ['type' => SizeVariantType::ORIGINAL, 'short_path' => SizeVariantType::ORIGINAL->name() . '/' . $url, 'ratio' => 1.5, 'height' => self::H * 8, 'width' => self::W * 8, 'filesize' => 64 * self::FS], + ['type' => SizeVariantType::MEDIUM2X, 'short_path' => SizeVariantType::MEDIUM2X->name() . '/' . $url, 'ratio' => 1.5, 'height' => self::H * 6, 'width' => self::W * 6, 'filesize' => 36 * self::FS], + ['type' => SizeVariantType::MEDIUM, 'short_path' => SizeVariantType::MEDIUM->name() . '/' . $url, 'ratio' => 1.5, 'height' => self::H * 3, 'width' => self::W * 3, 'filesize' => 9 * self::FS], + ['type' => SizeVariantType::SMALL2X, 'short_path' => SizeVariantType::SMALL2X->name() . '/' . $url, 'ratio' => 1.5, 'height' => self::H * 2, 'width' => self::W * 2, 'filesize' => 4 * self::FS], + ['type' => SizeVariantType::SMALL, 'short_path' => SizeVariantType::SMALL->name() . '/' . $url, 'ratio' => 1.5, 'height' => self::H, 'width' => self::W, 'filesize' => self::FS], + ['type' => SizeVariantType::THUMB2X, 'short_path' => SizeVariantType::THUMB2X->name() . '/' . $url, 'ratio' => 1.5, 'height' => 400, 'width' => 400, 'filesize' => 160_000], + ['type' => SizeVariantType::THUMB, 'short_path' => SizeVariantType::THUMB->name() . '/' . $url, 'ratio' => 1.5, 'height' => 200, 'width' => 200, 'filesize' => 40_000], + )); + } +} diff --git a/database/factories/Traits/OwnedBy.php b/database/factories/Traits/OwnedBy.php new file mode 100644 index 00000000000..e421626ebdb --- /dev/null +++ b/database/factories/Traits/OwnedBy.php @@ -0,0 +1,26 @@ +state(function (array $attributes) use ($user) { + return [ + 'owner_id' => $user->id, + ]; + }); + } +} \ No newline at end of file diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index 36125fd748e..df30138c27c 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -4,8 +4,10 @@ use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; -use Illuminate\Support\Str; +/** + * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\User> + */ class UserFactory extends Factory { /** @@ -18,16 +20,59 @@ class UserFactory extends Factory /** * Define the model's default state. * - * @return array + * @return array */ - public function definition() + public function definition(): array { return [ - 'name' => $this->faker->name, - 'email' => $this->faker->unique()->safeEmail, - 'email_verified_at' => now(), + 'username' => fake()->name(), 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password - 'remember_token' => Str::random(10), + 'may_administrate' => false, + 'may_upload' => false, + 'email' => fake()->email(), + 'token' => null, + 'remember_token' => null, + 'may_edit_own_settings' => true, ]; } + + /** + * Indicate that user is Admin. + * + * @return Factory + */ + public function may_administrate(): Factory + { + return $this->state(function (array $attributes) { + return [ + 'may_administrate' => true, + ]; + }); + } + + /** + * Indicate that the user has upload rights. + * + * @return Factory + */ + public function may_upload(): Factory + { + return $this->state(function (array $attributes) { + return [ + 'may_upload' => true, + ]; + }); + } + + /** + * Indicates the user is locked. + * + * @return Factory + */ + public function locked(): Factory + { + return $this->state(function (array $attributes) { + return ['may_edit_own_settings' => false]; + }); + } } diff --git a/database/migrations/2023_05_04_193000_add_use_last_modified_date_when_no_exit_date_setting.php b/database/migrations/2023_05_04_193000_add_use_last_modified_date_when_no_exit_date_setting.php index 5d99c451047..fdd150a4bf1 100644 --- a/database/migrations/2023_05_04_193000_add_use_last_modified_date_when_no_exit_date_setting.php +++ b/database/migrations/2023_05_04_193000_add_use_last_modified_date_when_no_exit_date_setting.php @@ -1,35 +1,19 @@ insert([ - 'key' => 'use_last_modified_date_when_no_exif_date', - 'value' => '0', - 'cat' => 'Image Processing', - 'type_range' => BOOL, - 'confidentiality' => '0', - 'description' => 'Use the file\'s last modified time when Exif data has no creation date', - ]); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - DB::table('configs')->where('key', '=', 'use_last_modified_date_when_no_exif_date')->delete(); + return [ + [ + 'key' => 'use_last_modified_date_when_no_exif_date', + 'value' => '0', + 'cat' => 'Image Processing', + 'type_range' => '0|1', + 'confidentiality' => '0', + 'description' => 'Use the file\'s last modified time when Exif data has no creation date', + ], + ]; } }; diff --git a/database/migrations/2023_09_24_110932_add_date_display_configurations.php b/database/migrations/2023_09_24_110932_add_date_display_configurations.php new file mode 100644 index 00000000000..833bb304243 --- /dev/null +++ b/database/migrations/2023_09_24_110932_add_date_display_configurations.php @@ -0,0 +1,70 @@ + 'date_format_photo_thumb', + 'value' => 'M j, Y, g:i:s A e', + 'confidentiality' => '0', + 'cat' => self::GALLERY, + 'type_range' => self::STRING_REQ, + 'description' => 'Format the date for the photo thumbs. See https://www.php.net/manual/en/datetime.format.php', + ], + [ + 'key' => 'date_format_photo_overlay', + 'value' => 'M j, Y, g:i:s A e', + 'confidentiality' => '0', + 'cat' => self::GALLERY, + 'type_range' => self::STRING_REQ, + 'description' => 'Format the date for the photo overlay. See https://www.php.net/manual/en/datetime.format.php', + ], + [ + 'key' => 'date_format_sidebar_uploaded', + 'value' => 'M j, Y, g:i:s A e', + 'confidentiality' => '0', + 'cat' => self::GALLERY, + 'type_range' => self::STRING_REQ, + 'description' => 'Format the upload date for the photo sidebar. See https://www.php.net/manual/en/datetime.format.php', + ], + [ + 'key' => 'date_format_sidebar_taken_at', + 'value' => 'M j, Y, g:i:s A e', + 'confidentiality' => '0', + 'cat' => self::GALLERY, + 'type_range' => self::STRING_REQ, + 'description' => 'Format the capture date for the photo sidebar. See https://www.php.net/manual/en/datetime.format.php', + ], + [ + 'key' => 'date_format_hero_min_max', + 'value' => 'F Y', + 'confidentiality' => '0', + 'cat' => self::GALLERY, + 'type_range' => self::STRING_REQ, + 'description' => 'Format the date for the album hero. See https://www.php.net/manual/en/datetime.format.php', + ], + [ + 'key' => 'date_format_hero_created_at', + 'value' => 'M j, Y, g:i:s A T', + 'confidentiality' => '0', + 'cat' => self::GALLERY, + 'type_range' => self::STRING_REQ, + 'description' => 'Format the created date for the album details. See https://www.php.net/manual/en/datetime.format.php', + ], + [ + 'key' => 'date_format_album_thumb', + 'value' => 'M Y', + 'confidentiality' => '0', + 'cat' => self::GALLERY, + 'type_range' => self::STRING_REQ, + 'description' => 'Format the date for the album thumbs. See https://www.php.net/manual/en/datetime.format.php', + ], + ]; + } +}; diff --git a/database/migrations/2023_09_24_223901_add_config_livewire_chunk_size.php b/database/migrations/2023_09_24_223901_add_config_livewire_chunk_size.php new file mode 100644 index 00000000000..b4b0218b9ad --- /dev/null +++ b/database/migrations/2023_09_24_223901_add_config_livewire_chunk_size.php @@ -0,0 +1,22 @@ + 'upload_chunk_size', + 'value' => '0', + 'confidentiality' => '0', + 'cat' => self::IMAGE_PROCESSING, + 'type_range' => self::INT, + 'description' => 'Size of chunks when uploading in bytes: 0 is auto', + ], + ]; + } +}; diff --git a/database/migrations/2023_09_24_233717_refactor_type_layout_livewire.php b/database/migrations/2023_09_24_233717_refactor_type_layout_livewire.php new file mode 100644 index 00000000000..854949f1ef1 --- /dev/null +++ b/database/migrations/2023_09_24_233717_refactor_type_layout_livewire.php @@ -0,0 +1,36 @@ +where('key', '=', 'layout')->update([ + 'type_range' => self::SQUARE . '|' . self::JUSTIFIED . '|' . self::MASONRY . '|' . self::GRID, + 'description' => 'Layout for pictures', + ], + ); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + DB::table('configs')->where('key', '=', 'layout')->update([ + 'type_range' => self::SQUARE . '|' . self::JUSTIFIED . '|' . self::UNJUSTIFIED, + 'description' => 'Layout for pictures', + ], + ); + } +}; diff --git a/database/migrations/2023_09_25_123925_config_blur_nsfw.php b/database/migrations/2023_09_25_123925_config_blur_nsfw.php new file mode 100644 index 00000000000..d0e3f38ce22 --- /dev/null +++ b/database/migrations/2023_09_25_123925_config_blur_nsfw.php @@ -0,0 +1,22 @@ + 'nsfw_banner_blur_backdrop', + 'value' => '0', + 'confidentiality' => '0', + 'cat' => self::MOD_NSFW, + 'type_range' => self::BOOL, + 'description' => 'Blur background instead of dark red opaque.', + ], + ]; + } +}; diff --git a/database/migrations/2023_12_18_232500_config_pagination_search_limit.php b/database/migrations/2023_12_18_232500_config_pagination_search_limit.php new file mode 100644 index 00000000000..f1605ef86ea --- /dev/null +++ b/database/migrations/2023_12_18_232500_config_pagination_search_limit.php @@ -0,0 +1,23 @@ + 'search_pagination_limit', + 'value' => '1000', + 'confidentiality' => '0', + 'cat' => self::MOD_SEARCH, + 'type_range' => self::POSITIVE, + 'description' => 'Number of results to display per page.', + ], + ]; + } +}; diff --git a/database/migrations/2023_12_19_115547_search_characters_limit.php b/database/migrations/2023_12_19_115547_search_characters_limit.php new file mode 100644 index 00000000000..f0ecc93d301 --- /dev/null +++ b/database/migrations/2023_12_19_115547_search_characters_limit.php @@ -0,0 +1,23 @@ + 'search_minimum_length_required', + 'value' => '4', + 'confidentiality' => '0', + 'cat' => self::MOD_SEARCH, + 'type_range' => self::POSITIVE, + 'description' => 'Number of characters required to trigger search (default: 4).', + ], + ]; + } +}; diff --git a/database/migrations/2023_12_19_122408_add_positive_requirements.php b/database/migrations/2023_12_19_122408_add_positive_requirements.php index 13fc1509034..0155379c1ce 100644 --- a/database/migrations/2023_12_19_122408_add_positive_requirements.php +++ b/database/migrations/2023_12_19_122408_add_positive_requirements.php @@ -16,6 +16,8 @@ 'swipe_tolerance_x', 'swipe_tolerance_y', 'log_max_num_line', + 'search_pagination_limit', + 'search_minimum_length_required', ]; /** diff --git a/database/migrations/2023_12_20_180854_add_setting_height_width_gallery.php b/database/migrations/2023_12_20_180854_add_setting_height_width_gallery.php new file mode 100644 index 00000000000..749499fc437 --- /dev/null +++ b/database/migrations/2023_12_20_180854_add_setting_height_width_gallery.php @@ -0,0 +1,58 @@ + 'photo_layout_justified_row_height', + 'value' => '320', + 'confidentiality' => '0', + 'cat' => self::GALLERY, + 'type_range' => self::POSITIVE, + 'description' => 'Heights of rows in Justified photo layout', + ], + [ + // md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-6 2xl:grid-cols-7 + 'key' => 'photo_layout_masonry_column_width', + 'value' => '300', + 'confidentiality' => '0', + 'cat' => self::GALLERY, + 'type_range' => self::POSITIVE, + 'description' => 'Minimum column width in Masonry photo layout.', + ], + [ + // md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-6 2xl:grid-cols-7 + 'key' => 'photo_layout_grid_column_width', + 'value' => '250', + 'confidentiality' => '0', + 'cat' => self::GALLERY, + 'type_range' => self::POSITIVE, + 'description' => 'Minimum column width in Grid photo layout.', + ], + [ + // md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-6 2xl:grid-cols-7 + 'key' => 'photo_layout_square_column_width', + 'value' => '200', + 'confidentiality' => '0', + 'cat' => self::GALLERY, + 'type_range' => self::POSITIVE, + 'description' => 'Minimum column width in Square photo layout.', + ], + [ + 'key' => 'photo_layout_gap', + 'value' => '12', + 'confidentiality' => '0', + 'cat' => self::GALLERY, + 'type_range' => self::POSITIVE, + 'description' => 'Gap between columns in Square/Masonry/Grid photo layout.', + ], + ]; + } +}; diff --git a/database/migrations/2023_12_23_160356_bump_version050000.php b/database/migrations/2023_12_23_160356_bump_version050000.php new file mode 100644 index 00000000000..ff784b8cb10 --- /dev/null +++ b/database/migrations/2023_12_23_160356_bump_version050000.php @@ -0,0 +1,24 @@ +where('key', 'version')->update(['value' => '050000']); + DB::table('configs')->where('value', '=', 'Lychee v4')->update(['value' => 'Lychee v5']); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + DB::table('configs')->where('key', 'version')->update(['value' => '041300']); + DB::table('configs')->where('value', '=', 'Lychee v5')->update(['value' => 'Lychee v4']); + } +}; diff --git a/lang/cz/lychee.php b/lang/cz/lychee.php index c7ad4546bd3..fd81a2c0254 100644 --- a/lang/cz/lychee.php +++ b/lang/cz/lychee.php @@ -7,6 +7,7 @@ 'PASSWORD' => 'Heslo', 'ENTER' => 'Vložit', 'CANCEL' => 'Storno', + 'CONFIRM' => 'Confirm', 'SIGN_IN' => 'Příhlásit se', 'CLOSE' => 'Zavřít', 'SETTINGS' => 'Nastavení', @@ -16,6 +17,7 @@ 'GALLERY' => 'Gallery', 'USERS' => 'Uživatelé', + 'PROFILE' => 'Profile', 'CREATE' => 'Create', 'REMOVE' => 'Remove', 'SHARE' => 'Share', @@ -28,6 +30,7 @@ 'ABOUT_LYCHEE' => 'O Lychee', 'DIAGNOSTICS' => 'Diagnostika', 'DIAGNOSTICS_GET_SIZE' => 'Request space usage', + 'JOBS' => 'Show job history', 'LOGS' => 'Protokoly', 'SIGN_OUT' => 'Odhlásit se', 'UPDATE_AVAILABLE' => 'Update je k dispozici!', @@ -280,6 +283,7 @@ 'ERROR_MAP_DEACTIVATED' => 'Funkce Mapy byla v nastavení deaktivována.', 'ERROR_SEARCH_DEACTIVATED' => 'Funkce hledání byla v nastavení deaktivována.', 'SUCCESS' => 'OK', + 'CHANGE_SUCCESS' => 'Change successful.', 'RETRY' => 'Opakovat', 'OVERRIDE' => 'Override', 'TAGS_OVERRIDE_INFO' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', @@ -398,6 +402,8 @@ 'LAYOUT_TYPE' => 'Vzhled fotografií:', 'LAYOUT_SQUARES' => 'Čtvercové náhledy', 'LAYOUT_JUSTIFIED' => 'V poměru stran, zarovnáno', + 'LAYOUT_MASONRY' => 'V poměru stran, masonry', + 'LAYOUT_GRID' => 'V poměru stran, grid', 'LAYOUT_UNJUSTIFIED' => 'V poměru stran, nezarovnáno', 'SET_LAYOUT' => 'Změnit vzhled', @@ -406,6 +412,9 @@ 'SETTINGS_SUCCESS_NSFW_VISIBLE' => 'Default sensitive album visibility updated with success.', 'NSFW_BANNER' => '

Sensitive content

This album contains sensitive content which some people may find offensive or disturbing.

Tap to consent.

', + 'NSFW_HEADER' => 'Sensitive content', + 'NSFW_EXPLANATION' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'TAP_CONSENT' => 'Tap to consent.', 'VIEW_NO_RESULT' => 'Bez výsledku', 'VIEW_NO_PUBLIC_ALBUMS' => 'Veřejná alba nejsou k dispozici', diff --git a/lang/de/lychee.php b/lang/de/lychee.php index 514bf4c18ab..056a06a5ee6 100644 --- a/lang/de/lychee.php +++ b/lang/de/lychee.php @@ -7,6 +7,7 @@ 'PASSWORD' => 'Kennwort', 'ENTER' => 'Eingabe', 'CANCEL' => 'Abbrechen', + 'CONFIRM' => 'Bestätigen', 'SIGN_IN' => 'Anmelden', 'CLOSE' => 'Schließen', 'SETTINGS' => 'Einstellungen', @@ -16,6 +17,7 @@ 'GALLERY' => 'Gallerie', 'USERS' => 'Benutzer', + 'PROFILE' => 'Profil', 'CREATE' => 'Erstellen', 'REMOVE' => 'Entfernen', 'SHARE' => 'Freigeben', @@ -28,6 +30,7 @@ 'ABOUT_LYCHEE' => 'Über Lychee', 'DIAGNOSTICS' => 'Diagnose', 'DIAGNOSTICS_GET_SIZE' => 'Speicherplatz-Nutzung abrufen', + 'JOBS' => 'Job-Verlauf anzeigen', 'LOGS' => 'Logs anzeigen', 'SIGN_OUT' => 'Abmelden', 'UPDATE_AVAILABLE' => 'Update verfügbar!', @@ -280,6 +283,7 @@ 'ERROR_MAP_DEACTIVATED' => 'Karten sind unter Einstellungen deaktiviert worden.', 'ERROR_SEARCH_DEACTIVATED' => 'Suchfunktion wurde unter Einstellungen deaktiviert.', 'SUCCESS' => 'OK', + 'CHANGE_SUCCESS' => 'Änderung erfolgreich.', 'RETRY' => 'Noch einmal versuchen', 'OVERRIDE' => 'Überschreiben', 'TAGS_OVERRIDE_INFO' => 'Wenn das nicht aktiviert ist, werden die Tags zu den vorhandenen Tags des Fotos hinzugefügt.', @@ -398,6 +402,8 @@ 'LAYOUT_TYPE' => 'Layout des Fotos:', 'LAYOUT_SQUARES' => 'Quadratische Miniaturansichten', 'LAYOUT_JUSTIFIED' => 'Seitenverhältnis beibehalten, Blocksatz', + 'LAYOUT_MASONRY' => 'Seitenverhältnis beibehalten, masonry', + 'LAYOUT_GRID' => 'Seitenverhältnis beibehalten, Gitter', 'LAYOUT_UNJUSTIFIED' => 'Seitenverhältnis beibehalten, Flattersatz', 'SET_LAYOUT' => 'Ausgerichtetes Layout benutzen:', @@ -406,6 +412,9 @@ 'SETTINGS_SUCCESS_NSFW_VISIBLE' => 'Standardmäßige Sichtbarkeit wurde erfolgreich geändert.', 'NSFW_BANNER' => '

Krititscher Inhalt

Diese Album enthält krititsche Inhalte, die manche Personen anstößig oder verstörend finden könnten.

Zur Einwilligung klicken.

', + 'NSFW_HEADER' => 'Krititscher Inhalt', + 'NSFW_EXPLANATION' => 'Diese Album enthält krititsche Inhalte, die manche Personen anstößig oder verstörend finden könnten.', + 'TAP_CONSENT' => 'Zur Einwilligung klicken.', 'VIEW_NO_RESULT' => 'Keine Ergebnisse', 'VIEW_NO_PUBLIC_ALBUMS' => 'Keine öffentlichen Alben', diff --git a/lang/el/lychee.php b/lang/el/lychee.php index 4c8b3b9b2cb..f76cb8461af 100644 --- a/lang/el/lychee.php +++ b/lang/el/lychee.php @@ -7,6 +7,7 @@ 'PASSWORD' => 'Κωδικός πρόσβασης', 'ENTER' => 'Είσοδος', 'CANCEL' => 'Άκυρο', + 'CONFIRM' => 'Confirm', 'SIGN_IN' => 'Συνδεθείτε', 'CLOSE' => 'Κλείσιμο', 'SETTINGS' => 'Ρυθμίσεις', @@ -16,6 +17,7 @@ 'GALLERY' => 'Gallery', 'USERS' => 'Χρήστες', + 'PROFILE' => 'Profile', 'CREATE' => 'Create', 'REMOVE' => 'Remove', 'SHARE' => 'Share', @@ -28,6 +30,7 @@ 'ABOUT_LYCHEE' => 'Περί Lychee', 'DIAGNOSTICS' => 'Διαγνωστικά', 'DIAGNOSTICS_GET_SIZE' => 'Request space usage', + 'JOBS' => 'Show job history', 'LOGS' => 'Εμφάνιση Καταγραφών', 'SIGN_OUT' => 'Αποσύνδεση', 'UPDATE_AVAILABLE' => 'Διαθέσιμη Ενημέρωση!', @@ -280,6 +283,7 @@ 'ERROR_MAP_DEACTIVATED' => 'Map functionality has been deactivated under settings.', 'ERROR_SEARCH_DEACTIVATED' => 'Search functionality has been deactivated under settings.', 'SUCCESS' => 'OK', + 'CHANGE_SUCCESS' => 'Change successful.', 'RETRY' => 'Προσπάθεια ξανά', 'OVERRIDE' => 'Override', 'TAGS_OVERRIDE_INFO' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', @@ -398,6 +402,8 @@ 'LAYOUT_TYPE' => 'Διάταξη φωτογραφιών:', 'LAYOUT_SQUARES' => 'Τετράγωνες μικρογραφίες', 'LAYOUT_JUSTIFIED' => 'Με ίσες αναλογίες', + 'LAYOUT_MASONRY' => 'Με ίσες masonry', + 'LAYOUT_GRID' => 'Με ίσες grid', 'LAYOUT_UNJUSTIFIED' => 'Με άνισες αναλογίες', 'SET_LAYOUT' => 'Αλλαγή διάταξης', @@ -406,6 +412,9 @@ 'SETTINGS_SUCCESS_NSFW_VISIBLE' => 'Default sensitive album visibility updated with success.', 'NSFW_BANNER' => '

Sensitive content

This album contains sensitive content which some people may find offensive or disturbing.

Tap to consent.

', + 'NSFW_HEADER' => 'Sensitive content', + 'NSFW_EXPLANATION' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'TAP_CONSENT' => 'Tap to consent.', 'VIEW_NO_RESULT' => 'Κανένα αποτέλεσμα', 'VIEW_NO_PUBLIC_ALBUMS' => 'Κανένα δημόσιο λεύκωμα', diff --git a/lang/en/lychee.php b/lang/en/lychee.php index fe52f678577..fd6a1c8eb08 100644 --- a/lang/en/lychee.php +++ b/lang/en/lychee.php @@ -7,6 +7,7 @@ 'PASSWORD' => 'Password', 'ENTER' => 'Enter', 'CANCEL' => 'Cancel', + 'CONFIRM' => 'Confirm', 'SIGN_IN' => 'Sign In', 'CLOSE' => 'Close', 'SETTINGS' => 'Settings', @@ -16,6 +17,7 @@ 'GALLERY' => 'Gallery', 'USERS' => 'Users', + 'PROFILE' => 'Profile', 'CREATE' => 'Create', 'REMOVE' => 'Remove', 'SHARE' => 'Share', @@ -28,6 +30,7 @@ 'ABOUT_LYCHEE' => 'About Lychee', 'DIAGNOSTICS' => 'Diagnostics', 'DIAGNOSTICS_GET_SIZE' => 'Request space usage', + 'JOBS' => 'Show job history', 'LOGS' => 'Show Logs', 'SIGN_OUT' => 'Sign Out', 'UPDATE_AVAILABLE' => 'Update available!', @@ -280,6 +283,7 @@ 'ERROR_MAP_DEACTIVATED' => 'Map functionality has been deactivated under settings.', 'ERROR_SEARCH_DEACTIVATED' => 'Search functionality has been deactivated under settings.', 'SUCCESS' => 'OK', + 'CHANGE_SUCCESS' => 'Change successful.', 'RETRY' => 'Retry', 'OVERRIDE' => 'Override', 'TAGS_OVERRIDE_INFO' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', @@ -352,7 +356,7 @@ 'SORT_CHANGE' => 'Change Sorting', 'DROPBOX_TITLE' => 'Set Dropbox Key', - 'DROPBOX_TEXT' => "In order to import photos from your Dropbox, you need a valid drop-ins app key from their website. Generate yourself a personal key and enter it below:", + 'DROPBOX_TEXT' => "In order to import photos from your Dropbox, you need a valid drop-ins app key from their website. Generate yourself a personal key and enter it below:", 'LANG_TEXT' => 'Change Lychee language for:', 'LANG_TITLE' => 'Change Language', @@ -398,6 +402,8 @@ 'LAYOUT_TYPE' => 'Layout of photos:', 'LAYOUT_SQUARES' => 'Square thumbnails', 'LAYOUT_JUSTIFIED' => 'With aspect, justified', + 'LAYOUT_MASONRY' => 'With aspect, masonry', + 'LAYOUT_GRID' => 'With aspect, grid', 'LAYOUT_UNJUSTIFIED' => 'With aspect, unjustified', 'SET_LAYOUT' => 'Change layout', @@ -406,6 +412,9 @@ 'SETTINGS_SUCCESS_NSFW_VISIBLE' => 'Default sensitive album visibility updated with success.', 'NSFW_BANNER' => '

Sensitive content

This album contains sensitive content which some people may find offensive or disturbing.

Tap to consent.

', + 'NSFW_HEADER' => 'Sensitive content', + 'NSFW_EXPLANATION' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'TAP_CONSENT' => 'Tap to consent.', 'VIEW_NO_RESULT' => 'No results', 'VIEW_NO_PUBLIC_ALBUMS' => 'No public albums', diff --git a/lang/es/lychee.php b/lang/es/lychee.php index 40f2ed59af9..beb23e413c6 100644 --- a/lang/es/lychee.php +++ b/lang/es/lychee.php @@ -7,6 +7,7 @@ 'PASSWORD' => 'Contraseña', 'ENTER' => 'Entrar', 'CANCEL' => 'Cancelar', + 'CONFIRM' => 'Confirm', 'SIGN_IN' => 'Iniciar sesión', 'CLOSE' => 'Cerrar', 'SETTINGS' => 'Configuraciones', @@ -16,6 +17,7 @@ 'GALLERY' => 'Galería', 'USERS' => 'Usuarios', + 'PROFILE' => 'Profile', 'CREATE' => 'Crear', 'REMOVE' => 'Remove', 'SHARE' => 'Share', @@ -28,6 +30,7 @@ 'ABOUT_LYCHEE' => 'Acerca de Lychee', 'DIAGNOSTICS' => 'Diagnóstico', 'DIAGNOSTICS_GET_SIZE' => 'Pedir uso de espacio', + 'JOBS' => 'Show job history', 'LOGS' => 'Mostrar Registros', 'SIGN_OUT' => 'Cerrar Sesión', 'UPDATE_AVAILABLE' => '¡Actualización disponible!', @@ -280,6 +283,7 @@ 'ERROR_MAP_DEACTIVATED' => 'La funcionalidad del mapa se ha desactivado en la configuración.', 'ERROR_SEARCH_DEACTIVATED' => 'La función de búsqueda se ha desactivado en la configuración.', 'SUCCESS' => 'Vale', + 'CHANGE_SUCCESS' => 'Change successful.', 'RETRY' => 'Procesar de nuevo', 'OVERRIDE' => 'Override', 'TAGS_OVERRIDE_INFO' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', @@ -398,6 +402,8 @@ 'LAYOUT_TYPE' => 'Diseño de fotos:', 'LAYOUT_SQUARES' => 'Miniaturas cuadradas', 'LAYOUT_JUSTIFIED' => 'Con aspecto justificado', + 'LAYOUT_MASONRY' => 'Con aspecto, masonry', + 'LAYOUT_GRID' => 'Con aspecto, grid', 'LAYOUT_UNJUSTIFIED' => 'Con aspecto, injustificado', 'SET_LAYOUT' => 'Cambia el diseño', @@ -406,6 +412,9 @@ 'SETTINGS_SUCCESS_NSFW_VISIBLE' => 'Visibilidad predeterminada del álbum sensible actualizada con éxito.', 'NSFW_BANNER' => '

Sensitive content

This album contains sensitive content which some people may find offensive or disturbing.

Tap to consent.

', + 'NSFW_HEADER' => 'Sensitive content', + 'NSFW_EXPLANATION' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'TAP_CONSENT' => 'Tap to consent.', 'VIEW_NO_RESULT' => 'No hay resultados', 'VIEW_NO_PUBLIC_ALBUMS' => 'Sin álbumes públicos', diff --git a/lang/fr/lychee.php b/lang/fr/lychee.php index 413dab30ef6..bddd4ada718 100644 --- a/lang/fr/lychee.php +++ b/lang/fr/lychee.php @@ -7,6 +7,7 @@ 'PASSWORD' => 'Mot de passe', 'ENTER' => 'OK', 'CANCEL' => 'Annuler', + 'CONFIRM' => 'Confirmer', 'SIGN_IN' => 'Connexion', 'CLOSE' => 'Fermer', 'SETTINGS' => 'Paramètres', @@ -16,6 +17,7 @@ 'GALLERY' => 'Gallery', 'USERS' => 'Utilisateurs', + 'PROFILE' => 'Profil', 'CREATE' => 'Créer', 'REMOVE' => 'Retirer', 'SHARE' => 'Partager', @@ -28,6 +30,7 @@ 'ABOUT_LYCHEE' => 'À propos de Lychee', 'DIAGNOSTICS' => 'Diagnostiques', 'DIAGNOSTICS_GET_SIZE' => 'Calculer l’espace utilisé', + 'JOBS' => 'Afficher l’historique des Jobs', 'LOGS' => 'Afficher les logs', 'SIGN_OUT' => 'Déconnexion', 'UPDATE_AVAILABLE' => 'Une mise-à-jour est disponible !', @@ -280,6 +283,7 @@ 'ERROR_MAP_DEACTIVATED' => 'La carte a été désactivée dans les paramètres.', 'ERROR_SEARCH_DEACTIVATED' => 'La recherche a été désactivée dans les paramètres.', 'SUCCESS' => 'OK', + 'CHANGE_SUCCESS' => 'Changement réussi.', 'RETRY' => 'Réessayer', 'OVERRIDE' => 'Override', 'TAGS_OVERRIDE_INFO' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', @@ -398,6 +402,8 @@ 'LAYOUT_TYPE' => 'Affichage des photos :', 'LAYOUT_SQUARES' => 'Miniatures carrées', 'LAYOUT_JUSTIFIED' => 'En proportions, justifiées', + 'LAYOUT_MASONRY' => 'En proportion, Maçonnerie', + 'LAYOUT_GRID' => 'En proportion, Grille', 'LAYOUT_UNJUSTIFIED' => 'En proportions, non-justifiées', 'SET_LAYOUT' => 'Changer l’affichage', @@ -406,6 +412,9 @@ 'SETTINGS_SUCCESS_NSFW_VISIBLE' => 'Visibilé par default des albums sensible mis à jour.', 'NSFW_BANNER' => '

Sensitive content

This album contains sensitive content which some people may find offensive or disturbing.

Tap to consent.

', + 'NSFW_HEADER' => 'Contenu Sensible', + 'NSFW_EXPLANATION' => 'Cet album contient des contenus sensible que certaine personnes peuvent trouver chocant ou troublant.', + 'TAP_CONSENT' => 'Tap pour consentir.', 'VIEW_NO_RESULT' => 'Aucun résultat', 'VIEW_NO_PUBLIC_ALBUMS' => 'Aucun album public', diff --git a/lang/hu/lychee.php b/lang/hu/lychee.php index 7bd89d6bfa1..ddf620e165d 100644 --- a/lang/hu/lychee.php +++ b/lang/hu/lychee.php @@ -5,6 +5,7 @@ 'PASSWORD' => 'Jelszó', 'ENTER' => 'Belépés', 'CANCEL' => 'Mégse', + 'CONFIRM' => 'Confirm', 'SIGN_IN' => 'Bejelentkezés', 'CLOSE' => 'Bezárás', 'SETTINGS' => 'Beállítások', @@ -14,6 +15,7 @@ 'GALLERY' => 'Galéria', 'USERS' => 'Felhasználók', + 'PROFILE' => 'Profile', 'CREATE' => 'Létrehozás', 'REMOVE' => 'Törlés', 'SHARE' => 'Megosztás', @@ -26,6 +28,7 @@ 'ABOUT_LYCHEE' => 'A Lychee-ről', 'DIAGNOSTICS' => 'Diagnosztika', 'DIAGNOSTICS_GET_SIZE' => 'Térhasználat lekérése', + 'JOBS' => 'Show job history', 'LOGS' => 'Naplók megtekintése', 'SIGN_OUT' => 'Kijelentkezés', 'UPDATE_AVAILABLE' => 'Frissítés elérhető!', @@ -278,6 +281,7 @@ 'ERROR_MAP_DEACTIVATED' => 'Térkép funkció letiltva a beállításokban.', 'ERROR_SEARCH_DEACTIVATED' => 'Keresési funkció letiltva a beállításokban.', 'SUCCESS' => 'Rendben', + 'CHANGE_SUCCESS' => 'Change successful.', 'RETRY' => 'Újra', 'OVERRIDE' => 'Felülbírálás', 'TAGS_OVERRIDE_INFO' => 'Ha ez nincs bejelölve, a címkéket hozzáadják a fénykép meglévő címkéihez.', @@ -396,6 +400,8 @@ 'LAYOUT_TYPE' => 'Fényképek elrendezése:', 'LAYOUT_SQUARES' => 'Négyzet alakú bélyegképek', 'LAYOUT_JUSTIFIED' => 'Képaránnyal, igazított', + 'LAYOUT_MASONRY' => 'Képaránnyal, masonry', + 'LAYOUT_GRID' => 'Képaránnyal, grid', 'LAYOUT_UNJUSTIFIED' => 'Képaránnyal, igazítatlan', 'SET_LAYOUT' => 'Elrendezés megváltoztatása', @@ -404,6 +410,9 @@ 'SETTINGS_SUCCESS_NSFW_VISIBLE' => 'Az alapértelmezett érzékeny album láthatósága sikeresen frissítve.', 'NSFW_BANNER' => '

Érzékeny tartalom

Ez az album érzékeny tartalmat tartalmaz, amit néhány ember zavaró vagy zavarba ejtő lehet. Tapintson az engedélyezéshez.

', + 'NSFW_HEADER' => 'Érzékeny tartalom', + 'NSFW_EXPLANATION' => 'Ez az album érzékeny tartalmat tartalmaz, amit néhány ember zavaró vagy zavarba ejtő lehet.', + 'TAP_CONSENT' => 'Tapintson az engedélyezéshez.', 'VIEW_NO_RESULT' => 'Nincs találat', 'VIEW_NO_PUBLIC_ALBUMS' => 'Nincsenek nyilvános albumok', diff --git a/lang/it/lychee.php b/lang/it/lychee.php index a562eeb3a8d..e10c01c55dc 100644 --- a/lang/it/lychee.php +++ b/lang/it/lychee.php @@ -7,6 +7,7 @@ 'PASSWORD' => 'Password', 'ENTER' => 'Invia', 'CANCEL' => 'Annulla', + 'CONFIRM' => 'Confirm', 'SIGN_IN' => 'Entra', 'CLOSE' => 'Chiudi', 'SETTINGS' => 'Impostazioni', @@ -16,6 +17,7 @@ 'GALLERY' => 'Gallery', 'USERS' => 'Utenti', + 'PROFILE' => 'Profile', 'CREATE' => 'Create', 'REMOVE' => 'Remove', 'SHARE' => 'Share', @@ -28,6 +30,7 @@ 'ABOUT_LYCHEE' => 'Informazioni su Lychee', 'DIAGNOSTICS' => 'Diagnostica', 'DIAGNOSTICS_GET_SIZE' => 'Request space usage', + 'JOBS' => 'Show job history', 'LOGS' => 'Visualizza Log', 'SIGN_OUT' => 'Esci', 'UPDATE_AVAILABLE' => 'Aggiornamento disponibile!', @@ -280,6 +283,7 @@ 'ERROR_MAP_DEACTIVATED' => 'Map functionality has been deactivated under settings.', 'ERROR_SEARCH_DEACTIVATED' => 'Search functionality has been deactivated under settings.', 'SUCCESS' => 'OK', + 'CHANGE_SUCCESS' => 'Change successful.', 'RETRY' => 'Riprova', 'OVERRIDE' => 'Override', 'TAGS_OVERRIDE_INFO' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', @@ -398,6 +402,8 @@ 'LAYOUT_TYPE' => 'Layout delle foto:', 'LAYOUT_SQUARES' => 'Miniature Quadrate', 'LAYOUT_JUSTIFIED' => 'Relativo all’aspetto, giustificate', + 'LAYOUT_MASONRY' => 'Relativo all’aspetto, masonry', + 'LAYOUT_GRID' => 'Relativo all’aspetto, grid', 'LAYOUT_UNJUSTIFIED' => 'Relativo all’aspetto, non giustificate', 'SET_LAYOUT' => 'Cambia layout', @@ -406,6 +412,9 @@ 'SETTINGS_SUCCESS_NSFW_VISIBLE' => 'Default sensitive album visibility updated with success.', 'NSFW_BANNER' => '

Sensitive content

This album contains sensitive content which some people may find offensive or disturbing.

Tap to consent.

', + 'NSFW_HEADER' => 'Sensitive content', + 'NSFW_EXPLANATION' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'TAP_CONSENT' => 'Tap to consent.', 'VIEW_NO_RESULT' => 'Nessun risultato', 'VIEW_NO_PUBLIC_ALBUMS' => 'Nessun album pubblico', diff --git a/lang/nl/lychee.php b/lang/nl/lychee.php index 92bfc89d8d6..7fa9de15753 100644 --- a/lang/nl/lychee.php +++ b/lang/nl/lychee.php @@ -7,6 +7,7 @@ 'PASSWORD' => 'Wachtwoord', 'ENTER' => 'Enter', 'CANCEL' => 'Annuleer', + 'CONFIRM' => 'Doe maar', 'SIGN_IN' => 'Log in', 'CLOSE' => 'Sluit', 'SETTINGS' => 'Settings', @@ -16,6 +17,7 @@ 'GALLERY' => 'Gallery', 'USERS' => 'Users', + 'PROFILE' => 'Profile', 'CREATE' => 'Create', 'REMOVE' => 'Remove', 'SHARE' => 'Share', @@ -28,6 +30,7 @@ 'ABOUT_LYCHEE' => 'Over Lychee', 'DIAGNOSTICS' => 'Diagnostics', 'DIAGNOSTICS_GET_SIZE' => 'Request space usage', + 'JOBS' => 'Show job history', 'LOGS' => 'Laat logs zien', 'SIGN_OUT' => 'Log uit', 'UPDATE_AVAILABLE' => 'Update beschikbaar!', @@ -280,6 +283,7 @@ 'ERROR_MAP_DEACTIVATED' => 'Map functionality has been deactivated under settings.', 'ERROR_SEARCH_DEACTIVATED' => 'Search functionality has been deactivated under settings.', 'SUCCESS' => 'OK', + 'CHANGE_SUCCESS' => 'Change successful.', 'RETRY' => 'Probeer opnieuw', 'OVERRIDE' => 'Override', 'TAGS_OVERRIDE_INFO' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', @@ -398,6 +402,8 @@ 'LAYOUT_TYPE' => 'Layout of photos:', 'LAYOUT_SQUARES' => 'Square thumbnails', 'LAYOUT_JUSTIFIED' => 'With aspect, justified', + 'LAYOUT_MASONRY' => 'With aspect, masonry', + 'LAYOUT_GRID' => 'With aspect, grid', 'LAYOUT_UNJUSTIFIED' => 'With aspect, unjustified', 'SET_LAYOUT' => 'Change layout', @@ -406,6 +412,9 @@ 'SETTINGS_SUCCESS_NSFW_VISIBLE' => 'Default sensitive album visibility updated with success.', 'NSFW_BANNER' => '

Sensitive content

This album contains sensitive content which some people may find offensive or disturbing.

Tap to consent.

', + 'NSFW_HEADER' => 'Sensitive content', + 'NSFW_EXPLANATION' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'TAP_CONSENT' => 'Tap to consent.', 'VIEW_NO_RESULT' => 'Geen resultaten', 'VIEW_NO_PUBLIC_ALBUMS' => 'Geen publieke albums', diff --git a/lang/no/lychee.php b/lang/no/lychee.php index 199338b4450..f56dc79e777 100644 --- a/lang/no/lychee.php +++ b/lang/no/lychee.php @@ -7,6 +7,7 @@ 'PASSWORD' => 'Passord', 'ENTER' => 'Stig inn', 'CANCEL' => 'Avbryt', + 'CONFIRM' => 'Confirm', 'SIGN_IN' => 'Logg inn', 'CLOSE' => 'Lukk', 'SETTINGS' => 'Innstillinger', @@ -16,6 +17,7 @@ 'GALLERY' => 'Gallery', 'USERS' => 'Brukere', + 'PROFILE' => 'Profile', 'CREATE' => 'Create', 'REMOVE' => 'Remove', 'SHARE' => 'Share', @@ -28,6 +30,7 @@ 'ABOUT_LYCHEE' => 'Om Lychee', 'DIAGNOSTICS' => 'Diagnostikk', 'DIAGNOSTICS_GET_SIZE' => 'Hent diskbruk', + 'JOBS' => 'Show job history', 'LOGS' => 'Vis Logg', 'SIGN_OUT' => 'Logg Ut', 'UPDATE_AVAILABLE' => 'Oppdatering er tilgjengelig!', @@ -280,6 +283,7 @@ 'ERROR_MAP_DEACTIVATED' => 'Kartfunksjoner har blitt deaktivert under innstillinger', 'ERROR_SEARCH_DEACTIVATED' => 'Søkefunksjoner har blitt deaktivert under innstillinger', 'SUCCESS' => 'OK', + 'CHANGE_SUCCESS' => 'Change successful.', 'RETRY' => 'Prøv igjen', 'OVERRIDE' => 'Override', 'TAGS_OVERRIDE_INFO' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', @@ -398,6 +402,8 @@ 'LAYOUT_TYPE' => 'Oppsett for bilder:', 'LAYOUT_SQUARES' => 'Kvadratiske miniatyrbilder', 'LAYOUT_JUSTIFIED' => 'Med aspektratio, justert', + 'LAYOUT_MASONRY' => 'Med aspektratio, masonry', + 'LAYOUT_GRID' => 'Med aspektratio, grid', 'LAYOUT_UNJUSTIFIED' => 'Med aspektratio, ikke justert', 'SET_LAYOUT' => 'Lagre oppsett', @@ -406,6 +412,9 @@ 'SETTINGS_SUCCESS_NSFW_VISIBLE' => 'Default sensitive album visibility updated with success.', 'NSFW_BANNER' => '

Sensitive content

This album contains sensitive content which some people may find offensive or disturbing.

Tap to consent.

', + 'NSFW_HEADER' => 'Sensitive content', + 'NSFW_EXPLANATION' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'TAP_CONSENT' => 'Tap to consent.', 'VIEW_NO_RESULT' => 'Ingen resultater', 'VIEW_NO_PUBLIC_ALBUMS' => 'Ingen offentlige album', diff --git a/lang/pl/lychee.php b/lang/pl/lychee.php index 2b58c23402c..44da0b566a8 100644 --- a/lang/pl/lychee.php +++ b/lang/pl/lychee.php @@ -7,6 +7,7 @@ 'PASSWORD' => 'Hasło', 'ENTER' => 'Potwierdź', 'CANCEL' => 'Anuluj', + 'CONFIRM' => 'Confirm', 'SIGN_IN' => 'Zaloguj', 'CLOSE' => 'Zamknij', 'SETTINGS' => 'Ustawienia', @@ -16,6 +17,7 @@ 'GALLERY' => 'Gallery', 'USERS' => 'Użytkownicy', + 'PROFILE' => 'Profile', 'CREATE' => 'Create', 'REMOVE' => 'Remove', 'SHARE' => 'Share', @@ -28,6 +30,7 @@ 'ABOUT_LYCHEE' => 'O Lychee', 'DIAGNOSTICS' => 'Informacje techniczne', 'DIAGNOSTICS_GET_SIZE' => 'Analiza miejsca na dysku', + 'JOBS' => 'Show job history', 'LOGS' => 'Logi', 'SIGN_OUT' => 'Wyloguj', 'UPDATE_AVAILABLE' => 'Dostępna aktualizacja!', @@ -280,6 +283,7 @@ 'ERROR_MAP_DEACTIVATED' => 'Funkcja mapy została wyłączona w ustawieniach.', 'ERROR_SEARCH_DEACTIVATED' => 'Funkcja wyszkukiwania została wyłączona w ustawieniach.', 'SUCCESS' => 'OK', + 'CHANGE_SUCCESS' => 'Change successful.', 'RETRY' => 'Ponów', 'OVERRIDE' => 'Override', 'TAGS_OVERRIDE_INFO' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', @@ -398,6 +402,8 @@ 'LAYOUT_TYPE' => 'Układ zdjęć:', 'LAYOUT_SQUARES' => 'Kwadratowe miniaturki', 'LAYOUT_JUSTIFIED' => 'Aspekt, wyrównane', + 'LAYOUT_MASONRY' => 'Aspekt, masonry', + 'LAYOUT_GRID' => 'Aspekt, grid', 'LAYOUT_UNJUSTIFIED' => 'Aspekt, bez wyrównania', 'SET_LAYOUT' => 'Zmień układ', @@ -406,6 +412,9 @@ 'SETTINGS_SUCCESS_NSFW_VISIBLE' => 'Domyślne ustawienie dotyczące widoczności albumów poufnych ostało zaktualizowane.', 'NSFW_BANNER' => '

Sensitive content

This album contains sensitive content which some people may find offensive or disturbing.

Tap to consent.

', + 'NSFW_HEADER' => 'Sensitive content', + 'NSFW_EXPLANATION' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'TAP_CONSENT' => 'Tap to consent.', 'VIEW_NO_RESULT' => 'Brak wyników', 'VIEW_NO_PUBLIC_ALBUMS' => 'Brak albumów publicznych', diff --git a/lang/pt/lychee.php b/lang/pt/lychee.php index a2f4e0ab5fc..c1b56ff5c97 100644 --- a/lang/pt/lychee.php +++ b/lang/pt/lychee.php @@ -7,6 +7,7 @@ 'PASSWORD' => 'Password', 'ENTER' => 'Inserir', 'CANCEL' => 'Cancelar', + 'CONFIRM' => 'Confirm', 'SIGN_IN' => 'Iniciar Sessão', 'CLOSE' => 'Fechar', 'SETTINGS' => 'Configurações', @@ -16,6 +17,7 @@ 'GALLERY' => 'Gallery', 'USERS' => 'Utilizadores', + 'PROFILE' => 'Profile', 'CREATE' => 'Create', 'REMOVE' => 'Remove', 'SHARE' => 'Share', @@ -28,6 +30,7 @@ 'ABOUT_LYCHEE' => 'Acerca do Lychee', 'DIAGNOSTICS' => 'Diagnosticos', 'DIAGNOSTICS_GET_SIZE' => 'Pedir utilização de espaço', + 'JOBS' => 'Show job history', 'LOGS' => 'Mostrar Logs', 'SIGN_OUT' => 'Terminar Sessão', 'UPDATE_AVAILABLE' => 'Atualização disponível!', @@ -280,6 +283,7 @@ 'ERROR_MAP_DEACTIVATED' => 'A funcionalidade do mapa foi desativada nas configurações.', 'ERROR_SEARCH_DEACTIVATED' => 'A funcionalidade de procura foi desativada nas configurações.', 'SUCCESS' => 'OK', + 'CHANGE_SUCCESS' => 'Change successful.', 'RETRY' => 'Tentar de novo', 'OVERRIDE' => 'Override', 'TAGS_OVERRIDE_INFO' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', @@ -398,6 +402,8 @@ 'LAYOUT_TYPE' => 'Disposição das fotografias:', 'LAYOUT_SQUARES' => 'Miniaturas quadradas', 'LAYOUT_JUSTIFIED' => 'Com formatação, justificada', + 'LAYOUT_MASONRY' => 'Com formatação, masonry', + 'LAYOUT_GRID' => 'Com formatação, grid', 'LAYOUT_UNJUSTIFIED' => 'Com formatação, não justificada', 'SET_LAYOUT' => 'Alterar disposição', @@ -406,6 +412,9 @@ 'SETTINGS_SUCCESS_NSFW_VISIBLE' => 'Sensibilidade predefinida do álbum visível atualizada com sucesso.', 'NSFW_BANNER' => '

Sensitive content

This album contains sensitive content which some people may find offensive or disturbing.

Tap to consent.

', + 'NSFW_HEADER' => 'Sensitive content', + 'NSFW_EXPLANATION' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'TAP_CONSENT' => 'Tap to consent.', 'VIEW_NO_RESULT' => 'Sem resultados', 'VIEW_NO_PUBLIC_ALBUMS' => 'Sem álbums públicos', diff --git a/lang/ru/lychee.php b/lang/ru/lychee.php index 6621ff5e8af..f74e5f52844 100644 --- a/lang/ru/lychee.php +++ b/lang/ru/lychee.php @@ -7,6 +7,7 @@ 'PASSWORD' => 'Пароль', 'ENTER' => 'Enter', 'CANCEL' => 'Отмена', + 'CONFIRM' => 'Confirm', 'SIGN_IN' => 'Вход', 'CLOSE' => 'Закрыть', 'SETTINGS' => 'Параметры', @@ -16,6 +17,7 @@ 'GALLERY' => 'Gallery', 'USERS' => 'Пользователи', + 'PROFILE' => 'Profile', 'CREATE' => 'Create', 'REMOVE' => 'Remove', 'SHARE' => 'Share', @@ -28,6 +30,7 @@ 'ABOUT_LYCHEE' => 'О Lychee', 'DIAGNOSTICS' => 'Диагностика', 'DIAGNOSTICS_GET_SIZE' => 'Request space usage', + 'JOBS' => 'Show job history', 'LOGS' => 'Логи', 'SIGN_OUT' => 'Выход', 'UPDATE_AVAILABLE' => 'Доступно обновление!', @@ -280,6 +283,7 @@ 'ERROR_MAP_DEACTIVATED' => 'Map functionality has been deactivated under settings.', 'ERROR_SEARCH_DEACTIVATED' => 'Search functionality has been deactivated under settings.', 'SUCCESS' => 'Ок', + 'CHANGE_SUCCESS' => 'Change successful.', 'RETRY' => 'Повторить', 'OVERRIDE' => 'Override', 'TAGS_OVERRIDE_INFO' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', @@ -398,6 +402,8 @@ 'LAYOUT_TYPE' => 'Компоновка фото:', 'LAYOUT_SQUARES' => 'Квадратные превью', 'LAYOUT_JUSTIFIED' => 'По формату, выровнять', + 'LAYOUT_MASONRY' => 'По формату, masonry', + 'LAYOUT_GRID' => 'По формату, grid', 'LAYOUT_UNJUSTIFIED' => 'По формату, не выравнивать', 'SET_LAYOUT' => 'Изменить компоновку', @@ -406,6 +412,9 @@ 'SETTINGS_SUCCESS_NSFW_VISIBLE' => 'Default sensitive album visibility updated with success.', 'NSFW_BANNER' => '

Sensitive content

This album contains sensitive content which some people may find offensive or disturbing.

Tap to consent.

', + 'NSFW_HEADER' => 'Sensitive content', + 'NSFW_EXPLANATION' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'TAP_CONSENT' => 'Tap to consent.', 'VIEW_NO_RESULT' => 'Не найдено', 'VIEW_NO_PUBLIC_ALBUMS' => 'Нет публичных альбомов', diff --git a/lang/sk/lychee.php b/lang/sk/lychee.php index 197a412f091..76b1d638875 100644 --- a/lang/sk/lychee.php +++ b/lang/sk/lychee.php @@ -7,6 +7,7 @@ 'PASSWORD' => 'Heslo', 'ENTER' => 'Zadať', 'CANCEL' => 'Prerušiť', + 'CONFIRM' => 'Confirm', 'SIGN_IN' => 'Prihlásiť', 'CLOSE' => 'Zatvoriť', 'SETTINGS' => 'Nastavenia', @@ -16,6 +17,7 @@ 'GALLERY' => 'Gallery', 'USERS' => 'Užívatelia', + 'PROFILE' => 'Profile', 'CREATE' => 'Create', 'REMOVE' => 'Remove', 'SHARE' => 'Share', @@ -28,6 +30,7 @@ 'ABOUT_LYCHEE' => 'O Lychee', 'DIAGNOSTICS' => 'Diagnostika', 'DIAGNOSTICS_GET_SIZE' => 'Request space usage', + 'JOBS' => 'Show job history', 'LOGS' => 'Protokoly', 'SIGN_OUT' => 'Odhlásiť', 'UPDATE_AVAILABLE' => 'Update je k dispozícii!', @@ -280,6 +283,7 @@ 'ERROR_MAP_DEACTIVATED' => 'Map functionality has been deactivated under settings.', 'ERROR_SEARCH_DEACTIVATED' => 'Search functionality has been deactivated under settings.', 'SUCCESS' => 'OK', + 'CHANGE_SUCCESS' => 'Change successful.', 'RETRY' => 'Opakovať', 'OVERRIDE' => 'Override', 'TAGS_OVERRIDE_INFO' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', @@ -398,6 +402,8 @@ 'LAYOUT_TYPE' => 'Rozmiestnenie obrázkov:', 'LAYOUT_SQUARES' => 'Štvorcové náhľady', 'LAYOUT_JUSTIFIED' => 'Zachovaný pomer strán, zarovnané', + 'LAYOUT_MASONRY' => 'Zachovaný pomer strán, masonry', + 'LAYOUT_GRID' => 'Zachovaný pomer strán, grid', 'LAYOUT_UNJUSTIFIED' => 'Zachovaný pomer strán, nezarovnané', 'SET_LAYOUT' => 'Zmeniť rozmiestnenie', @@ -406,6 +412,9 @@ 'SETTINGS_SUCCESS_NSFW_VISIBLE' => 'Default sensitive album visibility updated with success.', 'NSFW_BANNER' => '

Sensitive content

This album contains sensitive content which some people may find offensive or disturbing.

Tap to consent.

', + 'NSFW_HEADER' => 'Sensitive content', + 'NSFW_EXPLANATION' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'TAP_CONSENT' => 'Tap to consent.', 'VIEW_NO_RESULT' => 'Žiadny výsledok', 'VIEW_NO_PUBLIC_ALBUMS' => 'Žiadne verejné albumy', diff --git a/lang/sv/lychee.php b/lang/sv/lychee.php index 8526f335299..65301e9864f 100644 --- a/lang/sv/lychee.php +++ b/lang/sv/lychee.php @@ -7,6 +7,7 @@ 'PASSWORD' => 'Lösenord', 'ENTER' => 'Stig in', 'CANCEL' => 'Avbryt', + 'CONFIRM' => 'Confirm', 'SIGN_IN' => 'Logga in', 'CLOSE' => 'Stäng', 'SETTINGS' => 'Settings', @@ -16,6 +17,7 @@ 'GALLERY' => 'Gallery', 'USERS' => 'Users', + 'PROFILE' => 'Profile', 'CREATE' => 'Create', 'REMOVE' => 'Remove', 'SHARE' => 'Share', @@ -28,6 +30,7 @@ 'ABOUT_LYCHEE' => 'Om Lychee', 'DIAGNOSTICS' => 'Diagnostik', 'DIAGNOSTICS_GET_SIZE' => 'Request space usage', + 'JOBS' => 'Show job history', 'LOGS' => 'Visa logfilen', 'SIGN_OUT' => 'Logga ut', 'UPDATE_AVAILABLE' => 'En uppdatering finns!', @@ -280,6 +283,7 @@ 'ERROR_MAP_DEACTIVATED' => 'Map functionality has been deactivated under settings.', 'ERROR_SEARCH_DEACTIVATED' => 'Search functionality has been deactivated under settings.', 'SUCCESS' => 'OK', + 'CHANGE_SUCCESS' => 'Change successful.', 'RETRY' => 'Försök igen', 'OVERRIDE' => 'Override', 'TAGS_OVERRIDE_INFO' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', @@ -398,6 +402,8 @@ 'LAYOUT_TYPE' => 'Layout of photos:', 'LAYOUT_SQUARES' => 'Square thumbnails', 'LAYOUT_JUSTIFIED' => 'With aspect, justified', + 'LAYOUT_MASONRY' => 'With aspect, masonry', + 'LAYOUT_GRID' => 'With aspect, grid', 'LAYOUT_UNJUSTIFIED' => 'With aspect, unjustified', 'SET_LAYOUT' => 'Change layout', @@ -406,6 +412,9 @@ 'SETTINGS_SUCCESS_NSFW_VISIBLE' => 'Default sensitive album visibility updated with success.', 'NSFW_BANNER' => '

Sensitive content

This album contains sensitive content which some people may find offensive or disturbing.

Tap to consent.

', + 'NSFW_HEADER' => 'Sensitive content', + 'NSFW_EXPLANATION' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'TAP_CONSENT' => 'Tap to consent.', 'VIEW_NO_RESULT' => 'Inget resultat', 'VIEW_NO_PUBLIC_ALBUMS' => 'Inga publika album', diff --git a/lang/vi/lychee.php b/lang/vi/lychee.php index 528d87d3263..6eaf3a2edbe 100644 --- a/lang/vi/lychee.php +++ b/lang/vi/lychee.php @@ -7,6 +7,7 @@ 'PASSWORD' => 'Mật khẩu', 'ENTER' => 'Ok', 'CANCEL' => 'Bỏ', + 'CONFIRM' => 'Confirm', 'SIGN_IN' => 'Đăng nhập', 'CLOSE' => 'Đóng', 'SETTINGS' => 'Cài đặt', @@ -16,6 +17,7 @@ 'GALLERY' => 'Gallery', 'USERS' => 'Người dùng', + 'PROFILE' => 'Profile', 'CREATE' => 'Tạo', 'REMOVE' => 'Remove', 'SHARE' => 'Share', @@ -28,6 +30,7 @@ 'ABOUT_LYCHEE' => 'Giới thiệu Lychee', 'DIAGNOSTICS' => 'Thông tin hệ thống', 'DIAGNOSTICS_GET_SIZE' => 'Xem dung lượng đã dùng', + 'JOBS' => 'Show job history', 'LOGS' => 'Xem nhật ký thay đổi', 'SIGN_OUT' => 'Thoát', 'UPDATE_AVAILABLE' => 'Có phiên bản mới!', @@ -280,6 +283,7 @@ 'ERROR_MAP_DEACTIVATED' => 'Tính năng hiển thị bản đồ đã tắt trong phần cài đặt.', 'ERROR_SEARCH_DEACTIVATED' => 'Tính năng tìm kiếm đã tắt trong phần cài đặt', 'SUCCESS' => 'OK', + 'CHANGE_SUCCESS' => 'Change successful.', 'RETRY' => 'Thử lại', 'OVERRIDE' => 'Override', 'TAGS_OVERRIDE_INFO' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', @@ -398,6 +402,8 @@ 'LAYOUT_TYPE' => 'Cách trình bày hình ảnh:', 'LAYOUT_SQUARES' => 'Ô vuông hình nhỏ', 'LAYOUT_JUSTIFIED' => 'Theo tỷ lệ hình, canh đều hai bên', + 'LAYOUT_MASONRY' => 'Theo tỷ lệ hình, masonry', + 'LAYOUT_GRID' => 'Theo tỷ lệ hình, grid', 'LAYOUT_UNJUSTIFIED' => 'Theo tỷ lệ hình, không canh đều hai bên', 'SET_LAYOUT' => 'Thay đổi cách trình bày', @@ -406,6 +412,9 @@ 'SETTINGS_SUCCESS_NSFW_VISIBLE' => 'Chế độ hiển thị album nhạy cảm được cập nhật thành công.', 'NSFW_BANNER' => '

Sensitive content

This album contains sensitive content which some people may find offensive or disturbing.

Tap to consent.

', + 'NSFW_HEADER' => 'Sensitive content', + 'NSFW_EXPLANATION' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'TAP_CONSENT' => 'Tap to consent.', 'VIEW_NO_RESULT' => 'Không có kết quả nào', 'VIEW_NO_PUBLIC_ALBUMS' => 'Chưa có album chia sẻ công cộng nào', diff --git a/lang/zh_CN/lychee.php b/lang/zh_CN/lychee.php index 8f016fab636..49ab68198e0 100644 --- a/lang/zh_CN/lychee.php +++ b/lang/zh_CN/lychee.php @@ -7,6 +7,7 @@ 'PASSWORD' => '密码', 'ENTER' => '确定', 'CANCEL' => '取消', + 'CONFIRM' => 'Confirm', 'SIGN_IN' => '登录', 'CLOSE' => '关闭', 'SETTINGS' => '设置', @@ -16,6 +17,7 @@ 'GALLERY' => 'Gallery', 'USERS' => '用户', + 'PROFILE' => 'Profile', 'CREATE' => 'Create', 'REMOVE' => 'Remove', 'SHARE' => 'Share', @@ -28,6 +30,7 @@ 'ABOUT_LYCHEE' => '关于 Lychee', 'DIAGNOSTICS' => '诊断', 'DIAGNOSTICS_GET_SIZE' => '请求空间占用信息', + 'JOBS' => 'Show job history', 'LOGS' => '查看日志', 'SIGN_OUT' => '注销登录', 'UPDATE_AVAILABLE' => '可用更新!', @@ -280,6 +283,7 @@ 'ERROR_MAP_DEACTIVATED' => '地图功能已在设置中停用。', 'ERROR_SEARCH_DEACTIVATED' => '搜索功能已在设置中停用。', 'SUCCESS' => 'OK', + 'CHANGE_SUCCESS' => 'Change successful.', 'RETRY' => '重试', 'OVERRIDE' => 'Override', 'TAGS_OVERRIDE_INFO' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', @@ -398,6 +402,8 @@ 'LAYOUT_TYPE' => '照片布局:', 'LAYOUT_SQUARES' => '方形缩略图', 'LAYOUT_JUSTIFIED' => '保持长宽比,两端对齐', + 'LAYOUT_MASONRY' => '保持长宽比, masonry', + 'LAYOUT_GRID' => '保持长宽比, grid', 'LAYOUT_UNJUSTIFIED' => '保持长宽比,不对齐', 'SET_LAYOUT' => '更改布局', @@ -406,6 +412,9 @@ 'SETTINGS_SUCCESS_NSFW_VISIBLE' => '敏感相册的默认可见性成功更新。', 'NSFW_BANNER' => '

Sensitive content

This album contains sensitive content which some people may find offensive or disturbing.

Tap to consent.

', + 'NSFW_HEADER' => 'Sensitive content', + 'NSFW_EXPLANATION' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'TAP_CONSENT' => 'Tap to consent.', 'VIEW_NO_RESULT' => '无结果', 'VIEW_NO_PUBLIC_ALBUMS' => '没有公开相册', diff --git a/lang/zh_TW/lychee.php b/lang/zh_TW/lychee.php index 1a794a6f1f5..ee199722719 100644 --- a/lang/zh_TW/lychee.php +++ b/lang/zh_TW/lychee.php @@ -7,6 +7,7 @@ 'PASSWORD' => '密碼', 'ENTER' => '確定', 'CANCEL' => '取消', + 'CONFIRM' => 'Confirm', 'SIGN_IN' => '登入', 'CLOSE' => '關閉', 'SETTINGS' => '設定', @@ -16,6 +17,7 @@ 'GALLERY' => 'Gallery', 'USERS' => '使用者', + 'PROFILE' => 'Profile', 'CREATE' => 'Create', 'REMOVE' => 'Remove', 'SHARE' => 'Share', @@ -28,6 +30,7 @@ 'ABOUT_LYCHEE' => '關於Lychee', 'DIAGNOSTICS' => '診斷', 'DIAGNOSTICS_GET_SIZE' => '請求空間使用', + 'JOBS' => 'Show job history', 'LOGS' => '查看日誌', 'SIGN_OUT' => '登出', 'UPDATE_AVAILABLE' => '可用更新!', @@ -280,6 +283,7 @@ 'ERROR_MAP_DEACTIVATED' => '地圖功能已被設為停用。', 'ERROR_SEARCH_DEACTIVATED' => '搜索功能已在設為停用。', 'SUCCESS' => '好', + 'CHANGE_SUCCESS' => 'Change successful.', 'RETRY' => '重試', 'OVERRIDE' => 'Override', 'TAGS_OVERRIDE_INFO' => 'If this is unchecked, the tags will be added to the existing tags of the photo.', @@ -398,6 +402,8 @@ 'LAYOUT_TYPE' => '照片佈局:', 'LAYOUT_SQUARES' => '方形縮略圖', 'LAYOUT_JUSTIFIED' => '有方面,有道理', + 'LAYOUT_MASONRY' => '有方面, masonry', + 'LAYOUT_GRID' => '有方面, grid', 'LAYOUT_UNJUSTIFIED' => '有方面,沒有道理', 'SET_LAYOUT' => '變更版面', @@ -406,6 +412,9 @@ 'SETTINGS_SUCCESS_NSFW_VISIBLE' => 'Default sensitive album visibility updated with success.', 'NSFW_BANNER' => '

Sensitive content

This album contains sensitive content which some people may find offensive or disturbing.

Tap to consent.

', + 'NSFW_HEADER' => 'Sensitive content', + 'NSFW_EXPLANATION' => 'This album contains sensitive content which some people may find offensive or disturbing.', + 'TAP_CONSENT' => 'Tap to consent.', 'VIEW_NO_RESULT' => '無結果', 'VIEW_NO_PUBLIC_ALBUMS' => '沒有公開相簿', diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000000..b6a9c1c45a0 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3523 @@ +{ + "name": "Lychee", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "@types/justified-layout": "^4.1.4", + "autoprefixer": "^10.4.16", + "justified-layout": "^4.1.0", + "laravel-vite-plugin": "^0.8.1", + "lazysizes": "^5.3.2", + "leaflet": "^1.9.4", + "leaflet-gpx": "^1.7.0", + "leaflet-rotatedmarker": "^0.2.0", + "leaflet.markercluster": "^1.4.1", + "postcss": "^8.4.32", + "prettier": "^3.1.1", + "qrcode": "^1.5.3", + "tailwindcss": "^3.3.6", + "ts-loader": "^9.5.1", + "typescript": "^5.3.3", + "vite": "^4.5.1", + "vite-plugin-checker": "^0.6.2", + "vite-plugin-commonjs": "^0.10.0" + }, + "devDependencies": { + "@lychee-org/leaflet.photo": "^1.0.0", + "@types/alpinejs": "^3.13.5", + "@types/leaflet": "^1.9.8", + "@types/leaflet-rotatedmarker": "^0.2.5", + "@types/leaflet.markercluster": "^1.5.4", + "@types/mousetrap": "^1.6.15", + "@types/photoswipe": "^4.1.6", + "@types/qrcode": "^1.5.5" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@lychee-org/leaflet.photo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@lychee-org/leaflet.photo/-/leaflet.photo-1.0.0.tgz", + "integrity": "sha512-0nUnOvcVxFdwJ7iqdpuZVT7t7ZLwluOTaRGZuGSf0KRd0f1Ebb6fed7uWaSa/TD+mXQIYagsoBtWYG0lxMakKw==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@types/alpinejs": { + "version": "3.13.5", + "resolved": "https://registry.npmjs.org/@types/alpinejs/-/alpinejs-3.13.5.tgz", + "integrity": "sha512-BSNTroRhmBkNiyd7ELK/5Boja92hnQMST6H4z1BqXKeMVzHjp9o1j5poqd5Tyhjd8oMFwxYC4I00eghfg2xrTA==", + "dev": true + }, + "node_modules/@types/eslint": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-FlsN0p4FhuYRjIxpbdXovvHQhtlG05O1GG/RNWvdAxTboR438IOTwmrY/vLA+Xfgg06BTkP045M3vpFwTMv1dg==", + "peer": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "peer": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "peer": true + }, + "node_modules/@types/geojson": { + "version": "7946.0.13", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.13.tgz", + "integrity": "sha512-bmrNrgKMOhM3WsafmbGmC+6dsF2Z308vLFsQ3a/bT8X8Sv5clVYpPars/UPq+sAaJP+5OoLAYgwbkS5QEJdLUQ==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "peer": true + }, + "node_modules/@types/justified-layout": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@types/justified-layout/-/justified-layout-4.1.4.tgz", + "integrity": "sha512-q2ybP0u0NVj87oMnGZOGxY2iUN8ddr48zPOBHBdbOLpsMTA/keGj+93ou+OMCnJk0xewzlNIaVEkxM6VBD3E2w==" + }, + "node_modules/@types/leaflet": { + "version": "1.9.8", + "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.8.tgz", + "integrity": "sha512-EXdsL4EhoUtGm2GC2ZYtXn+Fzc6pluVgagvo2VC1RHWToLGlTRwVYoDpqS/7QXa01rmDyBjJk3Catpf60VMkwg==", + "dev": true, + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/leaflet-rotatedmarker": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@types/leaflet-rotatedmarker/-/leaflet-rotatedmarker-0.2.5.tgz", + "integrity": "sha512-GaKK1bdQ6NYGkVdZj2cHe8Eu1BVf40Jhtmd8pZj5gQSJcTy5iTog0hsMIhf6QQDKnaEgrRJzm4OES6B9vxi4dw==", + "dev": true, + "dependencies": { + "@types/leaflet": "*" + } + }, + "node_modules/@types/leaflet.markercluster": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/leaflet.markercluster/-/leaflet.markercluster-1.5.4.tgz", + "integrity": "sha512-tfMP8J62+wfsVLDLGh5Zh1JZxijCaBmVsMAX78MkLPwvPitmZZtSin5aWOVRhZrCS+pEOZwNzexbfWXlY+7yjg==", + "dev": true, + "dependencies": { + "@types/leaflet": "*" + } + }, + "node_modules/@types/mousetrap": { + "version": "1.6.15", + "resolved": "https://registry.npmjs.org/@types/mousetrap/-/mousetrap-1.6.15.tgz", + "integrity": "sha512-qL0hyIMNPow317QWW/63RvL1x5MVMV+Ru3NaY9f/CuEpCqrmb7WeuK2071ZY5hczOnm38qExWM2i2WtkXLSqFw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz", + "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/photoswipe": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/photoswipe/-/photoswipe-4.1.6.tgz", + "integrity": "sha512-6kN4KYjNF4sg79fSwZ46s4Pron4+YJxoW0DQOcHveUZc/3cWd8Q4B9OLlDmEYw9iI6fODU8kyyq8ZBy+8F/+zQ==", + "dev": true + }, + "node_modules/@types/qrcode": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.5.tgz", + "integrity": "sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "peer": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "peer": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "peer": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "peer": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "peer": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "peer": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "peer": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "peer": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "peer": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "peer": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "peer": true + }, + "node_modules/acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "peer": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peer": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "node_modules/autoprefixer": { + "version": "10.4.16", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", + "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001538", + "fraction.js": "^4.3.6", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "peer": true + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001571", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001571.tgz", + "integrity": "sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "peer": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, + "node_modules/dijkstrajs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==" + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.616", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.616.tgz", + "integrity": "sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/es-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==" + }, + "node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "peer": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "peer": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "peer": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "peer": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "peer": true + }, + "node_modules/fastq": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", + "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "peer": true + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "peer": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "peer": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "peer": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/justified-layout": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/justified-layout/-/justified-layout-4.1.0.tgz", + "integrity": "sha512-M5FimNMXgiOYerVRGsXZ2YK9YNCaTtwtYp7Hb2308U1Q9TXXHx5G0p08mcVR5O53qf8bWY4NJcPBxE6zuayXSg==" + }, + "node_modules/laravel-vite-plugin": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-0.8.1.tgz", + "integrity": "sha512-fxzUDjOA37kOsYq8dP+3oPIlw8/kJVXwu0hOXLun82R1LpV02shGeWGYKx2lbpKffL5I0sfPPjfqbYxuqBluAA==", + "dependencies": { + "picocolors": "^1.0.0", + "vite-plugin-full-reload": "^1.0.5" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0" + } + }, + "node_modules/lazysizes": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/lazysizes/-/lazysizes-5.3.2.tgz", + "integrity": "sha512-22UzWP+Vedi/sMeOr8O7FWimRVtiNJV2HCa+V8+peZOw6QbswN9k58VUhd7i6iK5bw5QkYrF01LJbeJe0PV8jg==" + }, + "node_modules/leaflet": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", + "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==" + }, + "node_modules/leaflet-gpx": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/leaflet-gpx/-/leaflet-gpx-1.7.0.tgz", + "integrity": "sha512-5NS5WKfp5zaAHMB2KM6OUaIng+SZ3e/UHK2++ABl2wELojYlmLqIL8t1Mj6DaZGkIh3kld+mAUvMGdIzC1yGRA==" + }, + "node_modules/leaflet-rotatedmarker": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/leaflet-rotatedmarker/-/leaflet-rotatedmarker-0.2.0.tgz", + "integrity": "sha512-yc97gxLXwbZa+Gk9VCcqI0CkvIBC9oNTTjFsHqq4EQvANrvaboib4UdeQLyTnEqDpaXHCqzwwVIDHtvz2mUiDg==" + }, + "node_modules/leaflet.markercluster": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.5.3.tgz", + "integrity": "sha512-vPTw/Bndq7eQHjLBVlWpnGeLa3t+3zGiuM7fJwCkiMFq+nmRuG3RI3f7f4N4TDX7T4NpbAXpR2+NTRSEGfCSeA==", + "peerDependencies": { + "leaflet": "^1.3.1" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "peer": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "node_modules/lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==" + }, + "node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/magic-string": { + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "peer": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "peer": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "peer": true + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/postcss": { + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", + "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", + "engines": { + "node": ">=14" + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/prettier": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", + "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", + "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", + "dependencies": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "peer": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peer": true + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "peer": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.0.tgz", + "integrity": "sha512-VigzymniH77knD1dryXbyxR+ePHihHociZbXnLZHUyzf2MMs2ZVqlUrZ3FvpXP8pno9JzmILt1sZPD19M3IxtA==", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.19.1", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.26.0.tgz", + "integrity": "sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==", + "peer": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "peer": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "peer": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", + "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" + }, + "node_modules/ts-loader": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", + "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "peer": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/vite": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.1.tgz", + "integrity": "sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA==", + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-checker": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/vite-plugin-checker/-/vite-plugin-checker-0.6.2.tgz", + "integrity": "sha512-YvvvQ+IjY09BX7Ab+1pjxkELQsBd4rPhWNw8WLBeFVxu/E7O+n6VYAqNsKdK/a2luFlX/sMpoWdGFfg4HvwdJQ==", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "ansi-escapes": "^4.3.0", + "chalk": "^4.1.1", + "chokidar": "^3.5.1", + "commander": "^8.0.0", + "fast-glob": "^3.2.7", + "fs-extra": "^11.1.0", + "lodash.debounce": "^4.0.8", + "lodash.pick": "^4.4.0", + "npm-run-path": "^4.0.1", + "semver": "^7.5.0", + "strip-ansi": "^6.0.0", + "tiny-invariant": "^1.1.0", + "vscode-languageclient": "^7.0.0", + "vscode-languageserver": "^7.0.0", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-uri": "^3.0.2" + }, + "engines": { + "node": ">=14.16" + }, + "peerDependencies": { + "eslint": ">=7", + "meow": "^9.0.0", + "optionator": "^0.9.1", + "stylelint": ">=13", + "typescript": "*", + "vite": ">=2.0.0", + "vls": "*", + "vti": "*", + "vue-tsc": ">=1.3.9" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "meow": { + "optional": true + }, + "optionator": { + "optional": true + }, + "stylelint": { + "optional": true + }, + "typescript": { + "optional": true + }, + "vls": { + "optional": true + }, + "vti": { + "optional": true + }, + "vue-tsc": { + "optional": true + } + } + }, + "node_modules/vite-plugin-checker/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/vite-plugin-checker/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/vite-plugin-checker/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vite-plugin-commonjs": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/vite-plugin-commonjs/-/vite-plugin-commonjs-0.10.1.tgz", + "integrity": "sha512-taP8R9kYGlCW5OzkVR0UIWRCnG6rSxeWWuA7tnU5b9t5MniibOnDY219NhisTeDhJAeGT8cEnrhVWZ9A5yD+vg==", + "dependencies": { + "acorn": "^8.8.2", + "fast-glob": "^3.2.12", + "magic-string": "^0.30.1", + "vite-plugin-dynamic-import": "^1.5.0" + } + }, + "node_modules/vite-plugin-dynamic-import": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vite-plugin-dynamic-import/-/vite-plugin-dynamic-import-1.5.0.tgz", + "integrity": "sha512-Qp85c+AVJmLa8MLni74U4BDiWpUeFNx7NJqbGZyR2XJOU7mgW0cb7nwlAMucFyM4arEd92Nfxp4j44xPi6Fu7g==", + "dependencies": { + "acorn": "^8.8.2", + "es-module-lexer": "^1.2.1", + "fast-glob": "^3.2.12", + "magic-string": "^0.30.1" + } + }, + "node_modules/vite-plugin-full-reload": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vite-plugin-full-reload/-/vite-plugin-full-reload-1.1.0.tgz", + "integrity": "sha512-3cObNDzX6DdfhD9E7kf6w2mNunFpD7drxyNgHLw+XwIYAgb+Xt16SEXo0Up4VH+TMf3n+DSVJZtW2POBGcBYAA==", + "dependencies": { + "picocolors": "^1.0.0", + "picomatch": "^2.3.1" + } + }, + "node_modules/vscode-jsonrpc": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", + "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==", + "engines": { + "node": ">=8.0.0 || >=10.0.0" + } + }, + "node_modules/vscode-languageclient": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-7.0.0.tgz", + "integrity": "sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg==", + "dependencies": { + "minimatch": "^3.0.4", + "semver": "^7.3.4", + "vscode-languageserver-protocol": "3.16.0" + }, + "engines": { + "vscode": "^1.52.0" + } + }, + "node_modules/vscode-languageclient/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/vscode-languageclient/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/vscode-languageserver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz", + "integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==", + "dependencies": { + "vscode-languageserver-protocol": "3.16.0" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz", + "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==", + "dependencies": { + "vscode-jsonrpc": "6.0.0", + "vscode-languageserver-types": "3.16.0" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.11.tgz", + "integrity": "sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==" + }, + "node_modules/vscode-languageserver-types": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz", + "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==" + }, + "node_modules/vscode-uri": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==" + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "peer": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.89.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", + "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", + "peer": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "peer": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yaml": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000000..a6c0cc15e98 --- /dev/null +++ b/package.json @@ -0,0 +1,44 @@ +{ + "private": true, + "type": "module", + "scripts": { + "check": "tsc --noEmit", + "dev": "vite", + "build": "vite build", + "check-formatting": "prettier --check resources/js/ resources/css/", + "format": "prettier --write resources/js/ resources/css/" + }, + "devDependencies": { + "@lychee-org/leaflet.photo": "^1.0.0", + "@types/alpinejs": "^3.13.5", + "@types/leaflet": "^1.9.8", + "@types/leaflet-rotatedmarker": "^0.2.5", + "@types/leaflet.markercluster": "^1.5.4", + "@types/mousetrap": "^1.6.15", + "@types/photoswipe": "^4.1.6", + "@types/qrcode": "^1.5.5" + }, + "dependencies": { + "@types/justified-layout": "^4.1.4", + "autoprefixer": "^10.4.16", + "justified-layout": "^4.1.0", + "laravel-vite-plugin": "^0.8.1", + "lazysizes": "^5.3.2", + "leaflet": "^1.9.4", + "leaflet-gpx": "^1.7.0", + "leaflet-rotatedmarker": "^0.2.0", + "leaflet.markercluster": "^1.4.1", + "postcss": "^8.4.32", + "prettier": "^3.1.1", + "qrcode": "^1.5.3", + "tailwindcss": "^3.3.6", + "ts-loader": "^9.5.1", + "typescript": "^5.3.3", + "vite": "^4.5.1", + "vite-plugin-checker": "^0.6.2", + "vite-plugin-commonjs": "^0.10.0" + }, + "browserslist": [ + "defaults and fully supports es6-module" + ] +} diff --git a/phpstan.neon b/phpstan.neon index d27dbca8118..e2b0081c3d8 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -9,21 +9,20 @@ parameters: - app - scripts - lang - - database + - database/migrations - tests excludePaths: - - app/View/* - - app/Http/Livewire/* - - database/factories/* - database/migrations/2021_12_04_181200_refactor_models.php stubFiles: # these can be removed after https://github.com/thecodingmachine/safe/issues/283 has been merged + - phpstan/stubs/Wireable.stub - phpstan/stubs/image.stub - phpstan/stubs/imageexception.stub ignoreErrors: # False positive php8.2 + phpstan on interface @property - '#Access to an undefined property App\\Contracts\\Models\\AbstractAlbum::\$id#' - '#Access to an undefined property App\\Contracts\\Models\\AbstractAlbum::\$title#' + - '#Access to an undefined property App\\Contracts\\Models\\AbstractAlbum::\$thumb#' - '#Access to an undefined property App\\Contracts\\Models\\AbstractAlbum::\$photos#' - '#Access to an undefined property App\\Contracts\\Image\\StreamStats::\$checksum#' - '#Access to an undefined property App\\Contracts\\Image\\StreamStats::\$bytes#' @@ -40,12 +39,16 @@ parameters: - '#Dynamic call to static method (Illuminate\\Database\\Query\\Builder|Illuminate\\Database\\Eloquent\\(Builder|Relations\\.*)|App\\Models\\Builders\\.*|App\\Eloquent\\FixedQueryBuilder)(<.*>)?::where(Not)?(Null|In|Between|Exists|Column|Year|Month|Day)?\(\).#' - '#Dynamic call to static method (Illuminate\\Database\\Query\\Builder|Illuminate\\Database\\Eloquent\\(Builder|Relations\\.*)|App\\Models\\Builders\\.*|App\\Eloquent\\FixedQueryBuilder)(<.*>)?::delete\(\)#' - '#Dynamic call to static method (Illuminate\\Database\\Query\\Builder|Illuminate\\Database\\Eloquent\\(Builder|Relations\\.*)|App\\Models\\Builders\\.*|App\\Eloquent\\FixedQueryBuilder)(<.*>)?::without\(\)#' + - '#Dynamic call to static method (Illuminate\\Database\\Query\\Builder|Illuminate\\Database\\Eloquent\\(Builder|Relations\\.*)|App\\Models\\Builders\\.*|App\\Eloquent\\FixedQueryBuilder)(<.*>)?::with\(\)#' - '#Dynamic call to static method (Illuminate\\Database\\Query\\Builder|Illuminate\\Database\\Eloquent\\(Builder|Relations\\.*)|App\\Models\\Builders\\.*|App\\Eloquent\\FixedQueryBuilder)(<.*>)?::count\(\).#' - '#Dynamic call to static method (Illuminate\\Database\\Query\\Builder|Illuminate\\Database\\Eloquent\\(Builder|Relations\\.*)|App\\Models\\Builders\\.*|App\\Eloquent\\FixedQueryBuilder)(<.*>)?::update\(\).#' + - '#Dynamic call to static method (Illuminate\\Database\\Query\\Builder|Illuminate\\Database\\Eloquent\\(Builder|Relations\\.*)|App\\Models\\Builders\\.*|App\\Eloquent\\FixedQueryBuilder)(<.*>)?::inRandomOrder\(\).#' - '#Dynamic call to static method (Illuminate\\Database\\Query\\Builder|Illuminate\\Database\\Eloquent\\(Builder|Relations\\.*)|App\\Models\\Builders\\.*|App\\Eloquent\\FixedQueryBuilder)(<.*>)?::groupBy\(\).#' - '#Dynamic call to static method App\\Models\\Builders\\.*::orderByDesc\(\).#' - '#Call to an undefined method Illuminate\\Database\\Eloquent\\.*::update\(\)#' - '#Call to an undefined method Illuminate\\Database\\Eloquent\\.*::with(Only)?\(\)#' + - '#Call to an undefined method App\\Relations\\HasManyPhotosRecursively::whereNotNull\(\)#' + - '#Call to an undefined method Illuminate\\Database\\Eloquent\\Builder|Illuminate\\Database\\Eloquent\\Relations\\Relation::whereNotNull\(\).#' - '#Call to private method latest\(\) of parent class Illuminate\\Database\\Eloquent\\Relations\\HasMany#' - '#Call to protected method asDateTime\(\) of class Illuminate\\Database\\Eloquent\\Model.#' @@ -73,27 +76,51 @@ parameters: - '#Property .* \(App\\Models\\.*(\|null)?\) does not accept (Illuminate\\Database\\Eloquent\\Collection\|)?Illuminate\\Database\\Eloquent\\Model(\|null)?.#' + - '#Access to an undefined property Laragear\\WebAuthn\\Models\\WebAuthnCredential::\$authenticatable_id#' # False positive as stub code for PHP has not yet been updated to 2nd parameter, see https://github.com/php/doc-en/issues/1529 and https://www.php.net/imagick.writeimagefile - '#Method Imagick::writeImageFile\(\) invoked with 2 parameters, 1 required#' + # Synth + - + message: '#Variable property access on .*#' + paths: + - app/Livewire/Synth + + - + message: '#Parameter .* of method App\\Livewire\\Synth\\.* should be contravariant with parameter .* of method Livewire\\Mechanisms\\HandleComponents\\Synthesizers\\Synth::.*#' + paths: + - app/Livewire/Synth + # Migrations - message: '#Function define is unsafe to use.#' paths: - - database + - database/migrations - message: '#Variable property access on (mixed|object).#' paths: - - database + - database/migrations - message: '#Access to an undefined property object::\$value.#' paths: - - database + - database/migrations # TESTS + - + message: '#Dynamic call to static method Illuminate\\Testing\\TestResponse::assert(Forbidden|ViewIs|Unauthorized|Ok|Status)#' + paths: + - tests + - + message: '#Call to an undefined method Illuminate\\Testing\\TestResponse::(assert)?(SeeLivewire|dispatch|call|Set|Count)#' + paths: + - tests + - + message: '#Call to an undefined method Livewire\\Features\\SupportTesting\\Testable::test\(\)#' + paths: + - tests - - message: '#Dynamic call to static method PHPUnit\\Framework\\Assert::assert(Is)?(Not)?(True|False|Equals|Int|Null|Empty)\(\)#' + message: '#Dynamic call to static method PHPUnit\\Framework\\Assert::assert(Is)?(Not)?(True|False|Equals|Int|Null|Empty|Count)\(\)#' paths: - tests - @@ -113,10 +140,11 @@ parameters: paths: - tests - - message: '#Access to private property App\\Models\\Extensions\\SizeVariants::\$(original|thumb|small|medium)(2x)?#' + message: '#Cannot call method .* on Illuminate\\Testing\\PendingCommand\|int.#' paths: - tests + - - message: '#Cannot call method .* on Illuminate\\Testing\\PendingCommand\|int.#' + message: '#Access to private property App\\Models\\Extensions\\SizeVariants::\$(original|small(2x)?|thumb(2x)?|medium(2x)?)#' paths: - - tests + - tests \ No newline at end of file diff --git a/phpstan/stubs/Wireable.stub b/phpstan/stubs/Wireable.stub new file mode 100644 index 00000000000..a4dad489674 --- /dev/null +++ b/phpstan/stubs/Wireable.stub @@ -0,0 +1,22 @@ +./tests/Feature/LibUnitTests/SharingUnitTest.php ./tests/Feature/LibUnitTests/UsersUnitTest.php + + ./tests/Livewire + ./tests/Livewire/Base/BaseLivewireTest.php + diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 00000000000..2e7af2b7f1a --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/public/vendor/log-viewer/app.css b/public/vendor/log-viewer/app.css index 9d9bde50233..333d32d17dd 100644 --- a/public/vendor/log-viewer/app.css +++ b/public/vendor/log-viewer/app.css @@ -1 +1 @@ -/*! tailwindcss v3.1.6 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e4e4e7;box-sizing:border-box}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#a1a1aa;opacity:1}input::placeholder,textarea::placeholder{color:#a1a1aa;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}.\!container{width:100%!important}@media (min-width:640px){.container{max-width:640px}.\!container{max-width:640px!important}}@media (min-width:768px){.container{max-width:768px}.\!container{max-width:768px!important}}@media (min-width:1024px){.container{max-width:1024px}.\!container{max-width:1024px!important}}@media (min-width:1280px){.container{max-width:1280px}.\!container{max-width:1280px!important}}@media (min-width:1536px){.container{max-width:1536px}.\!container{max-width:1536px!important}}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{left:0;right:0}.inset-0,.inset-y-0{bottom:0;top:0}.bottom-0{bottom:0}.left-3{left:.75rem}.right-7{right:1.75rem}.right-0{right:0}.top-9{top:2.25rem}.top-0{top:0}.bottom-10{bottom:2.5rem}.left-0{left:0}.-left-\[200\%\]{left:-200%}.right-\[200\%\]{right:200%}.bottom-4{bottom:1rem}.right-4{right:1rem}.z-20{z-index:20}.z-10{z-index:10}.m-1{margin:.25rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.my-auto{margin-bottom:auto;margin-top:auto}.-my-1{margin-bottom:-.25rem;margin-top:-.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-1\.5{margin-left:.375rem;margin-right:.375rem}.mb-1{margin-bottom:.25rem}.ml-3{margin-left:.75rem}.ml-2{margin-left:.5rem}.mt-0{margin-top:0}.mr-1\.5{margin-right:.375rem}.mr-1{margin-right:.25rem}.mt-2{margin-top:.5rem}.mb-8{margin-bottom:2rem}.mt-6{margin-top:1.5rem}.ml-1{margin-left:.25rem}.mt-1{margin-top:.25rem}.mr-2{margin-right:.5rem}.mb-5{margin-bottom:1.25rem}.mr-5{margin-right:1.25rem}.-mr-2{margin-right:-.5rem}.mr-2\.5{margin-right:.625rem}.mb-4{margin-bottom:1rem}.mt-3{margin-top:.75rem}.ml-5{margin-left:1.25rem}.mb-2{margin-bottom:.5rem}.mr-4{margin-right:1rem}.mr-3{margin-right:.75rem}.-mb-0\.5{margin-bottom:-.125rem}.-mb-0{margin-bottom:0}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-full{height:100%}.h-\[18px\]{height:18px}.h-5{height:1.25rem}.h-3{height:.75rem}.h-4{height:1rem}.h-14{height:3.5rem}.h-7{height:1.75rem}.h-6{height:1.5rem}.h-0{height:0}.max-h-screen{max-height:100vh}.max-h-60{max-height:15rem}.min-h-\[38px\]{min-height:38px}.min-h-screen{min-height:100vh}.w-\[18px\]{width:18px}.w-full{width:100%}.w-5{width:1.25rem}.w-3{width:.75rem}.w-4{width:1rem}.w-48{width:12rem}.w-14{width:3.5rem}.w-screen{width:100vw}.w-6{width:1.5rem}.w-\[120px\]{width:120px}.w-\[180px\]{width:180px}.w-\[110px\]{width:110px}.w-auto{width:auto}.min-w-\[240px\]{min-width:240px}.min-w-full{min-width:100%}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.max-w-\[1px\]{max-width:1px}.flex-1{flex:1 1 0%}.shrink{flex-shrink:1}.table-fixed{table-layout:fixed}.border-separate{border-collapse:separate}.translate-x-full{--tw-translate-x:100%}.translate-x-0,.translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.rotate-90{--tw-rotate:90deg}.rotate-90,.scale-100{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-90{--tw-scale-x:.9;--tw-scale-y:.9}.scale-90,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.cursor-default{cursor:default}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.grid-flow-col{grid-auto-flow:column}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-y-auto{overflow-y:auto}.overflow-y-scroll{overflow-y:scroll}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-l{border-left-width:1px}.border-t{border-top-width:1px}.border-t-2{border-top-width:2px}.border-yellow-300{--tw-border-opacity:1;border-color:rgb(253 224 71/var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-brand-500{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-brand-600{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.bg-opacity-75{--tw-bg-opacity:0.75}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.from-gray-100{--tw-gradient-from:#f4f4f5;--tw-gradient-to:hsla(240,5%,96%,0);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.to-transparent{--tw-gradient-to:transparent}.p-1{padding:.25rem}.p-12{padding:3rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-4{padding-left:1rem;padding-right:1rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-4{padding-bottom:1rem;padding-top:1rem}.px-8{padding-left:2rem;padding-right:2rem}.pr-4{padding-right:1rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pr-10{padding-right:2.5rem}.pr-2{padding-right:.5rem}.pr-9{padding-right:2.25rem}.pl-10{padding-left:2.5rem}.pl-2{padding-left:.5rem}.pt-2{padding-top:.5rem}.pb-1{padding-bottom:.25rem}.pt-3{padding-top:.75rem}.pb-16{padding-bottom:4rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.text-base{font-size:1rem;line-height:1.5rem}.font-semibold{font-weight:600}.font-normal{font-weight:400}.font-medium{font-weight:500}.italic{font-style:italic}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.text-brand-700{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.text-yellow-700{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.text-brand-500{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgb(39 39 42/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-brand-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.opacity-100{opacity:1}.opacity-0{opacity:0}.opacity-90{opacity:.9}.opacity-75{opacity:.75}.opacity-25{opacity:.25}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-md,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-brand-500{outline-color:#0ea5e9}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-opacity-5{--tw-ring-opacity:0.05}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.spin{-webkit-animation-duration:1.5s;-moz-animation-duration:1.5s;-ms-animation-duration:1.5s;animation-duration:1.5s;-webkit-animation-iteration-count:infinite;-moz-animation-iteration-count:infinite;-ms-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-name:spin;-moz-animation-name:spin;-ms-animation-name:spin;animation-name:spin;-webkit-animation-timing-function:linear;-moz-animation-timing-function:linear;-ms-animation-timing-function:linear;animation-timing-function:linear}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}html.dark{color-scheme:dark}#bmc-wbtn{height:48px!important;width:48px!important}#bmc-wbtn>img{height:32px!important;width:32px!important}.log-levels-selector .dropdown-toggle{white-space:nowrap}.log-levels-selector .dropdown-toggle:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .log-levels-selector .dropdown-toggle:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.log-levels-selector .dropdown-toggle>svg{height:1rem;margin-left:.25rem;opacity:.75;width:1rem}.log-levels-selector .dropdown .log-level{font-weight:600}.log-levels-selector .dropdown .log-level.success{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.dark .log-levels-selector .dropdown .log-level.success{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.log-levels-selector .dropdown .log-level.info{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.dark .log-levels-selector .dropdown .log-level.info{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.log-levels-selector .dropdown .log-level.warning{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}.dark .log-levels-selector .dropdown .log-level.warning{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}.log-levels-selector .dropdown .log-level.danger{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}.dark .log-levels-selector .dropdown .log-level.danger{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}.log-levels-selector .dropdown .log-level.none{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.dark .log-levels-selector .dropdown .log-level.none{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.log-levels-selector .dropdown .log-count{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity));margin-left:2rem;white-space:nowrap}.dark .log-levels-selector .dropdown .log-count{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.log-levels-selector .dropdown button.active .log-level.success{--tw-text-opacity:1;color:rgb(209 250 229/var(--tw-text-opacity))}.log-levels-selector .dropdown button.active .log-level.info{--tw-text-opacity:1;color:rgb(224 242 254/var(--tw-text-opacity))}.log-levels-selector .dropdown button.active .log-level.warning{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity))}.log-levels-selector .dropdown button.active .log-level.danger{--tw-text-opacity:1;color:rgb(255 228 230/var(--tw-text-opacity))}.log-levels-selector .dropdown button.active .log-level.none{--tw-text-opacity:1;color:rgb(244 244 245/var(--tw-text-opacity))}.log-levels-selector .dropdown button.active .log-count{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity))}.dark .log-levels-selector .dropdown button.active .log-count{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.log-levels-selector .dropdown .no-results{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity));font-size:.75rem;line-height:1rem;padding:.25rem 1rem;text-align:center}.dark .log-levels-selector .dropdown .no-results{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.log-item{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));cursor:pointer;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dark .log-item{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.log-item.success.active>td,.log-item.success:focus-within>td,.log-item.success:hover>td{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity))}.dark .log-item.success.active>td,.dark .log-item.success:focus-within>td,.dark .log-item.success:hover>td{--tw-bg-opacity:0.4;background-color:rgb(6 95 70/var(--tw-bg-opacity))}.log-item.success .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity))}.dark .log-item.success .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.log-item.success .log-level{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.dark .log-item.success .log-level{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.log-item.info.active>td,.log-item.info:focus-within>td,.log-item.info:hover>td{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}.dark .log-item.info.active>td,.dark .log-item.info:focus-within>td,.dark .log-item.info:hover>td{--tw-bg-opacity:0.4;background-color:rgb(7 89 133/var(--tw-bg-opacity))}.log-item.info .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity))}.dark .log-item.info .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}.log-item.info .log-level{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.dark .log-item.info .log-level{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.log-item.warning.active>td,.log-item.warning:focus-within>td,.log-item.warning:hover>td{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity))}.dark .log-item.warning.active>td,.dark .log-item.warning:focus-within>td,.dark .log-item.warning:hover>td{--tw-bg-opacity:0.4;background-color:rgb(146 64 14/var(--tw-bg-opacity))}.log-item.warning .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity))}.dark .log-item.warning .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity))}.log-item.warning .log-level{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}.dark .log-item.warning .log-level{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}.log-item.danger.active>td,.log-item.danger:focus-within>td,.log-item.danger:hover>td{--tw-bg-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity))}.dark .log-item.danger.active>td,.dark .log-item.danger:focus-within>td,.dark .log-item.danger:hover>td{--tw-bg-opacity:0.4;background-color:rgb(159 18 57/var(--tw-bg-opacity))}.log-item.danger .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(190 18 60/var(--tw-bg-opacity))}.dark .log-item.danger .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(251 113 133/var(--tw-bg-opacity))}.log-item.danger .log-level{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}.dark .log-item.danger .log-level{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}.log-item.none.active>td,.log-item.none:focus-within>td,.log-item.none:hover>td{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.dark .log-item.none.active>td,.dark .log-item.none:focus-within>td,.dark .log-item.none:hover>td{--tw-bg-opacity:0.4;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.log-item.none .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}.dark .log-item.none .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(161 161 170/var(--tw-bg-opacity))}.log-item.none .log-level{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.dark .log-item.none .log-level{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.log-item:hover .log-level-icon{opacity:1}.badge{align-items:center;border-radius:.375rem;cursor:pointer;display:inline-flex;font-size:.875rem;line-height:1.25rem;margin-right:.5rem;margin-top:.25rem;padding:.25rem .75rem;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.badge.success{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity));border-color:rgb(167 243 208/var(--tw-border-opacity));border-width:1px;color:rgb(82 82 91/var(--tw-text-opacity))}.dark .badge.success{--tw-border-opacity:1;--tw-bg-opacity:0.4;--tw-text-opacity:1;background-color:rgb(6 78 59/var(--tw-bg-opacity));border-color:rgb(6 95 70/var(--tw-border-opacity));color:rgb(161 161 170/var(--tw-text-opacity))}.badge.success:hover{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity))}.dark .badge.success:hover{--tw-bg-opacity:0.75;background-color:rgb(6 78 59/var(--tw-bg-opacity))}.badge.success .checkmark{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}.dark .badge.success .checkmark{--tw-border-opacity:1;border-color:rgb(6 95 70/var(--tw-border-opacity))}.badge.success.active{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity));border-color:rgb(4 120 87/var(--tw-border-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.dark .badge.success.active{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity));border-color:rgb(5 150 105/var(--tw-border-opacity))}.badge.success.active:hover{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.dark .badge.success.active:hover{--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity))}.badge.success.active .checkmark{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}.dark .badge.success.active .checkmark{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity));border-color:rgb(4 120 87/var(--tw-border-opacity))}.badge.success.active .checkmark>svg{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.dark .badge.success.active .checkmark>svg{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.badge.info{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity));border-color:rgb(186 230 253/var(--tw-border-opacity));border-width:1px;color:rgb(82 82 91/var(--tw-text-opacity))}.dark .badge.info{--tw-border-opacity:1;--tw-bg-opacity:0.4;--tw-text-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity));border-color:rgb(7 89 133/var(--tw-border-opacity));color:rgb(161 161 170/var(--tw-text-opacity))}.badge.info:hover{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}.dark .badge.info:hover{--tw-bg-opacity:0.75;background-color:rgb(12 74 110/var(--tw-bg-opacity))}.badge.info .checkmark{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity))}.dark .badge.info .checkmark{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}.badge.info.active{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity));border-color:rgb(3 105 161/var(--tw-border-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.dark .badge.info.active{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity));border-color:rgb(2 132 199/var(--tw-border-opacity))}.badge.info.active:hover{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}.dark .badge.info.active:hover{--tw-bg-opacity:1;background-color:rgb(7 89 133/var(--tw-bg-opacity))}.badge.info.active .checkmark{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.dark .badge.info.active .checkmark{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity));border-color:rgb(3 105 161/var(--tw-border-opacity))}.badge.info.active .checkmark>svg{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.dark .badge.info.active .checkmark>svg{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.badge.warning{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity));border-color:rgb(253 230 138/var(--tw-border-opacity));border-width:1px;color:rgb(82 82 91/var(--tw-text-opacity))}.dark .badge.warning{--tw-border-opacity:1;--tw-bg-opacity:0.4;--tw-text-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity));border-color:rgb(146 64 14/var(--tw-border-opacity));color:rgb(161 161 170/var(--tw-text-opacity))}.badge.warning:hover{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}.dark .badge.warning:hover{--tw-bg-opacity:0.75;background-color:rgb(120 53 15/var(--tw-bg-opacity))}.badge.warning .checkmark{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity))}.dark .badge.warning .checkmark{--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-opacity))}.badge.warning.active{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity));border-color:rgb(180 83 9/var(--tw-border-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.dark .badge.warning.active{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity));border-color:rgb(217 119 6/var(--tw-border-opacity))}.badge.warning.active:hover{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity))}.dark .badge.warning.active:hover{--tw-bg-opacity:1;background-color:rgb(146 64 14/var(--tw-bg-opacity))}.badge.warning.active .checkmark{--tw-border-opacity:1;border-color:rgb(217 119 6/var(--tw-border-opacity))}.dark .badge.warning.active .checkmark{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity));border-color:rgb(180 83 9/var(--tw-border-opacity))}.badge.warning.active .checkmark>svg{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}.dark .badge.warning.active .checkmark>svg{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}.badge.danger{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity));border-color:rgb(254 205 211/var(--tw-border-opacity));border-width:1px;color:rgb(82 82 91/var(--tw-text-opacity))}.dark .badge.danger{--tw-border-opacity:1;--tw-bg-opacity:0.4;--tw-text-opacity:1;background-color:rgb(136 19 55/var(--tw-bg-opacity));border-color:rgb(159 18 57/var(--tw-border-opacity));color:rgb(161 161 170/var(--tw-text-opacity))}.badge.danger:hover{--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity))}.dark .badge.danger:hover{--tw-bg-opacity:0.75;background-color:rgb(136 19 55/var(--tw-bg-opacity))}.badge.danger .checkmark{--tw-border-opacity:1;border-color:rgb(254 205 211/var(--tw-border-opacity))}.dark .badge.danger .checkmark{--tw-border-opacity:1;border-color:rgb(159 18 57/var(--tw-border-opacity))}.badge.danger.active{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity));border-color:rgb(190 18 60/var(--tw-border-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.dark .badge.danger.active{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(190 18 60/var(--tw-bg-opacity));border-color:rgb(225 29 72/var(--tw-border-opacity))}.badge.danger.active:hover{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity))}.dark .badge.danger.active:hover{--tw-bg-opacity:1;background-color:rgb(159 18 57/var(--tw-bg-opacity))}.badge.danger.active .checkmark{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}.dark .badge.danger.active .checkmark{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity));border-color:rgb(190 18 60/var(--tw-border-opacity))}.badge.danger.active .checkmark>svg{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}.dark .badge.danger.active .checkmark>svg{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}.badge.none{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity));border-color:rgb(228 228 231/var(--tw-border-opacity));border-width:1px;color:rgb(82 82 91/var(--tw-text-opacity))}.dark .badge.none{--tw-border-opacity:1;--tw-bg-opacity:0.4;--tw-text-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity));border-color:rgb(39 39 42/var(--tw-border-opacity));color:rgb(161 161 170/var(--tw-text-opacity))}.badge.none:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.dark .badge.none:hover{--tw-bg-opacity:0.75;background-color:rgb(24 24 27/var(--tw-bg-opacity))}.badge.none .checkmark{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}.dark .badge.none .checkmark{--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity))}.badge.none.active{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));color:rgb(39 39 42/var(--tw-text-opacity))}.dark .badge.none.active{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity));border-color:rgb(82 82 91/var(--tw-border-opacity));color:rgb(244 244 245/var(--tw-text-opacity))}.badge.none.active:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.dark .badge.none.active:hover{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}.badge.none.active .checkmark{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity))}.dark .badge.none.active .checkmark{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity));border-color:rgb(63 63 70/var(--tw-border-opacity))}.badge.none.active .checkmark>svg{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.dark .badge.none.active .checkmark>svg{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.log-list table>thead th{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity));color:rgb(113 113 122/var(--tw-text-opacity));font-size:.875rem;font-weight:600;line-height:1.25rem;padding:.5rem;position:sticky;text-align:left;top:0;z-index:10}.file-list .folder-container .folder-item-container.log-list table>thead th{position:sticky}.dark .log-list table>thead th{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity));color:rgb(161 161 170/var(--tw-text-opacity))}.log-list .log-group{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));position:relative}.dark .log-list .log-group{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity));color:rgb(228 228 231/var(--tw-text-opacity))}.log-list .log-group .log-item>td{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity));border-top-width:1px;font-size:.75rem;line-height:1rem;padding:.375rem .25rem}.dark .log-list .log-group .log-item>td{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}@media (min-width:1024px){.log-list .log-group .log-item>td{font-size:.875rem;line-height:1.25rem;padding:.5rem}}.log-list .log-group.first .log-item>td{border-top-color:transparent}.log-list .log-group .log-stack{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity));font-size:10px;line-height:.75rem;padding:.25rem .5rem;white-space:pre-wrap;word-break:break-all}.dark .log-list .log-group .log-stack{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}@media (min-width:1024px){.log-list .log-group .log-stack{font-size:.75rem;line-height:1rem;padding:.5rem 2rem}}.log-list .log-group .log-link{align-items:center;border-radius:.25rem;display:flex;justify-content:flex-end;margin-bottom:-.125rem;margin-top:-.125rem;padding-bottom:.125rem;padding-left:.25rem;padding-top:.125rem;width:100%}@media (min-width:640px){.log-list .log-group .log-link{min-width:64px}}.log-list .log-group .log-link>svg{height:1rem;margin-left:.25rem;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:1rem}.log-list .log-group .log-link:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .log-list .log-group .log-link:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(56 189 248/var(--tw-ring-opacity))}.log-list .log-group code,.log-list .log-group mark{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity));border-radius:.25rem;color:rgb(24 24 27/var(--tw-text-opacity));padding:.125rem .25rem}.dark .log-list .log-group code,.dark .log-list .log-group mark{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(133 77 14/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.pagination{align-items:center;display:flex;justify-content:center;width:100%}@media (min-width:640px){.pagination{margin-top:.5rem;padding-left:1rem;padding-right:1rem}}@media (min-width:1024px){.pagination{padding-left:0;padding-right:0}}.pagination .previous{display:flex;flex:1 1 0%;justify-content:flex-start;margin-top:-1px;width:0}@media (min-width:768px){.pagination .previous{justify-content:flex-end}}.pagination .previous button{--tw-text-opacity:1;align-items:center;border-color:transparent;border-top-width:2px;color:rgb(113 113 122/var(--tw-text-opacity));display:inline-flex;font-size:.875rem;font-weight:500;line-height:1.25rem;padding-right:.25rem;padding-top:.75rem}.dark .pagination .previous button{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.pagination .previous button:hover{--tw-border-opacity:1;--tw-text-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity));color:rgb(63 63 70/var(--tw-text-opacity))}.dark .pagination .previous button:hover{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.pagination .previous button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .pagination .previous button:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(56 189 248/var(--tw-ring-opacity))}.pagination .previous button svg{color:currentColor;height:1.25rem;margin-left:.75rem;margin-right:.75rem;width:1.25rem}.pagination .next{display:flex;flex:1 1 0%;justify-content:flex-end;margin-top:-1px;width:0}@media (min-width:768px){.pagination .next{justify-content:flex-start}}.pagination .next button{--tw-text-opacity:1;align-items:center;border-color:transparent;border-top-width:2px;color:rgb(113 113 122/var(--tw-text-opacity));display:inline-flex;font-size:.875rem;font-weight:500;line-height:1.25rem;padding-left:.25rem;padding-top:.75rem}.dark .pagination .next button{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.pagination .next button:hover{--tw-border-opacity:1;--tw-text-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity));color:rgb(63 63 70/var(--tw-text-opacity))}.dark .pagination .next button:hover{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.pagination .next button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .pagination .next button:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(56 189 248/var(--tw-ring-opacity))}.pagination .next button svg{color:currentColor;height:1.25rem;margin-left:.75rem;margin-right:.75rem;width:1.25rem}.pagination .pages{display:none}@media (min-width:640px){.pagination .pages{display:flex;margin-top:-1px}}.pagination .pages span{--tw-text-opacity:1;align-items:center;border-color:transparent;border-top-width:2px;color:rgb(113 113 122/var(--tw-text-opacity));display:inline-flex;font-size:.875rem;font-weight:500;line-height:1.25rem;padding-left:1rem;padding-right:1rem;padding-top:.75rem}.dark .pagination .pages span{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.pagination .pages button{align-items:center;border-top-width:2px;display:inline-flex;font-size:.875rem;font-weight:500;line-height:1.25rem;padding-left:1rem;padding-right:1rem;padding-top:.75rem}.pagination .pages button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .pagination .pages button:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(56 189 248/var(--tw-ring-opacity))}.search{--tw-border-opacity:1;--tw-bg-opacity:1;align-items:center;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(212 212 216/var(--tw-border-opacity));border-radius:.375rem;border-width:1px;display:flex;font-size:.875rem;line-height:1.25rem;position:relative;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:100%}.dark .search{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity));border-color:rgb(82 82 91/var(--tw-border-opacity));color:rgb(244 244 245/var(--tw-text-opacity))}.search .prefix-icon{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity));margin-left:.75rem;margin-right:.25rem}.dark .search .prefix-icon{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.search input{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:transparent;background-color:inherit;border-radius:.25rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);flex:1 1 0%;padding:.25rem;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:100%}.search input:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));border-color:transparent;outline:2px solid transparent;outline-offset:2px}.dark .search input:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.search.has-error{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.search .submit-search button{--tw-bg-opacity:1;--tw-text-opacity:1;align-items:center;background-color:rgb(244 244 245/var(--tw-bg-opacity));border-bottom-right-radius:.25rem;border-top-right-radius:.25rem;color:rgb(82 82 91/var(--tw-text-opacity));display:flex;padding:.5rem;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dark .search .submit-search button{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity));color:rgb(212 212 216/var(--tw-text-opacity))}.search .submit-search button:hover{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity))}.dark .search .submit-search button:hover{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity))}.search .submit-search button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .search .submit-search button:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.search .submit-search button>svg{height:1.25rem;margin-left:.25rem;opacity:.75;width:1.25rem}.search .clear-search{position:absolute;right:0;top:0}.search .clear-search button{--tw-text-opacity:1;border-radius:.25rem;color:rgb(161 161 170/var(--tw-text-opacity));padding:.25rem;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dark .search .clear-search button{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.search .clear-search button:hover{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.dark .search .clear-search button:hover{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.search .clear-search button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .search .clear-search button:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.search .clear-search button>svg{height:1.25rem;width:1.25rem}.search-progress-bar{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity));border-radius:.25rem;height:.125rem;position:absolute;top:.25rem;transition-duration:.3s;transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:linear}.dark .search-progress-bar{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.dropdown{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(228 228 231/var(--tw-border-opacity));border-radius:.375rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:rgb(24 24 27/var(--tw-text-opacity));margin-top:-.25rem;overflow:hidden;position:absolute;right:.25rem;top:100%;z-index:40}.dark .dropdown{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity));border-color:rgb(63 63 70/var(--tw-border-opacity));color:rgb(228 228 231/var(--tw-text-opacity))}.dropdown{transform-origin:top right!important}.dropdown:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));--tw-ring-opacity:0.5;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .dropdown:focus{--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity));--tw-ring-opacity:0.5}.dropdown.up{bottom:100%;margin-bottom:-.25rem;margin-top:0;top:auto;transform-origin:bottom right!important}.dropdown.left{left:.25rem;right:auto;transform-origin:top left!important}.dropdown.left.up{transform-origin:bottom left!important}.dropdown a:not(.inline-link),.dropdown button:not(.inline-link){align-items:center;display:block;display:flex;font-size:.875rem;line-height:1.25rem;outline-color:#0ea5e9;padding:.5rem 1rem;text-align:left;width:100%}.dark .dropdown a:not(.inline-link),.dark .dropdown button:not(.inline-link){outline-color:#075985}.dropdown a:not(.inline-link)>svg,.dropdown button:not(.inline-link)>svg{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity));height:1rem;margin-right:.75rem;width:1rem}.dropdown a:not(.inline-link)>svg.spin,.dropdown button:not(.inline-link)>svg.spin{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.dropdown a.active,.dropdown a:hover,.dropdown button.active,.dropdown button:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.dropdown a.active>.checkmark,.dropdown a:hover>.checkmark,.dropdown button.active>.checkmark,.dropdown button:hover>.checkmark{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.dark .dropdown a.active>.checkmark,.dark .dropdown a:hover>.checkmark,.dark .dropdown button.active>.checkmark,.dark .dropdown button:hover>.checkmark{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.dropdown a.active>svg,.dropdown a:hover>svg,.dropdown button.active>svg,.dropdown button:hover>svg{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dropdown .divider{border-top-width:1px;margin-bottom:.5rem;margin-top:.5rem;width:100%}.dark .dropdown .divider{--tw-border-opacity:1;border-top-color:rgb(63 63 70/var(--tw-border-opacity))}.dropdown .label{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity));font-size:.75rem;font-weight:600;line-height:1rem;margin:.25rem 1rem}.file-list{height:100%;overflow-y:auto;padding-bottom:1rem;padding-left:.75rem;padding-right:.75rem;position:relative}@media (min-width:768px){.file-list{padding-left:0;padding-right:0}}.file-list .file-item-container,.file-list .folder-item-container{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;color:rgb(39 39 42/var(--tw-text-opacity));margin-top:.5rem;position:relative;top:0}.dark .file-list .file-item-container,.dark .file-list .folder-item-container{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity));color:rgb(228 228 231/var(--tw-text-opacity))}.file-list .file-item-container .file-item,.file-list .folder-item-container .file-item{border-color:transparent;border-radius:.375rem;border-width:1px;cursor:pointer;position:relative;transition-duration:.1s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.file-list .file-item-container .file-item,.file-list .file-item-container .file-item .file-item-info,.file-list .folder-item-container .file-item,.file-list .folder-item-container .file-item .file-item-info{align-items:center;display:flex;justify-content:space-between;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter}.file-list .file-item-container .file-item .file-item-info,.file-list .folder-item-container .file-item .file-item-info{border-bottom-left-radius:.375rem;border-top-left-radius:.375rem;flex:1 1 0%;outline-color:#0ea5e9;padding:.5rem .75rem .5rem 1rem;text-align:left;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dark .file-list .file-item-container .file-item .file-item-info,.dark .file-list .folder-item-container .file-item .file-item-info{outline-color:#0369a1}.file-list .file-item-container .file-item .file-item-info:hover,.file-list .folder-item-container .file-item .file-item-info:hover{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}.dark .file-list .file-item-container .file-item .file-item-info:hover,.dark .file-list .folder-item-container .file-item .file-item-info:hover{--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity))}.file-list .file-item-container .file-item .file-icon,.file-list .folder-item-container .file-item .file-icon{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity));margin-right:.5rem}.dark .file-list .file-item-container .file-item .file-icon,.dark .file-list .folder-item-container .file-item .file-icon{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.file-list .file-item-container .file-item .file-icon>svg,.file-list .folder-item-container .file-item .file-icon>svg{height:1rem;width:1rem}.file-list .file-item-container .file-item .file-name,.file-list .folder-item-container .file-item .file-name{font-size:.875rem;line-height:1.25rem;margin-right:.75rem;width:100%;word-break:break-word}.file-list .file-item-container .file-item .file-size,.file-list .folder-item-container .file-item .file-size{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity));font-size:.75rem;line-height:1rem;white-space:nowrap}.dark .file-list .file-item-container .file-item .file-size,.dark .file-list .folder-item-container .file-item .file-size{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity));opacity:.9}.file-list .file-item-container.active .file-item,.file-list .folder-item-container.active .file-item{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity));border-color:rgb(14 165 233/var(--tw-border-opacity))}.dark .file-list .file-item-container.active .file-item,.dark .file-list .folder-item-container.active .file-item{--tw-border-opacity:1;--tw-bg-opacity:0.4;background-color:rgb(12 74 110/var(--tw-bg-opacity));border-color:rgb(12 74 110/var(--tw-border-opacity))}.file-list .file-item-container.active-folder .file-item,.file-list .folder-item-container.active-folder .file-item{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.dark .file-list .file-item-container.active-folder .file-item,.dark .file-list .folder-item-container.active-folder .file-item{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}.file-list .file-item-container:hover .file-item,.file-list .folder-item-container:hover .file-item{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.dark .file-list .file-item-container:hover .file-item,.dark .file-list .folder-item-container:hover .file-item{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}.file-list .file-item-container .file-dropdown-toggle,.file-list .folder-item-container .file-dropdown-toggle{--tw-text-opacity:1;align-items:center;align-self:stretch;border-bottom-right-radius:.375rem;border-color:transparent;border-left-width:1px;border-top-right-radius:.375rem;color:rgb(113 113 122/var(--tw-text-opacity));display:flex;justify-content:center;outline-color:#0ea5e9;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:2rem}.dark .file-list .file-item-container .file-dropdown-toggle,.dark .file-list .folder-item-container .file-dropdown-toggle{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity));outline-color:#0369a1}.file-list .file-item-container .file-dropdown-toggle:hover,.file-list .folder-item-container .file-dropdown-toggle:hover{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity));border-color:rgb(2 132 199/var(--tw-border-opacity))}.dark .file-list .file-item-container .file-dropdown-toggle:hover,.dark .file-list .folder-item-container .file-dropdown-toggle:hover{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity));border-color:rgb(7 89 133/var(--tw-border-opacity))}.file-list .folder-container .folder-item-container.sticky{position:sticky}.file-list .folder-container:first-child>.folder-item-container{margin-top:0}.menu-button{--tw-text-opacity:1;border-radius:.375rem;color:rgb(161 161 170/var(--tw-text-opacity));cursor:pointer;outline-color:#0ea5e9;padding:.5rem;position:relative;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.menu-button:hover{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.dark .menu-button:hover{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.menu-button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.dark .menu-button:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}a.button,button.button{--tw-text-opacity:1;align-items:center;border-radius:.375rem;color:rgb(24 24 27/var(--tw-text-opacity));display:block;display:flex;font-size:.875rem;line-height:1.25rem;outline-color:#0ea5e9;padding:.5rem 1rem;text-align:left;width:100%}.dark a.button,.dark button.button{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity));outline-color:#075985}a.button>svg,button.button>svg{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity));height:1rem;width:1rem}.dark a.button>svg,.dark button.button>svg{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}a.button>svg.spin,button.button>svg.spin{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}a.button:hover,button.button:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.dark a.button:hover,.dark button.button:hover{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}.select{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity));border-radius:.25rem;color:rgb(63 63 70/var(--tw-text-opacity));font-weight:400;margin-bottom:-.125rem;margin-top:-.125rem;outline:2px solid transparent;outline-offset:2px;padding:.125rem .25rem}.dark .select{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity));color:rgb(212 212 216/var(--tw-text-opacity))}.select:hover{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity))}.dark .select:hover{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.select:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.dark .select:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.keyboard-shortcut{--tw-text-opacity:1;align-items:center;color:rgb(82 82 91/var(--tw-text-opacity));display:flex;font-size:.875rem;justify-content:flex-start;line-height:1.25rem;margin-bottom:.75rem;width:100%}.dark .keyboard-shortcut{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.keyboard-shortcut .shortcut{--tw-border-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(244 244 245/var(--tw-ring-opacity));align-items:center;border-color:rgb(161 161 170/var(--tw-border-opacity));border-radius:.25rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);display:inline-flex;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1rem;height:1.5rem;justify-content:center;line-height:1.5rem;margin-right:.5rem;width:1.5rem}.dark .keyboard-shortcut .shortcut{--tw-border-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgb(24 24 27/var(--tw-ring-opacity));border-color:rgb(82 82 91/var(--tw-border-opacity))}.hover\:border-brand-600:hover{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.hover\:border-gray-300:hover{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.hover\:text-brand-800:hover{--tw-text-opacity:1;color:rgb(7 89 133/var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.focus\:border-brand-500:focus{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-1:focus,.focus\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-brand-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.group:hover .group-hover\:inline-block{display:inline-block}.group:hover .group-hover\:hidden{display:none}.group:hover .group-hover\:border-brand-600{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.group:hover .group-hover\:underline{-webkit-text-decoration-line:underline;text-decoration-line:underline}.group:hover .group-hover\:opacity-100{opacity:1}.group:focus .group-focus\:inline-block{display:inline-block}.group:focus .group-focus\:hidden{display:none}.dark .dark\:border-gray-600{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity))}.dark .dark\:border-yellow-800{--tw-border-opacity:1;border-color:rgb(133 77 14/var(--tw-border-opacity))}.dark .dark\:border-gray-800{--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity))}.dark .dark\:border-gray-700{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}.dark .dark\:border-brand-600{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.dark .dark\:bg-gray-900{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}.dark .dark\:bg-gray-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.dark .dark\:bg-yellow-900{--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity))}.dark .dark\:bg-gray-700{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}.dark .dark\:bg-opacity-40{--tw-bg-opacity:0.4}.dark .dark\:from-gray-900{--tw-gradient-from:#18181b;--tw-gradient-to:rgba(24,24,27,0);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark .dark\:text-brand-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.dark .dark\:text-gray-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.dark .dark\:text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}.dark .dark\:text-gray-200{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity))}.dark .dark\:text-gray-300{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.dark .dark\:text-brand-500{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.dark .dark\:text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.dark .dark\:opacity-90{opacity:.9}.dark .dark\:outline-brand-800{outline-color:#075985}.dark .hover\:dark\:border-brand-800:hover{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}.dark .dark\:hover\:border-brand-700:hover{--tw-border-opacity:1;border-color:rgb(3 105 161/var(--tw-border-opacity))}.dark .dark\:hover\:border-gray-400:hover{--tw-border-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity))}.dark .dark\:hover\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity))}.dark .dark\:hover\:text-brand-600:hover{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.dark .dark\:hover\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.dark .dark\:focus\:ring-brand-700:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.group:hover .dark .group-hover\:dark\:border-brand-800{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}@media (min-width:640px){.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:flex-col-reverse{flex-direction:column-reverse}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:duration-300{transition-duration:.3s}}@media (min-width:768px){.md\:fixed{position:fixed}.md\:inset-y-0{bottom:0;top:0}.md\:left-0{left:0}.md\:left-auto{left:auto}.md\:right-auto{right:auto}.md\:mx-0{margin-left:0;margin-right:0}.md\:mx-3{margin-left:.75rem;margin-right:.75rem}.md\:mt-0{margin-top:0}.md\:block{display:block}.md\:inline{display:inline}.md\:flex{display:flex}.md\:hidden{display:none}.md\:w-88{width:22rem}.md\:flex-col{flex-direction:column}.md\:px-4{padding-left:1rem;padding-right:1rem}.md\:pl-88{padding-left:22rem}.md\:pb-12{padding-bottom:3rem}.md\:opacity-75{opacity:.75}}@media (min-width:1024px){.lg\:absolute{position:absolute}.lg\:left-0{left:0}.lg\:right-0{right:0}.lg\:top-2{top:.5rem}.lg\:right-6{right:1.5rem}.lg\:mx-0{margin-left:0;margin-right:0}.lg\:mx-8{margin-left:2rem;margin-right:2rem}.lg\:mt-0{margin-top:0}.lg\:mb-0{margin-bottom:0}.lg\:block{display:block}.lg\:inline{display:inline}.lg\:table-cell{display:table-cell}.lg\:hidden{display:none}.lg\:w-auto{width:auto}.lg\:flex-row{flex-direction:row}.lg\:px-5{padding-left:1.25rem;padding-right:1.25rem}.lg\:pl-2{padding-left:.5rem}}@media (min-width:1280px){.xl\:inline{display:inline}} +/*! tailwindcss v3.3.5 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e4e4e7;box-sizing:border-box}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-feature-settings:normal;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#a1a1aa;opacity:1}input::placeholder,textarea::placeholder{color:#a1a1aa;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.\!container{width:100%!important}.container{width:100%}@media (min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-y-0{bottom:0;top:0}.-left-\[200\%\]{left:-200%}.bottom-0{bottom:0}.bottom-10{bottom:2.5rem}.bottom-4{bottom:1rem}.left-0{left:0}.left-3{left:.75rem}.right-0{right:0}.right-4{right:1rem}.right-7{right:1.75rem}.right-\[200\%\]{right:200%}.top-0{top:0}.top-9{top:2.25rem}.z-10{z-index:10}.z-20{z-index:20}.m-1{margin:.25rem}.-my-1{margin-bottom:-.25rem;margin-top:-.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-1\.5{margin-left:.375rem;margin-right:.375rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.my-auto{margin-bottom:auto;margin-top:auto}.-mb-0{margin-bottom:0}.-mb-0\.5{margin-bottom:-.125rem}.-mb-px{margin-bottom:-1px}.-mr-2{margin-right:-.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-5{margin-left:1.25rem}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mr-2\.5{margin-right:.625rem}.mr-4{margin-right:1rem}.mr-5{margin-right:1.25rem}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-0{height:0}.h-14{height:3.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-\[18px\]{height:18px}.h-full{height:100%}.max-h-60{max-height:15rem}.max-h-screen{max-height:100vh}.min-h-\[38px\]{min-height:38px}.min-h-screen{min-height:100vh}.w-14{width:3.5rem}.w-3{width:.75rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-\[18px\]{width:18px}.w-full{width:100%}.w-screen{width:100vw}.min-w-\[240px\]{min-width:240px}.min-w-full{min-width:100%}.max-w-\[1px\]{max-width:1px}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.flex-1{flex:1 1 0%}.shrink{flex-shrink:1}.table-fixed{table-layout:fixed}.border-separate{border-collapse:separate}.translate-x-0{--tw-translate-x:0px}.translate-x-0,.translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-full{--tw-translate-x:100%}.rotate-90{--tw-rotate:90deg}.rotate-90,.scale-100{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-90{--tw-scale-x:.9;--tw-scale-y:.9}.scale-90,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.grid-flow-col{grid-auto-flow:column}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1.5rem*var(--tw-space-x-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-y-auto{overflow-y:auto}.overflow-y-scroll{overflow-y:scroll}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-t{border-top-width:1px}.border-t-2{border-top-width:2px}.border-brand-500{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-yellow-300{--tw-border-opacity:1;border-color:rgb(253 224 71/var(--tw-border-opacity))}.bg-brand-600{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}.bg-opacity-75{--tw-bg-opacity:0.75}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.from-gray-100{--tw-gradient-from:#f4f4f5 var(--tw-gradient-from-position);--tw-gradient-to:hsla(240,5%,96%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.to-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}.p-12{padding:3rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.pb-1{padding-bottom:.25rem}.pb-16{padding-bottom:4rem}.pl-10{padding-left:2.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pr-10{padding-right:2.5rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pr-9{padding-right:2.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.italic{font-style:italic}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.text-brand-500{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.text-brand-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.text-brand-700{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgb(39 39 42/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-yellow-700{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity))}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-25{opacity:.25}.opacity-60{opacity:.6}.opacity-75{opacity:.75}.opacity-90{opacity:.9}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-md,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-brand-500{outline-color:#0ea5e9}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-opacity-5{--tw-ring-opacity:0.05}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.spin{-webkit-animation-duration:1.5s;-moz-animation-duration:1.5s;-ms-animation-duration:1.5s;animation-duration:1.5s;-webkit-animation-iteration-count:infinite;-moz-animation-iteration-count:infinite;-ms-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-name:spin;-moz-animation-name:spin;-ms-animation-name:spin;animation-name:spin;-webkit-animation-timing-function:linear;-moz-animation-timing-function:linear;-ms-animation-timing-function:linear;animation-timing-function:linear}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}html.dark{color-scheme:dark}#bmc-wbtn{height:48px!important;width:48px!important}#bmc-wbtn>img{height:32px!important;width:32px!important}.log-levels-selector .dropdown-toggle{white-space:nowrap}.log-levels-selector .dropdown-toggle:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}:is(.dark .log-levels-selector .dropdown-toggle:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.log-levels-selector .dropdown-toggle>svg{height:1rem;margin-left:.25rem;opacity:.75;width:1rem}.log-levels-selector .dropdown .log-level{font-weight:600}.log-levels-selector .dropdown .log-level.success{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}:is(.dark .log-levels-selector .dropdown .log-level.success){--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.log-levels-selector .dropdown .log-level.info{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}:is(.dark .log-levels-selector .dropdown .log-level.info){--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.log-levels-selector .dropdown .log-level.warning{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}:is(.dark .log-levels-selector .dropdown .log-level.warning){--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}.log-levels-selector .dropdown .log-level.danger{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}:is(.dark .log-levels-selector .dropdown .log-level.danger){--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}.log-levels-selector .dropdown .log-level.none{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}:is(.dark .log-levels-selector .dropdown .log-level.none){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.log-levels-selector .dropdown .log-count{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity));margin-left:2rem;white-space:nowrap}:is(.dark .log-levels-selector .dropdown .log-count){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.log-levels-selector .dropdown button.active .log-level.success{--tw-text-opacity:1;color:rgb(209 250 229/var(--tw-text-opacity))}.log-levels-selector .dropdown button.active .log-level.info{--tw-text-opacity:1;color:rgb(224 242 254/var(--tw-text-opacity))}.log-levels-selector .dropdown button.active .log-level.warning{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity))}.log-levels-selector .dropdown button.active .log-level.danger{--tw-text-opacity:1;color:rgb(255 228 230/var(--tw-text-opacity))}.log-levels-selector .dropdown button.active .log-level.none{--tw-text-opacity:1;color:rgb(244 244 245/var(--tw-text-opacity))}.log-levels-selector .dropdown button.active .log-count{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity))}:is(.dark .log-levels-selector .dropdown button.active .log-count){--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.log-levels-selector .dropdown .no-results{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity));font-size:.75rem;line-height:1rem;padding:.25rem 1rem;text-align:center}:is(.dark .log-levels-selector .dropdown .no-results){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.log-item{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));cursor:pointer;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}:is(.dark .log-item){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.log-item.success.active>td,.log-item.success:focus-within>td,.log-item.success:hover>td{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity))}:is(.dark .log-item.success.active>td),:is(.dark .log-item.success:focus-within>td),:is(.dark .log-item.success:hover>td){--tw-bg-opacity:0.4;background-color:rgb(6 95 70/var(--tw-bg-opacity))}.log-item.success .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity))}:is(.dark .log-item.success .log-level-indicator){--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.log-item.success .log-level{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}:is(.dark .log-item.success .log-level){--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.log-item.info.active>td,.log-item.info:focus-within>td,.log-item.info:hover>td{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}:is(.dark .log-item.info.active>td),:is(.dark .log-item.info:focus-within>td),:is(.dark .log-item.info:hover>td){--tw-bg-opacity:0.4;background-color:rgb(7 89 133/var(--tw-bg-opacity))}.log-item.info .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity))}:is(.dark .log-item.info .log-level-indicator){--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}.log-item.info .log-level{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}:is(.dark .log-item.info .log-level){--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.log-item.warning.active>td,.log-item.warning:focus-within>td,.log-item.warning:hover>td{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity))}:is(.dark .log-item.warning.active>td),:is(.dark .log-item.warning:focus-within>td),:is(.dark .log-item.warning:hover>td){--tw-bg-opacity:0.4;background-color:rgb(146 64 14/var(--tw-bg-opacity))}.log-item.warning .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity))}:is(.dark .log-item.warning .log-level-indicator){--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity))}.log-item.warning .log-level{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}:is(.dark .log-item.warning .log-level){--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}.log-item.danger.active>td,.log-item.danger:focus-within>td,.log-item.danger:hover>td{--tw-bg-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity))}:is(.dark .log-item.danger.active>td),:is(.dark .log-item.danger:focus-within>td),:is(.dark .log-item.danger:hover>td){--tw-bg-opacity:0.4;background-color:rgb(159 18 57/var(--tw-bg-opacity))}.log-item.danger .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(190 18 60/var(--tw-bg-opacity))}:is(.dark .log-item.danger .log-level-indicator){--tw-bg-opacity:1;background-color:rgb(251 113 133/var(--tw-bg-opacity))}.log-item.danger .log-level{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}:is(.dark .log-item.danger .log-level){--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}.log-item.none.active>td,.log-item.none:focus-within>td,.log-item.none:hover>td{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}:is(.dark .log-item.none.active>td),:is(.dark .log-item.none:focus-within>td),:is(.dark .log-item.none:hover>td){--tw-bg-opacity:0.4;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.log-item.none .log-level-indicator{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}:is(.dark .log-item.none .log-level-indicator){--tw-bg-opacity:1;background-color:rgb(161 161 170/var(--tw-bg-opacity))}.log-item.none .log-level{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}:is(.dark .log-item.none .log-level){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.log-item:hover .log-level-icon{opacity:1}.badge{align-items:center;border-radius:.375rem;cursor:pointer;display:inline-flex;font-size:.875rem;line-height:1.25rem;margin-right:.5rem;margin-top:.25rem;padding:.25rem .75rem;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.badge.success{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity));border-color:rgb(167 243 208/var(--tw-border-opacity));border-width:1px;color:rgb(82 82 91/var(--tw-text-opacity))}:is(.dark .badge.success){--tw-border-opacity:1;--tw-bg-opacity:0.4;--tw-text-opacity:1;background-color:rgb(6 78 59/var(--tw-bg-opacity));border-color:rgb(6 95 70/var(--tw-border-opacity));color:rgb(161 161 170/var(--tw-text-opacity))}.badge.success:hover{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity))}:is(.dark .badge.success:hover){--tw-bg-opacity:0.75;background-color:rgb(6 78 59/var(--tw-bg-opacity))}.badge.success .checkmark{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity))}:is(.dark .badge.success .checkmark){--tw-border-opacity:1;border-color:rgb(6 95 70/var(--tw-border-opacity))}.badge.success.active{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity));border-color:rgb(4 120 87/var(--tw-border-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .badge.success.active){--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity));border-color:rgb(5 150 105/var(--tw-border-opacity))}.badge.success.active:hover{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}:is(.dark .badge.success.active:hover){--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity))}.badge.success.active .checkmark{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}:is(.dark .badge.success.active .checkmark){--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity));border-color:rgb(4 120 87/var(--tw-border-opacity))}.badge.success.active .checkmark>svg{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}:is(.dark .badge.success.active .checkmark>svg){--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.badge.info{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity));border-color:rgb(186 230 253/var(--tw-border-opacity));border-width:1px;color:rgb(82 82 91/var(--tw-text-opacity))}:is(.dark .badge.info){--tw-border-opacity:1;--tw-bg-opacity:0.4;--tw-text-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity));border-color:rgb(7 89 133/var(--tw-border-opacity));color:rgb(161 161 170/var(--tw-text-opacity))}.badge.info:hover{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}:is(.dark .badge.info:hover){--tw-bg-opacity:0.75;background-color:rgb(12 74 110/var(--tw-bg-opacity))}.badge.info .checkmark{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity))}:is(.dark .badge.info .checkmark){--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}.badge.info.active{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity));border-color:rgb(3 105 161/var(--tw-border-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .badge.info.active){--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity));border-color:rgb(2 132 199/var(--tw-border-opacity))}.badge.info.active:hover{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}:is(.dark .badge.info.active:hover){--tw-bg-opacity:1;background-color:rgb(7 89 133/var(--tw-bg-opacity))}.badge.info.active .checkmark{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}:is(.dark .badge.info.active .checkmark){--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity));border-color:rgb(3 105 161/var(--tw-border-opacity))}.badge.info.active .checkmark>svg{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}:is(.dark .badge.info.active .checkmark>svg){--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.badge.warning{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity));border-color:rgb(253 230 138/var(--tw-border-opacity));border-width:1px;color:rgb(82 82 91/var(--tw-text-opacity))}:is(.dark .badge.warning){--tw-border-opacity:1;--tw-bg-opacity:0.4;--tw-text-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity));border-color:rgb(146 64 14/var(--tw-border-opacity));color:rgb(161 161 170/var(--tw-text-opacity))}.badge.warning:hover{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}:is(.dark .badge.warning:hover){--tw-bg-opacity:0.75;background-color:rgb(120 53 15/var(--tw-bg-opacity))}.badge.warning .checkmark{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity))}:is(.dark .badge.warning .checkmark){--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-opacity))}.badge.warning.active{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity));border-color:rgb(180 83 9/var(--tw-border-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .badge.warning.active){--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity));border-color:rgb(217 119 6/var(--tw-border-opacity))}.badge.warning.active:hover{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity))}:is(.dark .badge.warning.active:hover){--tw-bg-opacity:1;background-color:rgb(146 64 14/var(--tw-bg-opacity))}.badge.warning.active .checkmark{--tw-border-opacity:1;border-color:rgb(217 119 6/var(--tw-border-opacity))}:is(.dark .badge.warning.active .checkmark){--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity));border-color:rgb(180 83 9/var(--tw-border-opacity))}.badge.warning.active .checkmark>svg{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}:is(.dark .badge.warning.active .checkmark>svg){--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}.badge.danger{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity));border-color:rgb(254 205 211/var(--tw-border-opacity));border-width:1px;color:rgb(82 82 91/var(--tw-text-opacity))}:is(.dark .badge.danger){--tw-border-opacity:1;--tw-bg-opacity:0.4;--tw-text-opacity:1;background-color:rgb(136 19 55/var(--tw-bg-opacity));border-color:rgb(159 18 57/var(--tw-border-opacity));color:rgb(161 161 170/var(--tw-text-opacity))}.badge.danger:hover{--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity))}:is(.dark .badge.danger:hover){--tw-bg-opacity:0.75;background-color:rgb(136 19 55/var(--tw-bg-opacity))}.badge.danger .checkmark{--tw-border-opacity:1;border-color:rgb(254 205 211/var(--tw-border-opacity))}:is(.dark .badge.danger .checkmark){--tw-border-opacity:1;border-color:rgb(159 18 57/var(--tw-border-opacity))}.badge.danger.active{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity));border-color:rgb(190 18 60/var(--tw-border-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .badge.danger.active){--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(190 18 60/var(--tw-bg-opacity));border-color:rgb(225 29 72/var(--tw-border-opacity))}.badge.danger.active:hover{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity))}:is(.dark .badge.danger.active:hover){--tw-bg-opacity:1;background-color:rgb(159 18 57/var(--tw-bg-opacity))}.badge.danger.active .checkmark{--tw-border-opacity:1;border-color:rgb(225 29 72/var(--tw-border-opacity))}:is(.dark .badge.danger.active .checkmark){--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity));border-color:rgb(190 18 60/var(--tw-border-opacity))}.badge.danger.active .checkmark>svg{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}:is(.dark .badge.danger.active .checkmark>svg){--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}.badge.none{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity));border-color:rgb(228 228 231/var(--tw-border-opacity));border-width:1px;color:rgb(82 82 91/var(--tw-text-opacity))}:is(.dark .badge.none){--tw-border-opacity:1;--tw-bg-opacity:0.4;--tw-text-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity));border-color:rgb(39 39 42/var(--tw-border-opacity));color:rgb(161 161 170/var(--tw-text-opacity))}.badge.none:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}:is(.dark .badge.none:hover){--tw-bg-opacity:0.75;background-color:rgb(24 24 27/var(--tw-bg-opacity))}.badge.none .checkmark{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity))}:is(.dark .badge.none .checkmark){--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity))}.badge.none.active{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));color:rgb(39 39 42/var(--tw-text-opacity))}:is(.dark .badge.none.active){--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity));border-color:rgb(82 82 91/var(--tw-border-opacity));color:rgb(244 244 245/var(--tw-text-opacity))}.badge.none.active:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}:is(.dark .badge.none.active:hover){--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}.badge.none.active .checkmark{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity))}:is(.dark .badge.none.active .checkmark){--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity));border-color:rgb(63 63 70/var(--tw-border-opacity))}.badge.none.active .checkmark>svg{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}:is(.dark .badge.none.active .checkmark>svg){--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.log-list table>thead th{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity));color:rgb(113 113 122/var(--tw-text-opacity));font-size:.75rem;font-weight:600;line-height:1rem;padding:.5rem .25rem;position:sticky;text-align:left;top:0;z-index:10}.file-list .folder-container .folder-item-container.log-list table>thead th{position:sticky}:is(.dark .log-list table>thead th){--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity));color:rgb(161 161 170/var(--tw-text-opacity))}@media (min-width:1024px){.log-list table>thead th{font-size:.875rem;line-height:1.25rem;padding-left:.5rem;padding-right:.5rem}}.log-list .log-group{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));position:relative}:is(.dark .log-list .log-group){--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity));color:rgb(228 228 231/var(--tw-text-opacity))}.log-list .log-group .log-item>td{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity));border-top-width:1px;font-size:.75rem;line-height:1rem;padding:.375rem .25rem}:is(.dark .log-list .log-group .log-item>td){--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}@media (min-width:1024px){.log-list .log-group .log-item>td{font-size:.875rem;line-height:1.25rem;padding:.5rem}}.log-list .log-group.first .log-item>td{border-top-color:transparent}.log-list .log-group .mail-preview-attributes{--tw-border-opacity:1;background-color:rgba(240,249,255,.3);border-color:rgb(224 242 254/var(--tw-border-opacity));border-radius:.25rem;border-width:1px;font-size:.75rem;line-height:1rem;margin-bottom:1rem;overflow-x:auto;width:100%}:is(.dark .log-list .log-group .mail-preview-attributes){--tw-border-opacity:1;background-color:rgba(12,74,110,.2);border-color:rgb(7 89 133/var(--tw-border-opacity))}@media (min-width:1024px){.log-list .log-group .mail-preview-attributes{font-size:.875rem;line-height:1.25rem;margin-bottom:1.5rem;overflow:hidden}}.log-list .log-group .mail-preview-attributes table{width:100%}.log-list .log-group .mail-preview-attributes td{padding:.25rem .5rem}@media (min-width:1024px){.log-list .log-group .mail-preview-attributes td{padding:.5rem 1.5rem}}.log-list .log-group .mail-preview-attributes td:not(:first-child){overflow-wrap:anywhere}.log-list .log-group .mail-preview-attributes tr:first-child td{padding-top:.375rem}@media (min-width:1024px){.log-list .log-group .mail-preview-attributes tr:first-child td{padding-top:.75rem}}.log-list .log-group .mail-preview-attributes tr:last-child td{padding-bottom:.375rem}@media (min-width:1024px){.log-list .log-group .mail-preview-attributes tr:last-child td{padding-bottom:.75rem}}.log-list .log-group .mail-preview-attributes tr:not(:last-child) td{--tw-border-opacity:1;border-bottom-width:1px;border-color:rgb(224 242 254/var(--tw-border-opacity))}:is(.dark .log-list .log-group .mail-preview-attributes tr:not(:last-child) td){--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity))}.log-list .log-group .mail-preview-html{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity));border-color:rgb(228 228 231/var(--tw-border-opacity));border-radius:.25rem;border-width:1px;margin-bottom:1rem;overflow:auto;width:100%}:is(.dark .log-list .log-group .mail-preview-html){--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity));border-color:rgb(63 63 70/var(--tw-border-opacity))}@media (min-width:1024px){.log-list .log-group .mail-preview-html{margin-bottom:1.5rem}}.log-list .log-group .mail-preview-text{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity));border-color:rgb(228 228 231/var(--tw-border-opacity));border-radius:.25rem;border-width:1px;font-size:.875rem;line-height:1.25rem;margin-bottom:1rem;padding:1rem;white-space:pre-wrap;width:100%}:is(.dark .log-list .log-group .mail-preview-text){--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity));border-color:rgb(63 63 70/var(--tw-border-opacity))}@media (min-width:1024px){.log-list .log-group .mail-preview-text{margin-bottom:1.5rem}}.log-list .log-group .mail-attachment-button{--tw-bg-opacity:1;align-items:center;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.25rem;border-width:1px;display:flex;justify-content:space-between;padding:.25rem .5rem}:is(.dark .log-list .log-group .mail-attachment-button){--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity));border-color:rgb(63 63 70/var(--tw-border-opacity))}@media (min-width:1024px){.log-list .log-group .mail-attachment-button{padding:.5rem 1rem}}.log-list .log-group .mail-attachment-button{max-width:460px}.log-list .log-group .mail-attachment-button:not(:last-child){margin-bottom:.5rem}.log-list .log-group .mail-attachment-button a:focus{outline-color:#0ea5e9}.log-list .log-group .tabs-container{font-size:.75rem;line-height:1rem}@media (min-width:1024px){.log-list .log-group .tabs-container{font-size:.875rem;line-height:1.25rem}}.log-list .log-group .log-stack,.log-list .log-group .mail-preview,.log-list .log-group .tabs-container{padding:.25rem .5rem}@media (min-width:1024px){.log-list .log-group .log-stack,.log-list .log-group .mail-preview,.log-list .log-group .tabs-container{padding:.5rem 2rem}}.log-list .log-group .log-stack{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity));font-size:10px;line-height:.75rem;white-space:pre-wrap;word-break:break-all}:is(.dark .log-list .log-group .log-stack){--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}@media (min-width:1024px){.log-list .log-group .log-stack{font-size:.75rem;line-height:1rem}}.log-list .log-group .log-link{align-items:center;border-radius:.25rem;display:flex;justify-content:flex-end;margin-bottom:-.125rem;margin-top:-.125rem;padding-bottom:.125rem;padding-left:.25rem;padding-top:.125rem;width:100%}@media (min-width:640px){.log-list .log-group .log-link{min-width:64px}}.log-list .log-group .log-link>svg{height:1rem;margin-left:.25rem;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:1rem}.log-list .log-group .log-link:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}:is(.dark .log-list .log-group .log-link:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(56 189 248/var(--tw-ring-opacity))}.log-list .log-group code,.log-list .log-group mark{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity));border-radius:.25rem;color:rgb(24 24 27/var(--tw-text-opacity));padding:.125rem .25rem}:is(.dark .log-list .log-group code),:is(.dark .log-list .log-group mark){--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(133 77 14/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.pagination{align-items:center;display:flex;justify-content:center;width:100%}@media (min-width:640px){.pagination{margin-top:.5rem;padding-left:1rem;padding-right:1rem}}@media (min-width:1024px){.pagination{padding-left:0;padding-right:0}}.pagination .previous{display:flex;flex:1 1 0%;justify-content:flex-start;margin-top:-1px;width:0}@media (min-width:768px){.pagination .previous{justify-content:flex-end}}.pagination .previous button{--tw-text-opacity:1;align-items:center;border-color:transparent;border-top-width:2px;color:rgb(113 113 122/var(--tw-text-opacity));display:inline-flex;font-size:.875rem;font-weight:500;line-height:1.25rem;padding-right:.25rem;padding-top:.75rem}:is(.dark .pagination .previous button){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.pagination .previous button:hover{--tw-border-opacity:1;--tw-text-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity));color:rgb(63 63 70/var(--tw-text-opacity))}:is(.dark .pagination .previous button:hover){--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.pagination .previous button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}:is(.dark .pagination .previous button:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(56 189 248/var(--tw-ring-opacity))}.pagination .previous button svg{color:currentColor;height:1.25rem;margin-left:.75rem;margin-right:.75rem;width:1.25rem}.pagination .next{display:flex;flex:1 1 0%;justify-content:flex-end;margin-top:-1px;width:0}@media (min-width:768px){.pagination .next{justify-content:flex-start}}.pagination .next button{--tw-text-opacity:1;align-items:center;border-color:transparent;border-top-width:2px;color:rgb(113 113 122/var(--tw-text-opacity));display:inline-flex;font-size:.875rem;font-weight:500;line-height:1.25rem;padding-left:.25rem;padding-top:.75rem}:is(.dark .pagination .next button){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.pagination .next button:hover{--tw-border-opacity:1;--tw-text-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity));color:rgb(63 63 70/var(--tw-text-opacity))}:is(.dark .pagination .next button:hover){--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.pagination .next button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}:is(.dark .pagination .next button:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(56 189 248/var(--tw-ring-opacity))}.pagination .next button svg{color:currentColor;height:1.25rem;margin-left:.75rem;margin-right:.75rem;width:1.25rem}.pagination .pages{display:none}@media (min-width:640px){.pagination .pages{display:flex;margin-top:-1px}}.pagination .pages span{--tw-text-opacity:1;align-items:center;border-color:transparent;border-top-width:2px;color:rgb(113 113 122/var(--tw-text-opacity));display:inline-flex;font-size:.875rem;font-weight:500;line-height:1.25rem;padding-left:1rem;padding-right:1rem;padding-top:.75rem}:is(.dark .pagination .pages span){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.pagination .pages button{align-items:center;border-top-width:2px;display:inline-flex;font-size:.875rem;font-weight:500;line-height:1.25rem;padding-left:1rem;padding-right:1rem;padding-top:.75rem}.pagination .pages button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}:is(.dark .pagination .pages button:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(56 189 248/var(--tw-ring-opacity))}.search{--tw-border-opacity:1;--tw-bg-opacity:1;align-items:center;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(212 212 216/var(--tw-border-opacity));border-radius:.375rem;border-width:1px;display:flex;font-size:.875rem;line-height:1.25rem;position:relative;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:100%}:is(.dark .search){--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity));border-color:rgb(82 82 91/var(--tw-border-opacity));color:rgb(244 244 245/var(--tw-text-opacity))}.search .prefix-icon{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity));margin-left:.75rem;margin-right:.25rem}:is(.dark .search .prefix-icon){--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.search input{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:transparent;background-color:inherit;border-radius:.25rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);flex:1 1 0%;padding:.25rem;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:100%}.search input:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));border-color:transparent;outline:2px solid transparent;outline-offset:2px}:is(.dark .search input:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.search.has-error{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.search .submit-search button{--tw-bg-opacity:1;--tw-text-opacity:1;align-items:center;background-color:rgb(244 244 245/var(--tw-bg-opacity));border-bottom-right-radius:.25rem;border-top-right-radius:.25rem;color:rgb(82 82 91/var(--tw-text-opacity));display:flex;padding:.5rem;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}:is(.dark .search .submit-search button){--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity));color:rgb(212 212 216/var(--tw-text-opacity))}.search .submit-search button:hover{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity))}:is(.dark .search .submit-search button:hover){--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity))}.search .submit-search button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}:is(.dark .search .submit-search button:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.search .submit-search button>svg{height:1.25rem;margin-left:.25rem;opacity:.75;width:1.25rem}.search .clear-search{position:absolute;right:0;top:0}.search .clear-search button{--tw-text-opacity:1;border-radius:.25rem;color:rgb(161 161 170/var(--tw-text-opacity));padding:.25rem;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}:is(.dark .search .clear-search button){--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.search .clear-search button:hover{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}:is(.dark .search .clear-search button:hover){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.search .clear-search button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}:is(.dark .search .clear-search button:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.search .clear-search button>svg{height:1.25rem;width:1.25rem}.search-progress-bar{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity));border-radius:.25rem;height:.125rem;position:absolute;top:.25rem;transition-duration:.3s;transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:linear}:is(.dark .search-progress-bar){--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.dropdown{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(228 228 231/var(--tw-border-opacity));border-radius:.375rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:rgb(24 24 27/var(--tw-text-opacity));margin-top:-.25rem;overflow:hidden;position:absolute;right:.25rem;top:100%;z-index:40}:is(.dark .dropdown){--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity));border-color:rgb(63 63 70/var(--tw-border-opacity));color:rgb(228 228 231/var(--tw-text-opacity))}.dropdown{transform-origin:top right!important}.dropdown:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));--tw-ring-opacity:0.5;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}:is(.dark .dropdown:focus){--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity));--tw-ring-opacity:0.5}.dropdown.up{bottom:100%;margin-bottom:-.25rem;margin-top:0;top:auto;transform-origin:bottom right!important}.dropdown.left{left:.25rem;right:auto;transform-origin:top left!important}.dropdown.left.up{transform-origin:bottom left!important}.dropdown a:not(.inline-link),.dropdown button:not(.inline-link){align-items:center;display:block;display:flex;font-size:.875rem;line-height:1.25rem;outline-color:#0ea5e9;padding:.5rem 1rem;text-align:left;width:100%}:is(.dark .dropdown a:not(.inline-link)),:is(.dark .dropdown button:not(.inline-link)){outline-color:#075985}.dropdown a:not(.inline-link)>svg,.dropdown button:not(.inline-link)>svg{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity));height:1rem;margin-right:.75rem;width:1rem}.dropdown a:not(.inline-link)>svg.spin,.dropdown button:not(.inline-link)>svg.spin{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}.dropdown a.active,.dropdown a:hover,.dropdown button.active,.dropdown button:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.dropdown a.active>.checkmark,.dropdown a:hover>.checkmark,.dropdown button.active>.checkmark,.dropdown button:hover>.checkmark{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}:is(.dark .dropdown a.active>.checkmark),:is(.dark .dropdown a:hover>.checkmark),:is(.dark .dropdown button.active>.checkmark),:is(.dark .dropdown button:hover>.checkmark){--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.dropdown a.active>svg,.dropdown a:hover>svg,.dropdown button.active>svg,.dropdown button:hover>svg{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dropdown .divider{border-top-width:1px;margin-bottom:.5rem;margin-top:.5rem;width:100%}:is(.dark .dropdown .divider){--tw-border-opacity:1;border-top-color:rgb(63 63 70/var(--tw-border-opacity))}.dropdown .label{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity));font-size:.75rem;font-weight:600;line-height:1rem;margin:.25rem 1rem}.file-list{height:100%;overflow-y:auto;padding-bottom:1rem;padding-left:.75rem;padding-right:.75rem;position:relative}@media (min-width:768px){.file-list{padding-left:0;padding-right:0}}.file-list .file-item-container,.file-list .folder-item-container{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;color:rgb(39 39 42/var(--tw-text-opacity));margin-top:.5rem;position:relative;top:0}:is(.dark .file-list .file-item-container),:is(.dark .file-list .folder-item-container){--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity));color:rgb(228 228 231/var(--tw-text-opacity))}.file-list .file-item-container .file-item,.file-list .folder-item-container .file-item{border-color:transparent;border-radius:.375rem;border-width:1px;cursor:pointer;position:relative;transition-duration:.1s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.file-list .file-item-container .file-item,.file-list .file-item-container .file-item .file-item-info,.file-list .folder-item-container .file-item,.file-list .folder-item-container .file-item .file-item-info{align-items:center;display:flex;justify-content:space-between;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter}.file-list .file-item-container .file-item .file-item-info,.file-list .folder-item-container .file-item .file-item-info{border-bottom-left-radius:.375rem;border-top-left-radius:.375rem;flex:1 1 0%;outline-color:#0ea5e9;padding:.5rem .75rem .5rem 1rem;text-align:left;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}:is(.dark .file-list .file-item-container .file-item .file-item-info),:is(.dark .file-list .folder-item-container .file-item .file-item-info){outline-color:#0369a1}.file-list .file-item-container .file-item .file-item-info:hover,.file-list .folder-item-container .file-item .file-item-info:hover{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity))}:is(.dark .file-list .file-item-container .file-item .file-item-info:hover),:is(.dark .file-list .folder-item-container .file-item .file-item-info:hover){--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity))}.file-list .file-item-container .file-item .file-icon,.file-list .folder-item-container .file-item .file-icon{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity));margin-right:.5rem}:is(.dark .file-list .file-item-container .file-item .file-icon),:is(.dark .file-list .folder-item-container .file-item .file-icon){--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.file-list .file-item-container .file-item .file-icon>svg,.file-list .folder-item-container .file-item .file-icon>svg{height:1rem;width:1rem}.file-list .file-item-container .file-item .file-name,.file-list .folder-item-container .file-item .file-name{font-size:.875rem;line-height:1.25rem;margin-right:.75rem;width:100%;word-break:break-word}.file-list .file-item-container .file-item .file-size,.file-list .folder-item-container .file-item .file-size{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity));font-size:.75rem;line-height:1rem;white-space:nowrap}:is(.dark .file-list .file-item-container .file-item .file-size),:is(.dark .file-list .folder-item-container .file-item .file-size){--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity));opacity:.9}.file-list .file-item-container.active .file-item,.file-list .folder-item-container.active .file-item{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity));border-color:rgb(14 165 233/var(--tw-border-opacity))}:is(.dark .file-list .file-item-container.active .file-item),:is(.dark .file-list .folder-item-container.active .file-item){--tw-border-opacity:1;--tw-bg-opacity:0.4;background-color:rgb(12 74 110/var(--tw-bg-opacity));border-color:rgb(12 74 110/var(--tw-border-opacity))}.file-list .file-item-container.active-folder .file-item,.file-list .folder-item-container.active-folder .file-item{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}:is(.dark .file-list .file-item-container.active-folder .file-item),:is(.dark .file-list .folder-item-container.active-folder .file-item){--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}.file-list .file-item-container:hover .file-item,.file-list .folder-item-container:hover .file-item{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}:is(.dark .file-list .file-item-container:hover .file-item),:is(.dark .file-list .folder-item-container:hover .file-item){--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}.file-list .file-item-container .file-dropdown-toggle,.file-list .folder-item-container .file-dropdown-toggle{--tw-text-opacity:1;align-items:center;align-self:stretch;border-bottom-right-radius:.375rem;border-color:transparent;border-left-width:1px;border-top-right-radius:.375rem;color:rgb(113 113 122/var(--tw-text-opacity));display:flex;justify-content:center;outline-color:#0ea5e9;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:2rem}:is(.dark .file-list .file-item-container .file-dropdown-toggle),:is(.dark .file-list .folder-item-container .file-dropdown-toggle){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity));outline-color:#0369a1}.file-list .file-item-container .file-dropdown-toggle:hover,.file-list .folder-item-container .file-dropdown-toggle:hover{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity));border-color:rgb(2 132 199/var(--tw-border-opacity))}:is(.dark .file-list .file-item-container .file-dropdown-toggle:hover),:is(.dark .file-list .folder-item-container .file-dropdown-toggle:hover){--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(12 74 110/var(--tw-bg-opacity));border-color:rgb(7 89 133/var(--tw-border-opacity))}.file-list .folder-container .folder-item-container.sticky{position:sticky}.file-list .folder-container:first-child>.folder-item-container{margin-top:0}.menu-button{--tw-text-opacity:1;border-radius:.375rem;color:rgb(161 161 170/var(--tw-text-opacity));cursor:pointer;outline-color:#0ea5e9;padding:.5rem;position:relative;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.menu-button:hover{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}:is(.dark .menu-button:hover){--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}.menu-button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}:is(.dark .menu-button:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}a.button,button.button{--tw-text-opacity:1;align-items:center;border-radius:.375rem;color:rgb(24 24 27/var(--tw-text-opacity));display:block;display:flex;font-size:.875rem;line-height:1.25rem;outline-color:#0ea5e9;padding:.5rem 1rem;text-align:left;width:100%}:is(.dark a.button),:is(.dark button.button){--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity));outline-color:#075985}a.button>svg,button.button>svg{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity));height:1rem;width:1rem}:is(.dark a.button>svg),:is(.dark button.button>svg){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}a.button>svg.spin,button.button>svg.spin{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity))}a.button:hover,button.button:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}:is(.dark a.button:hover),:is(.dark button.button:hover){--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}.select{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity));border-radius:.25rem;color:rgb(63 63 70/var(--tw-text-opacity));font-weight:400;margin-bottom:-.125rem;margin-top:-.125rem;outline:2px solid transparent;outline-offset:2px;padding:.125rem .25rem}:is(.dark .select){--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity));color:rgb(212 212 216/var(--tw-text-opacity))}.select:hover{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity))}:is(.dark .select:hover){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}.select:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}:is(.dark .select:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.keyboard-shortcut{--tw-text-opacity:1;align-items:center;color:rgb(82 82 91/var(--tw-text-opacity));display:flex;font-size:.875rem;justify-content:flex-start;line-height:1.25rem;margin-bottom:.75rem;width:100%}:is(.dark .keyboard-shortcut){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}.keyboard-shortcut .shortcut{--tw-border-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(244 244 245/var(--tw-ring-opacity));align-items:center;border-color:rgb(161 161 170/var(--tw-border-opacity));border-radius:.25rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);display:inline-flex;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1rem;height:1.5rem;justify-content:center;line-height:1.5rem;margin-right:.5rem;width:1.5rem}:is(.dark .keyboard-shortcut .shortcut){--tw-border-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgb(24 24 27/var(--tw-ring-opacity));border-color:rgb(82 82 91/var(--tw-border-opacity))}.hover\:border-brand-600:hover{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.hover\:border-gray-300:hover{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity))}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.hover\:text-blue-700:hover{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity))}.hover\:text-brand-800:hover{--tw-text-opacity:1;color:rgb(7 89 133/var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity))}.focus\:border-brand-500:focus{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:outline-brand-500:focus{outline-color:#0ea5e9}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-1:focus,.focus\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-brand-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.group:hover .group-hover\:inline-block{display:inline-block}.group:hover .group-hover\:hidden{display:none}.group:hover .group-hover\:border-brand-600{--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}.group:hover .group-hover\:underline{text-decoration-line:underline}.group:hover .group-hover\:opacity-100{opacity:1}.group:focus .group-focus\:inline-block{display:inline-block}.group:focus .group-focus\:hidden{display:none}:is(.dark .dark\:border-brand-400){--tw-border-opacity:1;border-color:rgb(56 189 248/var(--tw-border-opacity))}:is(.dark .dark\:border-brand-600){--tw-border-opacity:1;border-color:rgb(2 132 199/var(--tw-border-opacity))}:is(.dark .dark\:border-gray-600){--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity))}:is(.dark .dark\:border-gray-700){--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity))}:is(.dark .dark\:border-gray-800){--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity))}:is(.dark .dark\:border-yellow-800){--tw-border-opacity:1;border-color:rgb(133 77 14/var(--tw-border-opacity))}:is(.dark .dark\:bg-gray-700){--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-800){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-900){--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity))}:is(.dark .dark\:bg-yellow-900){--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity))}:is(.dark .dark\:bg-opacity-40){--tw-bg-opacity:0.4}:is(.dark .dark\:from-gray-900){--tw-gradient-from:#18181b var(--tw-gradient-from-position);--tw-gradient-to:rgba(24,24,27,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}:is(.dark .dark\:text-blue-500){--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}:is(.dark .dark\:text-brand-500){--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}:is(.dark .dark\:text-brand-600){--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}:is(.dark .dark\:text-gray-200){--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity))}:is(.dark .dark\:text-gray-300){--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}:is(.dark .dark\:text-gray-400){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity))}:is(.dark .dark\:text-green-500){--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}:is(.dark .dark\:text-yellow-400){--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}:is(.dark .dark\:opacity-90){opacity:.9}:is(.dark .dark\:outline-brand-800){outline-color:#075985}:is(.dark .dark\:hover\:border-brand-700:hover){--tw-border-opacity:1;border-color:rgb(3 105 161/var(--tw-border-opacity))}:is(.dark .dark\:hover\:border-gray-400:hover){--tw-border-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity))}:is(.dark .hover\:dark\:border-brand-800):hover{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}:is(.dark .dark\:hover\:bg-gray-600:hover){--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:text-blue-400:hover){--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-brand-600:hover){--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-gray-200:hover){--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-gray-300:hover){--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity))}:is(.dark .dark\:focus\:ring-brand-700:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(3 105 161/var(--tw-ring-opacity))}.group:hover :is(.dark .group-hover\:dark\:border-brand-800){--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity))}@media (min-width:640px){.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:flex-col-reverse{flex-direction:column-reverse}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:duration-300{transition-duration:.3s}}@media (min-width:768px){.md\:fixed{position:fixed}.md\:inset-y-0{bottom:0;top:0}.md\:left-0{left:0}.md\:left-auto{left:auto}.md\:right-auto{right:auto}.md\:mx-0{margin-left:0;margin-right:0}.md\:mx-3{margin-left:.75rem;margin-right:.75rem}.md\:mt-0{margin-top:0}.md\:block{display:block}.md\:inline{display:inline}.md\:flex{display:flex}.md\:hidden{display:none}.md\:w-88{width:22rem}.md\:flex-col{flex-direction:column}.md\:px-4{padding-left:1rem;padding-right:1rem}.md\:pb-12{padding-bottom:3rem}.md\:pl-88{padding-left:22rem}.md\:opacity-75{opacity:.75}}@media (min-width:1024px){.lg\:absolute{position:absolute}.lg\:left-0{left:0}.lg\:right-0{right:0}.lg\:right-6{right:1.5rem}.lg\:top-2{top:.5rem}.lg\:mx-0{margin-left:0;margin-right:0}.lg\:mx-8{margin-left:2rem;margin-right:2rem}.lg\:mb-0{margin-bottom:0}.lg\:mt-0{margin-top:0}.lg\:block{display:block}.lg\:inline{display:inline}.lg\:table-cell{display:table-cell}.lg\:hidden{display:none}.lg\:w-auto{width:auto}.lg\:flex-row{flex-direction:row}.lg\:px-5{padding-left:1.25rem;padding-right:1.25rem}.lg\:pl-2{padding-left:.5rem}.lg\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width:1280px){.xl\:inline{display:inline}} diff --git a/public/vendor/log-viewer/app.js b/public/vendor/log-viewer/app.js index 9d1ae1061bc..bfaf39b4951 100644 --- a/public/vendor/log-viewer/app.js +++ b/public/vendor/log-viewer/app.js @@ -1,2 +1,2 @@ /*! For license information please see app.js.LICENSE.txt */ -(()=>{var e,t={520:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true"},[r("path",{"fill-rule":"evenodd",d:"M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z","clip-rule":"evenodd"})])}},889:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true"},[r("path",{"fill-rule":"evenodd",d:"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z","clip-rule":"evenodd"})])}},10:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M10.5 19.5L3 12m0 0l7.5-7.5M3 12h18"})])}},488:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0l3.181 3.183a8.25 8.25 0 0013.803-3.7M4.031 9.865a8.25 8.25 0 0113.803-3.7l3.181 3.182m0-4.991v4.99"})])}},683:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3"})])}},69:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M13.5 6H5.25A2.25 2.25 0 003 8.25v10.5A2.25 2.25 0 005.25 21h10.5A2.25 2.25 0 0018 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25"})])}},246:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 8.25l-7.5 7.5-7.5-7.5"})])}},388:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.25 4.5l7.5 7.5-7.5 7.5"})])}},782:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M20.25 6.375c0 2.278-3.694 4.125-8.25 4.125S3.75 8.653 3.75 6.375m16.5 0c0-2.278-3.694-4.125-8.25-4.125S3.75 4.097 3.75 6.375m16.5 0v11.25c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125V6.375m16.5 0v3.75m-16.5-3.75v3.75m16.5 0v3.75C20.25 16.153 16.556 18 12 18s-8.25-1.847-8.25-4.125v-3.75m16.5 0c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125"})])}},156:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 9.75v6.75m0 0l-3-3m3 3l3-3m-8.25 6a4.5 4.5 0 01-1.41-8.775 5.25 5.25 0 0110.233-2.33 3 3 0 013.758 3.848A3.752 3.752 0 0118 19.5H6.75z"})])}},904:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M10.343 3.94c.09-.542.56-.94 1.11-.94h1.093c.55 0 1.02.398 1.11.94l.149.894c.07.424.384.764.78.93.398.164.855.142 1.205-.108l.737-.527a1.125 1.125 0 011.45.12l.773.774c.39.389.44 1.002.12 1.45l-.527.737c-.25.35-.272.806-.107 1.204.165.397.505.71.93.78l.893.15c.543.09.94.56.94 1.109v1.094c0 .55-.397 1.02-.94 1.11l-.893.149c-.425.07-.765.383-.93.78-.165.398-.143.854.107 1.204l.527.738c.32.447.269 1.06-.12 1.45l-.774.773a1.125 1.125 0 01-1.449.12l-.738-.527c-.35-.25-.806-.272-1.203-.107-.397.165-.71.505-.781.929l-.149.894c-.09.542-.56.94-1.11.94h-1.094c-.55 0-1.019-.398-1.11-.94l-.148-.894c-.071-.424-.384-.764-.781-.93-.398-.164-.854-.142-1.204.108l-.738.527c-.447.32-1.06.269-1.45-.12l-.773-.774a1.125 1.125 0 01-.12-1.45l.527-.737c.25-.35.273-.806.108-1.204-.165-.397-.505-.71-.93-.78l-.894-.15c-.542-.09-.94-.56-.94-1.109v-1.094c0-.55.398-1.02.94-1.11l.894-.149c.424-.07.765-.383.93-.78.165-.398.143-.854-.107-1.204l-.527-.738a1.125 1.125 0 01.12-1.45l.773-.773a1.125 1.125 0 011.45-.12l.737.527c.35.25.807.272 1.204.107.397-.165.71-.505.78-.929l.15-.894z"}),r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})])}},960:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 17.25v1.007a3 3 0 01-.879 2.122L7.5 21h9l-.621-.621A3 3 0 0115 18.257V17.25m6-12V15a2.25 2.25 0 01-2.25 2.25H5.25A2.25 2.25 0 013 15V5.25m18 0A2.25 2.25 0 0018.75 3H5.25A2.25 2.25 0 003 5.25m18 0V12a2.25 2.25 0 01-2.25 2.25H5.25A2.25 2.25 0 013 12V5.25"})])}},243:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 6.75a.75.75 0 110-1.5.75.75 0 010 1.5zM12 12.75a.75.75 0 110-1.5.75.75 0 010 1.5zM12 18.75a.75.75 0 110-1.5.75.75 0 010 1.5z"})])}},706:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z"})])}},413:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M2.25 12.75V12A2.25 2.25 0 014.5 9.75h15A2.25 2.25 0 0121.75 12v.75m-8.69-6.44l-2.12-2.12a1.5 1.5 0 00-1.061-.44H4.5A2.25 2.25 0 002.25 6v12a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18V9a2.25 2.25 0 00-2.25-2.25h-5.379a1.5 1.5 0 01-1.06-.44z"})])}},199:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.75 9.776c.112-.017.227-.026.344-.026h15.812c.117 0 .232.009.344.026m-16.5 0a2.25 2.25 0 00-1.883 2.542l.857 6a2.25 2.25 0 002.227 1.932H19.05a2.25 2.25 0 002.227-1.932l.857-6a2.25 2.25 0 00-1.883-2.542m-16.5 0V6A2.25 2.25 0 016 3.75h3.879a1.5 1.5 0 011.06.44l2.122 2.12a1.5 1.5 0 001.06.44H18A2.25 2.25 0 0120.25 9v.776"})])}},923:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M13.19 8.688a4.5 4.5 0 011.242 7.244l-4.5 4.5a4.5 4.5 0 01-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 00-6.364-6.364l-4.5 4.5a4.5 4.5 0 001.242 7.244"})])}},447:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z"})])}},902:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z"})])}},390:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9 5.25h.008v.008H12v-.008z"})])}},908:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M7.217 10.907a2.25 2.25 0 100 2.186m0-2.186c.18.324.283.696.283 1.093s-.103.77-.283 1.093m0-2.186l9.566-5.314m-9.566 7.5l9.566 5.314m0 0a2.25 2.25 0 103.935 2.186 2.25 2.25 0 00-3.935-2.186zm0-12.814a2.25 2.25 0 103.933-2.185 2.25 2.25 0 00-3.933 2.185z"})])}},817:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 3v2.25m6.364.386l-1.591 1.591M21 12h-2.25m-.386 6.364l-1.591-1.591M12 18.75V21m-4.773-4.227l-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0z"})])}},558:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0"})])}},505:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6 18L18 6M6 6l12 12"})])}},598:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[r("path",{"fill-rule":"evenodd",d:"M4.755 10.059a7.5 7.5 0 0112.548-3.364l1.903 1.903h-3.183a.75.75 0 100 1.5h4.992a.75.75 0 00.75-.75V4.356a.75.75 0 00-1.5 0v3.18l-1.9-1.9A9 9 0 003.306 9.67a.75.75 0 101.45.388zm15.408 3.352a.75.75 0 00-.919.53 7.5 7.5 0 01-12.548 3.364l-1.902-1.903h3.183a.75.75 0 000-1.5H2.984a.75.75 0 00-.75.75v4.992a.75.75 0 001.5 0v-3.18l1.9 1.9a9 9 0 0015.059-4.035.75.75 0 00-.53-.918z","clip-rule":"evenodd"})])}},462:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[r("path",{"fill-rule":"evenodd",d:"M3 6.75A.75.75 0 013.75 6h16.5a.75.75 0 010 1.5H3.75A.75.75 0 013 6.75zM3 12a.75.75 0 01.75-.75h16.5a.75.75 0 010 1.5H3.75A.75.75 0 013 12zm0 5.25a.75.75 0 01.75-.75h16.5a.75.75 0 010 1.5H3.75a.75.75 0 01-.75-.75z","clip-rule":"evenodd"})])}},452:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[r("path",{"fill-rule":"evenodd",d:"M16.28 11.47a.75.75 0 010 1.06l-7.5 7.5a.75.75 0 01-1.06-1.06L14.69 12 7.72 5.03a.75.75 0 011.06-1.06l7.5 7.5z","clip-rule":"evenodd"})])}},640:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[r("path",{"fill-rule":"evenodd",d:"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z","clip-rule":"evenodd"})])}},307:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[r("path",{"fill-rule":"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z","clip-rule":"evenodd"})])}},968:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[r("path",{d:"M7.493 18.75c-.425 0-.82-.236-.975-.632A7.48 7.48 0 016 15.375c0-1.75.599-3.358 1.602-4.634.151-.192.373-.309.6-.397.473-.183.89-.514 1.212-.924a9.042 9.042 0 012.861-2.4c.723-.384 1.35-.956 1.653-1.715a4.498 4.498 0 00.322-1.672V3a.75.75 0 01.75-.75 2.25 2.25 0 012.25 2.25c0 1.152-.26 2.243-.723 3.218-.266.558.107 1.282.725 1.282h3.126c1.026 0 1.945.694 2.054 1.715.045.422.068.85.068 1.285a11.95 11.95 0 01-2.649 7.521c-.388.482-.987.729-1.605.729H14.23c-.483 0-.964-.078-1.423-.23l-3.114-1.04a4.501 4.501 0 00-1.423-.23h-.777zM2.331 10.977a11.969 11.969 0 00-.831 4.398 12 12 0 00.52 3.507c.26.85 1.084 1.368 1.973 1.368H4.9c.445 0 .72-.498.523-.898a8.963 8.963 0 01-.924-3.977c0-1.708.476-3.305 1.302-4.666.245-.403-.028-.959-.5-.959H4.25c-.832 0-1.612.453-1.918 1.227z"})])}},36:(e,t,n)=>{const{createElementVNode:r,openBlock:o,createElementBlock:i}=n(821);e.exports=function(e,t){return o(),i("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[r("path",{"fill-rule":"evenodd",d:"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zm8.706-1.442c1.146-.573 2.437.463 2.126 1.706l-.709 2.836.042-.02a.75.75 0 01.67 1.34l-.04.022c-1.147.573-2.438-.463-2.127-1.706l.71-2.836-.042.02a.75.75 0 11-.671-1.34l.041-.022zM12 9a.75.75 0 100-1.5.75.75 0 000 1.5z","clip-rule":"evenodd"})])}},500:(e,t,n)=>{"use strict";var r=n(821),o=!1;function i(e,t,n){return Array.isArray(e)?(e.length=Math.max(e.length,t),e.splice(t,1,n),n):(e[t]=n,n)}function a(){return"undefined"!=typeof navigator&&"undefined"!=typeof window?window:void 0!==n.g?n.g:{}}const l="function"==typeof Proxy,s="devtools-plugin:setup";let c,u,f;function d(){return function(){var e;return void 0!==c||("undefined"!=typeof window&&window.performance?(c=!0,u=window.performance):void 0!==n.g&&(null===(e=n.g.perf_hooks)||void 0===e?void 0:e.performance)?(c=!0,u=n.g.perf_hooks.performance):c=!1),c}()?u.now():Date.now()}class p{constructor(e,t){this.target=null,this.targetQueue=[],this.onQueue=[],this.plugin=e,this.hook=t;const n={};if(e.settings)for(const t in e.settings){const r=e.settings[t];n[t]=r.defaultValue}const r=`__vue-devtools-plugin-settings__${e.id}`;let o=Object.assign({},n);try{const e=localStorage.getItem(r),t=JSON.parse(e);Object.assign(o,t)}catch(e){}this.fallbacks={getSettings:()=>o,setSettings(e){try{localStorage.setItem(r,JSON.stringify(e))}catch(e){}o=e},now:()=>d()},t&&t.on("plugin:settings:set",((e,t)=>{e===this.plugin.id&&this.fallbacks.setSettings(t)})),this.proxiedOn=new Proxy({},{get:(e,t)=>this.target?this.target.on[t]:(...e)=>{this.onQueue.push({method:t,args:e})}}),this.proxiedTarget=new Proxy({},{get:(e,t)=>this.target?this.target[t]:"on"===t?this.proxiedOn:Object.keys(this.fallbacks).includes(t)?(...e)=>(this.targetQueue.push({method:t,args:e,resolve:()=>{}}),this.fallbacks[t](...e)):(...e)=>new Promise((n=>{this.targetQueue.push({method:t,args:e,resolve:n})}))})}async setRealTarget(e){this.target=e;for(const e of this.onQueue)this.target.on[e.method](...e.args);for(const e of this.targetQueue)e.resolve(await this.target[e.method](...e.args))}}function h(e,t){const n=e,r=a(),o=a().__VUE_DEVTOOLS_GLOBAL_HOOK__,i=l&&n.enableEarlyProxy;if(!o||!r.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__&&i){const e=i?new p(n,o):null;(r.__VUE_DEVTOOLS_PLUGINS__=r.__VUE_DEVTOOLS_PLUGINS__||[]).push({pluginDescriptor:n,setupFn:t,proxy:e}),e&&t(e.proxiedTarget)}else o.emit(s,e,t)}const v=e=>f=e,m=Symbol();function g(e){return e&&"object"==typeof e&&"[object Object]"===Object.prototype.toString.call(e)&&"function"!=typeof e.toJSON}var y;!function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"}(y||(y={}));const b="undefined"!=typeof window,w=!1,C=(()=>"object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:"object"==typeof globalThis?globalThis:{HTMLElement:null})();function _(e,t,n){const r=new XMLHttpRequest;r.open("GET",e),r.responseType="blob",r.onload=function(){O(r.response,t,n)},r.onerror=function(){},r.send()}function E(e){const t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return t.status>=200&&t.status<=299}function x(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(t){const n=document.createEvent("MouseEvents");n.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(n)}}const k="object"==typeof navigator?navigator:{userAgent:""},S=(()=>/Macintosh/.test(k.userAgent)&&/AppleWebKit/.test(k.userAgent)&&!/Safari/.test(k.userAgent))(),O=b?"undefined"!=typeof HTMLAnchorElement&&"download"in HTMLAnchorElement.prototype&&!S?function(e,t="download",n){const r=document.createElement("a");r.download=t,r.rel="noopener","string"==typeof e?(r.href=e,r.origin!==location.origin?E(r.href)?_(e,t,n):(r.target="_blank",x(r)):x(r)):(r.href=URL.createObjectURL(e),setTimeout((function(){URL.revokeObjectURL(r.href)}),4e4),setTimeout((function(){x(r)}),0))}:"msSaveOrOpenBlob"in k?function(e,t="download",n){if("string"==typeof e)if(E(e))_(e,t,n);else{const t=document.createElement("a");t.href=e,t.target="_blank",setTimeout((function(){x(t)}))}else navigator.msSaveOrOpenBlob(function(e,{autoBom:t=!1}={}){return t&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([String.fromCharCode(65279),e],{type:e.type}):e}(e,n),t)}:function(e,t,n,r){(r=r||open("","_blank"))&&(r.document.title=r.document.body.innerText="downloading...");if("string"==typeof e)return _(e,t,n);const o="application/octet-stream"===e.type,i=/constructor/i.test(String(C.HTMLElement))||"safari"in C,a=/CriOS\/[\d]+/.test(navigator.userAgent);if((a||o&&i||S)&&"undefined"!=typeof FileReader){const t=new FileReader;t.onloadend=function(){let e=t.result;if("string"!=typeof e)throw r=null,new Error("Wrong reader.result type");e=a?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),r?r.location.href=e:location.assign(e),r=null},t.readAsDataURL(e)}else{const t=URL.createObjectURL(e);r?r.location.assign(t):location.href=t,r=null,setTimeout((function(){URL.revokeObjectURL(t)}),4e4)}}:()=>{};function N(e,t){"function"==typeof __VUE_DEVTOOLS_TOAST__&&__VUE_DEVTOOLS_TOAST__("🍍 "+e,t)}function P(e){return"_a"in e&&"install"in e}function T(){if(!("clipboard"in navigator))return N("Your browser doesn't support the Clipboard API","error"),!0}function V(e){return!!(e instanceof Error&&e.message.toLowerCase().includes("document is not focused"))&&(N('You need to activate the "Emulate a focused page" setting in the "Rendering" panel of devtools.',"warn"),!0)}let R;async function L(e){try{const t=await(R||(R=document.createElement("input"),R.type="file",R.accept=".json"),function(){return new Promise(((e,t)=>{R.onchange=async()=>{const t=R.files;if(!t)return e(null);const n=t.item(0);return e(n?{text:await n.text(),file:n}:null)},R.oncancel=()=>e(null),R.onerror=t,R.click()}))}),n=await t();if(!n)return;const{text:r,file:o}=n;e.state.value=JSON.parse(r),N(`Global state imported from "${o.name}".`)}catch(e){N("Failed to export the state as JSON. Check the console for more details.","error")}}function A(e){return{_custom:{display:e}}}const j="🍍 Pinia (root)",B="_root";function I(e){return P(e)?{id:B,label:j}:{id:e.$id,label:e.$id}}function M(e){return e?Array.isArray(e)?e.reduce(((e,t)=>(e.keys.push(t.key),e.operations.push(t.type),e.oldValue[t.key]=t.oldValue,e.newValue[t.key]=t.newValue,e)),{oldValue:{},keys:[],operations:[],newValue:{}}):{operation:A(e.type),key:A(e.key),oldValue:e.oldValue,newValue:e.newValue}:{}}function F(e){switch(e){case y.direct:return"mutation";case y.patchFunction:case y.patchObject:return"$patch";default:return"unknown"}}let D=!0;const U=[],$="pinia:mutations",H="pinia",{assign:z}=Object,q=e=>"🍍 "+e;function W(e,t){h({id:"dev.esm.pinia",label:"Pinia 🍍",logo:"https://pinia.vuejs.org/logo.svg",packageName:"pinia",homepage:"https://pinia.vuejs.org",componentStateTypes:U,app:e},(n=>{"function"!=typeof n.now&&N("You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html."),n.addTimelineLayer({id:$,label:"Pinia 🍍",color:15064968}),n.addInspector({id:H,label:"Pinia 🍍",icon:"storage",treeFilterPlaceholder:"Search stores",actions:[{icon:"content_copy",action:()=>{!async function(e){if(!T())try{await navigator.clipboard.writeText(JSON.stringify(e.state.value)),N("Global state copied to clipboard.")}catch(e){if(V(e))return;N("Failed to serialize the state. Check the console for more details.","error")}}(t)},tooltip:"Serialize and copy the state"},{icon:"content_paste",action:async()=>{await async function(e){if(!T())try{e.state.value=JSON.parse(await navigator.clipboard.readText()),N("Global state pasted from clipboard.")}catch(e){if(V(e))return;N("Failed to deserialize the state from clipboard. Check the console for more details.","error")}}(t),n.sendInspectorTree(H),n.sendInspectorState(H)},tooltip:"Replace the state with the content of your clipboard"},{icon:"save",action:()=>{!async function(e){try{O(new Blob([JSON.stringify(e.state.value)],{type:"text/plain;charset=utf-8"}),"pinia-state.json")}catch(e){N("Failed to export the state as JSON. Check the console for more details.","error")}}(t)},tooltip:"Save the state as a JSON file"},{icon:"folder_open",action:async()=>{await L(t),n.sendInspectorTree(H),n.sendInspectorState(H)},tooltip:"Import the state from a JSON file"}],nodeActions:[{icon:"restore",tooltip:"Reset the state (option store only)",action:e=>{const n=t._s.get(e);n?n._isOptionsAPI?(n.$reset(),N(`Store "${e}" reset.`)):N(`Cannot reset "${e}" store because it's a setup store.`,"warn"):N(`Cannot reset "${e}" store because it wasn't found.`,"warn")}}]}),n.on.inspectComponent(((e,t)=>{const n=e.componentInstance&&e.componentInstance.proxy;if(n&&n._pStores){const t=e.componentInstance.proxy._pStores;Object.values(t).forEach((t=>{e.instanceData.state.push({type:q(t.$id),key:"state",editable:!0,value:t._isOptionsAPI?{_custom:{value:(0,r.toRaw)(t.$state),actions:[{icon:"restore",tooltip:"Reset the state of this store",action:()=>t.$reset()}]}}:Object.keys(t.$state).reduce(((e,n)=>(e[n]=t.$state[n],e)),{})}),t._getters&&t._getters.length&&e.instanceData.state.push({type:q(t.$id),key:"getters",editable:!1,value:t._getters.reduce(((e,n)=>{try{e[n]=t[n]}catch(t){e[n]=t}return e}),{})})}))}})),n.on.getInspectorTree((n=>{if(n.app===e&&n.inspectorId===H){let e=[t];e=e.concat(Array.from(t._s.values())),n.rootNodes=(n.filter?e.filter((e=>"$id"in e?e.$id.toLowerCase().includes(n.filter.toLowerCase()):j.toLowerCase().includes(n.filter.toLowerCase()))):e).map(I)}})),n.on.getInspectorState((n=>{if(n.app===e&&n.inspectorId===H){const e=n.nodeId===B?t:t._s.get(n.nodeId);if(!e)return;e&&(n.state=function(e){if(P(e)){const t=Array.from(e._s.keys()),n=e._s,r={state:t.map((t=>({editable:!0,key:t,value:e.state.value[t]}))),getters:t.filter((e=>n.get(e)._getters)).map((e=>{const t=n.get(e);return{editable:!1,key:e,value:t._getters.reduce(((e,n)=>(e[n]=t[n],e)),{})}}))};return r}const t={state:Object.keys(e.$state).map((t=>({editable:!0,key:t,value:e.$state[t]})))};return e._getters&&e._getters.length&&(t.getters=e._getters.map((t=>({editable:!1,key:t,value:e[t]})))),e._customProperties.size&&(t.customProperties=Array.from(e._customProperties).map((t=>({editable:!0,key:t,value:e[t]})))),t}(e))}})),n.on.editInspectorState(((n,r)=>{if(n.app===e&&n.inspectorId===H){const e=n.nodeId===B?t:t._s.get(n.nodeId);if(!e)return N(`store "${n.nodeId}" not found`,"error");const{path:r}=n;P(e)?r.unshift("state"):1===r.length&&e._customProperties.has(r[0])&&!(r[0]in e.$state)||r.unshift("$state"),D=!1,n.set(e,r,n.state.value),D=!0}})),n.on.editComponentState((e=>{if(e.type.startsWith("🍍")){const n=e.type.replace(/^🍍\s*/,""),r=t._s.get(n);if(!r)return N(`store "${n}" not found`,"error");const{path:o}=e;if("state"!==o[0])return N(`Invalid path for store "${n}":\n${o}\nOnly state can be modified.`);o[0]="$state",D=!1,e.set(r,o,e.state.value),D=!0}}))}))}let K,G=0;function Z(e,t){const n=t.reduce(((t,n)=>(t[n]=(0,r.toRaw)(e)[n],t)),{});for(const t in n)e[t]=function(){const r=G,o=new Proxy(e,{get:(...e)=>(K=r,Reflect.get(...e)),set:(...e)=>(K=r,Reflect.set(...e))});return n[t].apply(o,arguments)}}function Y({app:e,store:t,options:n}){if(!t.$id.startsWith("__hot:")){if(n.state&&(t._isOptionsAPI=!0),"function"==typeof n.state){Z(t,Object.keys(n.actions));const e=t._hotUpdate;(0,r.toRaw)(t)._hotUpdate=function(n){e.apply(this,arguments),Z(t,Object.keys(n._hmrPayload.actions))}}!function(e,t){U.includes(q(t.$id))||U.push(q(t.$id)),h({id:"dev.esm.pinia",label:"Pinia 🍍",logo:"https://pinia.vuejs.org/logo.svg",packageName:"pinia",homepage:"https://pinia.vuejs.org",componentStateTypes:U,app:e,settings:{logStoreChanges:{label:"Notify about new/deleted stores",type:"boolean",defaultValue:!0}}},(e=>{const n="function"==typeof e.now?e.now.bind(e):Date.now;t.$onAction((({after:r,onError:o,name:i,args:a})=>{const l=G++;e.addTimelineEvent({layerId:$,event:{time:n(),title:"🛫 "+i,subtitle:"start",data:{store:A(t.$id),action:A(i),args:a},groupId:l}}),r((r=>{K=void 0,e.addTimelineEvent({layerId:$,event:{time:n(),title:"🛬 "+i,subtitle:"end",data:{store:A(t.$id),action:A(i),args:a,result:r},groupId:l}})})),o((r=>{K=void 0,e.addTimelineEvent({layerId:$,event:{time:n(),logType:"error",title:"💥 "+i,subtitle:"end",data:{store:A(t.$id),action:A(i),args:a,error:r},groupId:l}})}))}),!0),t._customProperties.forEach((o=>{(0,r.watch)((()=>(0,r.unref)(t[o])),((t,r)=>{e.notifyComponentUpdate(),e.sendInspectorState(H),D&&e.addTimelineEvent({layerId:$,event:{time:n(),title:"Change",subtitle:o,data:{newValue:t,oldValue:r},groupId:K}})}),{deep:!0})})),t.$subscribe((({events:r,type:o},i)=>{if(e.notifyComponentUpdate(),e.sendInspectorState(H),!D)return;const a={time:n(),title:F(o),data:z({store:A(t.$id)},M(r)),groupId:K};K=void 0,o===y.patchFunction?a.subtitle="⤵️":o===y.patchObject?a.subtitle="🧩":r&&!Array.isArray(r)&&(a.subtitle=r.type),r&&(a.data["rawEvent(s)"]={_custom:{display:"DebuggerEvent",type:"object",tooltip:"raw DebuggerEvent[]",value:r}}),e.addTimelineEvent({layerId:$,event:a})}),{detached:!0,flush:"sync"});const o=t._hotUpdate;t._hotUpdate=(0,r.markRaw)((r=>{o(r),e.addTimelineEvent({layerId:$,event:{time:n(),title:"🔥 "+t.$id,subtitle:"HMR update",data:{store:A(t.$id),info:A("HMR update")}}}),e.notifyComponentUpdate(),e.sendInspectorTree(H),e.sendInspectorState(H)}));const{$dispose:i}=t;t.$dispose=()=>{i(),e.notifyComponentUpdate(),e.sendInspectorTree(H),e.sendInspectorState(H),e.getSettings().logStoreChanges&&N(`Disposed "${t.$id}" store 🗑`)},e.notifyComponentUpdate(),e.sendInspectorTree(H),e.sendInspectorState(H),e.getSettings().logStoreChanges&&N(`"${t.$id}" store installed 🆕`)}))}(e,t)}}const J=()=>{};function Q(e,t,n,o=J){e.push(t);const i=()=>{const n=e.indexOf(t);n>-1&&(e.splice(n,1),o())};return!n&&(0,r.getCurrentScope)()&&(0,r.onScopeDispose)(i),i}function X(e,...t){e.slice().forEach((e=>{e(...t)}))}function ee(e,t){e instanceof Map&&t instanceof Map&&t.forEach(((t,n)=>e.set(n,t))),e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const o=t[n],i=e[n];g(i)&&g(o)&&e.hasOwnProperty(n)&&!(0,r.isRef)(o)&&!(0,r.isReactive)(o)?e[n]=ee(i,o):e[n]=o}return e}const te=Symbol(),ne=new WeakMap;const{assign:re}=Object;function oe(e,t,n={},a,l,s){let c;const u=re({actions:{}},n);const f={deep:!0};let d,p;let h,m=(0,r.markRaw)([]),b=(0,r.markRaw)([]);const C=a.state.value[e];s||C||(o?i(a.state.value,e,{}):a.state.value[e]={});const _=(0,r.ref)({});let E;function x(t){let n;d=p=!1,"function"==typeof t?(t(a.state.value[e]),n={type:y.patchFunction,storeId:e,events:h}):(ee(a.state.value[e],t),n={type:y.patchObject,payload:t,storeId:e,events:h});const o=E=Symbol();(0,r.nextTick)().then((()=>{E===o&&(d=!0)})),p=!0,X(m,n,a.state.value[e])}const k=J;function S(t,n){return function(){v(a);const r=Array.from(arguments),o=[],i=[];let l;X(b,{args:r,name:t,store:P,after:function(e){o.push(e)},onError:function(e){i.push(e)}});try{l=n.apply(this&&this.$id===e?this:P,r)}catch(e){throw X(i,e),e}return l instanceof Promise?l.then((e=>(X(o,e),e))).catch((e=>(X(i,e),Promise.reject(e)))):(X(o,l),l)}}const O=(0,r.markRaw)({actions:{},getters:{},state:[],hotState:_}),N={_p:a,$id:e,$onAction:Q.bind(null,b),$patch:x,$reset:k,$subscribe(t,n={}){const o=Q(m,t,n.detached,(()=>i())),i=c.run((()=>(0,r.watch)((()=>a.state.value[e]),(r=>{("sync"===n.flush?p:d)&&t({storeId:e,type:y.direct,events:h},r)}),re({},f,n))));return o},$dispose:function(){c.stop(),m=[],b=[],a._s.delete(e)}};o&&(N._r=!1);const P=(0,r.reactive)(w?re({_hmrPayload:O,_customProperties:(0,r.markRaw)(new Set)},N):N);a._s.set(e,P);const T=a._e.run((()=>(c=(0,r.effectScope)(),c.run((()=>t())))));for(const t in T){const n=T[t];if((0,r.isRef)(n)&&(R=n,!(0,r.isRef)(R)||!R.effect)||(0,r.isReactive)(n))s||(!C||(V=n,o?ne.has(V):g(V)&&V.hasOwnProperty(te))||((0,r.isRef)(n)?n.value=C[t]:ee(n,C[t])),o?i(a.state.value[e],t,n):a.state.value[e][t]=n);else if("function"==typeof n){const e=S(t,n);o?i(T,t,e):T[t]=e,u.actions[t]=n}else 0}var V,R;if(o?Object.keys(T).forEach((e=>{i(P,e,T[e])})):(re(P,T),re((0,r.toRaw)(P),T)),Object.defineProperty(P,"$state",{get:()=>a.state.value[e],set:e=>{x((t=>{re(t,e)}))}}),w){const e={writable:!0,configurable:!0,enumerable:!1};["_p","_hmrPayload","_getters","_customProperties"].forEach((t=>{Object.defineProperty(P,t,re({value:P[t]},e))}))}return o&&(P._r=!0),a._p.forEach((e=>{if(w){const t=c.run((()=>e({store:P,app:a._a,pinia:a,options:u})));Object.keys(t||{}).forEach((e=>P._customProperties.add(e))),re(P,t)}else re(P,c.run((()=>e({store:P,app:a._a,pinia:a,options:u}))))})),C&&s&&n.hydrate&&n.hydrate(P.$state,C),d=!0,p=!0,P}function ie(e,t,n){let a,l;const s="function"==typeof t;function c(e,n){const c=(0,r.getCurrentInstance)();(e=e||c&&(0,r.inject)(m,null))&&v(e),(e=f)._s.has(a)||(s?oe(a,t,l,e):function(e,t,n,a){const{state:l,actions:s,getters:c}=t,u=n.state.value[e];let f;f=oe(e,(function(){u||(o?i(n.state.value,e,l?l():{}):n.state.value[e]=l?l():{});const t=(0,r.toRefs)(n.state.value[e]);return re(t,s,Object.keys(c||{}).reduce(((t,i)=>(t[i]=(0,r.markRaw)((0,r.computed)((()=>{v(n);const t=n._s.get(e);if(!o||t._r)return c[i].call(t,t)}))),t)),{}))}),t,n,0,!0),f.$reset=function(){const e=l?l():{};this.$patch((t=>{re(t,e)}))}}(a,l,e));return e._s.get(a)}return"string"==typeof e?(a=e,l=s?n:t):(l=e,a=e.id),c.$id=a,c}function ae(e,t){return function(){return e.apply(t,arguments)}}const{toString:le}=Object.prototype,{getPrototypeOf:se}=Object,ce=(ue=Object.create(null),e=>{const t=le.call(e);return ue[t]||(ue[t]=t.slice(8,-1).toLowerCase())});var ue;const fe=e=>(e=e.toLowerCase(),t=>ce(t)===e),de=e=>t=>typeof t===e,{isArray:pe}=Array,he=de("undefined");const ve=fe("ArrayBuffer");const me=de("string"),ge=de("function"),ye=de("number"),be=e=>null!==e&&"object"==typeof e,we=e=>{if("object"!==ce(e))return!1;const t=se(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},Ce=fe("Date"),_e=fe("File"),Ee=fe("Blob"),xe=fe("FileList"),ke=fe("URLSearchParams");function Se(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let r,o;if("object"!=typeof e&&(e=[e]),pe(e))for(r=0,o=e.length;r0;)if(r=n[o],t===r.toLowerCase())return r;return null}const Ne="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,Pe=e=>!he(e)&&e!==Ne;const Te=(Ve="undefined"!=typeof Uint8Array&&se(Uint8Array),e=>Ve&&e instanceof Ve);var Ve;const Re=fe("HTMLFormElement"),Le=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),Ae=fe("RegExp"),je=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};Se(n,((n,o)=>{!1!==t(n,o,e)&&(r[o]=n)})),Object.defineProperties(e,r)},Be="abcdefghijklmnopqrstuvwxyz",Ie="0123456789",Me={DIGIT:Ie,ALPHA:Be,ALPHA_DIGIT:Be+Be.toUpperCase()+Ie};const Fe={isArray:pe,isArrayBuffer:ve,isBuffer:function(e){return null!==e&&!he(e)&&null!==e.constructor&&!he(e.constructor)&&ge(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{const t="[object FormData]";return e&&("function"==typeof FormData&&e instanceof FormData||le.call(e)===t||ge(e.toString)&&e.toString()===t)},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&ve(e.buffer),t},isString:me,isNumber:ye,isBoolean:e=>!0===e||!1===e,isObject:be,isPlainObject:we,isUndefined:he,isDate:Ce,isFile:_e,isBlob:Ee,isRegExp:Ae,isFunction:ge,isStream:e=>be(e)&&ge(e.pipe),isURLSearchParams:ke,isTypedArray:Te,isFileList:xe,forEach:Se,merge:function e(){const{caseless:t}=Pe(this)&&this||{},n={},r=(r,o)=>{const i=t&&Oe(n,o)||o;we(n[i])&&we(r)?n[i]=e(n[i],r):we(r)?n[i]=e({},r):pe(r)?n[i]=r.slice():n[i]=r};for(let e=0,t=arguments.length;e(Se(t,((t,r)=>{n&&ge(t)?e[r]=ae(t,n):e[r]=t}),{allOwnKeys:r}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:(e,t,n,r)=>{let o,i,a;const l={};if(t=t||{},null==e)return t;do{for(o=Object.getOwnPropertyNames(e),i=o.length;i-- >0;)a=o[i],r&&!r(a,e,t)||l[a]||(t[a]=e[a],l[a]=!0);e=!1!==n&&se(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:ce,kindOfTest:fe,endsWith:(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return-1!==r&&r===n},toArray:e=>{if(!e)return null;if(pe(e))return e;let t=e.length;if(!ye(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[Symbol.iterator]).call(e);let r;for(;(r=n.next())&&!r.done;){const n=r.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let n;const r=[];for(;null!==(n=e.exec(t));)r.push(n);return r},isHTMLForm:Re,hasOwnProperty:Le,hasOwnProp:Le,reduceDescriptors:je,freezeMethods:e=>{je(e,((t,n)=>{if(ge(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const r=e[n];ge(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))}))},toObjectSet:(e,t)=>{const n={},r=e=>{e.forEach((e=>{n[e]=!0}))};return pe(e)?r(e):r(String(e).split(t)),n},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,n){return t.toUpperCase()+n})),noop:()=>{},toFiniteNumber:(e,t)=>(e=+e,Number.isFinite(e)?e:t),findKey:Oe,global:Ne,isContextDefined:Pe,ALPHABET:Me,generateString:(e=16,t=Me.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n},isSpecCompliantForm:function(e){return!!(e&&ge(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),n=(e,r)=>{if(be(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[r]=e;const o=pe(e)?[]:{};return Se(e,((e,t)=>{const i=n(e,r+1);!he(i)&&(o[t]=i)})),t[r]=void 0,o}}return e};return n(e,0)}};function De(e,t,n,r,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),o&&(this.response=o)}Fe.inherits(De,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:Fe.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const Ue=De.prototype,$e={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{$e[e]={value:e}})),Object.defineProperties(De,$e),Object.defineProperty(Ue,"isAxiosError",{value:!0}),De.from=(e,t,n,r,o,i)=>{const a=Object.create(Ue);return Fe.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),De.call(a,e.message,t,n,r,o),a.cause=e,a.name=e.name,i&&Object.assign(a,i),a};const He=De,ze=null;var qe=n(764).lW;function We(e){return Fe.isPlainObject(e)||Fe.isArray(e)}function Ke(e){return Fe.endsWith(e,"[]")?e.slice(0,-2):e}function Ge(e,t,n){return e?e.concat(t).map((function(e,t){return e=Ke(e),!n&&t?"["+e+"]":e})).join(n?".":""):t}const Ze=Fe.toFlatObject(Fe,{},null,(function(e){return/^is[A-Z]/.test(e)}));const Ye=function(e,t,n){if(!Fe.isObject(e))throw new TypeError("target must be an object");t=t||new(ze||FormData);const r=(n=Fe.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!Fe.isUndefined(t[e])}))).metaTokens,o=n.visitor||c,i=n.dots,a=n.indexes,l=(n.Blob||"undefined"!=typeof Blob&&Blob)&&Fe.isSpecCompliantForm(t);if(!Fe.isFunction(o))throw new TypeError("visitor must be a function");function s(e){if(null===e)return"";if(Fe.isDate(e))return e.toISOString();if(!l&&Fe.isBlob(e))throw new He("Blob is not supported. Use a Buffer instead.");return Fe.isArrayBuffer(e)||Fe.isTypedArray(e)?l&&"function"==typeof Blob?new Blob([e]):qe.from(e):e}function c(e,n,o){let l=e;if(e&&!o&&"object"==typeof e)if(Fe.endsWith(n,"{}"))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(Fe.isArray(e)&&function(e){return Fe.isArray(e)&&!e.some(We)}(e)||(Fe.isFileList(e)||Fe.endsWith(n,"[]"))&&(l=Fe.toArray(e)))return n=Ke(n),l.forEach((function(e,r){!Fe.isUndefined(e)&&null!==e&&t.append(!0===a?Ge([n],r,i):null===a?n:n+"[]",s(e))})),!1;return!!We(e)||(t.append(Ge(o,n,i),s(e)),!1)}const u=[],f=Object.assign(Ze,{defaultVisitor:c,convertValue:s,isVisitable:We});if(!Fe.isObject(e))throw new TypeError("data must be an object");return function e(n,r){if(!Fe.isUndefined(n)){if(-1!==u.indexOf(n))throw Error("Circular reference detected in "+r.join("."));u.push(n),Fe.forEach(n,(function(n,i){!0===(!(Fe.isUndefined(n)||null===n)&&o.call(t,n,Fe.isString(i)?i.trim():i,r,f))&&e(n,r?r.concat(i):[i])})),u.pop()}}(e),t};function Je(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function Qe(e,t){this._pairs=[],e&&Ye(e,this,t)}const Xe=Qe.prototype;Xe.append=function(e,t){this._pairs.push([e,t])},Xe.toString=function(e){const t=e?function(t){return e.call(this,t,Je)}:Je;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};const et=Qe;function tt(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function nt(e,t,n){if(!t)return e;const r=n&&n.encode||tt,o=n&&n.serialize;let i;if(i=o?o(t,n):Fe.isURLSearchParams(t)?t.toString():new et(t,n).toString(r),i){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e}const rt=class{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){Fe.forEach(this.handlers,(function(t){null!==t&&e(t)}))}},ot={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},it="undefined"!=typeof URLSearchParams?URLSearchParams:et,at=FormData,lt=(()=>{let e;return("undefined"==typeof navigator||"ReactNative"!==(e=navigator.product)&&"NativeScript"!==e&&"NS"!==e)&&("undefined"!=typeof window&&"undefined"!=typeof document)})(),st="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,ct={isBrowser:!0,classes:{URLSearchParams:it,FormData:at,Blob},isStandardBrowserEnv:lt,isStandardBrowserWebWorkerEnv:st,protocols:["http","https","file","blob","url","data"]};const ut=function(e){function t(e,n,r,o){let i=e[o++];const a=Number.isFinite(+i),l=o>=e.length;if(i=!i&&Fe.isArray(r)?r.length:i,l)return Fe.hasOwnProp(r,i)?r[i]=[r[i],n]:r[i]=n,!a;r[i]&&Fe.isObject(r[i])||(r[i]=[]);return t(e,n,r[i],o)&&Fe.isArray(r[i])&&(r[i]=function(e){const t={},n=Object.keys(e);let r;const o=n.length;let i;for(r=0;r{t(function(e){return Fe.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),r,n,0)})),n}return null},ft={"Content-Type":void 0};const dt={transitional:ot,adapter:["xhr","http"],transformRequest:[function(e,t){const n=t.getContentType()||"",r=n.indexOf("application/json")>-1,o=Fe.isObject(e);o&&Fe.isHTMLForm(e)&&(e=new FormData(e));if(Fe.isFormData(e))return r&&r?JSON.stringify(ut(e)):e;if(Fe.isArrayBuffer(e)||Fe.isBuffer(e)||Fe.isStream(e)||Fe.isFile(e)||Fe.isBlob(e))return e;if(Fe.isArrayBufferView(e))return e.buffer;if(Fe.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let i;if(o){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return Ye(e,new ct.classes.URLSearchParams,Object.assign({visitor:function(e,t,n,r){return ct.isNode&&Fe.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((i=Fe.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return Ye(i?{"files[]":e}:e,t&&new t,this.formSerializer)}}return o||r?(t.setContentType("application/json",!1),function(e,t,n){if(Fe.isString(e))try{return(t||JSON.parse)(e),Fe.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||dt.transitional,n=t&&t.forcedJSONParsing,r="json"===this.responseType;if(e&&Fe.isString(e)&&(n&&!this.responseType||r)){const n=!(t&&t.silentJSONParsing)&&r;try{return JSON.parse(e)}catch(e){if(n){if("SyntaxError"===e.name)throw He.from(e,He.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:ct.classes.FormData,Blob:ct.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};Fe.forEach(["delete","get","head"],(function(e){dt.headers[e]={}})),Fe.forEach(["post","put","patch"],(function(e){dt.headers[e]=Fe.merge(ft)}));const pt=dt,ht=Fe.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),vt=Symbol("internals");function mt(e){return e&&String(e).trim().toLowerCase()}function gt(e){return!1===e||null==e?e:Fe.isArray(e)?e.map(gt):String(e)}function yt(e,t,n,r){return Fe.isFunction(r)?r.call(this,t,n):Fe.isString(t)?Fe.isString(r)?-1!==t.indexOf(r):Fe.isRegExp(r)?r.test(t):void 0:void 0}class bt{constructor(e){e&&this.set(e)}set(e,t,n){const r=this;function o(e,t,n){const o=mt(t);if(!o)throw new Error("header name must be a non-empty string");const i=Fe.findKey(r,o);(!i||void 0===r[i]||!0===n||void 0===n&&!1!==r[i])&&(r[i||t]=gt(e))}const i=(e,t)=>Fe.forEach(e,((e,n)=>o(e,n,t)));return Fe.isPlainObject(e)||e instanceof this.constructor?i(e,t):Fe.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z]+$/.test(e.trim())?i((e=>{const t={};let n,r,o;return e&&e.split("\n").forEach((function(e){o=e.indexOf(":"),n=e.substring(0,o).trim().toLowerCase(),r=e.substring(o+1).trim(),!n||t[n]&&ht[n]||("set-cookie"===n?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)})),t})(e),t):null!=e&&o(t,e,n),this}get(e,t){if(e=mt(e)){const n=Fe.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}(e);if(Fe.isFunction(t))return t.call(this,e,n);if(Fe.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=mt(e)){const n=Fe.findKey(this,e);return!(!n||void 0===this[n]||t&&!yt(0,this[n],n,t))}return!1}delete(e,t){const n=this;let r=!1;function o(e){if(e=mt(e)){const o=Fe.findKey(n,e);!o||t&&!yt(0,n[o],o,t)||(delete n[o],r=!0)}}return Fe.isArray(e)?e.forEach(o):o(e),r}clear(e){const t=Object.keys(this);let n=t.length,r=!1;for(;n--;){const o=t[n];e&&!yt(0,this[o],o,e)||(delete this[o],r=!0)}return r}normalize(e){const t=this,n={};return Fe.forEach(this,((r,o)=>{const i=Fe.findKey(n,o);if(i)return t[i]=gt(r),void delete t[o];const a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,n)=>t.toUpperCase()+n))}(o):String(o).trim();a!==o&&delete t[o],t[a]=gt(r),n[a]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return Fe.forEach(this,((n,r)=>{null!=n&&!1!==n&&(t[r]=e&&Fe.isArray(n)?n.join(", "):n)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach((e=>n.set(e))),n}static accessor(e){const t=(this[vt]=this[vt]={accessors:{}}).accessors,n=this.prototype;function r(e){const r=mt(e);t[r]||(!function(e,t){const n=Fe.toCamelCase(" "+t);["get","set","has"].forEach((r=>{Object.defineProperty(e,r+n,{value:function(e,n,o){return this[r].call(this,t,e,n,o)},configurable:!0})}))}(n,e),t[r]=!0)}return Fe.isArray(e)?e.forEach(r):r(e),this}}bt.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),Fe.freezeMethods(bt.prototype),Fe.freezeMethods(bt);const wt=bt;function Ct(e,t){const n=this||pt,r=t||n,o=wt.from(r.headers);let i=r.data;return Fe.forEach(e,(function(e){i=e.call(n,i,o.normalize(),t?t.status:void 0)})),o.normalize(),i}function _t(e){return!(!e||!e.__CANCEL__)}function Et(e,t,n){He.call(this,null==e?"canceled":e,He.ERR_CANCELED,t,n),this.name="CanceledError"}Fe.inherits(Et,He,{__CANCEL__:!0});const xt=Et;const kt=ct.isStandardBrowserEnv?{write:function(e,t,n,r,o,i){const a=[];a.push(e+"="+encodeURIComponent(t)),Fe.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),Fe.isString(r)&&a.push("path="+r),Fe.isString(o)&&a.push("domain="+o),!0===i&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}};function St(e,t){return e&&!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)?function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const Ot=ct.isStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let n;function r(n){let r=n;return e&&(t.setAttribute("href",r),r=t.href),t.setAttribute("href",r),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return n=r(window.location.href),function(e){const t=Fe.isString(e)?r(e):e;return t.protocol===n.protocol&&t.host===n.host}}():function(){return!0};const Nt=function(e,t){e=e||10;const n=new Array(e),r=new Array(e);let o,i=0,a=0;return t=void 0!==t?t:1e3,function(l){const s=Date.now(),c=r[a];o||(o=s),n[i]=l,r[i]=s;let u=a,f=0;for(;u!==i;)f+=n[u++],u%=e;if(i=(i+1)%e,i===a&&(a=(a+1)%e),s-o{const i=o.loaded,a=o.lengthComputable?o.total:void 0,l=i-n,s=r(l);n=i;const c={loaded:i,total:a,progress:a?i/a:void 0,bytes:l,rate:s||void 0,estimated:s&&a&&i<=a?(a-i)/s:void 0,event:o};c[t?"download":"upload"]=!0,e(c)}}const Tt="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,n){let r=e.data;const o=wt.from(e.headers).normalize(),i=e.responseType;let a;function l(){e.cancelToken&&e.cancelToken.unsubscribe(a),e.signal&&e.signal.removeEventListener("abort",a)}Fe.isFormData(r)&&(ct.isStandardBrowserEnv||ct.isStandardBrowserWebWorkerEnv)&&o.setContentType(!1);let s=new XMLHttpRequest;if(e.auth){const t=e.auth.username||"",n=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";o.set("Authorization","Basic "+btoa(t+":"+n))}const c=St(e.baseURL,e.url);function u(){if(!s)return;const r=wt.from("getAllResponseHeaders"in s&&s.getAllResponseHeaders());!function(e,t,n){const r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(new He("Request failed with status code "+n.status,[He.ERR_BAD_REQUEST,He.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}((function(e){t(e),l()}),(function(e){n(e),l()}),{data:i&&"text"!==i&&"json"!==i?s.response:s.responseText,status:s.status,statusText:s.statusText,headers:r,config:e,request:s}),s=null}if(s.open(e.method.toUpperCase(),nt(c,e.params,e.paramsSerializer),!0),s.timeout=e.timeout,"onloadend"in s?s.onloadend=u:s.onreadystatechange=function(){s&&4===s.readyState&&(0!==s.status||s.responseURL&&0===s.responseURL.indexOf("file:"))&&setTimeout(u)},s.onabort=function(){s&&(n(new He("Request aborted",He.ECONNABORTED,e,s)),s=null)},s.onerror=function(){n(new He("Network Error",He.ERR_NETWORK,e,s)),s=null},s.ontimeout=function(){let t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const r=e.transitional||ot;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(new He(t,r.clarifyTimeoutError?He.ETIMEDOUT:He.ECONNABORTED,e,s)),s=null},ct.isStandardBrowserEnv){const t=(e.withCredentials||Ot(c))&&e.xsrfCookieName&&kt.read(e.xsrfCookieName);t&&o.set(e.xsrfHeaderName,t)}void 0===r&&o.setContentType(null),"setRequestHeader"in s&&Fe.forEach(o.toJSON(),(function(e,t){s.setRequestHeader(t,e)})),Fe.isUndefined(e.withCredentials)||(s.withCredentials=!!e.withCredentials),i&&"json"!==i&&(s.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&s.addEventListener("progress",Pt(e.onDownloadProgress,!0)),"function"==typeof e.onUploadProgress&&s.upload&&s.upload.addEventListener("progress",Pt(e.onUploadProgress)),(e.cancelToken||e.signal)&&(a=t=>{s&&(n(!t||t.type?new xt(null,e,s):t),s.abort(),s=null)},e.cancelToken&&e.cancelToken.subscribe(a),e.signal&&(e.signal.aborted?a():e.signal.addEventListener("abort",a)));const f=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(c);f&&-1===ct.protocols.indexOf(f)?n(new He("Unsupported protocol "+f+":",He.ERR_BAD_REQUEST,e)):s.send(r||null)}))},Vt={http:ze,xhr:Tt};Fe.forEach(Vt,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const Rt={getAdapter:e=>{e=Fe.isArray(e)?e:[e];const{length:t}=e;let n,r;for(let o=0;oe instanceof wt?e.toJSON():e;function Bt(e,t){t=t||{};const n={};function r(e,t,n){return Fe.isPlainObject(e)&&Fe.isPlainObject(t)?Fe.merge.call({caseless:n},e,t):Fe.isPlainObject(t)?Fe.merge({},t):Fe.isArray(t)?t.slice():t}function o(e,t,n){return Fe.isUndefined(t)?Fe.isUndefined(e)?void 0:r(void 0,e,n):r(e,t,n)}function i(e,t){if(!Fe.isUndefined(t))return r(void 0,t)}function a(e,t){return Fe.isUndefined(t)?Fe.isUndefined(e)?void 0:r(void 0,e):r(void 0,t)}function l(n,o,i){return i in t?r(n,o):i in e?r(void 0,n):void 0}const s={url:i,method:i,data:i,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:l,headers:(e,t)=>o(jt(e),jt(t),!0)};return Fe.forEach(Object.keys(e).concat(Object.keys(t)),(function(r){const i=s[r]||o,a=i(e[r],t[r],r);Fe.isUndefined(a)&&i!==l||(n[r]=a)})),n}const It="1.3.2",Mt={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{Mt[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));const Ft={};Mt.transitional=function(e,t,n){return(r,o,i)=>{if(!1===e)throw new He(function(e,t){return"[Axios v"+It+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}(o," has been removed"+(t?" in "+t:"")),He.ERR_DEPRECATED);return t&&!Ft[o]&&(Ft[o]=!0),!e||e(r,o,i)}};const Dt={assertOptions:function(e,t,n){if("object"!=typeof e)throw new He("options must be an object",He.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let o=r.length;for(;o-- >0;){const i=r[o],a=t[i];if(a){const t=e[i],n=void 0===t||a(t,i,e);if(!0!==n)throw new He("option "+i+" must be "+n,He.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new He("Unknown option "+i,He.ERR_BAD_OPTION)}},validators:Mt},Ut=Dt.validators;class $t{constructor(e){this.defaults=e,this.interceptors={request:new rt,response:new rt}}request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=Bt(this.defaults,t);const{transitional:n,paramsSerializer:r,headers:o}=t;let i;void 0!==n&&Dt.assertOptions(n,{silentJSONParsing:Ut.transitional(Ut.boolean),forcedJSONParsing:Ut.transitional(Ut.boolean),clarifyTimeoutError:Ut.transitional(Ut.boolean)},!1),void 0!==r&&Dt.assertOptions(r,{encode:Ut.function,serialize:Ut.function},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase(),i=o&&Fe.merge(o.common,o[t.method]),i&&Fe.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete o[e]})),t.headers=wt.concat(i,o);const a=[];let l=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(l=l&&e.synchronous,a.unshift(e.fulfilled,e.rejected))}));const s=[];let c;this.interceptors.response.forEach((function(e){s.push(e.fulfilled,e.rejected)}));let u,f=0;if(!l){const e=[At.bind(this),void 0];for(e.unshift.apply(e,a),e.push.apply(e,s),u=e.length,c=Promise.resolve(t);f{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null})),this.promise.then=e=>{let t;const r=new Promise((e=>{n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e((function(e,r,o){n.reason||(n.reason=new xt(e,r,o),t(n.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;const t=new zt((function(t){e=t}));return{token:t,cancel:e}}}const qt=zt;const Wt={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Wt).forEach((([e,t])=>{Wt[t]=e}));const Kt=Wt;const Gt=function e(t){const n=new Ht(t),r=ae(Ht.prototype.request,n);return Fe.extend(r,Ht.prototype,n,{allOwnKeys:!0}),Fe.extend(r,n,null,{allOwnKeys:!0}),r.create=function(n){return e(Bt(t,n))},r}(pt);Gt.Axios=Ht,Gt.CanceledError=xt,Gt.CancelToken=qt,Gt.isCancel=_t,Gt.VERSION=It,Gt.toFormData=Ye,Gt.AxiosError=He,Gt.Cancel=Gt.CanceledError,Gt.all=function(e){return Promise.all(e)},Gt.spread=function(e){return function(t){return e.apply(null,t)}},Gt.isAxiosError=function(e){return Fe.isObject(e)&&!0===e.isAxiosError},Gt.mergeConfig=Bt,Gt.AxiosHeaders=wt,Gt.formToJSON=e=>ut(Fe.isHTMLForm(e)?new FormData(e):e),Gt.HttpStatusCode=Kt,Gt.default=Gt;const Zt=Gt,Yt="undefined"!=typeof window;function Jt(e){return e.__esModule||"Module"===e[Symbol.toStringTag]}const Qt=Object.assign;function Xt(e,t){const n={};for(const r in t){const o=t[r];n[r]=tn(o)?o.map(e):e(o)}return n}const en=()=>{},tn=Array.isArray;const nn=/\/$/,rn=e=>e.replace(nn,"");function on(e,t,n="/"){let r,o={},i="",a="";const l=t.indexOf("#");let s=t.indexOf("?");return l=0&&(s=-1),s>-1&&(r=t.slice(0,s),i=t.slice(s+1,l>-1?l:t.length),o=e(i)),l>-1&&(r=r||t.slice(0,l),a=t.slice(l,t.length)),r=function(e,t){if(e.startsWith("/"))return e;0;if(!e)return t;const n=t.split("/"),r=e.split("/");let o,i,a=n.length-1;for(o=0;o1&&a--}return n.slice(0,a).join("/")+"/"+r.slice(o-(o===r.length?1:0)).join("/")}(null!=r?r:t,n),{fullPath:r+(i&&"?")+i+a,path:r,query:o,hash:a}}function an(e,t){return t&&e.toLowerCase().startsWith(t.toLowerCase())?e.slice(t.length)||"/":e}function ln(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function sn(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!cn(e[n],t[n]))return!1;return!0}function cn(e,t){return tn(e)?un(e,t):tn(t)?un(t,e):e===t}function un(e,t){return tn(t)?e.length===t.length&&e.every(((e,n)=>e===t[n])):1===e.length&&e[0]===t}var fn,dn;!function(e){e.pop="pop",e.push="push"}(fn||(fn={})),function(e){e.back="back",e.forward="forward",e.unknown=""}(dn||(dn={}));function pn(e){if(!e)if(Yt){const t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return"/"!==e[0]&&"#"!==e[0]&&(e="/"+e),rn(e)}const hn=/^[^#]+#/;function vn(e,t){return e.replace(hn,"#")+t}const mn=()=>({left:window.pageXOffset,top:window.pageYOffset});function gn(e){let t;if("el"in e){const n=e.el,r="string"==typeof n&&n.startsWith("#");0;const o="string"==typeof n?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=function(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(null!=t.left?t.left:window.pageXOffset,null!=t.top?t.top:window.pageYOffset)}function yn(e,t){return(history.state?history.state.position-t:-1)+e}const bn=new Map;let wn=()=>location.protocol+"//"+location.host;function Cn(e,t){const{pathname:n,search:r,hash:o}=t,i=e.indexOf("#");if(i>-1){let t=o.includes(e.slice(i))?e.slice(i).length:1,n=o.slice(t);return"/"!==n[0]&&(n="/"+n),an(n,"")}return an(n,e)+r+o}function _n(e,t,n,r=!1,o=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:o?mn():null}}function En(e){const t=function(e){const{history:t,location:n}=window,r={value:Cn(e,n)},o={value:t.state};function i(r,i,a){const l=e.indexOf("#"),s=l>-1?(n.host&&document.querySelector("base")?e:e.slice(l))+r:wn()+e+r;try{t[a?"replaceState":"pushState"](i,"",s),o.value=i}catch(e){n[a?"replace":"assign"](s)}}return o.value||i(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0),{location:r,state:o,push:function(e,n){const a=Qt({},o.value,t.state,{forward:e,scroll:mn()});i(a.current,a,!0),i(e,Qt({},_n(r.value,e,null),{position:a.position+1},n),!1),r.value=e},replace:function(e,n){i(e,Qt({},t.state,_n(o.value.back,e,o.value.forward,!0),n,{position:o.value.position}),!0),r.value=e}}}(e=pn(e)),n=function(e,t,n,r){let o=[],i=[],a=null;const l=({state:i})=>{const l=Cn(e,location),s=n.value,c=t.value;let u=0;if(i){if(n.value=l,t.value=i,a&&a===s)return void(a=null);u=c?i.position-c.position:0}else r(l);o.forEach((e=>{e(n.value,s,{delta:u,type:fn.pop,direction:u?u>0?dn.forward:dn.back:dn.unknown})}))};function s(){const{history:e}=window;e.state&&e.replaceState(Qt({},e.state,{scroll:mn()}),"")}return window.addEventListener("popstate",l),window.addEventListener("beforeunload",s),{pauseListeners:function(){a=n.value},listen:function(e){o.push(e);const t=()=>{const t=o.indexOf(e);t>-1&&o.splice(t,1)};return i.push(t),t},destroy:function(){for(const e of i)e();i=[],window.removeEventListener("popstate",l),window.removeEventListener("beforeunload",s)}}}(e,t.state,t.location,t.replace);const r=Qt({location:"",base:e,go:function(e,t=!0){t||n.pauseListeners(),history.go(e)},createHref:vn.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}function xn(e){return"string"==typeof e||"symbol"==typeof e}const kn={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},Sn=Symbol("");var On;!function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"}(On||(On={}));function Nn(e,t){return Qt(new Error,{type:e,[Sn]:!0},t)}function Pn(e,t){return e instanceof Error&&Sn in e&&(null==t||!!(e.type&t))}const Tn="[^/]+?",Vn={sensitive:!1,strict:!1,start:!0,end:!0},Rn=/[.+*?^${}()[\]/\\]/g;function Ln(e,t){let n=0;for(;nt.length?1===t.length&&80===t[0]?1:-1:0}function An(e,t){let n=0;const r=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const Bn={type:0,value:""},In=/[a-zA-Z0-9_]/;function Mn(e,t,n){const r=function(e,t){const n=Qt({},Vn,t),r=[];let o=n.start?"^":"";const i=[];for(const t of e){const e=t.length?[]:[90];n.strict&&!t.length&&(o+="/");for(let r=0;r1&&("*"===l||"+"===l)&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),i.push({type:1,value:c,regexp:u,repeatable:"*"===l||"+"===l,optional:"*"===l||"?"===l})):t("Invalid state to consume buffer"),c="")}function d(){c+=l}for(;s{i(d)}:en}function i(e){if(xn(e)){const t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(i),t.alias.forEach(i))}else{const t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(i),e.alias.forEach(i))}}function a(e){let t=0;for(;t=0&&(e.record.path!==n[t].record.path||!qn(e,n[t]));)t++;n.splice(t,0,e),e.record.name&&!$n(e)&&r.set(e.record.name,e)}return t=zn({strict:!1,end:!0,sensitive:!1},t),e.forEach((e=>o(e))),{addRoute:o,resolve:function(e,t){let o,i,a,l={};if("name"in e&&e.name){if(o=r.get(e.name),!o)throw Nn(1,{location:e});0,a=o.record.name,l=Qt(Dn(t.params,o.keys.filter((e=>!e.optional)).map((e=>e.name))),e.params&&Dn(e.params,o.keys.map((e=>e.name)))),i=o.stringify(l)}else if("path"in e)i=e.path,o=n.find((e=>e.re.test(i))),o&&(l=o.parse(i),a=o.record.name);else{if(o=t.name?r.get(t.name):n.find((e=>e.re.test(t.path))),!o)throw Nn(1,{location:e,currentLocation:t});a=o.record.name,l=Qt({},t.params,e.params),i=o.stringify(l)}const s=[];let c=o;for(;c;)s.unshift(c.record),c=c.parent;return{name:a,path:i,params:l,matched:s,meta:Hn(s)}},removeRoute:i,getRoutes:function(){return n},getRecordMatcher:function(e){return r.get(e)}}}function Dn(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function Un(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]="boolean"==typeof n?n:n[r];return t}function $n(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Hn(e){return e.reduce(((e,t)=>Qt(e,t.meta)),{})}function zn(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function qn(e,t){return t.children.some((t=>t===e||qn(e,t)))}const Wn=/#/g,Kn=/&/g,Gn=/\//g,Zn=/=/g,Yn=/\?/g,Jn=/\+/g,Qn=/%5B/g,Xn=/%5D/g,er=/%5E/g,tr=/%60/g,nr=/%7B/g,rr=/%7C/g,or=/%7D/g,ir=/%20/g;function ar(e){return encodeURI(""+e).replace(rr,"|").replace(Qn,"[").replace(Xn,"]")}function lr(e){return ar(e).replace(Jn,"%2B").replace(ir,"+").replace(Wn,"%23").replace(Kn,"%26").replace(tr,"`").replace(nr,"{").replace(or,"}").replace(er,"^")}function sr(e){return null==e?"":function(e){return ar(e).replace(Wn,"%23").replace(Yn,"%3F")}(e).replace(Gn,"%2F")}function cr(e){try{return decodeURIComponent(""+e)}catch(e){}return""+e}function ur(e){const t={};if(""===e||"?"===e)return t;const n=("?"===e[0]?e.slice(1):e).split("&");for(let e=0;ee&&lr(e))):[r&&lr(r)];o.forEach((e=>{void 0!==e&&(t+=(t.length?"&":"")+n,null!=e&&(t+="="+e))}))}return t}function dr(e){const t={};for(const n in e){const r=e[n];void 0!==r&&(t[n]=tn(r)?r.map((e=>null==e?null:""+e)):null==r?r:""+r)}return t}const pr=Symbol(""),hr=Symbol(""),vr=Symbol(""),mr=Symbol(""),gr=Symbol("");function yr(){let e=[];return{add:function(t){return e.push(t),()=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)}},list:()=>e,reset:function(){e=[]}}}function br(e,t,n,r,o){const i=r&&(r.enterCallbacks[o]=r.enterCallbacks[o]||[]);return()=>new Promise(((a,l)=>{const s=e=>{var s;!1===e?l(Nn(4,{from:n,to:t})):e instanceof Error?l(e):"string"==typeof(s=e)||s&&"object"==typeof s?l(Nn(2,{from:t,to:e})):(i&&r.enterCallbacks[o]===i&&"function"==typeof e&&i.push(e),a())},c=e.call(r&&r.instances[o],t,n,s);let u=Promise.resolve(c);e.length<3&&(u=u.then(s)),u.catch((e=>l(e)))}))}function wr(e,t,n,r){const o=[];for(const a of e){0;for(const e in a.components){let l=a.components[e];if("beforeRouteEnter"===t||a.instances[e])if("object"==typeof(i=l)||"displayName"in i||"props"in i||"__vccOpts"in i){const i=(l.__vccOpts||l)[t];i&&o.push(br(i,n,r,a,e))}else{let i=l();0,o.push((()=>i.then((o=>{if(!o)return Promise.reject(new Error(`Couldn't resolve component "${e}" at "${a.path}"`));const i=Jt(o)?o.default:o;a.components[e]=i;const l=(i.__vccOpts||i)[t];return l&&br(l,n,r,a,e)()}))))}}}var i;return o}function Cr(e){const t=(0,r.inject)(vr),n=(0,r.inject)(mr),o=(0,r.computed)((()=>t.resolve((0,r.unref)(e.to)))),i=(0,r.computed)((()=>{const{matched:e}=o.value,{length:t}=e,r=e[t-1],i=n.matched;if(!r||!i.length)return-1;const a=i.findIndex(ln.bind(null,r));if(a>-1)return a;const l=Er(e[t-2]);return t>1&&Er(r)===l&&i[i.length-1].path!==l?i.findIndex(ln.bind(null,e[t-2])):a})),a=(0,r.computed)((()=>i.value>-1&&function(e,t){for(const n in t){const r=t[n],o=e[n];if("string"==typeof r){if(r!==o)return!1}else if(!tn(o)||o.length!==r.length||r.some(((e,t)=>e!==o[t])))return!1}return!0}(n.params,o.value.params))),l=(0,r.computed)((()=>i.value>-1&&i.value===n.matched.length-1&&sn(n.params,o.value.params)));return{route:o,href:(0,r.computed)((()=>o.value.href)),isActive:a,isExactActive:l,navigate:function(n={}){return function(e){if(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)return;if(e.defaultPrevented)return;if(void 0!==e.button&&0!==e.button)return;if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}e.preventDefault&&e.preventDefault();return!0}(n)?t[(0,r.unref)(e.replace)?"replace":"push"]((0,r.unref)(e.to)).catch(en):Promise.resolve()}}}const _r=(0,r.defineComponent)({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:Cr,setup(e,{slots:t}){const n=(0,r.reactive)(Cr(e)),{options:o}=(0,r.inject)(vr),i=(0,r.computed)((()=>({[xr(e.activeClass,o.linkActiveClass,"router-link-active")]:n.isActive,[xr(e.exactActiveClass,o.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive})));return()=>{const o=t.default&&t.default(n);return e.custom?o:(0,r.h)("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:i.value},o)}}});function Er(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const xr=(e,t,n)=>null!=e?e:null!=t?t:n;function kr(e,t){if(!e)return null;const n=e(t);return 1===n.length?n[0]:n}const Sr=(0,r.defineComponent)({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const o=(0,r.inject)(gr),i=(0,r.computed)((()=>e.route||o.value)),a=(0,r.inject)(hr,0),l=(0,r.computed)((()=>{let e=(0,r.unref)(a);const{matched:t}=i.value;let n;for(;(n=t[e])&&!n.components;)e++;return e})),s=(0,r.computed)((()=>i.value.matched[l.value]));(0,r.provide)(hr,(0,r.computed)((()=>l.value+1))),(0,r.provide)(pr,s),(0,r.provide)(gr,i);const c=(0,r.ref)();return(0,r.watch)((()=>[c.value,s.value,e.name]),(([e,t,n],[r,o,i])=>{t&&(t.instances[n]=e,o&&o!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=o.leaveGuards),t.updateGuards.size||(t.updateGuards=o.updateGuards))),!e||!t||o&&ln(t,o)&&r||(t.enterCallbacks[n]||[]).forEach((t=>t(e)))}),{flush:"post"}),()=>{const o=i.value,a=e.name,l=s.value,u=l&&l.components[a];if(!u)return kr(n.default,{Component:u,route:o});const f=l.props[a],d=f?!0===f?o.params:"function"==typeof f?f(o):f:null,p=(0,r.h)(u,Qt({},d,t,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(l.instances[a]=null)},ref:c}));return kr(n.default,{Component:p,route:o})||p}}});function Or(e){return e.reduce(((e,t)=>e.then((()=>t()))),Promise.resolve())}function Nr(){return(0,r.inject)(vr)}function Pr(){return(0,r.inject)(mr)}function Tr(e,t,...n){if(e in t){let r=t[e];return"function"==typeof r?r(...n):r}let r=new Error(`Tried to handle "${e}" but there is no handler defined. Only defined handlers are: ${Object.keys(t).map((e=>`"${e}"`)).join(", ")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(r,Tr),r}var Vr,Rr=((Vr=Rr||{})[Vr.None=0]="None",Vr[Vr.RenderStrategy=1]="RenderStrategy",Vr[Vr.Static=2]="Static",Vr),Lr=(e=>(e[e.Unmount=0]="Unmount",e[e.Hidden=1]="Hidden",e))(Lr||{});function Ar({visible:e=!0,features:t=0,ourProps:n,theirProps:r,...o}){var i;let a=Ir(r,n),l=Object.assign(o,{props:a});if(e||2&t&&a.static)return jr(l);if(1&t){return Tr(null==(i=a.unmount)||i?0:1,{0:()=>null,1:()=>jr({...o,props:{...a,hidden:!0,style:{display:"none"}}})})}return jr(l)}function jr({props:e,attrs:t,slots:n,slot:o,name:i}){var a,l;let{as:s,...c}=Mr(e,["unmount","static"]),u=null==(a=n.default)?void 0:a.call(n,o),f={};if(o){let e=!1,t=[];for(let[n,r]of Object.entries(o))"boolean"==typeof r&&(e=!0),!0===r&&t.push(n);e&&(f["data-headlessui-state"]=t.join(" "))}if("template"===s){if(u=Br(null!=u?u:[]),Object.keys(c).length>0||Object.keys(t).length>0){let[e,...n]=null!=u?u:[];if(!function(e){return null!=e&&("string"==typeof e.type||"object"==typeof e.type||"function"==typeof e.type)}(e)||n.length>0)throw new Error(['Passing props on "template"!',"",`The current component <${i} /> is rendering a "template".`,"However we need to passthrough the following props:",Object.keys(c).concat(Object.keys(t)).map((e=>e.trim())).filter(((e,t,n)=>n.indexOf(e)===t)).sort(((e,t)=>e.localeCompare(t))).map((e=>` - ${e}`)).join("\n"),"","You can apply a few solutions:",['Add an `as="..."` prop, to ensure that we render an actual element instead of a "template".',"Render a single element as the child so that we can forward the props onto that element."].map((e=>` - ${e}`)).join("\n")].join("\n"));let o=Ir(null!=(l=e.props)?l:{},c),a=(0,r.cloneVNode)(e,o);for(let e in o)e.startsWith("on")&&(a.props||(a.props={}),a.props[e]=o[e]);return a}return Array.isArray(u)&&1===u.length?u[0]:u}return(0,r.h)(s,Object.assign({},c,f),{default:()=>u})}function Br(e){return e.flatMap((e=>e.type===r.Fragment?Br(e.children):[e]))}function Ir(...e){if(0===e.length)return{};if(1===e.length)return e[0];let t={},n={};for(let r of e)for(let e in r)e.startsWith("on")&&"function"==typeof r[e]?(null!=n[e]||(n[e]=[]),n[e].push(r[e])):t[e]=r[e];if(t.disabled||t["aria-disabled"])return Object.assign(t,Object.fromEntries(Object.keys(n).map((e=>[e,void 0]))));for(let e in n)Object.assign(t,{[e](t,...r){let o=n[e];for(let e of o){if(t instanceof Event&&t.defaultPrevented)return;e(t,...r)}}});return t}function Mr(e,t=[]){let n=Object.assign({},e);for(let e of t)e in n&&delete n[e];return n}let Fr=0;function Dr(){return++Fr}var Ur=(e=>(e.Space=" ",e.Enter="Enter",e.Escape="Escape",e.Backspace="Backspace",e.Delete="Delete",e.ArrowLeft="ArrowLeft",e.ArrowUp="ArrowUp",e.ArrowRight="ArrowRight",e.ArrowDown="ArrowDown",e.Home="Home",e.End="End",e.PageUp="PageUp",e.PageDown="PageDown",e.Tab="Tab",e))(Ur||{});var $r=(e=>(e[e.First=0]="First",e[e.Previous=1]="Previous",e[e.Next=2]="Next",e[e.Last=3]="Last",e[e.Specific=4]="Specific",e[e.Nothing=5]="Nothing",e))($r||{});function Hr(e,t){let n=t.resolveItems();if(n.length<=0)return null;let r=t.resolveActiveIndex(),o=null!=r?r:-1,i=(()=>{switch(e.focus){case 0:return n.findIndex((e=>!t.resolveDisabled(e)));case 1:{let e=n.slice().reverse().findIndex(((e,n,r)=>!(-1!==o&&r.length-n-1>=o)&&!t.resolveDisabled(e)));return-1===e?e:n.length-1-e}case 2:return n.findIndex(((e,n)=>!(n<=o)&&!t.resolveDisabled(e)));case 3:{let e=n.slice().reverse().findIndex((e=>!t.resolveDisabled(e)));return-1===e?e:n.length-1-e}case 4:return n.findIndex((n=>t.resolveId(n)===e.id));case 5:return null;default:!function(e){throw new Error("Unexpected object: "+e)}(e)}})();return-1===i?r:i}function zr(e){var t;return null==e||null==e.value?null:null!=(t=e.value.$el)?t:e.value}let qr=new class{constructor(){this.current=this.detect(),this.currentId=0}set(e){this.current!==e&&(this.currentId=0,this.current=e)}reset(){this.set(this.detect())}nextId(){return++this.currentId}get isServer(){return"server"===this.current}get isClient(){return"client"===this.current}detect(){return"undefined"==typeof window||"undefined"==typeof document?"server":"client"}};function Wr(e){if(qr.isServer)return null;if(e instanceof Node)return e.ownerDocument;if(null!=e&&e.hasOwnProperty("value")){let t=zr(e);if(t)return t.ownerDocument}return document}let Kr=Symbol("Context");var Gr=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(Gr||{});function Zr(){return(0,r.inject)(Kr,null)}function Yr(e){(0,r.provide)(Kr,e)}function Jr(e,t){if(e)return e;let n=null!=t?t:"button";return"string"==typeof n&&"button"===n.toLowerCase()?"button":void 0}function Qr(e,t){let n=(0,r.ref)(Jr(e.value.type,e.value.as));return(0,r.onMounted)((()=>{n.value=Jr(e.value.type,e.value.as)})),(0,r.watchEffect)((()=>{var e;n.value||!zr(t)||zr(t)instanceof HTMLButtonElement&&(null==(e=zr(t))||!e.hasAttribute("type"))&&(n.value="button")})),n}let Xr=["[contentEditable=true]","[tabindex]","a[href]","area[href]","button:not([disabled])","iframe","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].map((e=>`${e}:not([tabindex='-1'])`)).join(",");var eo=(e=>(e[e.First=1]="First",e[e.Previous=2]="Previous",e[e.Next=4]="Next",e[e.Last=8]="Last",e[e.WrapAround=16]="WrapAround",e[e.NoScroll=32]="NoScroll",e))(eo||{}),to=(e=>(e[e.Error=0]="Error",e[e.Overflow=1]="Overflow",e[e.Success=2]="Success",e[e.Underflow=3]="Underflow",e))(to||{}),no=(e=>(e[e.Previous=-1]="Previous",e[e.Next=1]="Next",e))(no||{});function ro(e=document.body){return null==e?[]:Array.from(e.querySelectorAll(Xr)).sort(((e,t)=>Math.sign((e.tabIndex||Number.MAX_SAFE_INTEGER)-(t.tabIndex||Number.MAX_SAFE_INTEGER))))}var oo=(e=>(e[e.Strict=0]="Strict",e[e.Loose=1]="Loose",e))(oo||{});function io(e,t=0){var n;return e!==(null==(n=Wr(e))?void 0:n.body)&&Tr(t,{0:()=>e.matches(Xr),1(){let t=e;for(;null!==t;){if(t.matches(Xr))return!0;t=t.parentElement}return!1}})}function ao(e){let t=Wr(e);(0,r.nextTick)((()=>{t&&!io(t.activeElement,0)&&lo(e)}))}function lo(e){null==e||e.focus({preventScroll:!0})}let so=["textarea","input"].join(",");function co(e,t=(e=>e)){return e.slice().sort(((e,n)=>{let r=t(e),o=t(n);if(null===r||null===o)return 0;let i=r.compareDocumentPosition(o);return i&Node.DOCUMENT_POSITION_FOLLOWING?-1:i&Node.DOCUMENT_POSITION_PRECEDING?1:0}))}function uo(e,t){return fo(ro(),t,{relativeTo:e})}function fo(e,t,{sorted:n=!0,relativeTo:r=null,skipElements:o=[]}={}){var i;let a=null!=(i=Array.isArray(e)?e.length>0?e[0].ownerDocument:document:null==e?void 0:e.ownerDocument)?i:document,l=Array.isArray(e)?n?co(e):e:ro(e);o.length>0&&l.length>1&&(l=l.filter((e=>!o.includes(e)))),r=null!=r?r:a.activeElement;let s,c=(()=>{if(5&t)return 1;if(10&t)return-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),u=(()=>{if(1&t)return 0;if(2&t)return Math.max(0,l.indexOf(r))-1;if(4&t)return Math.max(0,l.indexOf(r))+1;if(8&t)return l.length-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),f=32&t?{preventScroll:!0}:{},d=0,p=l.length;do{if(d>=p||d+p<=0)return 0;let e=u+d;if(16&t)e=(e+p)%p;else{if(e<0)return 3;if(e>=p)return 1}s=l[e],null==s||s.focus(f),d+=c}while(s!==a.activeElement);return 6&t&&function(e){var t,n;return null!=(n=null==(t=null==e?void 0:e.matches)?void 0:t.call(e,so))&&n}(s)&&s.select(),s.hasAttribute("tabindex")||s.setAttribute("tabindex","0"),2}function po(e,t,n){qr.isServer||(0,r.watchEffect)((r=>{document.addEventListener(e,t,n),r((()=>document.removeEventListener(e,t,n)))}))}function ho(e,t,n=(0,r.computed)((()=>!0))){function o(r,o){if(!n.value||r.defaultPrevented)return;let i=o(r);if(null===i||!i.getRootNode().contains(i))return;let a=function e(t){return"function"==typeof t?e(t()):Array.isArray(t)||t instanceof Set?t:[t]}(e);for(let e of a){if(null===e)continue;let t=e instanceof HTMLElement?e:zr(e);if(null!=t&&t.contains(i)||r.composed&&r.composedPath().includes(t))return}return!io(i,oo.Loose)&&-1!==i.tabIndex&&r.preventDefault(),t(r,i)}let i=(0,r.ref)(null);po("mousedown",(e=>{var t,r;n.value&&(i.value=(null==(r=null==(t=e.composedPath)?void 0:t.call(e))?void 0:r[0])||e.target)}),!0),po("click",(e=>{!i.value||(o(e,(()=>i.value)),i.value=null)}),!0),po("blur",(e=>o(e,(()=>window.document.activeElement instanceof HTMLIFrameElement?window.document.activeElement:null))),!0)}function vo(e){return[e.screenX,e.screenY]}function mo(){let e=(0,r.ref)([-1,-1]);return{wasMoved(t){let n=vo(t);return(e.value[0]!==n[0]||e.value[1]!==n[1])&&(e.value=n,!0)},update(t){e.value=vo(t)}}}var go=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(go||{}),yo=(e=>(e[e.Pointer=0]="Pointer",e[e.Other=1]="Other",e))(yo||{});let bo=Symbol("MenuContext");function wo(e){let t=(0,r.inject)(bo,null);if(null===t){let t=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,wo),t}return t}let Co=(0,r.defineComponent)({name:"Menu",props:{as:{type:[Object,String],default:"template"}},setup(e,{slots:t,attrs:n}){let o=(0,r.ref)(1),i=(0,r.ref)(null),a=(0,r.ref)(null),l=(0,r.ref)([]),s=(0,r.ref)(""),c=(0,r.ref)(null),u=(0,r.ref)(1);function f(e=(e=>e)){let t=null!==c.value?l.value[c.value]:null,n=co(e(l.value.slice()),(e=>zr(e.dataRef.domRef))),r=t?n.indexOf(t):null;return-1===r&&(r=null),{items:n,activeItemIndex:r}}let d={menuState:o,buttonRef:i,itemsRef:a,items:l,searchQuery:s,activeItemIndex:c,activationTrigger:u,closeMenu:()=>{o.value=1,c.value=null},openMenu:()=>o.value=0,goToItem(e,t,n){let r=f(),o=Hr(e===$r.Specific?{focus:$r.Specific,id:t}:{focus:e},{resolveItems:()=>r.items,resolveActiveIndex:()=>r.activeItemIndex,resolveId:e=>e.id,resolveDisabled:e=>e.dataRef.disabled});s.value="",c.value=o,u.value=null!=n?n:1,l.value=r.items},search(e){let t=""!==s.value?0:1;s.value+=e.toLowerCase();let n=(null!==c.value?l.value.slice(c.value+t).concat(l.value.slice(0,c.value+t)):l.value).find((e=>e.dataRef.textValue.startsWith(s.value)&&!e.dataRef.disabled)),r=n?l.value.indexOf(n):-1;-1===r||r===c.value||(c.value=r,u.value=1)},clearSearch(){s.value=""},registerItem(e,t){let n=f((n=>[...n,{id:e,dataRef:t}]));l.value=n.items,c.value=n.activeItemIndex,u.value=1},unregisterItem(e){let t=f((t=>{let n=t.findIndex((t=>t.id===e));return-1!==n&&t.splice(n,1),t}));l.value=t.items,c.value=t.activeItemIndex,u.value=1}};return ho([i,a],((e,t)=>{var n;d.closeMenu(),io(t,oo.Loose)||(e.preventDefault(),null==(n=zr(i))||n.focus())}),(0,r.computed)((()=>0===o.value))),(0,r.provide)(bo,d),Yr((0,r.computed)((()=>Tr(o.value,{0:Gr.Open,1:Gr.Closed})))),()=>{let r={open:0===o.value,close:d.closeMenu};return Ar({ourProps:{},theirProps:e,slot:r,slots:t,attrs:n,name:"Menu"})}}}),_o=(0,r.defineComponent)({name:"MenuButton",props:{disabled:{type:Boolean,default:!1},as:{type:[Object,String],default:"button"},id:{type:String,default:()=>`headlessui-menu-button-${Dr()}`}},setup(e,{attrs:t,slots:n,expose:o}){let i=wo("MenuButton");function a(e){switch(e.key){case Ur.Space:case Ur.Enter:case Ur.ArrowDown:e.preventDefault(),e.stopPropagation(),i.openMenu(),(0,r.nextTick)((()=>{var e;null==(e=zr(i.itemsRef))||e.focus({preventScroll:!0}),i.goToItem($r.First)}));break;case Ur.ArrowUp:e.preventDefault(),e.stopPropagation(),i.openMenu(),(0,r.nextTick)((()=>{var e;null==(e=zr(i.itemsRef))||e.focus({preventScroll:!0}),i.goToItem($r.Last)}))}}function l(e){if(e.key===Ur.Space)e.preventDefault()}function s(t){e.disabled||(0===i.menuState.value?(i.closeMenu(),(0,r.nextTick)((()=>{var e;return null==(e=zr(i.buttonRef))?void 0:e.focus({preventScroll:!0})}))):(t.preventDefault(),i.openMenu(),function(e){requestAnimationFrame((()=>requestAnimationFrame(e)))}((()=>{var e;return null==(e=zr(i.itemsRef))?void 0:e.focus({preventScroll:!0})}))))}o({el:i.buttonRef,$el:i.buttonRef});let c=Qr((0,r.computed)((()=>({as:e.as,type:t.type}))),i.buttonRef);return()=>{var r;let o={open:0===i.menuState.value},{id:u,...f}=e;return Ar({ourProps:{ref:i.buttonRef,id:u,type:c.value,"aria-haspopup":"menu","aria-controls":null==(r=zr(i.itemsRef))?void 0:r.id,"aria-expanded":e.disabled?void 0:0===i.menuState.value,onKeydown:a,onKeyup:l,onClick:s},theirProps:f,slot:o,attrs:t,slots:n,name:"MenuButton"})}}}),Eo=(0,r.defineComponent)({name:"MenuItems",props:{as:{type:[Object,String],default:"div"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},id:{type:String,default:()=>`headlessui-menu-items-${Dr()}`}},setup(e,{attrs:t,slots:n,expose:o}){let i=wo("MenuItems"),a=(0,r.ref)(null);function l(e){var t;switch(a.value&&clearTimeout(a.value),e.key){case Ur.Space:if(""!==i.searchQuery.value)return e.preventDefault(),e.stopPropagation(),i.search(e.key);case Ur.Enter:if(e.preventDefault(),e.stopPropagation(),null!==i.activeItemIndex.value){null==(t=zr(i.items.value[i.activeItemIndex.value].dataRef.domRef))||t.click()}i.closeMenu(),ao(zr(i.buttonRef));break;case Ur.ArrowDown:return e.preventDefault(),e.stopPropagation(),i.goToItem($r.Next);case Ur.ArrowUp:return e.preventDefault(),e.stopPropagation(),i.goToItem($r.Previous);case Ur.Home:case Ur.PageUp:return e.preventDefault(),e.stopPropagation(),i.goToItem($r.First);case Ur.End:case Ur.PageDown:return e.preventDefault(),e.stopPropagation(),i.goToItem($r.Last);case Ur.Escape:e.preventDefault(),e.stopPropagation(),i.closeMenu(),(0,r.nextTick)((()=>{var e;return null==(e=zr(i.buttonRef))?void 0:e.focus({preventScroll:!0})}));break;case Ur.Tab:e.preventDefault(),e.stopPropagation(),i.closeMenu(),(0,r.nextTick)((()=>uo(zr(i.buttonRef),e.shiftKey?eo.Previous:eo.Next)));break;default:1===e.key.length&&(i.search(e.key),a.value=setTimeout((()=>i.clearSearch()),350))}}function s(e){if(e.key===Ur.Space)e.preventDefault()}o({el:i.itemsRef,$el:i.itemsRef}),function({container:e,accept:t,walk:n,enabled:o}){(0,r.watchEffect)((()=>{let r=e.value;if(!r||void 0!==o&&!o.value)return;let i=Wr(e);if(!i)return;let a=Object.assign((e=>t(e)),{acceptNode:t}),l=i.createTreeWalker(r,NodeFilter.SHOW_ELEMENT,a,!1);for(;l.nextNode();)n(l.currentNode)}))}({container:(0,r.computed)((()=>zr(i.itemsRef))),enabled:(0,r.computed)((()=>0===i.menuState.value)),accept:e=>"menuitem"===e.getAttribute("role")?NodeFilter.FILTER_REJECT:e.hasAttribute("role")?NodeFilter.FILTER_SKIP:NodeFilter.FILTER_ACCEPT,walk(e){e.setAttribute("role","none")}});let c=Zr(),u=(0,r.computed)((()=>null!==c?c.value===Gr.Open:0===i.menuState.value));return()=>{var r,o;let a={open:0===i.menuState.value},{id:c,...f}=e;return Ar({ourProps:{"aria-activedescendant":null===i.activeItemIndex.value||null==(r=i.items.value[i.activeItemIndex.value])?void 0:r.id,"aria-labelledby":null==(o=zr(i.buttonRef))?void 0:o.id,id:c,onKeydown:l,onKeyup:s,role:"menu",tabIndex:0,ref:i.itemsRef},theirProps:f,slot:a,attrs:t,slots:n,features:Rr.RenderStrategy|Rr.Static,visible:u.value,name:"MenuItems"})}}}),xo=(0,r.defineComponent)({name:"MenuItem",inheritAttrs:!1,props:{as:{type:[Object,String],default:"template"},disabled:{type:Boolean,default:!1},id:{type:String,default:()=>`headlessui-menu-item-${Dr()}`}},setup(e,{slots:t,attrs:n,expose:o}){let i=wo("MenuItem"),a=(0,r.ref)(null);o({el:a,$el:a});let l=(0,r.computed)((()=>null!==i.activeItemIndex.value&&i.items.value[i.activeItemIndex.value].id===e.id)),s=(0,r.computed)((()=>({disabled:e.disabled,textValue:"",domRef:a})));function c(t){if(e.disabled)return t.preventDefault();i.closeMenu(),ao(zr(i.buttonRef))}function u(){if(e.disabled)return i.goToItem($r.Nothing);i.goToItem($r.Specific,e.id)}(0,r.onMounted)((()=>{var e,t;let n=null==(t=null==(e=zr(a))?void 0:e.textContent)?void 0:t.toLowerCase().trim();void 0!==n&&(s.value.textValue=n)})),(0,r.onMounted)((()=>i.registerItem(e.id,s))),(0,r.onUnmounted)((()=>i.unregisterItem(e.id))),(0,r.watchEffect)((()=>{0===i.menuState.value&&(!l.value||0!==i.activationTrigger.value&&(0,r.nextTick)((()=>{var e,t;return null==(t=null==(e=zr(a))?void 0:e.scrollIntoView)?void 0:t.call(e,{block:"nearest"})})))}));let f=mo();function d(e){f.update(e)}function p(t){!f.wasMoved(t)||e.disabled||l.value||i.goToItem($r.Specific,e.id,0)}function h(t){!f.wasMoved(t)||e.disabled||!l.value||i.goToItem($r.Nothing)}return()=>{let{disabled:r}=e,o={active:l.value,disabled:r,close:i.closeMenu},{id:s,...f}=e;return Ar({ourProps:{id:s,ref:a,role:"menuitem",tabIndex:!0===r?void 0:-1,"aria-disabled":!0===r||void 0,disabled:void 0,onClick:c,onFocus:u,onPointerenter:d,onMouseenter:d,onPointermove:p,onMousemove:p,onPointerleave:h,onMouseleave:h},theirProps:{...n,...f},slot:o,attrs:n,slots:t,name:"MenuItem"})}}});var ko=n(505),So=n(10),Oo=n(706),No=n(558),Po=n(413),To=n(199),Vo=n(388),Ro=n(243),Lo=n(782),Ao=n(156),jo=n(488),Bo=ie({id:"hosts",state:function(){return{selectedHostIdentifier:null}},getters:{supportsHosts:function(){return LogViewer.supports_hosts},hosts:function(){return LogViewer.hosts||[]},hasRemoteHosts:function(){return this.hosts.some((function(e){return e.is_remote}))},selectedHost:function(){var e=this;return this.hosts.find((function(t){return t.identifier===e.selectedHostIdentifier}))},localHost:function(){return this.hosts.find((function(e){return!e.is_remote}))},hostQueryParam:function(){return this.selectedHost&&this.selectedHost.is_remote?this.selectedHost.identifier:void 0}},actions:{selectHost:function(e){var t;this.supportsHosts||(e=null),"string"==typeof e&&(e=this.hosts.find((function(t){return t.identifier===e}))),e||(e=this.hosts.find((function(e){return!e.is_remote}))),this.selectedHostIdentifier=(null===(t=e)||void 0===t?void 0:t.identifier)||null}}});var Io;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;const Mo="undefined"!=typeof window,Fo=(Object.prototype.toString,e=>"function"==typeof e),Do=e=>"string"==typeof e,Uo=()=>{};Mo&&(null==(Io=null==window?void 0:window.navigator)?void 0:Io.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function $o(e){return"function"==typeof e?e():(0,r.unref)(e)}function Ho(e,t){return function(...n){return new Promise(((r,o)=>{Promise.resolve(e((()=>t.apply(this,n)),{fn:t,thisArg:this,args:n})).then(r).catch(o)}))}}const zo=e=>e();function qo(e){return!!(0,r.getCurrentScope)()&&((0,r.onScopeDispose)(e),!0)}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var Wo=Object.getOwnPropertySymbols,Ko=Object.prototype.hasOwnProperty,Go=Object.prototype.propertyIsEnumerable,Zo=(e,t)=>{var n={};for(var r in e)Ko.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&Wo)for(var r of Wo(e))t.indexOf(r)<0&&Go.call(e,r)&&(n[r]=e[r]);return n};function Yo(e,t,n={}){const o=n,{eventFilter:i=zo}=o,a=Zo(o,["eventFilter"]);return(0,r.watch)(e,Ho(i,t),a)}Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var Jo=Object.defineProperty,Qo=Object.defineProperties,Xo=Object.getOwnPropertyDescriptors,ei=Object.getOwnPropertySymbols,ti=Object.prototype.hasOwnProperty,ni=Object.prototype.propertyIsEnumerable,ri=(e,t,n)=>t in e?Jo(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,oi=(e,t)=>{for(var n in t||(t={}))ti.call(t,n)&&ri(e,n,t[n]);if(ei)for(var n of ei(t))ni.call(t,n)&&ri(e,n,t[n]);return e},ii=(e,t)=>Qo(e,Xo(t)),ai=(e,t)=>{var n={};for(var r in e)ti.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&ei)for(var r of ei(e))t.indexOf(r)<0&&ni.call(e,r)&&(n[r]=e[r]);return n};function li(e,t,n={}){const o=n,{eventFilter:i}=o,a=ai(o,["eventFilter"]),{eventFilter:l,pause:s,resume:c,isActive:u}=function(e=zo){const t=(0,r.ref)(!0);return{isActive:(0,r.readonly)(t),pause:function(){t.value=!1},resume:function(){t.value=!0},eventFilter:(...n)=>{t.value&&e(...n)}}}(i);return{stop:Yo(e,t,ii(oi({},a),{eventFilter:l})),pause:s,resume:c,isActive:u}}Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;function si(e){var t;const n=$o(e);return null!=(t=null==n?void 0:n.$el)?t:n}const ci=Mo?window:void 0;Mo&&window.document,Mo&&window.navigator,Mo&&window.location;function ui(...e){let t,n,o,i;if(Do(e[0])||Array.isArray(e[0])?([n,o,i]=e,t=ci):[t,n,o,i]=e,!t)return Uo;Array.isArray(n)||(n=[n]),Array.isArray(o)||(o=[o]);const a=[],l=()=>{a.forEach((e=>e())),a.length=0},s=(0,r.watch)((()=>si(t)),(e=>{l(),e&&a.push(...n.flatMap((t=>o.map((n=>((e,t,n)=>(e.addEventListener(t,n,i),()=>e.removeEventListener(t,n,i)))(e,t,n))))))}),{immediate:!0,flush:"post"}),c=()=>{s(),l()};return qo(c),c}Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;const fi="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},di="__vueuse_ssr_handlers__";fi[di]=fi[di]||{};const pi=fi[di];function hi(e,t){return pi[e]||t}function vi(e){return null==e?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":"boolean"==typeof e?"boolean":"string"==typeof e?"string":"object"==typeof e?"object":Number.isNaN(e)?"any":"number"}var mi=Object.defineProperty,gi=Object.getOwnPropertySymbols,yi=Object.prototype.hasOwnProperty,bi=Object.prototype.propertyIsEnumerable,wi=(e,t,n)=>t in e?mi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ci=(e,t)=>{for(var n in t||(t={}))yi.call(t,n)&&wi(e,n,t[n]);if(gi)for(var n of gi(t))bi.call(t,n)&&wi(e,n,t[n]);return e};const _i={boolean:{read:e=>"true"===e,write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}};function Ei(e,t,n,o={}){var i;const{flush:a="pre",deep:l=!0,listenToStorageChanges:s=!0,writeDefaults:c=!0,mergeDefaults:u=!1,shallow:f,window:d=ci,eventFilter:p,onError:h=(e=>{})}=o,v=(f?r.shallowRef:r.ref)(t);if(!n)try{n=hi("getDefaultStorage",(()=>{var e;return null==(e=ci)?void 0:e.localStorage}))()}catch(e){h(e)}if(!n)return v;const m=$o(t),g=vi(m),y=null!=(i=o.serializer)?i:_i[g],{pause:b,resume:w}=li(v,(()=>function(t){try{if(null==t)n.removeItem(e);else{const r=y.write(t),o=n.getItem(e);o!==r&&(n.setItem(e,r),d&&(null==d||d.dispatchEvent(new StorageEvent("storage",{key:e,oldValue:o,newValue:r,storageArea:n}))))}}catch(e){h(e)}}(v.value)),{flush:a,deep:l,eventFilter:p});return d&&s&&ui(d,"storage",C),C(),v;function C(t){if(!t||t.storageArea===n)if(t&&null==t.key)v.value=m;else if(!t||t.key===e){b();try{v.value=function(t){const r=t?t.newValue:n.getItem(e);if(null==r)return c&&null!==m&&n.setItem(e,y.write(m)),m;if(!t&&u){const e=y.read(r);return Fo(u)?u(e,m):"object"!==g||Array.isArray(e)?e:Ci(Ci({},m),e)}return"string"!=typeof r?r:y.read(r)}(t)}catch(e){h(e)}finally{t?(0,r.nextTick)(w):w()}}}}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;new Map;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;function xi(e,t,n={}){const{window:r=ci}=n;return Ei(e,t,null==r?void 0:r.localStorage,n)}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var ki,Si;(Si=ki||(ki={})).UP="UP",Si.RIGHT="RIGHT",Si.DOWN="DOWN",Si.LEFT="LEFT",Si.NONE="NONE";Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var Oi=Object.defineProperty,Ni=Object.getOwnPropertySymbols,Pi=Object.prototype.hasOwnProperty,Ti=Object.prototype.propertyIsEnumerable,Vi=(e,t,n)=>t in e?Oi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;((e,t)=>{for(var n in t||(t={}))Pi.call(t,n)&&Vi(e,n,t[n]);if(Ni)for(var n of Ni(t))Ti.call(t,n)&&Vi(e,n,t[n])})({linear:function(e){return e}},{easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]});var Ri=ie({id:"search",state:function(){return{query:"",searchMoreRoute:null,searching:!1,percentScanned:0,error:null}},getters:{hasQuery:function(e){return""!==String(e.query).trim()}},actions:{init:function(){this.checkSearchProgress()},setQuery:function(e){this.query=e},update:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this.query=e,this.error=t&&""!==t?t:null,this.searchMoreRoute=n,this.searching=r,this.percentScanned=o,this.searching&&this.checkSearchProgress()},checkSearchProgress:function(){var e=this,t=this.query;if(""!==t){var n="?"+new URLSearchParams({query:t});fetch(this.searchMoreRoute+n).then((function(e){return e.json()})).then((function(n){if(e.query===t){var r=e.searching;e.searching=n.hasMoreResults,e.percentScanned=n.percentScanned,e.searching?e.checkSearchProgress():r&&!e.searching&&window.dispatchEvent(new CustomEvent("reload-results"))}}))}}}}),Li=ie({id:"pagination",state:function(){return{page:1,pagination:{}}},getters:{currentPage:function(e){return 1!==e.page?Number(e.page):null},links:function(e){var t;return((null===(t=e.pagination)||void 0===t?void 0:t.links)||[]).slice(1,-1)},linksShort:function(e){var t;return((null===(t=e.pagination)||void 0===t?void 0:t.links_short)||[]).slice(1,-1)},hasPages:function(e){var t;return(null===(t=e.pagination)||void 0===t?void 0:t.last_page)>1},hasMorePages:function(e){var t;return null!==(null===(t=e.pagination)||void 0===t?void 0:t.next_page_url)}},actions:{setPagination:function(e){var t,n;(this.pagination=e,(null===(t=this.pagination)||void 0===t?void 0:t.last_page)0}))},totalResults:function(){return this.levelsFound.reduce((function(e,t){return e+t.count}),0)},levelsSelected:function(){return this.levelsFound.filter((function(e){return e.selected}))},totalResultsSelected:function(){return this.levelsSelected.reduce((function(e,t){return e+t.count}),0)}},actions:{setLevelCounts:function(e){e.hasOwnProperty("length")?this.levelCounts=e:this.levelCounts=Object.values(e)},selectAllLevels:function(){this.selectedLevels=Ai,this.levelCounts.forEach((function(e){return e.selected=!0}))},deselectAllLevels:function(){this.selectedLevels=[],this.levelCounts.forEach((function(e){return e.selected=!1}))},toggleLevel:function(e){var t=this.levelCounts.find((function(t){return t.level===e}))||{};this.selectedLevels.includes(e)?(this.selectedLevels=this.selectedLevels.filter((function(t){return t!==e})),t.selected=!1):(this.selectedLevels.push(e),t.selected=!0)}}}),Bi=n(486),Ii={System:"System",Light:"Light",Dark:"Dark"},Mi=ie({id:"logViewer",state:function(){return{theme:xi("logViewerTheme",Ii.System),shorterStackTraces:xi("logViewerShorterStackTraces",!1),direction:xi("logViewerDirection","desc"),resultsPerPage:xi("logViewerResultsPerPage",25),helpSlideOverOpen:!1,loading:!1,error:null,logs:[],levelCounts:[],performance:{},hasMoreResults:!1,percentScanned:100,abortController:null,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight,stacksOpen:[],stacksInView:[],stackTops:{},containerTop:0,showLevelsDropdown:!0}},getters:{selectedFile:function(){return Fi().selectedFile},isOpen:function(e){return function(t){return e.stacksOpen.includes(t)}},isMobile:function(e){return e.viewportWidth<=1023},tableRowHeight:function(){return this.isMobile?29:36},headerHeight:function(){return this.isMobile?0:36},shouldBeSticky:function(e){var t=this;return function(n){return t.isOpen(n)&&e.stacksInView.includes(n)}},stickTopPosition:function(){var e=this;return function(t){var n=e.pixelsAboveFold(t);return n<0?Math.max(e.headerHeight-e.tableRowHeight,e.headerHeight+n)+"px":e.headerHeight+"px"}},pixelsAboveFold:function(e){var t=this;return function(n){var r=document.getElementById("tbody-"+n);if(!r)return!1;var o=r.getClientRects()[0];return o.top+o.height-t.tableRowHeight-t.headerHeight-e.containerTop}},isInViewport:function(){var e=this;return function(t){return e.pixelsAboveFold(t)>-e.tableRowHeight}}},actions:{setViewportDimensions:function(e,t){this.viewportWidth=e,this.viewportHeight=t;var n=document.querySelector(".log-item-container");n&&(this.containerTop=n.getBoundingClientRect().top)},toggleTheme:function(){switch(this.theme){case Ii.System:this.theme=Ii.Light;break;case Ii.Light:this.theme=Ii.Dark;break;default:this.theme=Ii.System}this.syncTheme()},syncTheme:function(){var e=this.theme;e===Ii.Dark||e===Ii.System&&window.matchMedia("(prefers-color-scheme: dark)").matches?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")},toggle:function(e){this.isOpen(e)?this.stacksOpen=this.stacksOpen.filter((function(t){return t!==e})):this.stacksOpen.push(e),this.onScroll()},onScroll:function(){var e=this;this.stacksOpen.forEach((function(t){e.isInViewport(t)?(e.stacksInView.includes(t)||e.stacksInView.push(t),e.stackTops[t]=e.stickTopPosition(t)):(e.stacksInView=e.stacksInView.filter((function(e){return e!==t})),delete e.stackTops[t])}))},reset:function(){this.stacksOpen=[],this.stacksInView=[],this.stackTops={};var e=document.querySelector(".log-item-container");e&&(this.containerTop=e.getBoundingClientRect().top,e.scrollTo(0,0))},loadLogs:(0,Bi.debounce)((function(){var e,t=this,n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).silently,o=void 0!==n&&n,i=Bo(),a=Fi(),l=Ri(),s=Li(),c=ji();if(0!==a.folders.length&&(this.abortController&&this.abortController.abort(),this.selectedFile||l.hasQuery)){this.abortController=new AbortController;var u={host:i.hostQueryParam,file:null===(e=this.selectedFile)||void 0===e?void 0:e.identifier,direction:this.direction,query:l.query,page:s.currentPage,per_page:this.resultsPerPage,levels:(0,r.toRaw)(c.selectedLevels.length>0?c.selectedLevels:"none"),shorter_stack_traces:this.shorterStackTraces};o||(this.loading=!0),Zt.get("".concat(LogViewer.basePath,"/api/logs"),{params:u,signal:this.abortController.signal}).then((function(e){var n=e.data;t.logs=u.host?n.logs.map((function(e){var t={host:u.host,file:e.file_identifier,query:"log-index:".concat(e.index)};return e.url="".concat(window.location.host).concat(LogViewer.basePath,"?").concat(new URLSearchParams(t)),e})):n.logs,t.hasMoreResults=n.hasMoreResults,t.percentScanned=n.percentScanned,t.error=n.error||null,t.performance=n.performance||{},c.setLevelCounts(n.levelCounts),s.setPagination(n.pagination),t.loading=!1,o||(0,r.nextTick)((function(){t.reset(),n.expandAutomatically&&t.stacksOpen.push(0)})),t.hasMoreResults&&t.loadLogs({silently:!0})})).catch((function(e){var n,r;if("ERR_CANCELED"===e.code)return t.hasMoreResults=!1,void(t.percentScanned=100);t.loading=!1,t.error=e.message,null!==(n=e.response)&&void 0!==n&&null!==(r=n.data)&&void 0!==r&&r.message&&(t.error+=": "+e.response.data.message)}))}}),10)}}),Fi=ie({id:"files",state:function(){return{folders:[],direction:xi("fileViewerDirection","desc"),selectedFileIdentifier:null,error:null,clearingCache:{},cacheRecentlyCleared:{},deleting:{},abortController:null,loading:!1,checkBoxesVisibility:!1,filesChecked:[],openFolderIdentifiers:[],foldersInView:[],containerTop:0,sidebarOpen:!1}},getters:{selectedHost:function(){return Bo().selectedHost},hostQueryParam:function(){return Bo().hostQueryParam},files:function(e){return e.folders.flatMap((function(e){return e.files}))},selectedFile:function(e){return e.files.find((function(t){return t.identifier===e.selectedFileIdentifier}))},foldersOpen:function(e){return e.openFolderIdentifiers.map((function(t){return e.folders.find((function(e){return e.identifier===t}))}))},isOpen:function(){var e=this;return function(t){return e.foldersOpen.includes(t)}},isChecked:function(e){return function(t){return e.filesChecked.includes("string"==typeof t?t:t.identifier)}},shouldBeSticky:function(e){var t=this;return function(n){return t.isOpen(n)&&e.foldersInView.includes(n)}},isInViewport:function(){var e=this;return function(t){return e.pixelsAboveFold(t)>-36}},pixelsAboveFold:function(e){return function(t){var n=document.getElementById("folder-"+t);if(!n)return!1;var r=n.getClientRects()[0];return r.top+r.height-e.containerTop}},hasFilesChecked:function(e){return e.filesChecked.length>0}},actions:{setDirection:function(e){this.direction=e},selectFile:function(e){this.selectedFileIdentifier!==e&&(this.selectedFileIdentifier=e,this.openFolderForActiveFile(),this.sidebarOpen=!1)},openFolderForActiveFile:function(){var e=this;if(this.selectedFile){var t=this.folders.find((function(t){return t.files.some((function(t){return t.identifier===e.selectedFile.identifier}))}));t&&!this.isOpen(t)&&this.toggle(t)}},openRootFolderIfNoneOpen:function(){var e=this.folders.find((function(e){return e.is_root}));e&&0===this.openFolderIdentifiers.length&&this.openFolderIdentifiers.push(e.identifier)},loadFolders:function(){var e=this;return this.abortController&&this.abortController.abort(),this.selectedHost?(this.abortController=new AbortController,this.loading=!0,Zt.get("".concat(LogViewer.basePath,"/api/folders"),{params:{host:this.hostQueryParam,direction:this.direction},signal:this.abortController.signal}).then((function(t){var n=t.data;e.folders=n,e.error=n.error||null,e.loading=!1,0===e.openFolderIdentifiers.length&&(e.openFolderForActiveFile(),e.openRootFolderIfNoneOpen()),e.onScroll()})).catch((function(t){var n,r;"ERR_CANCELED"!==t.code&&(e.loading=!1,e.error=t.message,null!==(n=t.response)&&void 0!==n&&null!==(r=n.data)&&void 0!==r&&r.message&&(e.error+=": "+t.response.data.message))}))):(this.folders=[],this.error=null,void(this.loading=!1))},toggle:function(e){this.isOpen(e)?this.openFolderIdentifiers=this.openFolderIdentifiers.filter((function(t){return t!==e.identifier})):this.openFolderIdentifiers.push(e.identifier),this.onScroll()},onScroll:function(){var e=this;this.foldersOpen.forEach((function(t){e.isInViewport(t)?e.foldersInView.includes(t)||e.foldersInView.push(t):e.foldersInView=e.foldersInView.filter((function(e){return e!==t}))}))},reset:function(){this.openFolderIdentifiers=[],this.foldersInView=[];var e=document.getElementById("file-list-container");e&&(this.containerTop=e.getBoundingClientRect().top,e.scrollTo(0,0))},toggleSidebar:function(){this.sidebarOpen=!this.sidebarOpen},checkBoxToggle:function(e){this.isChecked(e)?this.filesChecked=this.filesChecked.filter((function(t){return t!==e})):this.filesChecked.push(e)},toggleCheckboxVisibility:function(){this.checkBoxesVisibility=!this.checkBoxesVisibility},resetChecks:function(){this.filesChecked=[],this.checkBoxesVisibility=!1},clearCacheForFile:function(e){var t=this;return this.clearingCache[e.identifier]=!0,Zt.post("".concat(LogViewer.basePath,"/api/files/").concat(e.identifier,"/clear-cache"),{},{params:{host:this.hostQueryParam}}).then((function(){e.identifier===t.selectedFileIdentifier&&Mi().loadLogs(),t.cacheRecentlyCleared[e.identifier]=!0,setTimeout((function(){return t.cacheRecentlyCleared[e.identifier]=!1}),2e3)})).catch((function(e){})).finally((function(){return t.clearingCache[e.identifier]=!1}))},deleteFile:function(e){var t=this;return Zt.delete("".concat(LogViewer.basePath,"/api/files/").concat(e.identifier),{params:{host:this.hostQueryParam}}).then((function(){return t.loadFolders()}))},clearCacheForFolder:function(e){var t=this;return this.clearingCache[e.identifier]=!0,Zt.post("".concat(LogViewer.basePath,"/api/folders/").concat(e.identifier,"/clear-cache"),{},{params:{host:this.hostQueryParam}}).then((function(){e.files.some((function(e){return e.identifier===t.selectedFileIdentifier}))&&Mi().loadLogs(),t.cacheRecentlyCleared[e.identifier]=!0,setTimeout((function(){return t.cacheRecentlyCleared[e.identifier]=!1}),2e3)})).catch((function(e){})).finally((function(){t.clearingCache[e.identifier]=!1}))},deleteFolder:function(e){var t=this;return this.deleting[e.identifier]=!0,Zt.delete("".concat(LogViewer.basePath,"/api/folders/").concat(e.identifier),{params:{host:this.hostQueryParam}}).then((function(){return t.loadFolders()})).catch((function(e){})).finally((function(){t.deleting[e.identifier]=!1}))},deleteSelectedFiles:function(){return Zt.post("".concat(LogViewer.basePath,"/api/delete-multiple-files"),{files:this.filesChecked},{params:{host:this.hostQueryParam}})},clearCacheForAllFiles:function(){var e=this;this.clearingCache["*"]=!0,Zt.post("".concat(LogViewer.basePath,"/api/clear-cache-all"),{},{params:{host:this.hostQueryParam}}).then((function(){e.cacheRecentlyCleared["*"]=!0,setTimeout((function(){return e.cacheRecentlyCleared["*"]=!1}),2e3),Mi().loadLogs()})).catch((function(e){})).finally((function(){return e.clearingCache["*"]=!1}))}}}),Di=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(t)try{e=e.replace(new RegExp(t,"gi"),"$&")}catch(e){}return Ui(e).replace(/<mark>/g,"").replace(/<\/mark>/g,"")},Ui=function(e){var t={"&":"&","<":"<",">":">",'"':""","'":"'"};return e.replace(/[&<>"']/g,(function(e){return t[e]}))},$i=function(e){var t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="absolute",t.style.left="-9999px",document.body.appendChild(t);var n=document.getSelection().rangeCount>0&&document.getSelection().getRangeAt(0);t.select(),document.execCommand("copy"),document.body.removeChild(t),n&&(document.getSelection().removeAllRanges(),document.getSelection().addRange(n))},Hi=function(e,t,n){var r=e.currentRoute.value,o={host:r.query.host||void 0,file:r.query.file||void 0,query:r.query.query||void 0,page:r.query.page||void 0};"host"===t?(o.file=void 0,o.page=void 0):"file"===t&&void 0!==o.page&&(o.page=void 0),o[t]=n?String(n):void 0,e.push({name:"home",query:o})},zi=function(){var e=(0,r.ref)({});return{dropdownDirections:e,calculateDropdownDirection:function(t){e.value[t.dataset.toggleId]=function(e){window.innerWidth||document.documentElement.clientWidth;var t=window.innerHeight||document.documentElement.clientHeight;return e.getBoundingClientRect().bottom+190=0&&null===n[r].offsetParent;)r--;return n[r]?n[r]:null},ta=function(e,t){for(var n=Array.from(document.querySelectorAll(".".concat(t))),r=n.findIndex((function(t){return t===e}))+1;r0&&t[0].focus();else if(e.key===Xi.Hosts){e.preventDefault();var r=document.getElementById("hosts-toggle-button");null==r||r.click()}else if(e.key===Xi.Severity){e.preventDefault();var o=document.getElementById("severity-dropdown-toggle");null==o||o.click()}else if(e.key===Xi.Settings){e.preventDefault();var i=document.querySelector("#desktop-site-settings .menu-button");null==i||i.click()}else if(e.key===Xi.Search){e.preventDefault();var a=document.getElementById("query");null==a||a.focus()}else if(e.key===Xi.Refresh){e.preventDefault();var l=document.getElementById("reload-logs-button");null==l||l.click()}},oa=function(e){if("ArrowLeft"===e.key)e.preventDefault(),function(){var e=document.querySelector(".file-item-container.active .file-item-info");if(e)e.nextElementSibling.focus();else{var t,n=document.querySelector(".file-item-container .file-item-info");null==n||null===(t=n.nextElementSibling)||void 0===t||t.focus()}}();else if("ArrowRight"===e.key){var t=na(document.activeElement,Ji),n=Array.from(document.querySelectorAll(".".concat(Qi)));n.length>t&&(e.preventDefault(),n[t].focus())}else if("ArrowUp"===e.key){var r=ea(document.activeElement,Ji);r&&(e.preventDefault(),r.focus())}else if("ArrowDown"===e.key){var o=ta(document.activeElement,Ji);o&&(e.preventDefault(),o.focus())}},ia=function(e){if("ArrowLeft"===e.key){var t=na(document.activeElement,Qi),n=Array.from(document.querySelectorAll(".".concat(Ji)));n.length>t&&(e.preventDefault(),n[t].focus())}else if("ArrowUp"===e.key){var r=ea(document.activeElement,Qi);r&&(e.preventDefault(),r.focus())}else if("ArrowDown"===e.key){var o=ta(document.activeElement,Qi);o&&(e.preventDefault(),o.focus())}else if("Enter"===e.key||" "===e.key){e.preventDefault();var i=document.activeElement;i.click(),i.focus()}},aa=function(e){if("ArrowUp"===e.key){var t=ea(document.activeElement,Yi);t&&(e.preventDefault(),t.focus())}else if("ArrowDown"===e.key){var n=ta(document.activeElement,Yi);n&&(e.preventDefault(),n.focus())}else"ArrowRight"===e.key&&(e.preventDefault(),document.activeElement.nextElementSibling.focus())},la=function(e){if("ArrowLeft"===e.key)e.preventDefault(),document.activeElement.previousElementSibling.focus();else if("ArrowRight"===e.key){e.preventDefault();var t=Array.from(document.querySelectorAll(".".concat(Ji)));t.length>0&&t[0].focus()}};function sa(e){return sa="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},sa(e)}function ca(){ca=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",l=o.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function c(e,t,n,o){var i=t&&t.prototype instanceof d?t:d,a=Object.create(i.prototype),l=new k(o||[]);return r(a,"_invoke",{value:C(e,n,l)}),a}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var f={};function d(){}function p(){}function h(){}var v={};s(v,i,(function(){return this}));var m=Object.getPrototypeOf,g=m&&m(m(S([])));g&&g!==t&&n.call(g,i)&&(v=g);var y=h.prototype=d.prototype=Object.create(v);function b(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function w(e,t){function o(r,i,a,l){var s=u(e[r],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f&&"object"==sa(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){o("next",e,a,l)}),(function(e){o("throw",e,a,l)})):t.resolve(f).then((function(e){c.value=e,a(c)}),(function(e){return o("throw",e,a,l)}))}l(s.arg)}var i;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){o(e,n,t,r)}))}return i=i?i.then(r,r):r()}})}function C(e,t,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return O()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var l=_(a,n);if(l){if(l===f)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=u(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===f)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function _(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,_(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),f;var o=u(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,f;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function E(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function x(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function k(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(E,this),this.reset(!0)}function S(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var l=n.call(i,"catchLoc"),s=n.call(i,"finallyLoc");if(l&&s){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),x(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;x(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:S(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function ua(e,t,n,r,o,i,a){try{var l=e[i](a),s=l.value}catch(e){return void n(e)}l.done?t(s):Promise.resolve(s).then(r,o)}var fa={class:"file-item group"},da={key:0,class:"sr-only"},pa={key:1,class:"sr-only"},ha={key:2,class:"my-auto mr-2"},va=["onClick","checked","value"],ma={class:"file-name"},ga=(0,r.createElementVNode)("span",{class:"sr-only"},"Name:",-1),ya={class:"file-size"},ba=(0,r.createElementVNode)("span",{class:"sr-only"},"Size:",-1),wa={class:"py-2"},Ca={class:"text-brand-500"},_a=["href"],Ea=(0,r.createElementVNode)("div",{class:"divider"},null,-1);const xa={__name:"FileListItem",props:{logFile:{type:Object,required:!0},showSelectToggle:{type:Boolean,default:!1}},emits:["selectForDeletion"],setup:function(e,t){t.emit;var n=e,o=Fi(),i=Nr(),a=zi(),l=a.dropdownDirections,s=a.calculateDropdownDirection,c=(0,r.computed)((function(){return o.selectedFile&&o.selectedFile.identifier===n.logFile.identifier})),u=function(){var e,t=(e=ca().mark((function e(){return ca().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!confirm("Are you sure you want to delete the log file '".concat(n.logFile.name,"'? THIS ACTION CANNOT BE UNDONE."))){e.next=6;break}return e.next=3,o.deleteFile(n.logFile);case 3:return n.logFile.identifier===o.selectedFileIdentifier&&Hi(i,"file",null),e.next=6,o.loadFolders();case 6:case"end":return e.stop()}}),e)})),function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function a(e){ua(i,r,o,a,l,"next",e)}function l(e){ua(i,r,o,a,l,"throw",e)}a(void 0)}))});return function(){return t.apply(this,arguments)}}(),f=function(){o.checkBoxToggle(n.logFile.identifier)},d=function(){o.toggleCheckboxVisibility(),f()};return function(t,n){return(0,r.openBlock)(),(0,r.createElementBlock)("div",{class:(0,r.normalizeClass)(["file-item-container",[(0,r.unref)(c)?"active":""]])},[(0,r.createVNode)((0,r.unref)(Co),null,{default:(0,r.withCtx)((function(){return[(0,r.createElementVNode)("div",fa,[(0,r.createElementVNode)("button",{class:"file-item-info",onKeydown:n[0]||(n[0]=function(){return(0,r.unref)(aa)&&(0,r.unref)(aa).apply(void 0,arguments)})},[(0,r.unref)(c)?(0,r.createCommentVNode)("",!0):((0,r.openBlock)(),(0,r.createElementBlock)("span",da,"Select log file")),(0,r.unref)(c)?((0,r.openBlock)(),(0,r.createElementBlock)("span",pa,"Deselect log file")):(0,r.createCommentVNode)("",!0),e.logFile.can_delete?(0,r.withDirectives)(((0,r.openBlock)(),(0,r.createElementBlock)("span",ha,[(0,r.createElementVNode)("input",{type:"checkbox",onClick:(0,r.withModifiers)(f,["stop"]),checked:(0,r.unref)(o).isChecked(e.logFile),value:(0,r.unref)(o).isChecked(e.logFile)},null,8,va)],512)),[[r.vShow,(0,r.unref)(o).checkBoxesVisibility]]):(0,r.createCommentVNode)("",!0),(0,r.createElementVNode)("span",ma,[ga,(0,r.createTextVNode)((0,r.toDisplayString)(e.logFile.name),1)]),(0,r.createElementVNode)("span",ya,[ba,(0,r.createTextVNode)((0,r.toDisplayString)(e.logFile.size_formatted),1)])],32),(0,r.createVNode)((0,r.unref)(_o),{as:"button",class:"file-dropdown-toggle group-hover:border-brand-600 group-hover:dark:border-brand-800","data-toggle-id":e.logFile.identifier,onKeydown:(0,r.unref)(la),onClick:n[1]||(n[1]=(0,r.withModifiers)((function(e){return(0,r.unref)(s)(e.target)}),["stop"]))},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(Ro),{class:"w-4 h-4 pointer-events-none"})]})),_:1},8,["data-toggle-id","onKeydown"])]),(0,r.createVNode)(r.Transition,{"leave-active-class":"transition ease-in duration-100","leave-from-class":"opacity-100 scale-100","leave-to-class":"opacity-0 scale-90","enter-active-class":"transition ease-out duration-100","enter-from-class":"opacity-0 scale-90","enter-to-class":"opacity-100 scale-100"},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(Eo),{as:"div",class:(0,r.normalizeClass)(["dropdown w-48",[(0,r.unref)(l)[e.logFile.identifier]]])},{default:(0,r.withCtx)((function(){return[(0,r.createElementVNode)("div",wa,[(0,r.createVNode)((0,r.unref)(xo),{onClick:n[2]||(n[2]=(0,r.withModifiers)((function(t){return(0,r.unref)(o).clearCacheForFile(e.logFile)}),["stop","prevent"]))},{default:(0,r.withCtx)((function(t){var n=t.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([n?"active":""])},[(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(Lo),{class:"h-4 w-4 mr-2"},null,512),[[r.vShow,!(0,r.unref)(o).clearingCache[e.logFile.identifier]]]),(0,r.withDirectives)((0,r.createVNode)(Zi,null,null,512),[[r.vShow,(0,r.unref)(o).clearingCache[e.logFile.identifier]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",null,"Clear index",512),[[r.vShow,!(0,r.unref)(o).cacheRecentlyCleared[e.logFile.identifier]&&!(0,r.unref)(o).clearingCache[e.logFile.identifier]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",null,"Clearing...",512),[[r.vShow,!(0,r.unref)(o).cacheRecentlyCleared[e.logFile.identifier]&&(0,r.unref)(o).clearingCache[e.logFile.identifier]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",Ca,"Index cleared",512),[[r.vShow,(0,r.unref)(o).cacheRecentlyCleared[e.logFile.identifier]]])],2)]})),_:1}),e.logFile.can_download?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(xo),{key:0,onClick:n[3]||(n[3]=(0,r.withModifiers)((function(){}),["stop"]))},{default:(0,r.withCtx)((function(t){var n=t.active;return[(0,r.createElementVNode)("a",{href:e.logFile.download_url,download:"",class:(0,r.normalizeClass)([n?"active":""])},[(0,r.createVNode)((0,r.unref)(Ao),{class:"w-4 h-4 mr-2"}),(0,r.createTextVNode)(" Download ")],10,_a)]})),_:1})):(0,r.createCommentVNode)("",!0),e.logFile.can_delete?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:1},[Ea,(0,r.createVNode)((0,r.unref)(xo),{onClick:(0,r.withModifiers)(u,["stop","prevent"])},{default:(0,r.withCtx)((function(e){var t=e.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([t?"active":""])},[(0,r.createVNode)((0,r.unref)(No),{class:"w-4 h-4 mr-2"}),(0,r.createTextVNode)(" Delete ")],2)]})),_:1},8,["onClick"]),(0,r.createVNode)((0,r.unref)(xo),{onClick:(0,r.withModifiers)(d,["stop"])},{default:(0,r.withCtx)((function(e){var t=e.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([t?"active":""])},[(0,r.createVNode)((0,r.unref)(No),{class:"w-4 h-4 mr-2"}),(0,r.createTextVNode)(" Delete Multiple ")],2)]})),_:1},8,["onClick"])],64)):(0,r.createCommentVNode)("",!0)])]})),_:1},8,["class"])]})),_:1})]})),_:1})],2)}}},ka=xa;var Sa=n(904),Oa=n(908),Na=n(960),Pa=n(817),Ta=n(902),Va=n(390),Ra=n(69),La=n(520),Aa={class:"checkmark w-[18px] h-[18px] bg-gray-50 dark:bg-gray-800 rounded border dark:border-gray-600 inline-flex items-center justify-center"};const ja={__name:"Checkmark",props:{checked:{type:Boolean,required:!0}},setup:function(e){return function(t,n){return(0,r.openBlock)(),(0,r.createElementBlock)("div",Aa,[e.checked?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(La),{key:0,width:"18",height:"18",class:"w-full h-full"})):(0,r.createCommentVNode)("",!0)])}}};var Ba={width:"884",height:"1279",viewBox:"0 0 884 1279",fill:"none",xmlns:"http://www.w3.org/2000/svg"},Ia=[(0,r.createStaticVNode)('',14)];const Ma={},Fa=(0,Ki.Z)(Ma,[["render",function(e,t){return(0,r.openBlock)(),(0,r.createElementBlock)("svg",Ba,Ia)}]]);var Da=(0,r.createElementVNode)("span",{class:"sr-only"},"Settings dropdown",-1),Ua={class:"py-2"},$a=(0,r.createElementVNode)("div",{class:"label"},"Settings",-1),Ha=(0,r.createElementVNode)("span",{class:"ml-3"},"Shorter stack traces",-1),za=(0,r.createElementVNode)("div",{class:"divider"},null,-1),qa=(0,r.createElementVNode)("div",{class:"label"},"Actions",-1),Wa={class:"text-brand-500"},Ka={class:"text-brand-500"},Ga=(0,r.createElementVNode)("div",{class:"divider"},null,-1),Za=["innerHTML"],Ya=(0,r.createElementVNode)("div",{class:"divider"},null,-1),Ja={class:"w-4 h-4 mr-3 flex flex-col items-center"};const Qa={__name:"SiteSettingsDropdown",setup:function(e){var t=Mi(),n=Fi(),o=(0,r.ref)(!1),i=function(){$i(window.location.href),o.value=!0,setTimeout((function(){return o.value=!1}),2e3)};return(0,r.watch)((function(){return t.shorterStackTraces}),(function(){return t.loadLogs()})),function(e,a){return(0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(Co),{as:"div",class:"relative"},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(_o),{as:"button",class:"menu-button"},{default:(0,r.withCtx)((function(){return[Da,(0,r.createVNode)((0,r.unref)(Sa),{class:"w-5 h-5"})]})),_:1}),(0,r.createVNode)(r.Transition,{"leave-active-class":"transition ease-in duration-100","leave-from-class":"opacity-100 scale-100","leave-to-class":"opacity-0 scale-90","enter-active-class":"transition ease-out duration-100","enter-from-class":"opacity-0 scale-90","enter-to-class":"opacity-100 scale-100"},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(Eo),{as:"div",style:{"min-width":"250px"},class:"dropdown"},{default:(0,r.withCtx)((function(){return[(0,r.createElementVNode)("div",Ua,[$a,(0,r.createVNode)((0,r.unref)(xo),null,{default:(0,r.withCtx)((function(e){var n=e.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([n?"active":""]),onClick:a[0]||(a[0]=(0,r.withModifiers)((function(e){return(0,r.unref)(t).shorterStackTraces=!(0,r.unref)(t).shorterStackTraces}),["stop","prevent"]))},[(0,r.createVNode)(ja,{checked:(0,r.unref)(t).shorterStackTraces},null,8,["checked"]),Ha],2)]})),_:1}),za,qa,(0,r.createVNode)((0,r.unref)(xo),{onClick:(0,r.withModifiers)((0,r.unref)(n).clearCacheForAllFiles,["stop","prevent"])},{default:(0,r.withCtx)((function(e){var t=e.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([t?"active":""])},[(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(Lo),{class:"w-4 h-4 mr-1.5"},null,512),[[r.vShow,!(0,r.unref)(n).clearingCache["*"]]]),(0,r.withDirectives)((0,r.createVNode)(Zi,{class:"w-4 h-4 mr-1.5"},null,512),[[r.vShow,(0,r.unref)(n).clearingCache["*"]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",null,"Clear indices for all files",512),[[r.vShow,!(0,r.unref)(n).cacheRecentlyCleared["*"]&&!(0,r.unref)(n).clearingCache["*"]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",null,"Please wait...",512),[[r.vShow,!(0,r.unref)(n).cacheRecentlyCleared["*"]&&(0,r.unref)(n).clearingCache["*"]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",Wa,"File indices cleared",512),[[r.vShow,(0,r.unref)(n).cacheRecentlyCleared["*"]]])],2)]})),_:1},8,["onClick"]),(0,r.createVNode)((0,r.unref)(xo),{onClick:(0,r.withModifiers)(i,["stop","prevent"])},{default:(0,r.withCtx)((function(e){var t=e.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([t?"active":""])},[(0,r.createVNode)((0,r.unref)(Oa),{class:"w-4 h-4"}),(0,r.withDirectives)((0,r.createElementVNode)("span",null,"Share this page",512),[[r.vShow,!o.value]]),(0,r.withDirectives)((0,r.createElementVNode)("span",Ka,"Link copied!",512),[[r.vShow,o.value]])],2)]})),_:1},8,["onClick"]),Ga,(0,r.createVNode)((0,r.unref)(xo),{onClick:a[1]||(a[1]=(0,r.withModifiers)((function(e){return(0,r.unref)(t).toggleTheme()}),["stop","prevent"]))},{default:(0,r.withCtx)((function(e){var n=e.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([n?"active":""])},[(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(Na),{class:"w-4 h-4"},null,512),[[r.vShow,(0,r.unref)(t).theme===(0,r.unref)(Ii).System]]),(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(Pa),{class:"w-4 h-4"},null,512),[[r.vShow,(0,r.unref)(t).theme===(0,r.unref)(Ii).Light]]),(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(Ta),{class:"w-4 h-4"},null,512),[[r.vShow,(0,r.unref)(t).theme===(0,r.unref)(Ii).Dark]]),(0,r.createElementVNode)("span",null,[(0,r.createTextVNode)("Theme: "),(0,r.createElementVNode)("span",{innerHTML:(0,r.unref)(t).theme,class:"font-semibold"},null,8,Za)])],2)]})),_:1}),(0,r.createVNode)((0,r.unref)(xo),null,{default:(0,r.withCtx)((function(e){var n=e.active;return[(0,r.createElementVNode)("button",{onClick:a[2]||(a[2]=function(e){return(0,r.unref)(t).helpSlideOverOpen=!0}),class:(0,r.normalizeClass)([n?"active":""])},[(0,r.createVNode)((0,r.unref)(Va),{class:"w-4 h-4"}),(0,r.createTextVNode)(" Keyboard Shortcuts ")],2)]})),_:1}),(0,r.createVNode)((0,r.unref)(xo),null,{default:(0,r.withCtx)((function(e){var t=e.active;return[(0,r.createElementVNode)("a",{href:"https://log-viewer.opcodes.io/docs",target:"_blank",class:(0,r.normalizeClass)([t?"active":""])},[(0,r.createVNode)((0,r.unref)(Va),{class:"w-4 h-4"}),(0,r.createTextVNode)(" Documentation ")],2)]})),_:1}),(0,r.createVNode)((0,r.unref)(xo),null,{default:(0,r.withCtx)((function(e){var t=e.active;return[(0,r.createElementVNode)("a",{href:"https://www.github.com/opcodesio/log-viewer",target:"_blank",class:(0,r.normalizeClass)([t?"active":""])},[(0,r.createVNode)((0,r.unref)(Va),{class:"w-4 h-4"}),(0,r.createTextVNode)(" Help ")],2)]})),_:1}),Ya,(0,r.createVNode)((0,r.unref)(xo),null,{default:(0,r.withCtx)((function(e){var t=e.active;return[(0,r.createElementVNode)("a",{href:"https://www.buymeacoffee.com/arunas",target:"_blank",class:(0,r.normalizeClass)([t?"active":""])},[(0,r.createElementVNode)("div",Ja,[(0,r.createVNode)(Fa,{class:"h-4 w-auto"})]),(0,r.createElementVNode)("strong",{class:(0,r.normalizeClass)([t?"text-white":"text-brand-500"])},"Show your support",2),(0,r.createVNode)((0,r.unref)(Ra),{class:"ml-2 w-4 h-4 opacity-75"})],2)]})),_:1})])]})),_:1})]})),_:1})]})),_:1})}}};var Xa=(e=>(e[e.None=1]="None",e[e.Focusable=2]="Focusable",e[e.Hidden=4]="Hidden",e))(Xa||{});let el=(0,r.defineComponent)({name:"Hidden",props:{as:{type:[Object,String],default:"div"},features:{type:Number,default:1}},setup:(e,{slots:t,attrs:n})=>()=>{let{features:r,...o}=e;return Ar({ourProps:{"aria-hidden":2==(2&r)||void 0,style:{position:"fixed",top:1,left:1,width:1,height:0,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0",...4==(4&r)&&2!=(2&r)&&{display:"none"}}},theirProps:o,slot:{},attrs:n,slots:t,name:"Hidden"})}});function tl(e={},t=null,n=[]){for(let[r,o]of Object.entries(e))rl(n,nl(t,r),o);return n}function nl(e,t){return e?e+"["+t+"]":t}function rl(e,t,n){if(Array.isArray(n))for(let[r,o]of n.entries())rl(e,nl(t,r.toString()),o);else n instanceof Date?e.push([t,n.toISOString()]):"boolean"==typeof n?e.push([t,n?"1":"0"]):"string"==typeof n?e.push([t,n]):"number"==typeof n?e.push([t,`${n}`]):null==n?e.push([t,""]):tl(n,t,e)}function ol(e,t){return e===t}var il=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(il||{}),al=(e=>(e[e.Single=0]="Single",e[e.Multi=1]="Multi",e))(al||{}),ll=(e=>(e[e.Pointer=0]="Pointer",e[e.Other=1]="Other",e))(ll||{});let sl=Symbol("ListboxContext");function cl(e){let t=(0,r.inject)(sl,null);if(null===t){let t=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,cl),t}return t}let ul=(0,r.defineComponent)({name:"Listbox",emits:{"update:modelValue":e=>!0},props:{as:{type:[Object,String],default:"template"},disabled:{type:[Boolean],default:!1},by:{type:[String,Function],default:()=>ol},horizontal:{type:[Boolean],default:!1},modelValue:{type:[Object,String,Number,Boolean],default:void 0},defaultValue:{type:[Object,String,Number,Boolean],default:void 0},name:{type:String,optional:!0},multiple:{type:[Boolean],default:!1}},inheritAttrs:!1,setup(e,{slots:t,attrs:n,emit:o}){let i=(0,r.ref)(1),a=(0,r.ref)(null),l=(0,r.ref)(null),s=(0,r.ref)(null),c=(0,r.ref)([]),u=(0,r.ref)(""),f=(0,r.ref)(null),d=(0,r.ref)(1);function p(e=(e=>e)){let t=null!==f.value?c.value[f.value]:null,n=co(e(c.value.slice()),(e=>zr(e.dataRef.domRef))),r=t?n.indexOf(t):null;return-1===r&&(r=null),{options:n,activeOptionIndex:r}}let h=(0,r.computed)((()=>e.multiple?1:0)),[v,m]=function(e,t,n){let o=(0,r.ref)(null==n?void 0:n.value),i=(0,r.computed)((()=>void 0!==e.value));return[(0,r.computed)((()=>i.value?e.value:o.value)),function(e){return i.value||(o.value=e),null==t?void 0:t(e)}]}((0,r.computed)((()=>void 0===e.modelValue?Tr(h.value,{1:[],0:void 0}):e.modelValue)),(e=>o("update:modelValue",e)),(0,r.computed)((()=>e.defaultValue))),g={listboxState:i,value:v,mode:h,compare(t,n){if("string"==typeof e.by){let r=e.by;return(null==t?void 0:t[r])===(null==n?void 0:n[r])}return e.by(t,n)},orientation:(0,r.computed)((()=>e.horizontal?"horizontal":"vertical")),labelRef:a,buttonRef:l,optionsRef:s,disabled:(0,r.computed)((()=>e.disabled)),options:c,searchQuery:u,activeOptionIndex:f,activationTrigger:d,closeListbox(){e.disabled||1!==i.value&&(i.value=1,f.value=null)},openListbox(){e.disabled||0!==i.value&&(i.value=0)},goToOption(t,n,r){if(e.disabled||1===i.value)return;let o=p(),a=Hr(t===$r.Specific?{focus:$r.Specific,id:n}:{focus:t},{resolveItems:()=>o.options,resolveActiveIndex:()=>o.activeOptionIndex,resolveId:e=>e.id,resolveDisabled:e=>e.dataRef.disabled});u.value="",f.value=a,d.value=null!=r?r:1,c.value=o.options},search(t){if(e.disabled||1===i.value)return;let n=""!==u.value?0:1;u.value+=t.toLowerCase();let r=(null!==f.value?c.value.slice(f.value+n).concat(c.value.slice(0,f.value+n)):c.value).find((e=>e.dataRef.textValue.startsWith(u.value)&&!e.dataRef.disabled)),o=r?c.value.indexOf(r):-1;-1===o||o===f.value||(f.value=o,d.value=1)},clearSearch(){e.disabled||1!==i.value&&""!==u.value&&(u.value="")},registerOption(e,t){let n=p((n=>[...n,{id:e,dataRef:t}]));c.value=n.options,f.value=n.activeOptionIndex},unregisterOption(e){let t=p((t=>{let n=t.findIndex((t=>t.id===e));return-1!==n&&t.splice(n,1),t}));c.value=t.options,f.value=t.activeOptionIndex,d.value=1},select(t){e.disabled||m(Tr(h.value,{0:()=>t,1:()=>{let e=(0,r.toRaw)(g.value.value).slice(),n=(0,r.toRaw)(t),o=e.findIndex((e=>g.compare(n,(0,r.toRaw)(e))));return-1===o?e.push(n):e.splice(o,1),e}}))}};ho([l,s],((e,t)=>{var n;g.closeListbox(),io(t,oo.Loose)||(e.preventDefault(),null==(n=zr(l))||n.focus())}),(0,r.computed)((()=>0===i.value))),(0,r.provide)(sl,g),Yr((0,r.computed)((()=>Tr(i.value,{0:Gr.Open,1:Gr.Closed}))));let y=(0,r.computed)((()=>{var e;return null==(e=zr(l))?void 0:e.closest("form")}));return(0,r.onMounted)((()=>{(0,r.watch)([y],(()=>{if(y.value&&void 0!==e.defaultValue)return y.value.addEventListener("reset",t),()=>{var e;null==(e=y.value)||e.removeEventListener("reset",t)};function t(){g.select(e.defaultValue)}}),{immediate:!0})})),()=>{let{name:o,modelValue:a,disabled:l,...s}=e,c={open:0===i.value,disabled:l,value:v.value};return(0,r.h)(r.Fragment,[...null!=o&&null!=v.value?tl({[o]:v.value}).map((([e,t])=>(0,r.h)(el,function(e){let t=Object.assign({},e);for(let e in t)void 0===t[e]&&delete t[e];return t}({features:Xa.Hidden,key:e,as:"input",type:"hidden",hidden:!0,readOnly:!0,name:e,value:t})))):[],Ar({ourProps:{},theirProps:{...n,...Mr(s,["defaultValue","onUpdate:modelValue","horizontal","multiple","by"])},slot:c,slots:t,attrs:n,name:"Listbox"})])}}}),fl=(0,r.defineComponent)({name:"ListboxLabel",props:{as:{type:[Object,String],default:"label"},id:{type:String,default:()=>`headlessui-listbox-label-${Dr()}`}},setup(e,{attrs:t,slots:n}){let r=cl("ListboxLabel");function o(){var e;null==(e=zr(r.buttonRef))||e.focus({preventScroll:!0})}return()=>{let i={open:0===r.listboxState.value,disabled:r.disabled.value},{id:a,...l}=e;return Ar({ourProps:{id:a,ref:r.labelRef,onClick:o},theirProps:l,slot:i,attrs:t,slots:n,name:"ListboxLabel"})}}}),dl=(0,r.defineComponent)({name:"ListboxButton",props:{as:{type:[Object,String],default:"button"},id:{type:String,default:()=>`headlessui-listbox-button-${Dr()}`}},setup(e,{attrs:t,slots:n,expose:o}){let i=cl("ListboxButton");function a(e){switch(e.key){case Ur.Space:case Ur.Enter:case Ur.ArrowDown:e.preventDefault(),i.openListbox(),(0,r.nextTick)((()=>{var e;null==(e=zr(i.optionsRef))||e.focus({preventScroll:!0}),i.value.value||i.goToOption($r.First)}));break;case Ur.ArrowUp:e.preventDefault(),i.openListbox(),(0,r.nextTick)((()=>{var e;null==(e=zr(i.optionsRef))||e.focus({preventScroll:!0}),i.value.value||i.goToOption($r.Last)}))}}function l(e){if(e.key===Ur.Space)e.preventDefault()}function s(e){i.disabled.value||(0===i.listboxState.value?(i.closeListbox(),(0,r.nextTick)((()=>{var e;return null==(e=zr(i.buttonRef))?void 0:e.focus({preventScroll:!0})}))):(e.preventDefault(),i.openListbox(),function(e){requestAnimationFrame((()=>requestAnimationFrame(e)))}((()=>{var e;return null==(e=zr(i.optionsRef))?void 0:e.focus({preventScroll:!0})}))))}o({el:i.buttonRef,$el:i.buttonRef});let c=Qr((0,r.computed)((()=>({as:e.as,type:t.type}))),i.buttonRef);return()=>{var r,o;let u={open:0===i.listboxState.value,disabled:i.disabled.value,value:i.value.value},{id:f,...d}=e;return Ar({ourProps:{ref:i.buttonRef,id:f,type:c.value,"aria-haspopup":"listbox","aria-controls":null==(r=zr(i.optionsRef))?void 0:r.id,"aria-expanded":i.disabled.value?void 0:0===i.listboxState.value,"aria-labelledby":i.labelRef.value?[null==(o=zr(i.labelRef))?void 0:o.id,f].join(" "):void 0,disabled:!0===i.disabled.value||void 0,onKeydown:a,onKeyup:l,onClick:s},theirProps:d,slot:u,attrs:t,slots:n,name:"ListboxButton"})}}}),pl=(0,r.defineComponent)({name:"ListboxOptions",props:{as:{type:[Object,String],default:"ul"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},id:{type:String,default:()=>`headlessui-listbox-options-${Dr()}`}},setup(e,{attrs:t,slots:n,expose:o}){let i=cl("ListboxOptions"),a=(0,r.ref)(null);function l(e){switch(a.value&&clearTimeout(a.value),e.key){case Ur.Space:if(""!==i.searchQuery.value)return e.preventDefault(),e.stopPropagation(),i.search(e.key);case Ur.Enter:if(e.preventDefault(),e.stopPropagation(),null!==i.activeOptionIndex.value){let e=i.options.value[i.activeOptionIndex.value];i.select(e.dataRef.value)}0===i.mode.value&&(i.closeListbox(),(0,r.nextTick)((()=>{var e;return null==(e=zr(i.buttonRef))?void 0:e.focus({preventScroll:!0})})));break;case Tr(i.orientation.value,{vertical:Ur.ArrowDown,horizontal:Ur.ArrowRight}):return e.preventDefault(),e.stopPropagation(),i.goToOption($r.Next);case Tr(i.orientation.value,{vertical:Ur.ArrowUp,horizontal:Ur.ArrowLeft}):return e.preventDefault(),e.stopPropagation(),i.goToOption($r.Previous);case Ur.Home:case Ur.PageUp:return e.preventDefault(),e.stopPropagation(),i.goToOption($r.First);case Ur.End:case Ur.PageDown:return e.preventDefault(),e.stopPropagation(),i.goToOption($r.Last);case Ur.Escape:e.preventDefault(),e.stopPropagation(),i.closeListbox(),(0,r.nextTick)((()=>{var e;return null==(e=zr(i.buttonRef))?void 0:e.focus({preventScroll:!0})}));break;case Ur.Tab:e.preventDefault(),e.stopPropagation();break;default:1===e.key.length&&(i.search(e.key),a.value=setTimeout((()=>i.clearSearch()),350))}}o({el:i.optionsRef,$el:i.optionsRef});let s=Zr(),c=(0,r.computed)((()=>null!==s?s.value===Gr.Open:0===i.listboxState.value));return()=>{var r,o,a,s;let u={open:0===i.listboxState.value},{id:f,...d}=e;return Ar({ourProps:{"aria-activedescendant":null===i.activeOptionIndex.value||null==(r=i.options.value[i.activeOptionIndex.value])?void 0:r.id,"aria-multiselectable":1===i.mode.value||void 0,"aria-labelledby":null!=(s=null==(o=zr(i.labelRef))?void 0:o.id)?s:null==(a=zr(i.buttonRef))?void 0:a.id,"aria-orientation":i.orientation.value,id:f,onKeydown:l,role:"listbox",tabIndex:0,ref:i.optionsRef},theirProps:d,slot:u,attrs:t,slots:n,features:Rr.RenderStrategy|Rr.Static,visible:c.value,name:"ListboxOptions"})}}}),hl=(0,r.defineComponent)({name:"ListboxOption",props:{as:{type:[Object,String],default:"li"},value:{type:[Object,String,Number,Boolean]},disabled:{type:Boolean,default:!1},id:{type:String,default:()=>`headlessui-listbox.option-${Dr()}`}},setup(e,{slots:t,attrs:n,expose:o}){let i=cl("ListboxOption"),a=(0,r.ref)(null);o({el:a,$el:a});let l=(0,r.computed)((()=>null!==i.activeOptionIndex.value&&i.options.value[i.activeOptionIndex.value].id===e.id)),s=(0,r.computed)((()=>Tr(i.mode.value,{0:()=>i.compare((0,r.toRaw)(i.value.value),(0,r.toRaw)(e.value)),1:()=>(0,r.toRaw)(i.value.value).some((t=>i.compare((0,r.toRaw)(t),(0,r.toRaw)(e.value))))}))),c=(0,r.computed)((()=>Tr(i.mode.value,{1:()=>{var t;let n=(0,r.toRaw)(i.value.value);return(null==(t=i.options.value.find((e=>n.some((t=>i.compare((0,r.toRaw)(t),(0,r.toRaw)(e.dataRef.value)))))))?void 0:t.id)===e.id},0:()=>s.value}))),u=(0,r.computed)((()=>({disabled:e.disabled,value:e.value,textValue:"",domRef:a})));function f(t){if(e.disabled)return t.preventDefault();i.select(e.value),0===i.mode.value&&(i.closeListbox(),(0,r.nextTick)((()=>{var e;return null==(e=zr(i.buttonRef))?void 0:e.focus({preventScroll:!0})})))}function d(){if(e.disabled)return i.goToOption($r.Nothing);i.goToOption($r.Specific,e.id)}(0,r.onMounted)((()=>{var e,t;let n=null==(t=null==(e=zr(a))?void 0:e.textContent)?void 0:t.toLowerCase().trim();void 0!==n&&(u.value.textValue=n)})),(0,r.onMounted)((()=>i.registerOption(e.id,u))),(0,r.onUnmounted)((()=>i.unregisterOption(e.id))),(0,r.onMounted)((()=>{(0,r.watch)([i.listboxState,s],(()=>{0===i.listboxState.value&&(!s.value||Tr(i.mode.value,{1:()=>{c.value&&i.goToOption($r.Specific,e.id)},0:()=>{i.goToOption($r.Specific,e.id)}}))}),{immediate:!0})})),(0,r.watchEffect)((()=>{0===i.listboxState.value&&(!l.value||0!==i.activationTrigger.value&&(0,r.nextTick)((()=>{var e,t;return null==(t=null==(e=zr(a))?void 0:e.scrollIntoView)?void 0:t.call(e,{block:"nearest"})})))}));let p=mo();function h(e){p.update(e)}function v(t){!p.wasMoved(t)||e.disabled||l.value||i.goToOption($r.Specific,e.id,0)}function m(t){!p.wasMoved(t)||e.disabled||!l.value||i.goToOption($r.Nothing)}return()=>{let{disabled:r}=e,o={active:l.value,selected:s.value,disabled:r},{id:i,value:c,disabled:u,...p}=e;return Ar({ourProps:{id:i,ref:a,role:"option",tabIndex:!0===r?void 0:-1,"aria-disabled":!0===r||void 0,"aria-selected":s.value,disabled:void 0,onClick:f,onFocus:d,onPointerenter:h,onMouseenter:h,onPointermove:v,onMousemove:v,onPointerleave:m,onMouseleave:m},theirProps:p,slot:o,attrs:n,slots:t,name:"ListboxOption"})}}});var vl=n(889),ml={class:"relative mt-1"},gl={class:"block truncate"},yl={class:"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2"};const bl={__name:"HostSelector",setup:function(e){var t=Nr(),n=Bo();return(0,r.watch)((function(){return n.selectedHost}),(function(e){Hi(t,"host",null!=e&&e.is_remote?e.identifier:null)})),function(e,t){return(0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(ul),{as:"div",modelValue:(0,r.unref)(n).selectedHostIdentifier,"onUpdate:modelValue":t[0]||(t[0]=function(e){return(0,r.unref)(n).selectedHostIdentifier=e})},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(fl),{class:"ml-1 block text-sm text-gray-500 dark:text-gray-400"},{default:(0,r.withCtx)((function(){return[(0,r.createTextVNode)("Select host")]})),_:1}),(0,r.createElementVNode)("div",ml,[(0,r.createVNode)((0,r.unref)(dl),{id:"hosts-toggle-button",class:"cursor-pointer relative text-gray-800 dark:text-gray-200 w-full cursor-default rounded-md border border-gray-300 dark:border-gray-700 bg-white dark:bg-gray-800 py-2 pl-4 pr-10 text-left hover:border-brand-600 hover:dark:border-brand-800 focus:border-brand-500 focus:outline-none focus:ring-1 focus:ring-brand-500 text-sm"},{default:(0,r.withCtx)((function(){var e;return[(0,r.createElementVNode)("span",gl,(0,r.toDisplayString)((null===(e=(0,r.unref)(n).selectedHost)||void 0===e?void 0:e.name)||"Please select a server"),1),(0,r.createElementVNode)("span",yl,[(0,r.createVNode)((0,r.unref)(vl),{class:"h-5 w-5 text-gray-400","aria-hidden":"true"})])]})),_:1}),(0,r.createVNode)(r.Transition,{"leave-active-class":"transition ease-in duration-100","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(pl),{class:"absolute z-20 mt-1 max-h-60 w-full overflow-auto rounded-md shadow-md bg-white dark:bg-gray-800 py-1 border border-gray-200 dark:border-gray-700 ring-1 ring-brand ring-opacity-5 focus:outline-none text-sm"},{default:(0,r.withCtx)((function(){return[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)((0,r.unref)(n).hosts,(function(e){return(0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(hl),{as:"template",key:e.identifier,value:e.identifier},{default:(0,r.withCtx)((function(t){var n=t.active,o=t.selected;return[(0,r.createElementVNode)("li",{class:(0,r.normalizeClass)([n?"text-white bg-brand-600":"text-gray-900 dark:text-gray-300","relative cursor-default select-none py-2 pl-3 pr-9"])},[(0,r.createElementVNode)("span",{class:(0,r.normalizeClass)([o?"font-semibold":"font-normal","block truncate"])},(0,r.toDisplayString)(e.name),3),o?((0,r.openBlock)(),(0,r.createElementBlock)("span",{key:0,class:(0,r.normalizeClass)([n?"text-white":"text-brand-600","absolute inset-y-0 right-0 flex items-center pr-4"])},[(0,r.createVNode)((0,r.unref)(La),{class:"h-5 w-5","aria-hidden":"true"})],2)):(0,r.createCommentVNode)("",!0)],2)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1})])]})),_:1},8,["modelValue"])}}},wl=bl;function Cl(e){return Cl="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Cl(e)}function _l(){_l=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",l=o.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function c(e,t,n,o){var i=t&&t.prototype instanceof d?t:d,a=Object.create(i.prototype),l=new k(o||[]);return r(a,"_invoke",{value:C(e,n,l)}),a}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var f={};function d(){}function p(){}function h(){}var v={};s(v,i,(function(){return this}));var m=Object.getPrototypeOf,g=m&&m(m(S([])));g&&g!==t&&n.call(g,i)&&(v=g);var y=h.prototype=d.prototype=Object.create(v);function b(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function w(e,t){function o(r,i,a,l){var s=u(e[r],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f&&"object"==Cl(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){o("next",e,a,l)}),(function(e){o("throw",e,a,l)})):t.resolve(f).then((function(e){c.value=e,a(c)}),(function(e){return o("throw",e,a,l)}))}l(s.arg)}var i;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){o(e,n,t,r)}))}return i=i?i.then(r,r):r()}})}function C(e,t,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return O()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var l=_(a,n);if(l){if(l===f)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=u(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===f)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function _(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,_(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),f;var o=u(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,f;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function E(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function x(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function k(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(E,this),this.reset(!0)}function S(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var l=n.call(i,"catchLoc"),s=n.call(i,"finallyLoc");if(l&&s){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),x(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;x(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:S(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function El(e,t,n,r,o,i,a){try{var l=e[i](a),s=l.value}catch(e){return void n(e)}l.done?t(s):Promise.resolve(s).then(r,o)}function xl(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function a(e){El(i,r,o,a,l,"next",e)}function l(e){El(i,r,o,a,l,"throw",e)}a(void 0)}))}}var kl={class:"flex flex-col h-full py-5"},Sl={class:"mx-3 md:mx-0 mb-1"},Ol={class:"sm:flex sm:flex-col-reverse"},Nl={class:"font-semibold text-brand-700 dark:text-brand-600 text-2xl flex items-center"},Pl=(0,r.createElementVNode)("a",{href:"https://www.github.com/opcodesio/log-viewer",target:"_blank",class:"rounded ml-3 text-gray-400 hover:text-brand-800 dark:hover:text-brand-600 focus:outline-none focus:ring-2 focus:ring-brand-500 dark:focus:ring-brand-700 p-1"},[(0,r.createElementVNode)("svg",{xmlns:"http://www.w3.org/2000/svg",class:"h-5 w-5",viewBox:"0 0 24 24",fill:"currentColor",title:""},[(0,r.createElementVNode)("path",{d:"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"})])],-1),Tl={class:"md:hidden flex-1 flex justify-end"},Vl={type:"button",class:"menu-button"},Rl={key:0},Ll=["href"],Al={key:0,class:"bg-yellow-100 dark:bg-yellow-900 bg-opacity-75 dark:bg-opacity-40 border border-yellow-300 dark:border-yellow-800 rounded-md px-2 py-1 mt-2 text-xs leading-5 text-yellow-700 dark:text-yellow-400"},jl=(0,r.createElementVNode)("code",{class:"font-mono px-2 py-1 bg-gray-100 dark:bg-gray-900 rounded"},"php artisan log-viewer:publish",-1),Bl={key:2,class:"flex justify-between items-baseline mt-6"},Il={class:"ml-1 block text-sm text-gray-500 dark:text-gray-400 truncate"},Ml={class:"text-sm text-gray-500 dark:text-gray-400"},Fl=(0,r.createElementVNode)("label",{for:"file-sort-direction",class:"sr-only"},"Sort direction",-1),Dl=[(0,r.createElementVNode)("option",{value:"desc"},"Newest first",-1),(0,r.createElementVNode)("option",{value:"asc"},"Oldest first",-1)],Ul={key:3,class:"mx-1 mt-1 text-red-600 text-xs"},$l=(0,r.createElementVNode)("p",{class:"text-sm text-gray-600 dark:text-gray-400"},"Please select files to delete and confirm or cancel deletion.",-1),Hl=["onClick"],zl={id:"file-list-container",class:"relative h-full overflow-hidden"},ql=["id"],Wl=["onClick"],Kl={class:"file-item group"},Gl={key:0,class:"sr-only"},Zl={key:1,class:"sr-only"},Yl={class:"file-icon group-hover:hidden group-focus:hidden"},Jl={class:"file-icon hidden group-hover:inline-block group-focus:inline-block"},Ql={class:"file-name"},Xl={key:0},es=(0,r.createElementVNode)("span",{class:"text-gray-500 dark:text-gray-400"},"root",-1),ts={key:1},ns=(0,r.createElementVNode)("span",{class:"sr-only"},"Open folder options",-1),rs={class:"py-2"},os={class:"text-brand-500"},is=["href"],as=(0,r.createElementVNode)("div",{class:"divider"},null,-1),ls=["onClick","disabled"],ss={class:"folder-files pl-3 ml-1 border-l border-gray-200 dark:border-gray-800"},cs={key:0,class:"text-center text-sm text-gray-600 dark:text-gray-400"},us=(0,r.createElementVNode)("p",{class:"mb-5"},"No log files were found.",-1),fs={class:"flex items-center justify-center px-1"},ds=(0,r.createElementVNode)("div",{class:"pointer-events-none absolute z-10 bottom-0 h-4 w-full bg-gradient-to-t from-gray-100 dark:from-gray-900 to-transparent"},null,-1),ps={class:"absolute inset-y-0 left-3 right-7 lg:left-0 lg:right-0 z-10"},hs={class:"rounded-md bg-white text-gray-800 dark:bg-gray-700 dark:text-gray-200 opacity-90 w-full h-full flex items-center justify-center"};const vs={__name:"FileList",setup:function(e){var t=Nr(),n=Pr(),o=Bo(),i=Fi(),a=zi(),l=a.dropdownDirections,s=a.calculateDropdownDirection,c=function(){var e=xl(_l().mark((function e(n){return _l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!confirm("Are you sure you want to delete the log folder '".concat(n.path,"'? THIS ACTION CANNOT BE UNDONE."))){e.next=4;break}return e.next=3,i.deleteFolder(n);case 3:n.files.some((function(e){return e.identifier===i.selectedFileIdentifier}))&&Hi(t,"file",null);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),u=function(){var e=xl(_l().mark((function e(){return _l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!confirm("Are you sure you want to delete selected log files? THIS ACTION CANNOT BE UNDONE.")){e.next=7;break}return e.next=3,i.deleteSelectedFiles();case 3:return i.filesChecked.includes(i.selectedFileIdentifier)&&Hi(t,"file",null),i.resetChecks(),e.next=7,i.loadFolders();case 7:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return(0,r.onMounted)(xl(_l().mark((function e(){return _l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:o.selectHost(n.query.host||null);case 1:case"end":return e.stop()}}),e)})))),(0,r.watch)((function(){return i.direction}),(function(){return i.loadFolders()})),function(e,a){var f,d;return(0,r.openBlock)(),(0,r.createElementBlock)("nav",kl,[(0,r.createElementVNode)("div",Sl,[(0,r.createElementVNode)("div",Ol,[(0,r.createElementVNode)("h1",Nl,[(0,r.createTextVNode)(" Log Viewer "),Pl,(0,r.createElementVNode)("span",Tl,[(0,r.createVNode)(Qa,{class:"ml-2"}),(0,r.createElementVNode)("button",Vl,[(0,r.createVNode)((0,r.unref)(ko),{class:"w-5 h-5 ml-2",onClick:(0,r.unref)(i).toggleSidebar},null,8,["onClick"])])])]),e.LogViewer.back_to_system_url?((0,r.openBlock)(),(0,r.createElementBlock)("div",Rl,[(0,r.createElementVNode)("a",{href:e.LogViewer.back_to_system_url,class:"rounded shrink inline-flex items-center text-sm text-gray-500 dark:text-gray-400 hover:text-brand-800 dark:hover:text-brand-600 focus:outline-none focus:ring-2 focus:ring-brand-500 dark:focus:ring-brand-700 mt-0"},[(0,r.createVNode)((0,r.unref)(So),{class:"h-3 w-3 mr-1.5"}),(0,r.createTextVNode)(" "+(0,r.toDisplayString)(e.LogViewer.back_to_system_label||"Back to ".concat(e.LogViewer.app_name)),1)],8,Ll)])):(0,r.createCommentVNode)("",!0)]),e.LogViewer.assets_outdated?((0,r.openBlock)(),(0,r.createElementBlock)("div",Al,[(0,r.createVNode)((0,r.unref)(Oo),{class:"h-4 w-4 mr-1 inline"}),(0,r.createTextVNode)(" Front-end assets are outdated. To update, please run "),jl])):(0,r.createCommentVNode)("",!0),(0,r.unref)(o).supportsHosts&&(0,r.unref)(o).hasRemoteHosts?((0,r.openBlock)(),(0,r.createBlock)(wl,{key:1,class:"mb-8 mt-6"})):(0,r.createCommentVNode)("",!0),(null===(f=(0,r.unref)(i).folders)||void 0===f?void 0:f.length)>0?((0,r.openBlock)(),(0,r.createElementBlock)("div",Bl,[(0,r.createElementVNode)("div",Il,"Log files on "+(0,r.toDisplayString)(null===(d=(0,r.unref)(i).selectedHost)||void 0===d?void 0:d.name),1),(0,r.createElementVNode)("div",Ml,[Fl,(0,r.withDirectives)((0,r.createElementVNode)("select",{id:"file-sort-direction",class:"select","onUpdate:modelValue":a[0]||(a[0]=function(e){return(0,r.unref)(i).direction=e})},Dl,512),[[r.vModelSelect,(0,r.unref)(i).direction]])])])):(0,r.createCommentVNode)("",!0),(0,r.unref)(i).error?((0,r.openBlock)(),(0,r.createElementBlock)("p",Ul,(0,r.toDisplayString)((0,r.unref)(i).error),1)):(0,r.createCommentVNode)("",!0)]),(0,r.withDirectives)((0,r.createElementVNode)("div",null,[$l,(0,r.createElementVNode)("div",{class:(0,r.normalizeClass)(["grid grid-flow-col pr-4 mt-2",[(0,r.unref)(i).hasFilesChecked?"justify-between":"justify-end"]])},[(0,r.withDirectives)((0,r.createElementVNode)("button",{onClick:(0,r.withModifiers)(u,["stop"]),class:"button inline-flex"},[(0,r.createVNode)((0,r.unref)(No),{class:"w-5 mr-1"}),(0,r.createTextVNode)(" Delete selected files ")],8,Hl),[[r.vShow,(0,r.unref)(i).hasFilesChecked]]),(0,r.createElementVNode)("button",{class:"button inline-flex",onClick:a[1]||(a[1]=(0,r.withModifiers)((function(e){return(0,r.unref)(i).resetChecks()}),["stop"]))},[(0,r.createTextVNode)(" Cancel "),(0,r.createVNode)((0,r.unref)(ko),{class:"w-5 ml-1"})])],2)],512),[[r.vShow,(0,r.unref)(i).checkBoxesVisibility]]),(0,r.createElementVNode)("div",zl,[(0,r.createElementVNode)("div",{class:"file-list",onScroll:a[6]||(a[6]=function(e){return(0,r.unref)(i).onScroll(e)})},[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)((0,r.unref)(i).folders,(function(e){return(0,r.openBlock)(),(0,r.createElementBlock)("div",{key:e.identifier,id:"folder-".concat(e.identifier),class:"relative folder-container"},[(0,r.createVNode)((0,r.unref)(Co),null,{default:(0,r.withCtx)((function(t){var n=t.open;return[(0,r.createElementVNode)("div",{class:(0,r.normalizeClass)(["folder-item-container",[(0,r.unref)(i).isOpen(e)?"active-folder":"",(0,r.unref)(i).shouldBeSticky(e)?"sticky "+(n?"z-20":"z-10"):""]]),onClick:function(t){return(0,r.unref)(i).toggle(e)}},[(0,r.createElementVNode)("div",Kl,[(0,r.createElementVNode)("button",{class:"file-item-info group",onKeydown:a[2]||(a[2]=function(){return(0,r.unref)(aa)&&(0,r.unref)(aa).apply(void 0,arguments)})},[(0,r.unref)(i).isOpen(e)?(0,r.createCommentVNode)("",!0):((0,r.openBlock)(),(0,r.createElementBlock)("span",Gl,"Open folder")),(0,r.unref)(i).isOpen(e)?((0,r.openBlock)(),(0,r.createElementBlock)("span",Zl,"Close folder")):(0,r.createCommentVNode)("",!0),(0,r.createElementVNode)("span",Yl,[(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(Po),{class:"w-5 h-5"},null,512),[[r.vShow,!(0,r.unref)(i).isOpen(e)]]),(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(To),{class:"w-5 h-5"},null,512),[[r.vShow,(0,r.unref)(i).isOpen(e)]])]),(0,r.createElementVNode)("span",Jl,[(0,r.createVNode)((0,r.unref)(Vo),{class:(0,r.normalizeClass)([(0,r.unref)(i).isOpen(e)?"rotate-90":"","transition duration-100"])},null,8,["class"])]),(0,r.createElementVNode)("span",Ql,[String(e.clean_path||"").startsWith("root")?((0,r.openBlock)(),(0,r.createElementBlock)("span",Xl,[es,(0,r.createTextVNode)((0,r.toDisplayString)(String(e.clean_path).substring(4)),1)])):((0,r.openBlock)(),(0,r.createElementBlock)("span",ts,(0,r.toDisplayString)(e.clean_path),1))])],32),(0,r.createVNode)((0,r.unref)(_o),{as:"button",class:"file-dropdown-toggle group-hover:border-brand-600 group-hover:dark:border-brand-800","data-toggle-id":e.identifier,onKeydown:(0,r.unref)(la),onClick:a[3]||(a[3]=(0,r.withModifiers)((function(e){return(0,r.unref)(s)(e.target)}),["stop"]))},{default:(0,r.withCtx)((function(){return[ns,(0,r.createVNode)((0,r.unref)(Ro),{class:"w-4 h-4 pointer-events-none"})]})),_:2},1032,["data-toggle-id","onKeydown"])]),(0,r.createVNode)(r.Transition,{"leave-active-class":"transition ease-in duration-100","leave-from-class":"opacity-100 scale-100","leave-to-class":"opacity-0 scale-90","enter-active-class":"transition ease-out duration-100","enter-from-class":"opacity-0 scale-90","enter-to-class":"opacity-100 scale-100"},{default:(0,r.withCtx)((function(){return[(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(Eo),{static:"",as:"div",class:(0,r.normalizeClass)(["dropdown w-48",[(0,r.unref)(l)[e.identifier]]])},{default:(0,r.withCtx)((function(){return[(0,r.createElementVNode)("div",rs,[(0,r.createVNode)((0,r.unref)(xo),{onClick:(0,r.withModifiers)((function(t){return(0,r.unref)(i).clearCacheForFolder(e)}),["stop","prevent"])},{default:(0,r.withCtx)((function(t){var n=t.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([n?"active":""])},[(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(Lo),{class:"w-4 h-4 mr-2"},null,512),[[r.vShow,!(0,r.unref)(i).clearingCache[e.identifier]]]),(0,r.withDirectives)((0,r.createVNode)(Zi,{class:"w-4 h-4 mr-2"},null,512),[[r.vShow,(0,r.unref)(i).clearingCache[e.identifier]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",null,"Clear indices",512),[[r.vShow,!(0,r.unref)(i).cacheRecentlyCleared[e.identifier]&&!(0,r.unref)(i).clearingCache[e.identifier]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",null,"Clearing...",512),[[r.vShow,!(0,r.unref)(i).cacheRecentlyCleared[e.identifier]&&(0,r.unref)(i).clearingCache[e.identifier]]]),(0,r.withDirectives)((0,r.createElementVNode)("span",os,"Indices cleared",512),[[r.vShow,(0,r.unref)(i).cacheRecentlyCleared[e.identifier]]])],2)]})),_:2},1032,["onClick"]),e.can_download?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(xo),{key:0},{default:(0,r.withCtx)((function(t){var n=t.active;return[(0,r.createElementVNode)("a",{href:e.download_url,download:"",onClick:a[4]||(a[4]=(0,r.withModifiers)((function(){}),["stop"])),class:(0,r.normalizeClass)([n?"active":""])},[(0,r.createVNode)((0,r.unref)(Ao),{class:"w-4 h-4 mr-2"}),(0,r.createTextVNode)(" Download ")],10,is)]})),_:2},1024)):(0,r.createCommentVNode)("",!0),e.can_delete?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:1},[as,(0,r.createVNode)((0,r.unref)(xo),null,{default:(0,r.withCtx)((function(t){var n=t.active;return[(0,r.createElementVNode)("button",{onClick:(0,r.withModifiers)((function(t){return c(e)}),["stop"]),disabled:(0,r.unref)(i).deleting[e.identifier],class:(0,r.normalizeClass)([n?"active":""])},[(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(No),{class:"w-4 h-4 mr-2"},null,512),[[r.vShow,!(0,r.unref)(i).deleting[e.identifier]]]),(0,r.withDirectives)((0,r.createVNode)(Zi,null,null,512),[[r.vShow,(0,r.unref)(i).deleting[e.identifier]]]),(0,r.createTextVNode)(" Delete ")],10,ls)]})),_:2},1024)],64)):(0,r.createCommentVNode)("",!0)])]})),_:2},1032,["class"]),[[r.vShow,n]])]})),_:2},1024)],10,Wl)]})),_:2},1024),(0,r.withDirectives)((0,r.createElementVNode)("div",ss,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(e.files||[],(function(e){return(0,r.openBlock)(),(0,r.createBlock)(ka,{key:e.identifier,"log-file":e,onClick:function(r){return o=e.identifier,void(n.query.file&&n.query.file===o?Hi(t,"file",null):Hi(t,"file",o));var o}},null,8,["log-file","onClick"])})),128))],512),[[r.vShow,(0,r.unref)(i).isOpen(e)]])],8,ql)})),128)),0===(0,r.unref)(i).folders.length?((0,r.openBlock)(),(0,r.createElementBlock)("div",cs,[us,(0,r.createElementVNode)("div",fs,[(0,r.createElementVNode)("button",{onClick:a[5]||(a[5]=(0,r.withModifiers)((function(e){return(0,r.unref)(i).loadFolders()}),["prevent"])),class:"inline-flex items-center px-4 py-2 text-left text-sm bg-white hover:bg-gray-50 outline-brand-500 dark:outline-brand-800 text-gray-900 dark:text-gray-200 rounded-md dark:bg-gray-700 dark:hover:bg-gray-600"},[(0,r.createVNode)((0,r.unref)(jo),{class:"w-4 h-4 mr-1.5"}),(0,r.createTextVNode)(" Refresh file list ")])])])):(0,r.createCommentVNode)("",!0)],32),ds,(0,r.withDirectives)((0,r.createElementVNode)("div",ps,[(0,r.createElementVNode)("div",hs,[(0,r.createVNode)(Zi,{class:"w-14 h-14"})])],512),[[r.vShow,(0,r.unref)(i).loading]])])])}}},ms=vs;var gs=n(598),ys=n(462),bs=n(640),ws=n(307),Cs=n(36),_s=n(452),Es=n(683),xs={class:"pagination"},ks={class:"previous"},Ss=["disabled"],Os=(0,r.createElementVNode)("span",{class:"sm:hidden"},"Previous page",-1),Ns={class:"sm:hidden border-transparent text-gray-500 dark:text-gray-400 border-t-2 pt-3 px-4 inline-flex items-center text-sm font-medium"},Ps={class:"pages"},Ts={key:0,class:"border-brand-500 text-brand-600 dark:border-brand-600 dark:text-brand-500","aria-current":"page"},Vs={key:1},Rs=["onClick"],Ls={class:"next"},As=["disabled"],js=(0,r.createElementVNode)("span",{class:"sm:hidden"},"Next page",-1);const Bs={__name:"Pagination",props:{loading:{type:Boolean,required:!0},short:{type:Boolean,default:!1}},setup:function(e){var t=Li(),n=Nr(),o=Pr(),i=((0,r.computed)((function(){return Number(o.query.page)||1})),function(e){e<1&&(e=1),t.pagination&&e>t.pagination.last_page&&(e=t.pagination.last_page),Hi(n,"page",e>1?Number(e):null)}),a=function(){return i(t.page+1)},l=function(){return i(t.page-1)};return function(n,o){return(0,r.openBlock)(),(0,r.createElementBlock)("nav",xs,[(0,r.createElementVNode)("div",ks,[1!==(0,r.unref)(t).page?((0,r.openBlock)(),(0,r.createElementBlock)("button",{key:0,onClick:l,disabled:e.loading,rel:"prev"},[(0,r.createVNode)((0,r.unref)(So),{class:"h-5 w-5"}),Os],8,Ss)):(0,r.createCommentVNode)("",!0)]),(0,r.createElementVNode)("div",Ns,[(0,r.createElementVNode)("span",null,(0,r.toDisplayString)((0,r.unref)(t).page),1)]),(0,r.createElementVNode)("div",Ps,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(e.short?(0,r.unref)(t).linksShort:(0,r.unref)(t).links,(function(e){return(0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,null,[e.active?((0,r.openBlock)(),(0,r.createElementBlock)("button",Ts,(0,r.toDisplayString)(Number(e.label).toLocaleString()),1)):"..."===e.label?((0,r.openBlock)(),(0,r.createElementBlock)("span",Vs,(0,r.toDisplayString)(e.label),1)):((0,r.openBlock)(),(0,r.createElementBlock)("button",{key:2,onClick:function(t){return i(Number(e.label))},class:"border-transparent text-gray-500 dark:text-gray-400 hover:text-gray-700 hover:border-gray-300 dark:hover:text-gray-300 dark:hover:border-gray-400"},(0,r.toDisplayString)(Number(e.label).toLocaleString()),9,Rs))],64)})),256))]),(0,r.createElementVNode)("div",Ls,[(0,r.unref)(t).hasMorePages?((0,r.openBlock)(),(0,r.createElementBlock)("button",{key:0,onClick:a,disabled:e.loading,rel:"next"},[js,(0,r.createVNode)((0,r.unref)(Es),{class:"h-5 w-5"})],8,As)):(0,r.createCommentVNode)("",!0)])])}}},Is=Bs;var Ms=n(246),Fs={class:"flex items-center"},Ds={class:"opacity-90 mr-1"},Us={class:"font-semibold"},$s={class:"opacity-90 mr-1"},Hs={class:"font-semibold"},zs={key:2,class:"opacity-90"},qs={key:3,class:"opacity-90"},Ws={class:"py-2"},Ks={class:"label flex justify-between"},Gs={key:0,class:"no-results"},Zs={class:"flex-1 inline-flex justify-between"},Ys={class:"log-count"};const Js={__name:"LevelButtons",setup:function(e){var t=Mi(),n=ji();return(0,r.watch)((function(){return n.selectedLevels}),(function(){return t.loadLogs()})),function(e,o){return(0,r.openBlock)(),(0,r.createElementBlock)("div",Fs,[(0,r.createVNode)((0,r.unref)(Co),{as:"div",class:"mr-5 relative log-levels-selector"},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(_o),{as:"button",id:"severity-dropdown-toggle",class:(0,r.normalizeClass)(["dropdown-toggle badge none",(0,r.unref)(n).levelsSelected.length>0?"active":""])},{default:(0,r.withCtx)((function(){return[(0,r.unref)(n).levelsSelected.length>2?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:0},[(0,r.createElementVNode)("span",Ds,(0,r.toDisplayString)((0,r.unref)(n).totalResultsSelected.toLocaleString()+((0,r.unref)(t).hasMoreResults?"+":""))+" entries in",1),(0,r.createElementVNode)("strong",Us,(0,r.toDisplayString)((0,r.unref)(n).levelsSelected[0].level_name)+" + "+(0,r.toDisplayString)((0,r.unref)(n).levelsSelected.length-1)+" more",1)],64)):(0,r.unref)(n).levelsSelected.length>0?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:1},[(0,r.createElementVNode)("span",$s,(0,r.toDisplayString)((0,r.unref)(n).totalResultsSelected.toLocaleString()+((0,r.unref)(t).hasMoreResults?"+":""))+" entries in",1),(0,r.createElementVNode)("strong",Hs,(0,r.toDisplayString)((0,r.unref)(n).levelsSelected.map((function(e){return e.level_name})).join(", ")),1)],64)):(0,r.unref)(n).levelsFound.length>0?((0,r.openBlock)(),(0,r.createElementBlock)("span",zs,(0,r.toDisplayString)((0,r.unref)(n).totalResults.toLocaleString()+((0,r.unref)(t).hasMoreResults?"+":""))+" entries found. None selected",1)):((0,r.openBlock)(),(0,r.createElementBlock)("span",qs,"No entries found")),(0,r.createVNode)((0,r.unref)(Ms),{class:"w-4 h-4"})]})),_:1},8,["class"]),(0,r.createVNode)(r.Transition,{"leave-active-class":"transition ease-in duration-100","leave-from-class":"opacity-100 scale-100","leave-to-class":"opacity-0 scale-90","enter-active-class":"transition ease-out duration-100","enter-from-class":"opacity-0 scale-90","enter-to-class":"opacity-100 scale-100"},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(Eo),{as:"div",class:"dropdown down left min-w-[240px]"},{default:(0,r.withCtx)((function(){return[(0,r.createElementVNode)("div",Ws,[(0,r.createElementVNode)("div",Ks,[(0,r.createTextVNode)(" Severity "),(0,r.unref)(n).levelsFound.length>0?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:0},[(0,r.unref)(n).levelsSelected.length===(0,r.unref)(n).levelsFound.length?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(xo),{key:0,onClick:(0,r.withModifiers)((0,r.unref)(n).deselectAllLevels,["stop"])},{default:(0,r.withCtx)((function(e){var t=e.active;return[(0,r.createElementVNode)("a",{class:(0,r.normalizeClass)(["inline-link px-2 -mr-2 py-1 -my-1 rounded-md cursor-pointer text-brand-700 dark:text-brand-500 font-normal",[t?"active":""]])}," Deselect all ",2)]})),_:1},8,["onClick"])):((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(xo),{key:1,onClick:(0,r.withModifiers)((0,r.unref)(n).selectAllLevels,["stop"])},{default:(0,r.withCtx)((function(e){var t=e.active;return[(0,r.createElementVNode)("a",{class:(0,r.normalizeClass)(["inline-link px-2 -mr-2 py-1 -my-1 rounded-md cursor-pointer text-brand-700 dark:text-brand-500 font-normal",[t?"active":""]])}," Select all ",2)]})),_:1},8,["onClick"]))],64)):(0,r.createCommentVNode)("",!0)]),0===(0,r.unref)(n).levelsFound.length?((0,r.openBlock)(),(0,r.createElementBlock)("div",Gs,"There are no severity filters to display because no entries have been found.")):((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,{key:1},(0,r.renderList)((0,r.unref)(n).levelsFound,(function(e){return(0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(xo),{onClick:(0,r.withModifiers)((function(t){return(0,r.unref)(n).toggleLevel(e.level)}),["stop","prevent"])},{default:(0,r.withCtx)((function(t){var n=t.active;return[(0,r.createElementVNode)("button",{class:(0,r.normalizeClass)([n?"active":""])},[(0,r.createVNode)(ja,{class:"checkmark mr-2.5",checked:e.selected},null,8,["checked"]),(0,r.createElementVNode)("span",Zs,[(0,r.createElementVNode)("span",{class:(0,r.normalizeClass)(["log-level",e.level_class])},(0,r.toDisplayString)(e.level_name),3),(0,r.createElementVNode)("span",Ys,(0,r.toDisplayString)(Number(e.count).toLocaleString()),1)])],2)]})),_:2},1032,["onClick"])})),256))])]})),_:1})]})),_:1})]})),_:1})])}}};var Qs=n(447),Xs={class:"flex-1"},ec={class:"prefix-icon"},tc=(0,r.createElementVNode)("label",{for:"query",class:"sr-only"},"Search",-1),nc={class:"relative flex-1 m-1"},rc=["onKeydown"],oc={class:"clear-search"},ic={class:"submit-search"},ac={key:0,disabled:"disabled"},lc={class:"hidden xl:inline ml-1"},sc={class:"hidden xl:inline ml-1"},cc={class:"relative h-0 w-full overflow-visible"},uc=["innerHTML"];const fc={__name:"SearchInput",setup:function(e){var t=Ri(),n=Mi(),o=Nr(),i=Pr(),a=(0,r.computed)((function(){return n.selectedFile})),l=(0,r.ref)(i.query.query||""),s=function(){var e;Hi(o,"query",""===l.value?null:l.value),null===(e=document.getElementById("query-submit"))||void 0===e||e.focus()},c=function(){l.value="",s()};return(0,r.watch)((function(){return i.query.query}),(function(e){return l.value=e||""})),function(e,o){return(0,r.openBlock)(),(0,r.createElementBlock)("div",Xs,[(0,r.createElementVNode)("div",{class:(0,r.normalizeClass)(["search",{"has-error":(0,r.unref)(n).error}])},[(0,r.createElementVNode)("div",ec,[tc,(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(Qs),{class:"h-4 w-4"},null,512),[[r.vShow,!(0,r.unref)(n).hasMoreResults]]),(0,r.withDirectives)((0,r.createVNode)(Zi,{class:"w-4 h-4"},null,512),[[r.vShow,(0,r.unref)(n).hasMoreResults]])]),(0,r.createElementVNode)("div",nc,[(0,r.withDirectives)((0,r.createElementVNode)("input",{"onUpdate:modelValue":o[0]||(o[0]=function(e){return l.value=e}),name:"query",id:"query",type:"text",onKeydown:[(0,r.withKeys)(s,["enter"]),o[1]||(o[1]=(0,r.withKeys)((function(e){return e.target.blur()}),["esc"]))]},null,40,rc),[[r.vModelText,l.value]]),(0,r.withDirectives)((0,r.createElementVNode)("div",oc,[(0,r.createElementVNode)("button",{onClick:c},[(0,r.createVNode)((0,r.unref)(ko),{class:"h-4 w-4"})])],512),[[r.vShow,(0,r.unref)(t).hasQuery]])]),(0,r.createElementVNode)("div",ic,[(0,r.unref)(n).hasMoreResults?((0,r.openBlock)(),(0,r.createElementBlock)("button",ac,[(0,r.createElementVNode)("span",null,[(0,r.createTextVNode)("Searching"),(0,r.createElementVNode)("span",lc,(0,r.toDisplayString)((0,r.unref)(a)?(0,r.unref)(a).name:"all files"),1),(0,r.createTextVNode)("...")])])):((0,r.openBlock)(),(0,r.createElementBlock)("button",{key:1,onClick:s,id:"query-submit"},[(0,r.createElementVNode)("span",null,[(0,r.createTextVNode)("Search"),(0,r.createElementVNode)("span",sc,(0,r.toDisplayString)((0,r.unref)(a)?'in "'+(0,r.unref)(a).name+'"':"all files"),1)]),(0,r.createVNode)((0,r.unref)(Es),{class:"h-4 w-4"})]))])],2),(0,r.createElementVNode)("div",cc,[(0,r.withDirectives)((0,r.createElementVNode)("div",{class:"search-progress-bar",style:(0,r.normalizeStyle)({width:(0,r.unref)(n).percentScanned+"%"})},null,4),[[r.vShow,(0,r.unref)(n).hasMoreResults]])]),(0,r.withDirectives)((0,r.createElementVNode)("p",{class:"mt-1 text-red-600 text-xs",innerHTML:(0,r.unref)(n).error},null,8,uc),[[r.vShow,(0,r.unref)(n).error]])])}}},dc=fc;var pc=n(923),hc=n(968),vc=["onClick"],mc={class:"sr-only"},gc={class:"text-green-600 dark:text-green-500 hidden md:inline"};const yc={__name:"LogCopyButton",props:{log:{type:Object,required:!0}},setup:function(e){var t=e,n=(0,r.ref)(!1),o=function(){$i(t.log.url),n.value=!0,setTimeout((function(){return n.value=!1}),1e3)};return function(t,i){return(0,r.openBlock)(),(0,r.createElementBlock)("button",{class:"log-link group",onClick:(0,r.withModifiers)(o,["stop"]),onKeydown:i[0]||(i[0]=function(){return(0,r.unref)(ia)&&(0,r.unref)(ia).apply(void 0,arguments)}),title:"Copy link to this log entry"},[(0,r.createElementVNode)("span",mc,"Log index "+(0,r.toDisplayString)(e.log.index)+". Click the button to copy link to this log entry.",1),(0,r.withDirectives)((0,r.createElementVNode)("span",{class:"hidden md:inline group-hover:underline"},(0,r.toDisplayString)(Number(e.log.index).toLocaleString()),513),[[r.vShow,!n.value]]),(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(pc),{class:"md:opacity-75 group-hover:opacity-100"},null,512),[[r.vShow,!n.value]]),(0,r.withDirectives)((0,r.createVNode)((0,r.unref)(hc),{class:"text-green-600 dark:text-green-500 md:hidden"},null,512),[[r.vShow,n.value]]),(0,r.withDirectives)((0,r.createElementVNode)("span",gc,"Copied!",512),[[r.vShow,n.value]])],40,vc)}}};var bc={class:"h-full w-full py-5 log-list"},wc={class:"flex flex-col h-full w-full md:mx-3 mb-4"},Cc={class:"md:px-4 mb-4 flex flex-col-reverse lg:flex-row items-start"},_c={key:0,class:"flex items-center mr-5 mt-3 md:mt-0"},Ec={class:"w-full lg:w-auto flex-1 flex justify-end min-h-[38px]"},xc={class:"hidden md:block ml-5"},kc={class:"hidden md:block"},Sc={class:"md:hidden"},Oc={type:"button",class:"menu-button"},Nc={key:0,class:"relative overflow-hidden h-full text-sm"},Pc={class:"mx-2 mt-1 mb-2 text-right lg:mx-0 lg:mt-0 lg:mb-0 lg:absolute lg:top-2 lg:right-6 z-20 text-sm text-gray-500 dark:text-gray-400"},Tc=(0,r.createElementVNode)("label",{for:"log-sort-direction",class:"sr-only"},"Sort direction",-1),Vc=[(0,r.createElementVNode)("option",{value:"desc"},"Newest first",-1),(0,r.createElementVNode)("option",{value:"asc"},"Oldest first",-1)],Rc=(0,r.createElementVNode)("label",{for:"items-per-page",class:"sr-only"},"Items per page",-1),Lc=[(0,r.createStaticVNode)('',6)],Ac={class:"inline-block min-w-full max-w-full align-middle"},jc={class:"table-fixed min-w-full max-w-full border-separate",style:{"border-spacing":"0"}},Bc=(0,r.createElementVNode)("thead",{class:"bg-gray-50"},[(0,r.createElementVNode)("tr",null,[(0,r.createElementVNode)("th",{scope:"col",class:"w-[120px] hidden lg:table-cell"},[(0,r.createElementVNode)("div",{class:"pl-2"},"Level")]),(0,r.createElementVNode)("th",{scope:"col",class:"w-[180px] hidden lg:table-cell"},"Time"),(0,r.createElementVNode)("th",{scope:"col",class:"w-[110px] hidden lg:table-cell"},"Env"),(0,r.createElementVNode)("th",{scope:"col",class:"hidden lg:table-cell"},"Description"),(0,r.createElementVNode)("th",{scope:"col",class:"hidden lg:table-cell"},[(0,r.createElementVNode)("span",{class:"sr-only"},"Log index")])])],-1),Ic=["id","data-index"],Mc=["onClick"],Fc={class:"log-level truncate"},Dc={class:"flex items-center lg:pl-2"},Uc=["aria-expanded"],$c={key:0,class:"sr-only"},Hc={key:1,class:"sr-only"},zc={class:"w-full h-full group-hover:hidden group-focus:hidden"},qc={class:"w-full h-full hidden group-hover:inline-block group-focus:inline-block"},Wc={class:"whitespace-nowrap text-gray-900 dark:text-gray-200"},Kc=["innerHTML"],Gc={class:"lg:hidden"},Zc=["innerHTML"],Yc=["innerHTML"],Jc={class:"whitespace-nowrap text-gray-500 dark:text-gray-300 dark:opacity-90 text-xs hidden lg:table-cell"},Qc={colspan:"6"},Xc={class:"lg:hidden flex justify-between px-2 pt-2 pb-1 text-xs"},eu={class:"flex-1"},tu=(0,r.createElementVNode)("span",{class:"font-semibold"},"Time:",-1),nu={class:"flex-1"},ru=(0,r.createElementVNode)("span",{class:"font-semibold"},"Env:",-1),ou=["innerHTML"],iu=(0,r.createElementVNode)("p",{class:"mx-2 lg:mx-8 pt-2 border-t font-semibold text-gray-700 dark:text-gray-400"},"Context:",-1),au=["innerHTML"],lu={key:1,class:"py-4 px-8 text-gray-500 italic"},su={key:1,class:"log-group"},cu={colspan:"6"},uu={class:"bg-white text-gray-600 dark:bg-gray-800 dark:text-gray-200 p-12"},fu=(0,r.createElementVNode)("div",{class:"text-center font-semibold"},"No results",-1),du={class:"text-center mt-6"},pu=["onClick"],hu={class:"absolute inset-0 top-9 md:px-4 z-20"},vu={class:"rounded-md bg-white text-gray-800 dark:bg-gray-700 dark:text-gray-200 opacity-90 w-full h-full flex items-center justify-center"},mu={key:1,class:"flex h-full items-center justify-center text-gray-600 dark:text-gray-400"},gu={key:0},yu={key:1},bu={key:2,class:"md:px-4"},wu={class:"hidden lg:block"},Cu={class:"lg:hidden"};const _u={__name:"LogList",setup:function(e){var t=Nr(),n=Fi(),o=Mi(),i=Ri(),a=Li(),l=ji(),s=(0,r.computed)((function(){return n.selectedFile||String(i.query||"").trim().length>0})),c=(0,r.computed)((function(){return o.logs&&(o.logs.length>0||!o.hasMoreResults)&&(o.selectedFile||i.hasQuery)})),u=function(e){return JSON.stringify(e,(function(e,t){return"string"==typeof t?t.replaceAll("\n","
"):t}),2)},f=function(){Hi(t,"file",null)},d=function(){Hi(t,"query",null)};return(0,r.watch)([function(){return o.direction},function(){return o.resultsPerPage}],(function(){return o.loadLogs()})),function(e,t){var p,h;return(0,r.openBlock)(),(0,r.createElementBlock)("div",bc,[(0,r.createElementVNode)("div",wc,[(0,r.createElementVNode)("div",Cc,[(0,r.unref)(s)?((0,r.openBlock)(),(0,r.createElementBlock)("div",_c,[(0,r.createVNode)(Js)])):(0,r.createCommentVNode)("",!0),(0,r.createElementVNode)("div",Ec,[(0,r.createVNode)(dc),(0,r.createElementVNode)("div",xc,[(0,r.createElementVNode)("button",{onClick:t[0]||(t[0]=function(e){return(0,r.unref)(o).loadLogs()}),id:"reload-logs-button",title:"Reload current results",class:"menu-button"},[(0,r.createVNode)((0,r.unref)(gs),{class:"w-5 h-5"})])]),(0,r.createElementVNode)("div",kc,[(0,r.createVNode)(Qa,{class:"ml-2",id:"desktop-site-settings"})]),(0,r.createElementVNode)("div",Sc,[(0,r.createElementVNode)("button",Oc,[(0,r.createVNode)((0,r.unref)(ys),{class:"w-5 h-5 ml-2",onClick:(0,r.unref)(n).toggleSidebar},null,8,["onClick"])])])])]),(0,r.unref)(c)?((0,r.openBlock)(),(0,r.createElementBlock)("div",Nc,[(0,r.createElementVNode)("div",Pc,[Tc,(0,r.withDirectives)((0,r.createElementVNode)("select",{id:"log-sort-direction","onUpdate:modelValue":t[1]||(t[1]=function(e){return(0,r.unref)(o).direction=e}),class:"select mr-4"},Vc,512),[[r.vModelSelect,(0,r.unref)(o).direction]]),Rc,(0,r.withDirectives)((0,r.createElementVNode)("select",{id:"items-per-page","onUpdate:modelValue":t[2]||(t[2]=function(e){return(0,r.unref)(o).resultsPerPage=e}),class:"select"},Lc,512),[[r.vModelSelect,(0,r.unref)(o).resultsPerPage]])]),(0,r.createElementVNode)("div",{class:"log-item-container h-full overflow-y-auto md:px-4",onScroll:t[5]||(t[5]=function(e){return(0,r.unref)(o).onScroll(e)})},[(0,r.createElementVNode)("div",Ac,[(0,r.createElementVNode)("table",jc,[Bc,(0,r.unref)(o).logs&&(0,r.unref)(o).logs.length>0?((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,{key:0},(0,r.renderList)((0,r.unref)(o).logs,(function(n,a){return(0,r.openBlock)(),(0,r.createElementBlock)("tbody",{key:a,class:(0,r.normalizeClass)([0===a?"first":"","log-group"]),id:"tbody-".concat(a),"data-index":a},[(0,r.createElementVNode)("tr",{onClick:function(e){return(0,r.unref)(o).toggle(a)},class:(0,r.normalizeClass)(["log-item group",n.level_class,(0,r.unref)(o).isOpen(a)?"active":"",(0,r.unref)(o).shouldBeSticky(a)?"sticky z-2":""]),style:(0,r.normalizeStyle)({top:(0,r.unref)(o).stackTops[a]||0})},[(0,r.createElementVNode)("td",Fc,[(0,r.createElementVNode)("div",Dc,[(0,r.createElementVNode)("button",{"aria-expanded":(0,r.unref)(o).isOpen(a),onKeydown:t[3]||(t[3]=function(){return(0,r.unref)(oa)&&(0,r.unref)(oa).apply(void 0,arguments)}),class:"log-level-icon mr-2 opacity-75 w-5 h-5 hidden lg:block group focus:opacity-100 focus:outline-none focus:ring-2 focus:ring-brand-500 rounded-md"},[(0,r.unref)(o).isOpen(a)?(0,r.createCommentVNode)("",!0):((0,r.openBlock)(),(0,r.createElementBlock)("span",$c,"Expand log entry")),(0,r.unref)(o).isOpen(a)?((0,r.openBlock)(),(0,r.createElementBlock)("span",Hc,"Collapse log entry")):(0,r.createCommentVNode)("",!0),(0,r.createElementVNode)("span",zc,["danger"===n.level_class?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(bs),{key:0})):"warning"===n.level_class?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(ws),{key:1})):((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(Cs),{key:2}))]),(0,r.createElementVNode)("span",qc,[(0,r.createVNode)((0,r.unref)(_s),{class:(0,r.normalizeClass)([(0,r.unref)(o).isOpen(a)?"rotate-90":"","transition duration-100"])},null,8,["class"])])],40,Uc),(0,r.createElementVNode)("span",null,(0,r.toDisplayString)(n.level_name),1)])]),(0,r.createElementVNode)("td",Wc,[(0,r.createElementVNode)("span",{class:"hidden lg:inline",innerHTML:(0,r.unref)(Di)(n.datetime,(0,r.unref)(i).query)},null,8,Kc),(0,r.createElementVNode)("span",Gc,(0,r.toDisplayString)(n.time),1)]),(0,r.createElementVNode)("td",{class:"whitespace-nowrap text-gray-500 dark:text-gray-300 dark:opacity-90 hidden lg:table-cell",innerHTML:(0,r.unref)(Di)(n.environment,(0,r.unref)(i).query)},null,8,Zc),(0,r.createElementVNode)("td",{class:"max-w-[1px] w-full truncate text-gray-500 dark:text-gray-300 dark:opacity-90",innerHTML:(0,r.unref)(Di)(n.text,(0,r.unref)(i).query)},null,8,Yc),(0,r.createElementVNode)("td",Jc,[(0,r.createVNode)(yc,{log:n,class:"pr-2 large-screen"},null,8,["log"])])],14,Mc),(0,r.withDirectives)((0,r.createElementVNode)("tr",null,[(0,r.createElementVNode)("td",Qc,[(0,r.createElementVNode)("div",Xc,[(0,r.createElementVNode)("div",eu,[tu,(0,r.createTextVNode)(" "+(0,r.toDisplayString)(n.datetime),1)]),(0,r.createElementVNode)("div",nu,[ru,(0,r.createTextVNode)(" "+(0,r.toDisplayString)(n.environment),1)]),(0,r.createElementVNode)("div",null,[(0,r.createVNode)(yc,{log:n},null,8,["log"])])]),(0,r.createElementVNode)("pre",{class:"log-stack",innerHTML:(0,r.unref)(Di)(n.full_text,(0,r.unref)(i).query)},null,8,ou),n.contexts&&n.contexts.length>0?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:0},[iu,((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(n.contexts,(function(e){return(0,r.openBlock)(),(0,r.createElementBlock)("pre",{class:"log-stack",innerHTML:u(e)},null,8,au)})),256))],64)):(0,r.createCommentVNode)("",!0),n.full_text_incomplete?((0,r.openBlock)(),(0,r.createElementBlock)("div",lu,[(0,r.createTextVNode)(" The contents of this log have been cut short to the first "+(0,r.toDisplayString)(e.LogViewer.max_log_size_formatted)+". The full size of this log entry is ",1),(0,r.createElementVNode)("strong",null,(0,r.toDisplayString)(n.full_text_length_formatted),1)])):(0,r.createCommentVNode)("",!0)])],512),[[r.vShow,(0,r.unref)(o).isOpen(a)]])],10,Ic)})),128)):((0,r.openBlock)(),(0,r.createElementBlock)("tbody",su,[(0,r.createElementVNode)("tr",null,[(0,r.createElementVNode)("td",cu,[(0,r.createElementVNode)("div",uu,[fu,(0,r.createElementVNode)("div",du,[(null===(p=(0,r.unref)(i).query)||void 0===p?void 0:p.length)>0?((0,r.openBlock)(),(0,r.createElementBlock)("button",{key:0,class:"px-3 py-2 border dark:border-gray-700 text-gray-800 dark:text-gray-200 hover:border-brand-600 dark:hover:border-brand-700 rounded-md",onClick:d},"Clear search query ")):(0,r.createCommentVNode)("",!0),(null===(h=(0,r.unref)(i).query)||void 0===h?void 0:h.length)>0&&(0,r.unref)(n).selectedFile?((0,r.openBlock)(),(0,r.createElementBlock)("button",{key:1,class:"px-3 ml-3 py-2 border dark:border-gray-700 text-gray-800 dark:text-gray-200 hover:border-brand-600 dark:hover:border-brand-700 rounded-md",onClick:(0,r.withModifiers)(f,["prevent"])},"Search all files ",8,pu)):(0,r.createCommentVNode)("",!0),(0,r.unref)(l).levelsFound.length>0&&0===(0,r.unref)(l).levelsSelected.length?((0,r.openBlock)(),(0,r.createElementBlock)("button",{key:2,class:"px-3 ml-3 py-2 border dark:border-gray-700 text-gray-800 dark:text-gray-200 hover:border-brand-600 dark:hover:border-brand-700 rounded-md",onClick:t[4]||(t[4]=function(){var e;return(0,r.unref)(l).selectAllLevels&&(e=(0,r.unref)(l)).selectAllLevels.apply(e,arguments)})},"Select all severities ")):(0,r.createCommentVNode)("",!0)])])])])]))])])],32),(0,r.withDirectives)((0,r.createElementVNode)("div",hu,[(0,r.createElementVNode)("div",vu,[(0,r.createVNode)(Zi,{class:"w-14 h-14"})])],512),[[r.vShow,(0,r.unref)(o).loading&&(!(0,r.unref)(o).isMobile||!(0,r.unref)(n).sidebarOpen)]])])):((0,r.openBlock)(),(0,r.createElementBlock)("div",mu,[(0,r.unref)(o).hasMoreResults?((0,r.openBlock)(),(0,r.createElementBlock)("span",gu,"Searching...")):((0,r.openBlock)(),(0,r.createElementBlock)("span",yu,"Select a file or start searching..."))])),(0,r.unref)(c)&&(0,r.unref)(a).hasPages?((0,r.openBlock)(),(0,r.createElementBlock)("div",bu,[(0,r.createElementVNode)("div",wu,[(0,r.createVNode)(Is,{loading:(0,r.unref)(o).loading},null,8,["loading"])]),(0,r.createElementVNode)("div",Cu,[(0,r.createVNode)(Is,{loading:(0,r.unref)(o).loading,short:!0},null,8,["loading"])])])):(0,r.createCommentVNode)("",!0)])])}}},Eu=_u;var xu={width:"4169",height:"913",viewBox:"0 0 4169 913",fill:"none",xmlns:"http://www.w3.org/2000/svg"},ku=[(0,r.createStaticVNode)('',19)];const Su={},Ou=(0,Ki.Z)(Su,[["render",function(e,t){return(0,r.openBlock)(),(0,r.createElementBlock)("svg",xu,ku)}]]);function Nu(){let e=[],t=[],n={enqueue(e){t.push(e)},addEventListener:(e,t,r,o)=>(e.addEventListener(t,r,o),n.add((()=>e.removeEventListener(t,r,o)))),requestAnimationFrame(...e){let t=requestAnimationFrame(...e);n.add((()=>cancelAnimationFrame(t)))},nextFrame(...e){n.requestAnimationFrame((()=>{n.requestAnimationFrame(...e)}))},setTimeout(...e){let t=setTimeout(...e);n.add((()=>clearTimeout(t)))},add(t){e.push(t)},style(e,t,n){let r=e.style.getPropertyValue(t);return Object.assign(e.style,{[t]:n}),this.add((()=>{Object.assign(e.style,{[t]:r})}))},dispose(){for(let t of e.splice(0))t()},async workQueue(){for(let e of t.splice(0))await e()}};return n}function Pu(e,...t){e&&t.length>0&&e.classList.add(...t)}function Tu(e,...t){e&&t.length>0&&e.classList.remove(...t)}var Vu=(e=>(e.Finished="finished",e.Cancelled="cancelled",e))(Vu||{});function Ru(e,t,n,r,o,i){let a=Nu(),l=void 0!==i?function(e){let t={called:!1};return(...n)=>{if(!t.called)return t.called=!0,e(...n)}}(i):()=>{};return Tu(e,...o),Pu(e,...t,...n),a.nextFrame((()=>{Tu(e,...n),Pu(e,...r),a.add(function(e,t){let n=Nu();if(!e)return n.dispose;let{transitionDuration:r,transitionDelay:o}=getComputedStyle(e),[i,a]=[r,o].map((e=>{let[t=0]=e.split(",").filter(Boolean).map((e=>e.includes("ms")?parseFloat(e):1e3*parseFloat(e))).sort(((e,t)=>t-e));return t}));return 0!==i?n.setTimeout((()=>t("finished")),i+a):t("finished"),n.add((()=>t("cancelled"))),n.dispose}(e,(n=>(Tu(e,...r,...t),Pu(e,...o),l(n)))))})),a.add((()=>Tu(e,...t,...n,...r,...o))),a.add((()=>l("cancelled"))),a.dispose}function Lu(e=""){return e.split(" ").filter((e=>e.trim().length>1))}let Au=Symbol("TransitionContext");var ju=(e=>(e.Visible="visible",e.Hidden="hidden",e))(ju||{});let Bu=Symbol("NestingContext");function Iu(e){return"children"in e?Iu(e.children):e.value.filter((({state:e})=>"visible"===e)).length>0}function Mu(e){let t=(0,r.ref)([]),n=(0,r.ref)(!1);function o(r,o=Lr.Hidden){let i=t.value.findIndex((({id:e})=>e===r));-1!==i&&(Tr(o,{[Lr.Unmount](){t.value.splice(i,1)},[Lr.Hidden](){t.value[i].state="hidden"}}),!Iu(t)&&n.value&&(null==e||e()))}return(0,r.onMounted)((()=>n.value=!0)),(0,r.onUnmounted)((()=>n.value=!1)),{children:t,register:function(e){let n=t.value.find((({id:t})=>t===e));return n?"visible"!==n.state&&(n.state="visible"):t.value.push({id:e,state:"visible"}),()=>o(e,Lr.Unmount)},unregister:o}}let Fu=Rr.RenderStrategy,Du=(0,r.defineComponent)({props:{as:{type:[Object,String],default:"div"},show:{type:[Boolean],default:null},unmount:{type:[Boolean],default:!0},appear:{type:[Boolean],default:!1},enter:{type:[String],default:""},enterFrom:{type:[String],default:""},enterTo:{type:[String],default:""},entered:{type:[String],default:""},leave:{type:[String],default:""},leaveFrom:{type:[String],default:""},leaveTo:{type:[String],default:""}},emits:{beforeEnter:()=>!0,afterEnter:()=>!0,beforeLeave:()=>!0,afterLeave:()=>!0},setup(e,{emit:t,attrs:n,slots:o,expose:i}){if(null===(0,r.inject)(Au,null)&&null!==Zr())return()=>(0,r.h)($u,{...e,onBeforeEnter:()=>t("beforeEnter"),onAfterEnter:()=>t("afterEnter"),onBeforeLeave:()=>t("beforeLeave"),onAfterLeave:()=>t("afterLeave")},o);let a=(0,r.ref)(null),l=(0,r.ref)("visible"),s=(0,r.computed)((()=>e.unmount?Lr.Unmount:Lr.Hidden));i({el:a,$el:a});let{show:c,appear:u}=function(){let e=(0,r.inject)(Au,null);if(null===e)throw new Error("A is used but it is missing a parent .");return e}(),{register:f,unregister:d}=function(){let e=(0,r.inject)(Bu,null);if(null===e)throw new Error("A is used but it is missing a parent .");return e}(),p={value:!0},h=Dr(),v={value:!1},m=Mu((()=>{v.value||(l.value="hidden",d(h),t("afterLeave"))}));(0,r.onMounted)((()=>{let e=f(h);(0,r.onUnmounted)(e)})),(0,r.watchEffect)((()=>{if(s.value===Lr.Hidden&&h){if(c&&"visible"!==l.value)return void(l.value="visible");Tr(l.value,{hidden:()=>d(h),visible:()=>f(h)})}}));let g=Lu(e.enter),y=Lu(e.enterFrom),b=Lu(e.enterTo),w=Lu(e.entered),C=Lu(e.leave),_=Lu(e.leaveFrom),E=Lu(e.leaveTo);return(0,r.onMounted)((()=>{(0,r.watchEffect)((()=>{if("visible"===l.value){let e=zr(a);if(e instanceof Comment&&""===e.data)throw new Error("Did you forget to passthrough the `ref` to the actual DOM node?")}}))})),(0,r.onMounted)((()=>{(0,r.watch)([c],((e,n,r)=>{(function(e){let n=p.value&&!u.value,r=zr(a);!r||!(r instanceof HTMLElement)||n||(v.value=!0,c.value&&t("beforeEnter"),c.value||t("beforeLeave"),e(c.value?Ru(r,g,y,b,w,(e=>{v.value=!1,e===Vu.Finished&&t("afterEnter")})):Ru(r,C,_,E,w,(e=>{v.value=!1,e===Vu.Finished&&(Iu(m)||(l.value="hidden",d(h),t("afterLeave")))}))))})(r),p.value=!1}),{immediate:!0})})),(0,r.provide)(Bu,m),Yr((0,r.computed)((()=>Tr(l.value,{visible:Gr.Open,hidden:Gr.Closed})))),()=>{let{appear:t,show:i,enter:s,enterFrom:f,enterTo:d,entered:p,leave:h,leaveFrom:v,leaveTo:m,...b}=e,w={ref:a};return Ar({theirProps:{...b,...u&&c&&qr.isServer?{class:(0,r.normalizeClass)([b.class,...g,...y])}:{}},ourProps:w,slot:{},slots:o,attrs:n,features:Fu,visible:"visible"===l.value,name:"TransitionChild"})}}}),Uu=Du,$u=(0,r.defineComponent)({inheritAttrs:!1,props:{as:{type:[Object,String],default:"div"},show:{type:[Boolean],default:null},unmount:{type:[Boolean],default:!0},appear:{type:[Boolean],default:!1},enter:{type:[String],default:""},enterFrom:{type:[String],default:""},enterTo:{type:[String],default:""},entered:{type:[String],default:""},leave:{type:[String],default:""},leaveFrom:{type:[String],default:""},leaveTo:{type:[String],default:""}},emits:{beforeEnter:()=>!0,afterEnter:()=>!0,beforeLeave:()=>!0,afterLeave:()=>!0},setup(e,{emit:t,attrs:n,slots:o}){let i=Zr(),a=(0,r.computed)((()=>null===e.show&&null!==i?Tr(i.value,{[Gr.Open]:!0,[Gr.Closed]:!1}):e.show));(0,r.watchEffect)((()=>{if(![!0,!1].includes(a.value))throw new Error('A is used but it is missing a `:show="true | false"` prop.')}));let l=(0,r.ref)(a.value?"visible":"hidden"),s=Mu((()=>{l.value="hidden"})),c=(0,r.ref)(!0),u={show:a,appear:(0,r.computed)((()=>e.appear||!c.value))};return(0,r.onMounted)((()=>{(0,r.watchEffect)((()=>{c.value=!1,a.value?l.value="visible":Iu(s)||(l.value="hidden")}))})),(0,r.provide)(Bu,s),(0,r.provide)(Au,u),()=>{let i=Mr(e,["show","appear","unmount","onBeforeEnter","onBeforeLeave","onAfterEnter","onAfterLeave"]),a={unmount:e.unmount};return Ar({ourProps:{...a,as:"template"},theirProps:{},slot:{},slots:{...o,default:()=>[(0,r.h)(Uu,{onBeforeEnter:()=>t("beforeEnter"),onAfterEnter:()=>t("afterEnter"),onBeforeLeave:()=>t("beforeLeave"),onAfterLeave:()=>t("afterLeave"),...n,...a,...i},o.default)]},attrs:{},features:Fu,visible:"visible"===l.value,name:"Transition"})}}});var Hu=(e=>(e[e.Forwards=0]="Forwards",e[e.Backwards=1]="Backwards",e))(Hu||{});function zu(){let e=(0,r.ref)(0);return function(e,t,n){qr.isServer||(0,r.watchEffect)((r=>{window.addEventListener(e,t,n),r((()=>window.removeEventListener(e,t,n)))}))}("keydown",(t=>{"Tab"===t.key&&(e.value=t.shiftKey?1:0)})),e}function qu(e,t,n,o){qr.isServer||(0,r.watchEffect)((r=>{(e=null!=e?e:window).addEventListener(t,n,o),r((()=>e.removeEventListener(t,n,o)))}))}var Wu=(e=>(e[e.None=1]="None",e[e.InitialFocus=2]="InitialFocus",e[e.TabLock=4]="TabLock",e[e.FocusLock=8]="FocusLock",e[e.RestoreFocus=16]="RestoreFocus",e[e.All=30]="All",e))(Wu||{});let Ku=Object.assign((0,r.defineComponent)({name:"FocusTrap",props:{as:{type:[Object,String],default:"div"},initialFocus:{type:Object,default:null},features:{type:Number,default:30},containers:{type:Object,default:(0,r.ref)(new Set)}},inheritAttrs:!1,setup(e,{attrs:t,slots:n,expose:o}){let i=(0,r.ref)(null);o({el:i,$el:i});let a=(0,r.computed)((()=>Wr(i)));!function({ownerDocument:e},t){let n=(0,r.ref)(null);function o(){var t;n.value||(n.value=null==(t=e.value)?void 0:t.activeElement)}function i(){!n.value||(lo(n.value),n.value=null)}(0,r.onMounted)((()=>{(0,r.watch)(t,((e,t)=>{e!==t&&(e?o():i())}),{immediate:!0})})),(0,r.onUnmounted)(i)}({ownerDocument:a},(0,r.computed)((()=>Boolean(16&e.features))));let l=function({ownerDocument:e,container:t,initialFocus:n},o){let i=(0,r.ref)(null),a=(0,r.ref)(!1);return(0,r.onMounted)((()=>a.value=!0)),(0,r.onUnmounted)((()=>a.value=!1)),(0,r.onMounted)((()=>{(0,r.watch)([t,n,o],((r,l)=>{if(r.every(((e,t)=>(null==l?void 0:l[t])===e))||!o.value)return;let s=zr(t);!s||function(e){"function"==typeof queueMicrotask?queueMicrotask(e):Promise.resolve().then(e).catch((e=>setTimeout((()=>{throw e}))))}((()=>{var t,r;if(!a.value)return;let o=zr(n),l=null==(t=e.value)?void 0:t.activeElement;if(o){if(o===l)return void(i.value=l)}else if(s.contains(l))return void(i.value=l);o?lo(o):(fo(s,eo.First|eo.NoScroll),to.Error),i.value=null==(r=e.value)?void 0:r.activeElement}))}),{immediate:!0,flush:"post"})})),i}({ownerDocument:a,container:i,initialFocus:(0,r.computed)((()=>e.initialFocus))},(0,r.computed)((()=>Boolean(2&e.features))));!function({ownerDocument:e,container:t,containers:n,previousActiveElement:r},o){var i;qu(null==(i=e.value)?void 0:i.defaultView,"focus",(e=>{if(!o.value)return;let i=new Set(null==n?void 0:n.value);i.add(t);let a=r.value;if(!a)return;let l=e.target;l&&l instanceof HTMLElement?Gu(i,l)?(r.value=l,lo(l)):(e.preventDefault(),e.stopPropagation(),lo(a)):lo(r.value)}),!0)}({ownerDocument:a,container:i,containers:e.containers,previousActiveElement:l},(0,r.computed)((()=>Boolean(8&e.features))));let s=zu();function c(e){let t=zr(i);t&&Tr(s.value,{[Hu.Forwards]:()=>{fo(t,eo.First,{skipElements:[e.relatedTarget]})},[Hu.Backwards]:()=>{fo(t,eo.Last,{skipElements:[e.relatedTarget]})}})}let u=(0,r.ref)(!1);function f(e){"Tab"===e.key&&(u.value=!0,requestAnimationFrame((()=>{u.value=!1})))}function d(t){var n;let r=new Set(null==(n=e.containers)?void 0:n.value);r.add(i);let o=t.relatedTarget;o instanceof HTMLElement&&"true"!==o.dataset.headlessuiFocusGuard&&(Gu(r,o)||(u.value?fo(zr(i),Tr(s.value,{[Hu.Forwards]:()=>eo.Next,[Hu.Backwards]:()=>eo.Previous})|eo.WrapAround,{relativeTo:t.target}):t.target instanceof HTMLElement&&lo(t.target)))}return()=>{let o={ref:i,onKeydown:f,onFocusout:d},{features:a,initialFocus:l,containers:s,...u}=e;return(0,r.h)(r.Fragment,[Boolean(4&a)&&(0,r.h)(el,{as:"button",type:"button","data-headlessui-focus-guard":!0,onFocus:c,features:Xa.Focusable}),Ar({ourProps:o,theirProps:{...t,...u},slot:{},attrs:t,slots:n,name:"FocusTrap"}),Boolean(4&a)&&(0,r.h)(el,{as:"button",type:"button","data-headlessui-focus-guard":!0,onFocus:c,features:Xa.Focusable})])}}}),{features:Wu});function Gu(e,t){var n;for(let r of e)if(null!=(n=r.value)&&n.contains(t))return!0;return!1}let Zu="body > *",Yu=new Set,Ju=new Map;function Qu(e){e.setAttribute("aria-hidden","true"),e.inert=!0}function Xu(e){let t=Ju.get(e);!t||(null===t["aria-hidden"]?e.removeAttribute("aria-hidden"):e.setAttribute("aria-hidden",t["aria-hidden"]),e.inert=t.inert)}function ef(e,t=(0,r.ref)(!0)){(0,r.watchEffect)((n=>{if(!t.value||!e.value)return;let r=e.value,o=Wr(r);if(o){Yu.add(r);for(let e of Ju.keys())e.contains(r)&&(Xu(e),Ju.delete(e));o.querySelectorAll(Zu).forEach((e=>{if(e instanceof HTMLElement){for(let t of Yu)if(e.contains(t))return;1===Yu.size&&(Ju.set(e,{"aria-hidden":e.getAttribute("aria-hidden"),inert:e.inert}),Qu(e))}})),n((()=>{if(Yu.delete(r),Yu.size>0)o.querySelectorAll(Zu).forEach((e=>{if(e instanceof HTMLElement&&!Ju.has(e)){for(let t of Yu)if(e.contains(t))return;Ju.set(e,{"aria-hidden":e.getAttribute("aria-hidden"),inert:e.inert}),Qu(e)}}));else for(let e of Ju.keys())Xu(e),Ju.delete(e)}))}}))}let tf=Symbol("ForcePortalRootContext");let nf=(0,r.defineComponent)({name:"ForcePortalRoot",props:{as:{type:[Object,String],default:"template"},force:{type:Boolean,default:!1}},setup:(e,{slots:t,attrs:n})=>((0,r.provide)(tf,e.force),()=>{let{force:r,...o}=e;return Ar({theirProps:o,ourProps:{},slot:{},slots:t,attrs:n,name:"ForcePortalRoot"})})});let rf=(0,r.defineComponent)({name:"Portal",props:{as:{type:[Object,String],default:"div"}},setup(e,{slots:t,attrs:n}){let o=(0,r.ref)(null),i=(0,r.computed)((()=>Wr(o))),a=(0,r.inject)(tf,!1),l=(0,r.inject)(of,null),s=(0,r.ref)(!0===a||null==l?function(e){let t=Wr(e);if(!t){if(null===e)return null;throw new Error(`[Headless UI]: Cannot find ownerDocument for contextElement: ${e}`)}let n=t.getElementById("headlessui-portal-root");if(n)return n;let r=t.createElement("div");return r.setAttribute("id","headlessui-portal-root"),t.body.appendChild(r)}(o.value):l.resolveTarget());return(0,r.watchEffect)((()=>{a||null!=l&&(s.value=l.resolveTarget())})),(0,r.onUnmounted)((()=>{var e,t;let n=null==(e=i.value)?void 0:e.getElementById("headlessui-portal-root");!n||s.value===n&&s.value.children.length<=0&&(null==(t=s.value.parentElement)||t.removeChild(s.value))})),()=>{if(null===s.value)return null;let i={ref:o,"data-headlessui-portal":""};return(0,r.h)(r.Teleport,{to:s.value},Ar({ourProps:i,theirProps:e,slot:{},attrs:n,slots:t,name:"Portal"}))}}}),of=Symbol("PortalGroupContext"),af=(0,r.defineComponent)({name:"PortalGroup",props:{as:{type:[Object,String],default:"template"},target:{type:Object,default:null}},setup(e,{attrs:t,slots:n}){let o=(0,r.reactive)({resolveTarget:()=>e.target});return(0,r.provide)(of,o),()=>{let{target:r,...o}=e;return Ar({theirProps:o,ourProps:{},slot:{},attrs:t,slots:n,name:"PortalGroup"})}}}),lf=Symbol("StackContext");var sf=(e=>(e[e.Add=0]="Add",e[e.Remove=1]="Remove",e))(sf||{});function cf({type:e,enabled:t,element:n,onUpdate:o}){let i=(0,r.inject)(lf,(()=>{}));function a(...e){null==o||o(...e),i(...e)}(0,r.onMounted)((()=>{(0,r.watch)(t,((t,r)=>{t?a(0,e,n):!0===r&&a(1,e,n)}),{immediate:!0,flush:"sync"})})),(0,r.onUnmounted)((()=>{t.value&&a(1,e,n)})),(0,r.provide)(lf,a)}let uf=Symbol("DescriptionContext");(0,r.defineComponent)({name:"Description",props:{as:{type:[Object,String],default:"p"},id:{type:String,default:()=>`headlessui-description-${Dr()}`}},setup(e,{attrs:t,slots:n}){let o=function(){let e=(0,r.inject)(uf,null);if(null===e)throw new Error("Missing parent");return e}();return(0,r.onMounted)((()=>(0,r.onUnmounted)(o.register(e.id)))),()=>{let{name:i="Description",slot:a=(0,r.ref)({}),props:l={}}=o,{id:s,...c}=e,u={...Object.entries(l).reduce(((e,[t,n])=>Object.assign(e,{[t]:(0,r.unref)(n)})),{}),id:s};return Ar({ourProps:u,theirProps:c,slot:a.value,attrs:t,slots:n,name:i})}}});function ff(){let e;return{before({doc:t}){var n;let r=t.documentElement;e=(null!=(n=t.defaultView)?n:window).innerWidth-r.clientWidth},after({doc:t,d:n}){let r=t.documentElement,o=r.clientWidth-r.offsetWidth,i=e-o;n.style(r,"paddingRight",`${i}px`)}}}function df(){if(!(/iPhone/gi.test(window.navigator.platform)||/Mac/gi.test(window.navigator.platform)&&window.navigator.maxTouchPoints>0))return{};let e;return{before(){e=window.pageYOffset},after({doc:t,d:n,meta:r}){function o(e){return r.containers.flatMap((e=>e())).some((t=>t.contains(e)))}n.style(t.body,"marginTop",`-${e}px`),window.scrollTo(0,0);let i=null;n.addEventListener(t,"click",(e=>{if(e.target instanceof HTMLElement)try{let n=e.target.closest("a");if(!n)return;let{hash:r}=new URL(n.href),a=t.querySelector(r);a&&!o(a)&&(i=a)}catch{}}),!0),n.addEventListener(t,"touchmove",(e=>{e.target instanceof HTMLElement&&!o(e.target)&&e.preventDefault()}),{passive:!1}),n.add((()=>{window.scrollTo(0,window.pageYOffset+e),i&&i.isConnected&&(i.scrollIntoView({block:"nearest"}),i=null)}))}}}function pf(e){let t={};for(let n of e)Object.assign(t,n(t));return t}let hf=function(e,t){let n=e(),r=new Set;return{getSnapshot:()=>n,subscribe:e=>(r.add(e),()=>r.delete(e)),dispatch(e,...o){let i=t[e].call(n,...o);i&&(n=i,r.forEach((e=>e())))}}}((()=>new Map),{PUSH(e,t){var n;let r=null!=(n=this.get(e))?n:{doc:e,count:0,d:Nu(),meta:new Set};return r.count++,r.meta.add(t),this.set(e,r),this},POP(e,t){let n=this.get(e);return n&&(n.count--,n.meta.delete(t)),this},SCROLL_PREVENT({doc:e,d:t,meta:n}){let r={doc:e,d:t,meta:pf(n)},o=[df(),ff(),{before({doc:e,d:t}){t.style(e.documentElement,"overflow","hidden")}}];o.forEach((({before:e})=>null==e?void 0:e(r))),o.forEach((({after:e})=>null==e?void 0:e(r)))},SCROLL_ALLOW({d:e}){e.dispose()},TEARDOWN({doc:e}){this.delete(e)}});function vf(e,t,n){let o=function(e){let t=(0,r.shallowRef)(e.getSnapshot());return(0,r.onUnmounted)(e.subscribe((()=>{t.value=e.getSnapshot()}))),t}(hf),i=(0,r.computed)((()=>{let t=e.value?o.value.get(e.value):void 0;return!!t&&t.count>0}));return(0,r.watch)([e,t],(([e,t],[r],o)=>{if(!e||!t)return;hf.dispatch("PUSH",e,n);let i=!1;o((()=>{i||(hf.dispatch("POP",null!=r?r:e,n),i=!0)}))}),{immediate:!0}),i}hf.subscribe((()=>{let e=hf.getSnapshot(),t=new Map;for(let[n]of e)t.set(n,n.documentElement.style.overflow);for(let n of e.values()){let e="hidden"===t.get(n.doc),r=0!==n.count;(r&&!e||!r&&e)&&hf.dispatch(n.count>0?"SCROLL_PREVENT":"SCROLL_ALLOW",n),0===n.count&&hf.dispatch("TEARDOWN",n)}}));var mf=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(mf||{});let gf=Symbol("DialogContext");function yf(e){let t=(0,r.inject)(gf,null);if(null===t){let t=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,yf),t}return t}let bf="DC8F892D-2EBD-447C-A4C8-A03058436FF4",wf=(0,r.defineComponent)({name:"Dialog",inheritAttrs:!1,props:{as:{type:[Object,String],default:"div"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},open:{type:[Boolean,String],default:bf},initialFocus:{type:Object,default:null},id:{type:String,default:()=>`headlessui-dialog-${Dr()}`}},emits:{close:e=>!0},setup(e,{emit:t,attrs:n,slots:o,expose:i}){var a;let l=(0,r.ref)(!1);(0,r.onMounted)((()=>{l.value=!0}));let s=(0,r.ref)(0),c=Zr(),u=(0,r.computed)((()=>e.open===bf&&null!==c?Tr(c.value,{[Gr.Open]:!0,[Gr.Closed]:!1}):e.open)),f=(0,r.ref)(new Set),d=(0,r.ref)(null),p=(0,r.ref)(null),h=(0,r.computed)((()=>Wr(d)));if(i({el:d,$el:d}),e.open===bf&&null===c)throw new Error("You forgot to provide an `open` prop to the `Dialog`.");if("boolean"!=typeof u.value)throw new Error(`You provided an \`open\` prop to the \`Dialog\`, but the value is not a boolean. Received: ${u.value===bf?void 0:e.open}`);let v=(0,r.computed)((()=>l.value&&u.value?0:1)),m=(0,r.computed)((()=>0===v.value)),g=(0,r.computed)((()=>s.value>1)),y=((0,r.inject)(gf,null),(0,r.computed)((()=>g.value?"parent":"leaf")));ef(d,(0,r.computed)((()=>!!g.value&&m.value))),cf({type:"Dialog",enabled:(0,r.computed)((()=>0===v.value)),element:d,onUpdate:(e,t,n)=>{if("Dialog"===t)return Tr(e,{[sf.Add](){f.value.add(n),s.value+=1},[sf.Remove](){f.value.delete(n),s.value-=1}})}});let b=function({slot:e=(0,r.ref)({}),name:t="Description",props:n={}}={}){let o=(0,r.ref)([]);return(0,r.provide)(uf,{register:function(e){return o.value.push(e),()=>{let t=o.value.indexOf(e);-1!==t&&o.value.splice(t,1)}},slot:e,name:t,props:n}),(0,r.computed)((()=>o.value.length>0?o.value.join(" "):void 0))}({name:"DialogDescription",slot:(0,r.computed)((()=>({open:u.value})))}),w=(0,r.ref)(null),C={titleId:w,panelRef:(0,r.ref)(null),dialogState:v,setTitleId(e){w.value!==e&&(w.value=e)},close(){t("close",!1)}};function _(){var e,t,n;return[...Array.from(null!=(t=null==(e=h.value)?void 0:e.querySelectorAll("html > *, body > *, [data-headlessui-portal]"))?t:[]).filter((e=>!(e===document.body||e===document.head||!(e instanceof HTMLElement)||e.contains(zr(p))||C.panelRef.value&&e.contains(C.panelRef.value)))),null!=(n=C.panelRef.value)?n:d.value]}return(0,r.provide)(gf,C),ho((()=>_()),((e,t)=>{C.close(),(0,r.nextTick)((()=>null==t?void 0:t.focus()))}),(0,r.computed)((()=>0===v.value&&!g.value))),qu(null==(a=h.value)?void 0:a.defaultView,"keydown",(e=>{e.defaultPrevented||e.key===Ur.Escape&&0===v.value&&(g.value||(e.preventDefault(),e.stopPropagation(),C.close()))})),vf(h,m,(e=>{var t;return{containers:[...null!=(t=e.containers)?t:[],_]}})),(0,r.watchEffect)((e=>{if(0!==v.value)return;let t=zr(d);if(!t)return;let n=new IntersectionObserver((e=>{for(let t of e)0===t.boundingClientRect.x&&0===t.boundingClientRect.y&&0===t.boundingClientRect.width&&0===t.boundingClientRect.height&&C.close()}));n.observe(t),e((()=>n.disconnect()))})),()=>{let{id:t,open:i,initialFocus:a,...l}=e,s={...n,ref:d,id:t,role:"dialog","aria-modal":0===v.value||void 0,"aria-labelledby":w.value,"aria-describedby":b.value},c={open:0===v.value};return(0,r.h)(nf,{force:!0},(()=>[(0,r.h)(rf,(()=>(0,r.h)(af,{target:d.value},(()=>(0,r.h)(nf,{force:!1},(()=>(0,r.h)(Ku,{initialFocus:a,containers:f,features:m.value?Tr(y.value,{parent:Ku.features.RestoreFocus,leaf:Ku.features.All&~Ku.features.FocusLock}):Ku.features.None},(()=>Ar({ourProps:s,theirProps:l,slot:c,attrs:n,slots:o,visible:0===v.value,features:Rr.RenderStrategy|Rr.Static,name:"Dialog"}))))))))),(0,r.h)(el,{features:Xa.Hidden,ref:p})]))}}}),Cf=((0,r.defineComponent)({name:"DialogOverlay",props:{as:{type:[Object,String],default:"div"},id:{type:String,default:()=>`headlessui-dialog-overlay-${Dr()}`}},setup(e,{attrs:t,slots:n}){let r=yf("DialogOverlay");function o(e){e.target===e.currentTarget&&(e.preventDefault(),e.stopPropagation(),r.close())}return()=>{let{id:i,...a}=e;return Ar({ourProps:{id:i,"aria-hidden":!0,onClick:o},theirProps:a,slot:{open:0===r.dialogState.value},attrs:t,slots:n,name:"DialogOverlay"})}}}),(0,r.defineComponent)({name:"DialogBackdrop",props:{as:{type:[Object,String],default:"div"},id:{type:String,default:()=>`headlessui-dialog-backdrop-${Dr()}`}},inheritAttrs:!1,setup(e,{attrs:t,slots:n,expose:o}){let i=yf("DialogBackdrop"),a=(0,r.ref)(null);return o({el:a,$el:a}),(0,r.onMounted)((()=>{if(null===i.panelRef.value)throw new Error("A component is being used, but a component is missing.")})),()=>{let{id:o,...l}=e,s={id:o,ref:a,"aria-hidden":!0};return(0,r.h)(nf,{force:!0},(()=>(0,r.h)(rf,(()=>Ar({ourProps:s,theirProps:{...t,...l},slot:{open:0===i.dialogState.value},attrs:t,slots:n,name:"DialogBackdrop"})))))}}}),(0,r.defineComponent)({name:"DialogPanel",props:{as:{type:[Object,String],default:"div"},id:{type:String,default:()=>`headlessui-dialog-panel-${Dr()}`}},setup(e,{attrs:t,slots:n,expose:r}){let o=yf("DialogPanel");function i(e){e.stopPropagation()}return r({el:o.panelRef,$el:o.panelRef}),()=>{let{id:r,...a}=e;return Ar({ourProps:{id:r,ref:o.panelRef,onClick:i},theirProps:a,slot:{open:0===o.dialogState.value},attrs:t,slots:n,name:"DialogPanel"})}}})),_f=(0,r.defineComponent)({name:"DialogTitle",props:{as:{type:[Object,String],default:"h2"},id:{type:String,default:()=>`headlessui-dialog-title-${Dr()}`}},setup(e,{attrs:t,slots:n}){let o=yf("DialogTitle");return(0,r.onMounted)((()=>{o.setTitleId(e.id),(0,r.onUnmounted)((()=>o.setTitleId(null)))})),()=>{let{id:r,...i}=e;return Ar({ourProps:{id:r},theirProps:i,slot:{open:0===o.dialogState.value},attrs:t,slots:n,name:"DialogTitle"})}}});var Ef=(0,r.createElementVNode)("div",{class:"fixed inset-0"},null,-1),xf={class:"fixed inset-0 overflow-hidden"},kf={class:"absolute inset-0 overflow-hidden"},Sf={class:"pointer-events-none fixed inset-y-0 right-0 flex max-w-full pl-10"},Of={class:"flex h-full flex-col overflow-y-scroll bg-white py-6 shadow-xl"},Nf={class:"px-4 sm:px-6"},Pf={class:"flex items-start justify-between"},Tf={class:"ml-3 flex h-7 items-center"},Vf=(0,r.createElementVNode)("span",{class:"sr-only"},"Close panel",-1),Rf={class:"relative mt-6 flex-1 px-4 sm:px-6"},Lf={class:"keyboard-shortcut"},Af={class:"shortcut"},jf=(0,r.createElementVNode)("span",{class:"description"},"Select a host",-1),Bf={class:"keyboard-shortcut"},If={class:"shortcut"},Mf=(0,r.createElementVNode)("span",{class:"description"},"Jump to file selection",-1),Ff={class:"keyboard-shortcut"},Df={class:"shortcut"},Uf=(0,r.createElementVNode)("span",{class:"description"},"Jump to logs",-1),$f={class:"keyboard-shortcut"},Hf={class:"shortcut"},zf=(0,r.createElementVNode)("span",{class:"description"},"Severity selection",-1),qf={class:"keyboard-shortcut"},Wf={class:"shortcut"},Kf=(0,r.createElementVNode)("span",{class:"description"},"Settings",-1),Gf={class:"keyboard-shortcut"},Zf={class:"shortcut"},Yf=(0,r.createElementVNode)("span",{class:"description"},"Search",-1),Jf={class:"keyboard-shortcut"},Qf={class:"shortcut"},Xf=(0,r.createElementVNode)("span",{class:"description"},"Refresh logs",-1),ed={class:"keyboard-shortcut"},td={class:"shortcut"},nd=(0,r.createElementVNode)("span",{class:"description"},"Keyboard shortcuts help",-1);const rd={__name:"KeyboardShortcutsOverlay",setup:function(e){var t=Mi();return function(e,n){return(0,r.openBlock)(),(0,r.createBlock)((0,r.unref)($u),{as:"template",show:(0,r.unref)(t).helpSlideOverOpen},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(wf),{as:"div",class:"relative z-20",onClose:n[1]||(n[1]=function(e){return(0,r.unref)(t).helpSlideOverOpen=!1})},{default:(0,r.withCtx)((function(){return[Ef,(0,r.createElementVNode)("div",xf,[(0,r.createElementVNode)("div",kf,[(0,r.createElementVNode)("div",Sf,[(0,r.createVNode)((0,r.unref)(Du),{as:"template",enter:"transform transition ease-in-out duration-200 sm:duration-300","enter-from":"translate-x-full","enter-to":"translate-x-0",leave:"transform transition ease-in-out duration-200 sm:duration-300","leave-from":"translate-x-0","leave-to":"translate-x-full"},{default:(0,r.withCtx)((function(){return[(0,r.createVNode)((0,r.unref)(Cf),{class:"pointer-events-auto w-screen max-w-md"},{default:(0,r.withCtx)((function(){return[(0,r.createElementVNode)("div",Of,[(0,r.createElementVNode)("div",Nf,[(0,r.createElementVNode)("div",Pf,[(0,r.createVNode)((0,r.unref)(_f),{class:"text-base font-semibold leading-6 text-gray-900"},{default:(0,r.withCtx)((function(){return[(0,r.createTextVNode)("Keyboard Shortcuts")]})),_:1}),(0,r.createElementVNode)("div",Tf,[(0,r.createElementVNode)("button",{type:"button",class:"rounded-md bg-white text-gray-400 hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-brand-500 focus:ring-offset-2",onClick:n[0]||(n[0]=function(e){return(0,r.unref)(t).helpSlideOverOpen=!1})},[Vf,(0,r.createVNode)((0,r.unref)(ko),{class:"h-6 w-6","aria-hidden":"true"})])])])]),(0,r.createElementVNode)("div",Rf,[(0,r.createElementVNode)("div",Lf,[(0,r.createElementVNode)("span",Af,(0,r.toDisplayString)((0,r.unref)(Xi).Hosts),1),jf]),(0,r.createElementVNode)("div",Bf,[(0,r.createElementVNode)("span",If,(0,r.toDisplayString)((0,r.unref)(Xi).Files),1),Mf]),(0,r.createElementVNode)("div",Ff,[(0,r.createElementVNode)("span",Df,(0,r.toDisplayString)((0,r.unref)(Xi).Logs),1),Uf]),(0,r.createElementVNode)("div",$f,[(0,r.createElementVNode)("span",Hf,(0,r.toDisplayString)((0,r.unref)(Xi).Severity),1),zf]),(0,r.createElementVNode)("div",qf,[(0,r.createElementVNode)("span",Wf,(0,r.toDisplayString)((0,r.unref)(Xi).Settings),1),Kf]),(0,r.createElementVNode)("div",Gf,[(0,r.createElementVNode)("span",Zf,(0,r.toDisplayString)((0,r.unref)(Xi).Search),1),Yf]),(0,r.createElementVNode)("div",Jf,[(0,r.createElementVNode)("span",Qf,(0,r.toDisplayString)((0,r.unref)(Xi).Refresh),1),Xf]),(0,r.createElementVNode)("div",ed,[(0,r.createElementVNode)("span",td,(0,r.toDisplayString)((0,r.unref)(Xi).ShortcutHelp),1),nd])])])]})),_:1})]})),_:1})])])])]})),_:1})]})),_:1},8,["show"])}}};function od(e){return od="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},od(e)}function id(){id=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",l=o.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function c(e,t,n,o){var i=t&&t.prototype instanceof d?t:d,a=Object.create(i.prototype),l=new k(o||[]);return r(a,"_invoke",{value:C(e,n,l)}),a}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var f={};function d(){}function p(){}function h(){}var v={};s(v,i,(function(){return this}));var m=Object.getPrototypeOf,g=m&&m(m(S([])));g&&g!==t&&n.call(g,i)&&(v=g);var y=h.prototype=d.prototype=Object.create(v);function b(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function w(e,t){function o(r,i,a,l){var s=u(e[r],e,i);if("throw"!==s.type){var c=s.arg,f=c.value;return f&&"object"==od(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){o("next",e,a,l)}),(function(e){o("throw",e,a,l)})):t.resolve(f).then((function(e){c.value=e,a(c)}),(function(e){return o("throw",e,a,l)}))}l(s.arg)}var i;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){o(e,n,t,r)}))}return i=i?i.then(r,r):r()}})}function C(e,t,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return O()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var l=_(a,n);if(l){if(l===f)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=u(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===f)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function _(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,_(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),f;var o=u(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,f;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function E(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function x(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function k(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(E,this),this.reset(!0)}function S(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var l=n.call(i,"catchLoc"),s=n.call(i,"finallyLoc");if(l&&s){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),x(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;x(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:S(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function ad(e,t,n,r,o,i,a){try{var l=e[i](a),s=l.value}catch(e){return void n(e)}l.done?t(s):Promise.resolve(s).then(r,o)}var ld={class:"md:pl-88 flex flex-col flex-1 min-h-screen max-h-screen max-w-full"},sd={class:"absolute bottom-4 right-4 flex items-center"},cd={class:"text-xs text-gray-500 dark:text-gray-400 mr-5 -mb-0.5"},ud=(0,r.createElementVNode)("span",{class:"hidden md:inline"},"Memory: ",-1),fd={class:"font-semibold"},dd=(0,r.createElementVNode)("span",{class:"mx-1.5"},"·",-1),pd=(0,r.createElementVNode)("span",{class:"hidden md:inline"},"Duration: ",-1),hd={class:"font-semibold"},vd=(0,r.createElementVNode)("span",{class:"mx-1.5"},"·",-1),md=(0,r.createElementVNode)("span",{class:"hidden md:inline"},"Version: ",-1),gd={class:"font-semibold"},yd={key:0,href:"https://www.buymeacoffee.com/arunas",target:"_blank"};const bd={__name:"Home",setup:function(e){var t=Bo(),n=Mi(),o=Fi(),i=Ri(),a=Li(),l=Pr(),s=Nr();return(0,r.onBeforeMount)((function(){n.syncTheme(),document.addEventListener("keydown",ra)})),(0,r.onBeforeUnmount)((function(){document.removeEventListener("keydown",ra)})),(0,r.onMounted)((function(){setInterval(n.syncTheme,1e3)})),(0,r.watch)((function(){return l.query}),(function(e){o.selectFile(e.file||null),a.setPage(e.page||1),i.setQuery(e.query||""),n.loadLogs()}),{immediate:!0}),(0,r.watch)((function(){return l.query.host}),function(){var e,r=(e=id().mark((function e(r){return id().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.selectHost(r||null),r&&!t.selectedHostIdentifier&&Hi(s,"host",null),o.reset(),e.next=5,o.loadFolders();case 5:n.loadLogs();case 6:case"end":return e.stop()}}),e)})),function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function a(e){ad(i,r,o,a,l,"next",e)}function l(e){ad(i,r,o,a,l,"throw",e)}a(void 0)}))});return function(e){return r.apply(this,arguments)}}(),{immediate:!0}),(0,r.onMounted)((function(){window.onresize=function(){n.setViewportDimensions(window.innerWidth,window.innerHeight)}})),function(e,t){var i;return(0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,null,[(0,r.createElementVNode)("div",{class:(0,r.normalizeClass)(["absolute z-20 top-0 bottom-10 bg-gray-100 dark:bg-gray-900 md:left-0 md:flex md:w-88 md:flex-col md:fixed md:inset-y-0",[(0,r.unref)(o).sidebarOpen?"left-0 right-0 md:left-auto md:right-auto":"-left-[200%] right-[200%] md:left-auto md:right-auto"]])},[(0,r.createVNode)(ms)],2),(0,r.createElementVNode)("div",ld,[(0,r.createVNode)(Eu,{class:"pb-16 md:pb-12"})]),(0,r.createElementVNode)("div",sd,[(0,r.createElementVNode)("p",cd,[null!==(i=(0,r.unref)(n).performance)&&void 0!==i&&i.requestTime?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:0},[(0,r.createElementVNode)("span",null,[ud,(0,r.createElementVNode)("span",fd,(0,r.toDisplayString)((0,r.unref)(n).performance.memoryUsage),1)]),dd,(0,r.createElementVNode)("span",null,[pd,(0,r.createElementVNode)("span",hd,(0,r.toDisplayString)((0,r.unref)(n).performance.requestTime),1)]),vd],64)):(0,r.createCommentVNode)("",!0),(0,r.createElementVNode)("span",null,[md,(0,r.createElementVNode)("span",gd,(0,r.toDisplayString)(e.LogViewer.version),1)])]),e.LogViewer.show_support_link?((0,r.openBlock)(),(0,r.createElementBlock)("a",yd,[(0,r.createVNode)(Ou,{class:"h-6 w-auto",title:"Support me by buying me a cup of coffee ❤️"})])):(0,r.createCommentVNode)("",!0)]),(0,r.createVNode)(rd)],64)}}},wd=bd;function Cd(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,a,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,o=e}finally{try{if(!s&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw o}}return l}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return _d(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _d(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n""+e)),d=Xt.bind(null,sr),p=Xt.bind(null,cr);function h(e,r){if(r=Qt({},r||c.value),"string"==typeof e){const o=on(n,e,r.path),a=t.resolve({path:o.path},r),l=i.createHref(o.fullPath);return Qt(o,a,{params:p(a.params),hash:cr(o.hash),redirectedFrom:void 0,href:l})}let a;if("path"in e)a=Qt({},e,{path:on(n,e.path,r.path).path});else{const t=Qt({},e.params);for(const e in t)null==t[e]&&delete t[e];a=Qt({},e,{params:d(e.params)}),r.params=d(r.params)}const l=t.resolve(a,r),s=e.hash||"";l.params=f(p(l.params));const u=function(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}(o,Qt({},e,{hash:(h=s,ar(h).replace(nr,"{").replace(or,"}").replace(er,"^")),path:l.path}));var h;const v=i.createHref(u);return Qt({fullPath:u,hash:s,query:o===fr?dr(e.query):e.query||{}},l,{redirectedFrom:void 0,href:v})}function v(e){return"string"==typeof e?on(n,e,c.value.path):Qt({},e)}function m(e,t){if(u!==e)return Nn(8,{from:t,to:e})}function g(e){return b(e)}function y(e){const t=e.matched[e.matched.length-1];if(t&&t.redirect){const{redirect:n}=t;let r="function"==typeof n?n(e):n;return"string"==typeof r&&(r=r.includes("?")||r.includes("#")?r=v(r):{path:r},r.params={}),Qt({query:e.query,hash:e.hash,params:"path"in r?{}:e.params},r)}}function b(e,t){const n=u=h(e),r=c.value,i=e.state,a=e.force,l=!0===e.replace,s=y(n);if(s)return b(Qt(v(s),{state:"object"==typeof s?Qt({},i,s.state):i,force:a,replace:l}),t||n);const f=n;let d;return f.redirectedFrom=t,!a&&function(e,t,n){const r=t.matched.length-1,o=n.matched.length-1;return r>-1&&r===o&&ln(t.matched[r],n.matched[o])&&sn(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}(o,r,n)&&(d=Nn(16,{to:f,from:r}),V(r,r,!0,!1)),(d?Promise.resolve(d):C(f,r)).catch((e=>Pn(e)?Pn(e,2)?e:T(e):P(e,f,r))).then((e=>{if(e){if(Pn(e,2))return b(Qt({replace:l},v(e.to),{state:"object"==typeof e.to?Qt({},i,e.to.state):i,force:a}),t||f)}else e=E(f,r,!0,l,i);return _(f,r,e),e}))}function w(e,t){const n=m(e,t);return n?Promise.reject(n):Promise.resolve()}function C(e,t){let n;const[r,o,i]=function(e,t){const n=[],r=[],o=[],i=Math.max(t.matched.length,e.matched.length);for(let a=0;aln(e,i)))?r.push(i):n.push(i));const l=e.matched[a];l&&(t.matched.find((e=>ln(e,l)))||o.push(l))}return[n,r,o]}(e,t);n=wr(r.reverse(),"beforeRouteLeave",e,t);for(const o of r)o.leaveGuards.forEach((r=>{n.push(br(r,e,t))}));const s=w.bind(null,e,t);return n.push(s),Or(n).then((()=>{n=[];for(const r of a.list())n.push(br(r,e,t));return n.push(s),Or(n)})).then((()=>{n=wr(o,"beforeRouteUpdate",e,t);for(const r of o)r.updateGuards.forEach((r=>{n.push(br(r,e,t))}));return n.push(s),Or(n)})).then((()=>{n=[];for(const r of e.matched)if(r.beforeEnter&&!t.matched.includes(r))if(tn(r.beforeEnter))for(const o of r.beforeEnter)n.push(br(o,e,t));else n.push(br(r.beforeEnter,e,t));return n.push(s),Or(n)})).then((()=>(e.matched.forEach((e=>e.enterCallbacks={})),n=wr(i,"beforeRouteEnter",e,t),n.push(s),Or(n)))).then((()=>{n=[];for(const r of l.list())n.push(br(r,e,t));return n.push(s),Or(n)})).catch((e=>Pn(e,8)?e:Promise.reject(e)))}function _(e,t,n){for(const r of s.list())r(e,t,n)}function E(e,t,n,r,o){const a=m(e,t);if(a)return a;const l=t===kn,s=Yt?history.state:{};n&&(r||l?i.replace(e.fullPath,Qt({scroll:l&&s&&s.scroll},o)):i.push(e.fullPath,o)),c.value=e,V(e,t,n,l),T()}let x;function k(){x||(x=i.listen(((e,t,n)=>{if(!j.listening)return;const r=h(e),o=y(r);if(o)return void b(Qt(o,{replace:!0}),r).catch(en);u=r;const a=c.value;Yt&&function(e,t){bn.set(e,t)}(yn(a.fullPath,n.delta),mn()),C(r,a).catch((e=>Pn(e,12)?e:Pn(e,2)?(b(e.to,r).then((e=>{Pn(e,20)&&!n.delta&&n.type===fn.pop&&i.go(-1,!1)})).catch(en),Promise.reject()):(n.delta&&i.go(-n.delta,!1),P(e,r,a)))).then((e=>{(e=e||E(r,a,!1))&&(n.delta&&!Pn(e,8)?i.go(-n.delta,!1):n.type===fn.pop&&Pn(e,20)&&i.go(-1,!1)),_(r,a,e)})).catch(en)})))}let S,O=yr(),N=yr();function P(e,t,n){T(e);const r=N.list();return r.length&&r.forEach((r=>r(e,t,n))),Promise.reject(e)}function T(e){return S||(S=!e,k(),O.list().forEach((([t,n])=>e?n(e):t())),O.reset()),e}function V(t,n,o,i){const{scrollBehavior:a}=e;if(!Yt||!a)return Promise.resolve();const l=!o&&function(e){const t=bn.get(e);return bn.delete(e),t}(yn(t.fullPath,0))||(i||!o)&&history.state&&history.state.scroll||null;return(0,r.nextTick)().then((()=>a(t,n,l))).then((e=>e&&gn(e))).catch((e=>P(e,t,n)))}const R=e=>i.go(e);let L;const A=new Set,j={currentRoute:c,listening:!0,addRoute:function(e,n){let r,o;return xn(e)?(r=t.getRecordMatcher(e),o=n):o=e,t.addRoute(o,r)},removeRoute:function(e){const n=t.getRecordMatcher(e);n&&t.removeRoute(n)},hasRoute:function(e){return!!t.getRecordMatcher(e)},getRoutes:function(){return t.getRoutes().map((e=>e.record))},resolve:h,options:e,push:g,replace:function(e){return g(Qt(v(e),{replace:!0}))},go:R,back:()=>R(-1),forward:()=>R(1),beforeEach:a.add,beforeResolve:l.add,afterEach:s.add,onError:N.add,isReady:function(){return S&&c.value!==kn?Promise.resolve():new Promise(((e,t)=>{O.add([e,t])}))},install(e){e.component("RouterLink",_r),e.component("RouterView",Sr),e.config.globalProperties.$router=this,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>(0,r.unref)(c)}),Yt&&!L&&c.value===kn&&(L=!0,g(i.location).catch((e=>{0})));const t={};for(const e in kn)t[e]=(0,r.computed)((()=>c.value[e]));e.provide(vr,this),e.provide(mr,(0,r.reactive)(t)),e.provide(gr,c);const n=e.unmount;A.add(e),e.unmount=function(){A.delete(e),A.size<1&&(u=kn,x&&x(),x=null,c.value=kn,L=!1,S=!1),n()}}};return j}({routes:[{path:LogViewer.basePath,name:"home",component:wd}],history:En(),base:Pd}),Vd=function(){const e=(0,r.effectScope)(!0),t=e.run((()=>(0,r.ref)({})));let n=[],i=[];const a=(0,r.markRaw)({install(e){v(a),o||(a._a=e,e.provide(m,a),e.config.globalProperties.$pinia=a,w&&W(e,a),i.forEach((e=>n.push(e))),i=[])},use(e){return this._a||o?n.push(e):i.push(e),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return w&&"undefined"!=typeof Proxy&&a.use(Y),a}(),Rd=(0,r.createApp)({router:Td});Rd.use(Td),Rd.use(Vd),Rd.mixin({computed:{LogViewer:function(){return window.LogViewer}}}),Rd.mount("#log-viewer")},742:(e,t)=>{"use strict";t.byteLength=function(e){var t=s(e),n=t[0],r=t[1];return 3*(n+r)/4-r},t.toByteArray=function(e){var t,n,i=s(e),a=i[0],l=i[1],c=new o(function(e,t,n){return 3*(t+n)/4-n}(0,a,l)),u=0,f=l>0?a-4:a;for(n=0;n>16&255,c[u++]=t>>8&255,c[u++]=255&t;2===l&&(t=r[e.charCodeAt(n)]<<2|r[e.charCodeAt(n+1)]>>4,c[u++]=255&t);1===l&&(t=r[e.charCodeAt(n)]<<10|r[e.charCodeAt(n+1)]<<4|r[e.charCodeAt(n+2)]>>2,c[u++]=t>>8&255,c[u++]=255&t);return c},t.fromByteArray=function(e){for(var t,r=e.length,o=r%3,i=[],a=16383,l=0,s=r-o;ls?s:l+a));1===o?(t=e[r-1],i.push(n[t>>2]+n[t<<4&63]+"==")):2===o&&(t=(e[r-2]<<8)+e[r-1],i.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+"="));return i.join("")};for(var n=[],r=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,l=i.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function c(e,t,r){for(var o,i,a=[],l=t;l>18&63]+n[i>>12&63]+n[i>>6&63]+n[63&i]);return a.join("")}r["-".charCodeAt(0)]=62,r["_".charCodeAt(0)]=63},764:(e,t,n)=>{"use strict";var r=n(742),o=n(645),i=n(826);function a(){return s.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function l(e,t){if(a()=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|e}function h(e,t){if(s.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return U(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return $(e).length;default:if(r)return U(e).length;t=(""+t).toLowerCase(),r=!0}}function v(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return T(this,t,n);case"utf8":case"utf-8":return S(this,t,n);case"ascii":return N(this,t,n);case"latin1":case"binary":return P(this,t,n);case"base64":return k(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return V(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function m(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function g(e,t,n,r,o){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=o?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(o)return-1;n=e.length-1}else if(n<0){if(!o)return-1;n=0}if("string"==typeof t&&(t=s.from(t,r)),s.isBuffer(t))return 0===t.length?-1:y(e,t,n,r,o);if("number"==typeof t)return t&=255,s.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):y(e,[t],n,r,o);throw new TypeError("val must be string, number or Buffer")}function y(e,t,n,r,o){var i,a=1,l=e.length,s=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;a=2,l/=2,s/=2,n/=2}function c(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(o){var u=-1;for(i=n;il&&(n=l-s),i=n;i>=0;i--){for(var f=!0,d=0;do&&(r=o):r=o;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var a=0;a>8,o=n%256,i.push(o),i.push(r);return i}(t,e.length-n),e,n,r)}function k(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function S(e,t,n){n=Math.min(e.length,n);for(var r=[],o=t;o239?4:c>223?3:c>191?2:1;if(o+f<=n)switch(f){case 1:c<128&&(u=c);break;case 2:128==(192&(i=e[o+1]))&&(s=(31&c)<<6|63&i)>127&&(u=s);break;case 3:i=e[o+1],a=e[o+2],128==(192&i)&&128==(192&a)&&(s=(15&c)<<12|(63&i)<<6|63&a)>2047&&(s<55296||s>57343)&&(u=s);break;case 4:i=e[o+1],a=e[o+2],l=e[o+3],128==(192&i)&&128==(192&a)&&128==(192&l)&&(s=(15&c)<<18|(63&i)<<12|(63&a)<<6|63&l)>65535&&s<1114112&&(u=s)}null===u?(u=65533,f=1):u>65535&&(u-=65536,r.push(u>>>10&1023|55296),u=56320|1023&u),r.push(u),o+=f}return function(e){var t=e.length;if(t<=O)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),""},s.prototype.compare=function(e,t,n,r,o){if(!s.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),t<0||n>e.length||r<0||o>this.length)throw new RangeError("out of range index");if(r>=o&&t>=n)return 0;if(r>=o)return-1;if(t>=n)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(r>>>=0),a=(n>>>=0)-(t>>>=0),l=Math.min(i,a),c=this.slice(r,o),u=e.slice(t,n),f=0;fo)&&(n=o),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return b(this,e,t,n);case"utf8":case"utf-8":return w(this,e,t,n);case"ascii":return C(this,e,t,n);case"latin1":case"binary":return _(this,e,t,n);case"base64":return E(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return x(this,e,t,n);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},s.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var O=4096;function N(e,t,n){var r="";n=Math.min(e.length,n);for(var o=t;or)&&(n=r);for(var o="",i=t;in)throw new RangeError("Trying to access beyond buffer length")}function L(e,t,n,r,o,i){if(!s.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function A(e,t,n,r){t<0&&(t=65535+t+1);for(var o=0,i=Math.min(e.length-n,2);o>>8*(r?o:1-o)}function j(e,t,n,r){t<0&&(t=4294967295+t+1);for(var o=0,i=Math.min(e.length-n,4);o>>8*(r?o:3-o)&255}function B(e,t,n,r,o,i){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function I(e,t,n,r,i){return i||B(e,0,n,4),o.write(e,t,n,r,23,4),n+4}function M(e,t,n,r,i){return i||B(e,0,n,8),o.write(e,t,n,r,52,8),n+8}s.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t0&&(o*=256);)r+=this[e+--t]*o;return r},s.prototype.readUInt8=function(e,t){return t||R(e,1,this.length),this[e]},s.prototype.readUInt16LE=function(e,t){return t||R(e,2,this.length),this[e]|this[e+1]<<8},s.prototype.readUInt16BE=function(e,t){return t||R(e,2,this.length),this[e]<<8|this[e+1]},s.prototype.readUInt32LE=function(e,t){return t||R(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},s.prototype.readUInt32BE=function(e,t){return t||R(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},s.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||R(e,t,this.length);for(var r=this[e],o=1,i=0;++i=(o*=128)&&(r-=Math.pow(2,8*t)),r},s.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||R(e,t,this.length);for(var r=t,o=1,i=this[e+--r];r>0&&(o*=256);)i+=this[e+--r]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},s.prototype.readInt8=function(e,t){return t||R(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},s.prototype.readInt16LE=function(e,t){t||R(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},s.prototype.readInt16BE=function(e,t){t||R(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},s.prototype.readInt32LE=function(e,t){return t||R(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},s.prototype.readInt32BE=function(e,t){return t||R(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},s.prototype.readFloatLE=function(e,t){return t||R(e,4,this.length),o.read(this,e,!0,23,4)},s.prototype.readFloatBE=function(e,t){return t||R(e,4,this.length),o.read(this,e,!1,23,4)},s.prototype.readDoubleLE=function(e,t){return t||R(e,8,this.length),o.read(this,e,!0,52,8)},s.prototype.readDoubleBE=function(e,t){return t||R(e,8,this.length),o.read(this,e,!1,52,8)},s.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||L(this,e,t,n,Math.pow(2,8*n)-1,0);var o=1,i=0;for(this[t]=255&e;++i=0&&(i*=256);)this[t+o]=e/i&255;return t+n},s.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,1,255,0),s.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},s.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,2,65535,0),s.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):A(this,e,t,!0),t+2},s.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,2,65535,0),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):A(this,e,t,!1),t+2},s.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,4,4294967295,0),s.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):j(this,e,t,!0),t+4},s.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,4,4294967295,0),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):j(this,e,t,!1),t+4},s.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);L(this,e,t,n,o-1,-o)}var i=0,a=1,l=0;for(this[t]=255&e;++i>0)-l&255;return t+n},s.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);L(this,e,t,n,o-1,-o)}var i=n-1,a=1,l=0;for(this[t+i]=255&e;--i>=0&&(a*=256);)e<0&&0===l&&0!==this[t+i+1]&&(l=1),this[t+i]=(e/a>>0)-l&255;return t+n},s.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,1,127,-128),s.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},s.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,2,32767,-32768),s.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):A(this,e,t,!0),t+2},s.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,2,32767,-32768),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):A(this,e,t,!1),t+2},s.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,4,2147483647,-2147483648),s.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):j(this,e,t,!0),t+4},s.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):j(this,e,t,!1),t+4},s.prototype.writeFloatLE=function(e,t,n){return I(this,e,t,!0,n)},s.prototype.writeFloatBE=function(e,t,n){return I(this,e,t,!1,n)},s.prototype.writeDoubleLE=function(e,t,n){return M(this,e,t,!0,n)},s.prototype.writeDoubleBE=function(e,t,n){return M(this,e,t,!1,n)},s.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--o)e[o+t]=this[o+n];else if(i<1e3||!s.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i55295&&n<57344){if(!o){if(n>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(a+1===r){(t-=3)>-1&&i.push(239,191,189);continue}o=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),o=n;continue}n=65536+(o-55296<<10|n-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function $(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(F,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function H(e,t,n,r){for(var o=0;o=t.length||o>=e.length);++o)t[o+n]=e[o];return o}},645:(e,t)=>{t.read=function(e,t,n,r,o){var i,a,l=8*o-r-1,s=(1<>1,u=-7,f=n?o-1:0,d=n?-1:1,p=e[t+f];for(f+=d,i=p&(1<<-u)-1,p>>=-u,u+=l;u>0;i=256*i+e[t+f],f+=d,u-=8);for(a=i&(1<<-u)-1,i>>=-u,u+=r;u>0;a=256*a+e[t+f],f+=d,u-=8);if(0===i)i=1-c;else{if(i===s)return a?NaN:1/0*(p?-1:1);a+=Math.pow(2,r),i-=c}return(p?-1:1)*a*Math.pow(2,i-r)},t.write=function(e,t,n,r,o,i){var a,l,s,c=8*i-o-1,u=(1<>1,d=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?0:i-1,h=r?1:-1,v=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(l=isNaN(t)?1:0,a=u):(a=Math.floor(Math.log(t)/Math.LN2),t*(s=Math.pow(2,-a))<1&&(a--,s*=2),(t+=a+f>=1?d/s:d*Math.pow(2,1-f))*s>=2&&(a++,s/=2),a+f>=u?(l=0,a=u):a+f>=1?(l=(t*s-1)*Math.pow(2,o),a+=f):(l=t*Math.pow(2,f-1)*Math.pow(2,o),a=0));o>=8;e[n+p]=255&l,p+=h,l/=256,o-=8);for(a=a<0;e[n+p]=255&a,p+=h,a/=256,c-=8);e[n+p-h]|=128*v}},826:e=>{var t={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==t.call(e)}},486:function(e,t,n){var r;e=n.nmd(e),function(){var o,i=200,a="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",l="Expected a function",s="Invalid `variable` option passed into `_.template`",c="__lodash_hash_undefined__",u=500,f="__lodash_placeholder__",d=1,p=2,h=4,v=1,m=2,g=1,y=2,b=4,w=8,C=16,_=32,E=64,x=128,k=256,S=512,O=30,N="...",P=800,T=16,V=1,R=2,L=1/0,A=9007199254740991,j=17976931348623157e292,B=NaN,I=4294967295,M=I-1,F=I>>>1,D=[["ary",x],["bind",g],["bindKey",y],["curry",w],["curryRight",C],["flip",S],["partial",_],["partialRight",E],["rearg",k]],U="[object Arguments]",$="[object Array]",H="[object AsyncFunction]",z="[object Boolean]",q="[object Date]",W="[object DOMException]",K="[object Error]",G="[object Function]",Z="[object GeneratorFunction]",Y="[object Map]",J="[object Number]",Q="[object Null]",X="[object Object]",ee="[object Promise]",te="[object Proxy]",ne="[object RegExp]",re="[object Set]",oe="[object String]",ie="[object Symbol]",ae="[object Undefined]",le="[object WeakMap]",se="[object WeakSet]",ce="[object ArrayBuffer]",ue="[object DataView]",fe="[object Float32Array]",de="[object Float64Array]",pe="[object Int8Array]",he="[object Int16Array]",ve="[object Int32Array]",me="[object Uint8Array]",ge="[object Uint8ClampedArray]",ye="[object Uint16Array]",be="[object Uint32Array]",we=/\b__p \+= '';/g,Ce=/\b(__p \+=) '' \+/g,_e=/(__e\(.*?\)|\b__t\)) \+\n'';/g,Ee=/&(?:amp|lt|gt|quot|#39);/g,xe=/[&<>"']/g,ke=RegExp(Ee.source),Se=RegExp(xe.source),Oe=/<%-([\s\S]+?)%>/g,Ne=/<%([\s\S]+?)%>/g,Pe=/<%=([\s\S]+?)%>/g,Te=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ve=/^\w*$/,Re=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Le=/[\\^$.*+?()[\]{}|]/g,Ae=RegExp(Le.source),je=/^\s+/,Be=/\s/,Ie=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Me=/\{\n\/\* \[wrapped with (.+)\] \*/,Fe=/,? & /,De=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Ue=/[()=,{}\[\]\/\s]/,$e=/\\(\\)?/g,He=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,ze=/\w*$/,qe=/^[-+]0x[0-9a-f]+$/i,We=/^0b[01]+$/i,Ke=/^\[object .+?Constructor\]$/,Ge=/^0o[0-7]+$/i,Ze=/^(?:0|[1-9]\d*)$/,Ye=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Je=/($^)/,Qe=/['\n\r\u2028\u2029\\]/g,Xe="\\ud800-\\udfff",et="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",tt="\\u2700-\\u27bf",nt="a-z\\xdf-\\xf6\\xf8-\\xff",rt="A-Z\\xc0-\\xd6\\xd8-\\xde",ot="\\ufe0e\\ufe0f",it="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",at="['’]",lt="["+Xe+"]",st="["+it+"]",ct="["+et+"]",ut="\\d+",ft="["+tt+"]",dt="["+nt+"]",pt="[^"+Xe+it+ut+tt+nt+rt+"]",ht="\\ud83c[\\udffb-\\udfff]",vt="[^"+Xe+"]",mt="(?:\\ud83c[\\udde6-\\uddff]){2}",gt="[\\ud800-\\udbff][\\udc00-\\udfff]",yt="["+rt+"]",bt="\\u200d",wt="(?:"+dt+"|"+pt+")",Ct="(?:"+yt+"|"+pt+")",_t="(?:['’](?:d|ll|m|re|s|t|ve))?",Et="(?:['’](?:D|LL|M|RE|S|T|VE))?",xt="(?:"+ct+"|"+ht+")"+"?",kt="["+ot+"]?",St=kt+xt+("(?:"+bt+"(?:"+[vt,mt,gt].join("|")+")"+kt+xt+")*"),Ot="(?:"+[ft,mt,gt].join("|")+")"+St,Nt="(?:"+[vt+ct+"?",ct,mt,gt,lt].join("|")+")",Pt=RegExp(at,"g"),Tt=RegExp(ct,"g"),Vt=RegExp(ht+"(?="+ht+")|"+Nt+St,"g"),Rt=RegExp([yt+"?"+dt+"+"+_t+"(?="+[st,yt,"$"].join("|")+")",Ct+"+"+Et+"(?="+[st,yt+wt,"$"].join("|")+")",yt+"?"+wt+"+"+_t,yt+"+"+Et,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",ut,Ot].join("|"),"g"),Lt=RegExp("["+bt+Xe+et+ot+"]"),At=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,jt=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Bt=-1,It={};It[fe]=It[de]=It[pe]=It[he]=It[ve]=It[me]=It[ge]=It[ye]=It[be]=!0,It[U]=It[$]=It[ce]=It[z]=It[ue]=It[q]=It[K]=It[G]=It[Y]=It[J]=It[X]=It[ne]=It[re]=It[oe]=It[le]=!1;var Mt={};Mt[U]=Mt[$]=Mt[ce]=Mt[ue]=Mt[z]=Mt[q]=Mt[fe]=Mt[de]=Mt[pe]=Mt[he]=Mt[ve]=Mt[Y]=Mt[J]=Mt[X]=Mt[ne]=Mt[re]=Mt[oe]=Mt[ie]=Mt[me]=Mt[ge]=Mt[ye]=Mt[be]=!0,Mt[K]=Mt[G]=Mt[le]=!1;var Ft={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Dt=parseFloat,Ut=parseInt,$t="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,Ht="object"==typeof self&&self&&self.Object===Object&&self,zt=$t||Ht||Function("return this")(),qt=t&&!t.nodeType&&t,Wt=qt&&e&&!e.nodeType&&e,Kt=Wt&&Wt.exports===qt,Gt=Kt&&$t.process,Zt=function(){try{var e=Wt&&Wt.require&&Wt.require("util").types;return e||Gt&&Gt.binding&&Gt.binding("util")}catch(e){}}(),Yt=Zt&&Zt.isArrayBuffer,Jt=Zt&&Zt.isDate,Qt=Zt&&Zt.isMap,Xt=Zt&&Zt.isRegExp,en=Zt&&Zt.isSet,tn=Zt&&Zt.isTypedArray;function nn(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function rn(e,t,n,r){for(var o=-1,i=null==e?0:e.length;++o-1}function un(e,t,n){for(var r=-1,o=null==e?0:e.length;++r-1;);return n}function Ln(e,t){for(var n=e.length;n--&&bn(t,e[n],0)>-1;);return n}var An=xn({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"}),jn=xn({"&":"&","<":"<",">":">",'"':""","'":"'"});function Bn(e){return"\\"+Ft[e]}function In(e){return Lt.test(e)}function Mn(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}function Fn(e,t){return function(n){return e(t(n))}}function Dn(e,t){for(var n=-1,r=e.length,o=0,i=[];++n",""":'"',"'":"'"});var Kn=function e(t){var n,r=(t=null==t?zt:Kn.defaults(zt.Object(),t,Kn.pick(zt,jt))).Array,Be=t.Date,Xe=t.Error,et=t.Function,tt=t.Math,nt=t.Object,rt=t.RegExp,ot=t.String,it=t.TypeError,at=r.prototype,lt=et.prototype,st=nt.prototype,ct=t["__core-js_shared__"],ut=lt.toString,ft=st.hasOwnProperty,dt=0,pt=(n=/[^.]+$/.exec(ct&&ct.keys&&ct.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",ht=st.toString,vt=ut.call(nt),mt=zt._,gt=rt("^"+ut.call(ft).replace(Le,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),yt=Kt?t.Buffer:o,bt=t.Symbol,wt=t.Uint8Array,Ct=yt?yt.allocUnsafe:o,_t=Fn(nt.getPrototypeOf,nt),Et=nt.create,xt=st.propertyIsEnumerable,kt=at.splice,St=bt?bt.isConcatSpreadable:o,Ot=bt?bt.iterator:o,Nt=bt?bt.toStringTag:o,Vt=function(){try{var e=$i(nt,"defineProperty");return e({},"",{}),e}catch(e){}}(),Lt=t.clearTimeout!==zt.clearTimeout&&t.clearTimeout,Ft=Be&&Be.now!==zt.Date.now&&Be.now,$t=t.setTimeout!==zt.setTimeout&&t.setTimeout,Ht=tt.ceil,qt=tt.floor,Wt=nt.getOwnPropertySymbols,Gt=yt?yt.isBuffer:o,Zt=t.isFinite,mn=at.join,xn=Fn(nt.keys,nt),Gn=tt.max,Zn=tt.min,Yn=Be.now,Jn=t.parseInt,Qn=tt.random,Xn=at.reverse,er=$i(t,"DataView"),tr=$i(t,"Map"),nr=$i(t,"Promise"),rr=$i(t,"Set"),or=$i(t,"WeakMap"),ir=$i(nt,"create"),ar=or&&new or,lr={},sr=ha(er),cr=ha(tr),ur=ha(nr),fr=ha(rr),dr=ha(or),pr=bt?bt.prototype:o,hr=pr?pr.valueOf:o,vr=pr?pr.toString:o;function mr(e){if(Vl(e)&&!wl(e)&&!(e instanceof wr)){if(e instanceof br)return e;if(ft.call(e,"__wrapped__"))return va(e)}return new br(e)}var gr=function(){function e(){}return function(t){if(!Tl(t))return{};if(Et)return Et(t);e.prototype=t;var n=new e;return e.prototype=o,n}}();function yr(){}function br(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=o}function wr(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=I,this.__views__=[]}function Cr(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t=t?e:t)),e}function Mr(e,t,n,r,i,a){var l,s=t&d,c=t&p,u=t&h;if(n&&(l=i?n(e,r,i,a):n(e)),l!==o)return l;if(!Tl(e))return e;var f=wl(e);if(f){if(l=function(e){var t=e.length,n=new e.constructor(t);t&&"string"==typeof e[0]&&ft.call(e,"index")&&(n.index=e.index,n.input=e.input);return n}(e),!s)return ai(e,l)}else{var v=qi(e),m=v==G||v==Z;if(xl(e))return ei(e,s);if(v==X||v==U||m&&!i){if(l=c||m?{}:Ki(e),!s)return c?function(e,t){return li(e,zi(e),t)}(e,function(e,t){return e&&li(t,ss(t),e)}(l,e)):function(e,t){return li(e,Hi(e),t)}(e,Ar(l,e))}else{if(!Mt[v])return i?e:{};l=function(e,t,n){var r=e.constructor;switch(t){case ce:return ti(e);case z:case q:return new r(+e);case ue:return function(e,t){var n=t?ti(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case fe:case de:case pe:case he:case ve:case me:case ge:case ye:case be:return ni(e,n);case Y:return new r;case J:case oe:return new r(e);case ne:return function(e){var t=new e.constructor(e.source,ze.exec(e));return t.lastIndex=e.lastIndex,t}(e);case re:return new r;case ie:return o=e,hr?nt(hr.call(o)):{}}var o}(e,v,s)}}a||(a=new kr);var g=a.get(e);if(g)return g;a.set(e,l),Bl(e)?e.forEach((function(r){l.add(Mr(r,t,n,r,e,a))})):Rl(e)&&e.forEach((function(r,o){l.set(o,Mr(r,t,n,o,e,a))}));var y=f?o:(u?c?ji:Ai:c?ss:ls)(e);return on(y||e,(function(r,o){y&&(r=e[o=r]),Vr(l,o,Mr(r,t,n,o,e,a))})),l}function Fr(e,t,n){var r=n.length;if(null==e)return!r;for(e=nt(e);r--;){var i=n[r],a=t[i],l=e[i];if(l===o&&!(i in e)||!a(l))return!1}return!0}function Dr(e,t,n){if("function"!=typeof e)throw new it(l);return la((function(){e.apply(o,n)}),t)}function Ur(e,t,n,r){var o=-1,a=cn,l=!0,s=e.length,c=[],u=t.length;if(!s)return c;n&&(t=fn(t,Pn(n))),r?(a=un,l=!1):t.length>=i&&(a=Vn,l=!1,t=new xr(t));e:for(;++o-1},_r.prototype.set=function(e,t){var n=this.__data__,r=Rr(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},Er.prototype.clear=function(){this.size=0,this.__data__={hash:new Cr,map:new(tr||_r),string:new Cr}},Er.prototype.delete=function(e){var t=Di(this,e).delete(e);return this.size-=t?1:0,t},Er.prototype.get=function(e){return Di(this,e).get(e)},Er.prototype.has=function(e){return Di(this,e).has(e)},Er.prototype.set=function(e,t){var n=Di(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},xr.prototype.add=xr.prototype.push=function(e){return this.__data__.set(e,c),this},xr.prototype.has=function(e){return this.__data__.has(e)},kr.prototype.clear=function(){this.__data__=new _r,this.size=0},kr.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},kr.prototype.get=function(e){return this.__data__.get(e)},kr.prototype.has=function(e){return this.__data__.has(e)},kr.prototype.set=function(e,t){var n=this.__data__;if(n instanceof _r){var r=n.__data__;if(!tr||r.length0&&n(l)?t>1?Kr(l,t-1,n,r,o):dn(o,l):r||(o[o.length]=l)}return o}var Gr=fi(),Zr=fi(!0);function Yr(e,t){return e&&Gr(e,t,ls)}function Jr(e,t){return e&&Zr(e,t,ls)}function Qr(e,t){return sn(t,(function(t){return Ol(e[t])}))}function Xr(e,t){for(var n=0,r=(t=Yo(t,e)).length;null!=e&&nt}function ro(e,t){return null!=e&&ft.call(e,t)}function oo(e,t){return null!=e&&t in nt(e)}function io(e,t,n){for(var i=n?un:cn,a=e[0].length,l=e.length,s=l,c=r(l),u=1/0,f=[];s--;){var d=e[s];s&&t&&(d=fn(d,Pn(t))),u=Zn(d.length,u),c[s]=!n&&(t||a>=120&&d.length>=120)?new xr(s&&d):o}d=e[0];var p=-1,h=c[0];e:for(;++p=l?s:s*("desc"==n[r]?-1:1)}return e.index-t.index}(e,t,n)}))}function _o(e,t,n){for(var r=-1,o=t.length,i={};++r-1;)l!==e&&kt.call(l,s,1),kt.call(e,s,1);return e}function xo(e,t){for(var n=e?t.length:0,r=n-1;n--;){var o=t[n];if(n==r||o!==i){var i=o;Zi(o)?kt.call(e,o,1):$o(e,o)}}return e}function ko(e,t){return e+qt(Qn()*(t-e+1))}function So(e,t){var n="";if(!e||t<1||t>A)return n;do{t%2&&(n+=e),(t=qt(t/2))&&(e+=e)}while(t);return n}function Oo(e,t){return sa(ra(e,t,Ls),e+"")}function No(e){return Or(ms(e))}function Po(e,t){var n=ms(e);return fa(n,Ir(t,0,n.length))}function To(e,t,n,r){if(!Tl(e))return e;for(var i=-1,a=(t=Yo(t,e)).length,l=a-1,s=e;null!=s&&++ii?0:i+t),(n=n>i?i:n)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var a=r(i);++o>>1,a=e[i];null!==a&&!Ml(a)&&(n?a<=t:a=i){var u=t?null:Si(e);if(u)return Un(u);l=!1,o=Vn,c=new xr}else c=t?[]:s;e:for(;++r=r?e:Ao(e,t,n)}var Xo=Lt||function(e){return zt.clearTimeout(e)};function ei(e,t){if(t)return e.slice();var n=e.length,r=Ct?Ct(n):new e.constructor(n);return e.copy(r),r}function ti(e){var t=new e.constructor(e.byteLength);return new wt(t).set(new wt(e)),t}function ni(e,t){var n=t?ti(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function ri(e,t){if(e!==t){var n=e!==o,r=null===e,i=e==e,a=Ml(e),l=t!==o,s=null===t,c=t==t,u=Ml(t);if(!s&&!u&&!a&&e>t||a&&l&&c&&!s&&!u||r&&l&&c||!n&&c||!i)return 1;if(!r&&!a&&!u&&e1?n[i-1]:o,l=i>2?n[2]:o;for(a=e.length>3&&"function"==typeof a?(i--,a):o,l&&Yi(n[0],n[1],l)&&(a=i<3?o:a,i=1),t=nt(t);++r-1?i[a?t[l]:l]:o}}function mi(e){return Li((function(t){var n=t.length,r=n,i=br.prototype.thru;for(e&&t.reverse();r--;){var a=t[r];if("function"!=typeof a)throw new it(l);if(i&&!s&&"wrapper"==Ii(a))var s=new br([],!0)}for(r=s?r:n;++r1&&w.reverse(),d&&us))return!1;var u=a.get(e),f=a.get(t);if(u&&f)return u==t&&f==e;var d=-1,p=!0,h=n&m?new xr:o;for(a.set(e,t),a.set(t,e);++d-1&&e%1==0&&e1?"& ":"")+t[r],t=t.join(n>2?", ":" "),e.replace(Ie,"{\n/* [wrapped with "+t+"] */\n")}(r,function(e,t){return on(D,(function(n){var r="_."+n[0];t&n[1]&&!cn(e,r)&&e.push(r)})),e.sort()}(function(e){var t=e.match(Me);return t?t[1].split(Fe):[]}(r),n)))}function ua(e){var t=0,n=0;return function(){var r=Yn(),i=T-(r-n);if(n=r,i>0){if(++t>=P)return arguments[0]}else t=0;return e.apply(o,arguments)}}function fa(e,t){var n=-1,r=e.length,i=r-1;for(t=t===o?r:t;++n1?e[t-1]:o;return n="function"==typeof n?(e.pop(),n):o,ja(e,n)}));function $a(e){var t=mr(e);return t.__chain__=!0,t}function Ha(e,t){return t(e)}var za=Li((function(e){var t=e.length,n=t?e[0]:0,r=this.__wrapped__,i=function(t){return Br(t,e)};return!(t>1||this.__actions__.length)&&r instanceof wr&&Zi(n)?((r=r.slice(n,+n+(t?1:0))).__actions__.push({func:Ha,args:[i],thisArg:o}),new br(r,this.__chain__).thru((function(e){return t&&!e.length&&e.push(o),e}))):this.thru(i)}));var qa=si((function(e,t,n){ft.call(e,n)?++e[n]:jr(e,n,1)}));var Wa=vi(ba),Ka=vi(wa);function Ga(e,t){return(wl(e)?on:$r)(e,Fi(t,3))}function Za(e,t){return(wl(e)?an:Hr)(e,Fi(t,3))}var Ya=si((function(e,t,n){ft.call(e,n)?e[n].push(t):jr(e,n,[t])}));var Ja=Oo((function(e,t,n){var o=-1,i="function"==typeof t,a=_l(e)?r(e.length):[];return $r(e,(function(e){a[++o]=i?nn(t,e,n):ao(e,t,n)})),a})),Qa=si((function(e,t,n){jr(e,n,t)}));function Xa(e,t){return(wl(e)?fn:mo)(e,Fi(t,3))}var el=si((function(e,t,n){e[n?0:1].push(t)}),(function(){return[[],[]]}));var tl=Oo((function(e,t){if(null==e)return[];var n=t.length;return n>1&&Yi(e,t[0],t[1])?t=[]:n>2&&Yi(t[0],t[1],t[2])&&(t=[t[0]]),Co(e,Kr(t,1),[])})),nl=Ft||function(){return zt.Date.now()};function rl(e,t,n){return t=n?o:t,t=e&&null==t?e.length:t,Ni(e,x,o,o,o,o,t)}function ol(e,t){var n;if("function"!=typeof t)throw new it(l);return e=zl(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=o),n}}var il=Oo((function(e,t,n){var r=g;if(n.length){var o=Dn(n,Mi(il));r|=_}return Ni(e,r,t,n,o)})),al=Oo((function(e,t,n){var r=g|y;if(n.length){var o=Dn(n,Mi(al));r|=_}return Ni(t,r,e,n,o)}));function ll(e,t,n){var r,i,a,s,c,u,f=0,d=!1,p=!1,h=!0;if("function"!=typeof e)throw new it(l);function v(t){var n=r,a=i;return r=i=o,f=t,s=e.apply(a,n)}function m(e){var n=e-u;return u===o||n>=t||n<0||p&&e-f>=a}function g(){var e=nl();if(m(e))return y(e);c=la(g,function(e){var n=t-(e-u);return p?Zn(n,a-(e-f)):n}(e))}function y(e){return c=o,h&&r?v(e):(r=i=o,s)}function b(){var e=nl(),n=m(e);if(r=arguments,i=this,u=e,n){if(c===o)return function(e){return f=e,c=la(g,t),d?v(e):s}(u);if(p)return Xo(c),c=la(g,t),v(u)}return c===o&&(c=la(g,t)),s}return t=Wl(t)||0,Tl(n)&&(d=!!n.leading,a=(p="maxWait"in n)?Gn(Wl(n.maxWait)||0,t):a,h="trailing"in n?!!n.trailing:h),b.cancel=function(){c!==o&&Xo(c),f=0,r=u=i=c=o},b.flush=function(){return c===o?s:y(nl())},b}var sl=Oo((function(e,t){return Dr(e,1,t)})),cl=Oo((function(e,t,n){return Dr(e,Wl(t)||0,n)}));function ul(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new it(l);var n=function(){var r=arguments,o=t?t.apply(this,r):r[0],i=n.cache;if(i.has(o))return i.get(o);var a=e.apply(this,r);return n.cache=i.set(o,a)||i,a};return n.cache=new(ul.Cache||Er),n}function fl(e){if("function"!=typeof e)throw new it(l);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}ul.Cache=Er;var dl=Jo((function(e,t){var n=(t=1==t.length&&wl(t[0])?fn(t[0],Pn(Fi())):fn(Kr(t,1),Pn(Fi()))).length;return Oo((function(r){for(var o=-1,i=Zn(r.length,n);++o=t})),bl=lo(function(){return arguments}())?lo:function(e){return Vl(e)&&ft.call(e,"callee")&&!xt.call(e,"callee")},wl=r.isArray,Cl=Yt?Pn(Yt):function(e){return Vl(e)&&to(e)==ce};function _l(e){return null!=e&&Pl(e.length)&&!Ol(e)}function El(e){return Vl(e)&&_l(e)}var xl=Gt||Ws,kl=Jt?Pn(Jt):function(e){return Vl(e)&&to(e)==q};function Sl(e){if(!Vl(e))return!1;var t=to(e);return t==K||t==W||"string"==typeof e.message&&"string"==typeof e.name&&!Al(e)}function Ol(e){if(!Tl(e))return!1;var t=to(e);return t==G||t==Z||t==H||t==te}function Nl(e){return"number"==typeof e&&e==zl(e)}function Pl(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=A}function Tl(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Vl(e){return null!=e&&"object"==typeof e}var Rl=Qt?Pn(Qt):function(e){return Vl(e)&&qi(e)==Y};function Ll(e){return"number"==typeof e||Vl(e)&&to(e)==J}function Al(e){if(!Vl(e)||to(e)!=X)return!1;var t=_t(e);if(null===t)return!0;var n=ft.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&ut.call(n)==vt}var jl=Xt?Pn(Xt):function(e){return Vl(e)&&to(e)==ne};var Bl=en?Pn(en):function(e){return Vl(e)&&qi(e)==re};function Il(e){return"string"==typeof e||!wl(e)&&Vl(e)&&to(e)==oe}function Ml(e){return"symbol"==typeof e||Vl(e)&&to(e)==ie}var Fl=tn?Pn(tn):function(e){return Vl(e)&&Pl(e.length)&&!!It[to(e)]};var Dl=Ei(vo),Ul=Ei((function(e,t){return e<=t}));function $l(e){if(!e)return[];if(_l(e))return Il(e)?zn(e):ai(e);if(Ot&&e[Ot])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[Ot]());var t=qi(e);return(t==Y?Mn:t==re?Un:ms)(e)}function Hl(e){return e?(e=Wl(e))===L||e===-L?(e<0?-1:1)*j:e==e?e:0:0===e?e:0}function zl(e){var t=Hl(e),n=t%1;return t==t?n?t-n:t:0}function ql(e){return e?Ir(zl(e),0,I):0}function Wl(e){if("number"==typeof e)return e;if(Ml(e))return B;if(Tl(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Tl(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=Nn(e);var n=We.test(e);return n||Ge.test(e)?Ut(e.slice(2),n?2:8):qe.test(e)?B:+e}function Kl(e){return li(e,ss(e))}function Gl(e){return null==e?"":Do(e)}var Zl=ci((function(e,t){if(ea(t)||_l(t))li(t,ls(t),e);else for(var n in t)ft.call(t,n)&&Vr(e,n,t[n])})),Yl=ci((function(e,t){li(t,ss(t),e)})),Jl=ci((function(e,t,n,r){li(t,ss(t),e,r)})),Ql=ci((function(e,t,n,r){li(t,ls(t),e,r)})),Xl=Li(Br);var es=Oo((function(e,t){e=nt(e);var n=-1,r=t.length,i=r>2?t[2]:o;for(i&&Yi(t[0],t[1],i)&&(r=1);++n1),t})),li(e,ji(e),n),r&&(n=Mr(n,d|p|h,Vi));for(var o=t.length;o--;)$o(n,t[o]);return n}));var ds=Li((function(e,t){return null==e?{}:function(e,t){return _o(e,t,(function(t,n){return rs(e,n)}))}(e,t)}));function ps(e,t){if(null==e)return{};var n=fn(ji(e),(function(e){return[e]}));return t=Fi(t),_o(e,n,(function(e,n){return t(e,n[0])}))}var hs=Oi(ls),vs=Oi(ss);function ms(e){return null==e?[]:Tn(e,ls(e))}var gs=pi((function(e,t,n){return t=t.toLowerCase(),e+(n?ys(t):t)}));function ys(e){return Ss(Gl(e).toLowerCase())}function bs(e){return(e=Gl(e))&&e.replace(Ye,An).replace(Tt,"")}var ws=pi((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()})),Cs=pi((function(e,t,n){return e+(n?" ":"")+t.toLowerCase()})),_s=di("toLowerCase");var Es=pi((function(e,t,n){return e+(n?"_":"")+t.toLowerCase()}));var xs=pi((function(e,t,n){return e+(n?" ":"")+Ss(t)}));var ks=pi((function(e,t,n){return e+(n?" ":"")+t.toUpperCase()})),Ss=di("toUpperCase");function Os(e,t,n){return e=Gl(e),(t=n?o:t)===o?function(e){return At.test(e)}(e)?function(e){return e.match(Rt)||[]}(e):function(e){return e.match(De)||[]}(e):e.match(t)||[]}var Ns=Oo((function(e,t){try{return nn(e,o,t)}catch(e){return Sl(e)?e:new Xe(e)}})),Ps=Li((function(e,t){return on(t,(function(t){t=pa(t),jr(e,t,il(e[t],e))})),e}));function Ts(e){return function(){return e}}var Vs=mi(),Rs=mi(!0);function Ls(e){return e}function As(e){return fo("function"==typeof e?e:Mr(e,d))}var js=Oo((function(e,t){return function(n){return ao(n,e,t)}})),Bs=Oo((function(e,t){return function(n){return ao(e,n,t)}}));function Is(e,t,n){var r=ls(t),o=Qr(t,r);null!=n||Tl(t)&&(o.length||!r.length)||(n=t,t=e,e=this,o=Qr(t,ls(t)));var i=!(Tl(n)&&"chain"in n&&!n.chain),a=Ol(e);return on(o,(function(n){var r=t[n];e[n]=r,a&&(e.prototype[n]=function(){var t=this.__chain__;if(i||t){var n=e(this.__wrapped__);return(n.__actions__=ai(this.__actions__)).push({func:r,args:arguments,thisArg:e}),n.__chain__=t,n}return r.apply(e,dn([this.value()],arguments))})})),e}function Ms(){}var Fs=wi(fn),Ds=wi(ln),Us=wi(vn);function $s(e){return Ji(e)?En(pa(e)):function(e){return function(t){return Xr(t,e)}}(e)}var Hs=_i(),zs=_i(!0);function qs(){return[]}function Ws(){return!1}var Ks=bi((function(e,t){return e+t}),0),Gs=ki("ceil"),Zs=bi((function(e,t){return e/t}),1),Ys=ki("floor");var Js,Qs=bi((function(e,t){return e*t}),1),Xs=ki("round"),ec=bi((function(e,t){return e-t}),0);return mr.after=function(e,t){if("function"!=typeof t)throw new it(l);return e=zl(e),function(){if(--e<1)return t.apply(this,arguments)}},mr.ary=rl,mr.assign=Zl,mr.assignIn=Yl,mr.assignInWith=Jl,mr.assignWith=Ql,mr.at=Xl,mr.before=ol,mr.bind=il,mr.bindAll=Ps,mr.bindKey=al,mr.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return wl(e)?e:[e]},mr.chain=$a,mr.chunk=function(e,t,n){t=(n?Yi(e,t,n):t===o)?1:Gn(zl(t),0);var i=null==e?0:e.length;if(!i||t<1)return[];for(var a=0,l=0,s=r(Ht(i/t));ai?0:i+n),(r=r===o||r>i?i:zl(r))<0&&(r+=i),r=n>r?0:ql(r);n>>0)?(e=Gl(e))&&("string"==typeof t||null!=t&&!jl(t))&&!(t=Do(t))&&In(e)?Qo(zn(e),0,n):e.split(t,n):[]},mr.spread=function(e,t){if("function"!=typeof e)throw new it(l);return t=null==t?0:Gn(zl(t),0),Oo((function(n){var r=n[t],o=Qo(n,0,t);return r&&dn(o,r),nn(e,this,o)}))},mr.tail=function(e){var t=null==e?0:e.length;return t?Ao(e,1,t):[]},mr.take=function(e,t,n){return e&&e.length?Ao(e,0,(t=n||t===o?1:zl(t))<0?0:t):[]},mr.takeRight=function(e,t,n){var r=null==e?0:e.length;return r?Ao(e,(t=r-(t=n||t===o?1:zl(t)))<0?0:t,r):[]},mr.takeRightWhile=function(e,t){return e&&e.length?zo(e,Fi(t,3),!1,!0):[]},mr.takeWhile=function(e,t){return e&&e.length?zo(e,Fi(t,3)):[]},mr.tap=function(e,t){return t(e),e},mr.throttle=function(e,t,n){var r=!0,o=!0;if("function"!=typeof e)throw new it(l);return Tl(n)&&(r="leading"in n?!!n.leading:r,o="trailing"in n?!!n.trailing:o),ll(e,t,{leading:r,maxWait:t,trailing:o})},mr.thru=Ha,mr.toArray=$l,mr.toPairs=hs,mr.toPairsIn=vs,mr.toPath=function(e){return wl(e)?fn(e,pa):Ml(e)?[e]:ai(da(Gl(e)))},mr.toPlainObject=Kl,mr.transform=function(e,t,n){var r=wl(e),o=r||xl(e)||Fl(e);if(t=Fi(t,4),null==n){var i=e&&e.constructor;n=o?r?new i:[]:Tl(e)&&Ol(i)?gr(_t(e)):{}}return(o?on:Yr)(e,(function(e,r,o){return t(n,e,r,o)})),n},mr.unary=function(e){return rl(e,1)},mr.union=Va,mr.unionBy=Ra,mr.unionWith=La,mr.uniq=function(e){return e&&e.length?Uo(e):[]},mr.uniqBy=function(e,t){return e&&e.length?Uo(e,Fi(t,2)):[]},mr.uniqWith=function(e,t){return t="function"==typeof t?t:o,e&&e.length?Uo(e,o,t):[]},mr.unset=function(e,t){return null==e||$o(e,t)},mr.unzip=Aa,mr.unzipWith=ja,mr.update=function(e,t,n){return null==e?e:Ho(e,t,Zo(n))},mr.updateWith=function(e,t,n,r){return r="function"==typeof r?r:o,null==e?e:Ho(e,t,Zo(n),r)},mr.values=ms,mr.valuesIn=function(e){return null==e?[]:Tn(e,ss(e))},mr.without=Ba,mr.words=Os,mr.wrap=function(e,t){return pl(Zo(t),e)},mr.xor=Ia,mr.xorBy=Ma,mr.xorWith=Fa,mr.zip=Da,mr.zipObject=function(e,t){return Ko(e||[],t||[],Vr)},mr.zipObjectDeep=function(e,t){return Ko(e||[],t||[],To)},mr.zipWith=Ua,mr.entries=hs,mr.entriesIn=vs,mr.extend=Yl,mr.extendWith=Jl,Is(mr,mr),mr.add=Ks,mr.attempt=Ns,mr.camelCase=gs,mr.capitalize=ys,mr.ceil=Gs,mr.clamp=function(e,t,n){return n===o&&(n=t,t=o),n!==o&&(n=(n=Wl(n))==n?n:0),t!==o&&(t=(t=Wl(t))==t?t:0),Ir(Wl(e),t,n)},mr.clone=function(e){return Mr(e,h)},mr.cloneDeep=function(e){return Mr(e,d|h)},mr.cloneDeepWith=function(e,t){return Mr(e,d|h,t="function"==typeof t?t:o)},mr.cloneWith=function(e,t){return Mr(e,h,t="function"==typeof t?t:o)},mr.conformsTo=function(e,t){return null==t||Fr(e,t,ls(t))},mr.deburr=bs,mr.defaultTo=function(e,t){return null==e||e!=e?t:e},mr.divide=Zs,mr.endsWith=function(e,t,n){e=Gl(e),t=Do(t);var r=e.length,i=n=n===o?r:Ir(zl(n),0,r);return(n-=t.length)>=0&&e.slice(n,i)==t},mr.eq=ml,mr.escape=function(e){return(e=Gl(e))&&Se.test(e)?e.replace(xe,jn):e},mr.escapeRegExp=function(e){return(e=Gl(e))&&Ae.test(e)?e.replace(Le,"\\$&"):e},mr.every=function(e,t,n){var r=wl(e)?ln:zr;return n&&Yi(e,t,n)&&(t=o),r(e,Fi(t,3))},mr.find=Wa,mr.findIndex=ba,mr.findKey=function(e,t){return gn(e,Fi(t,3),Yr)},mr.findLast=Ka,mr.findLastIndex=wa,mr.findLastKey=function(e,t){return gn(e,Fi(t,3),Jr)},mr.floor=Ys,mr.forEach=Ga,mr.forEachRight=Za,mr.forIn=function(e,t){return null==e?e:Gr(e,Fi(t,3),ss)},mr.forInRight=function(e,t){return null==e?e:Zr(e,Fi(t,3),ss)},mr.forOwn=function(e,t){return e&&Yr(e,Fi(t,3))},mr.forOwnRight=function(e,t){return e&&Jr(e,Fi(t,3))},mr.get=ns,mr.gt=gl,mr.gte=yl,mr.has=function(e,t){return null!=e&&Wi(e,t,ro)},mr.hasIn=rs,mr.head=_a,mr.identity=Ls,mr.includes=function(e,t,n,r){e=_l(e)?e:ms(e),n=n&&!r?zl(n):0;var o=e.length;return n<0&&(n=Gn(o+n,0)),Il(e)?n<=o&&e.indexOf(t,n)>-1:!!o&&bn(e,t,n)>-1},mr.indexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var o=null==n?0:zl(n);return o<0&&(o=Gn(r+o,0)),bn(e,t,o)},mr.inRange=function(e,t,n){return t=Hl(t),n===o?(n=t,t=0):n=Hl(n),function(e,t,n){return e>=Zn(t,n)&&e=-A&&e<=A},mr.isSet=Bl,mr.isString=Il,mr.isSymbol=Ml,mr.isTypedArray=Fl,mr.isUndefined=function(e){return e===o},mr.isWeakMap=function(e){return Vl(e)&&qi(e)==le},mr.isWeakSet=function(e){return Vl(e)&&to(e)==se},mr.join=function(e,t){return null==e?"":mn.call(e,t)},mr.kebabCase=ws,mr.last=Sa,mr.lastIndexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r;return n!==o&&(i=(i=zl(n))<0?Gn(r+i,0):Zn(i,r-1)),t==t?function(e,t,n){for(var r=n+1;r--;)if(e[r]===t)return r;return r}(e,t,i):yn(e,Cn,i,!0)},mr.lowerCase=Cs,mr.lowerFirst=_s,mr.lt=Dl,mr.lte=Ul,mr.max=function(e){return e&&e.length?qr(e,Ls,no):o},mr.maxBy=function(e,t){return e&&e.length?qr(e,Fi(t,2),no):o},mr.mean=function(e){return _n(e,Ls)},mr.meanBy=function(e,t){return _n(e,Fi(t,2))},mr.min=function(e){return e&&e.length?qr(e,Ls,vo):o},mr.minBy=function(e,t){return e&&e.length?qr(e,Fi(t,2),vo):o},mr.stubArray=qs,mr.stubFalse=Ws,mr.stubObject=function(){return{}},mr.stubString=function(){return""},mr.stubTrue=function(){return!0},mr.multiply=Qs,mr.nth=function(e,t){return e&&e.length?wo(e,zl(t)):o},mr.noConflict=function(){return zt._===this&&(zt._=mt),this},mr.noop=Ms,mr.now=nl,mr.pad=function(e,t,n){e=Gl(e);var r=(t=zl(t))?Hn(e):0;if(!t||r>=t)return e;var o=(t-r)/2;return Ci(qt(o),n)+e+Ci(Ht(o),n)},mr.padEnd=function(e,t,n){e=Gl(e);var r=(t=zl(t))?Hn(e):0;return t&&rt){var r=e;e=t,t=r}if(n||e%1||t%1){var i=Qn();return Zn(e+i*(t-e+Dt("1e-"+((i+"").length-1))),t)}return ko(e,t)},mr.reduce=function(e,t,n){var r=wl(e)?pn:kn,o=arguments.length<3;return r(e,Fi(t,4),n,o,$r)},mr.reduceRight=function(e,t,n){var r=wl(e)?hn:kn,o=arguments.length<3;return r(e,Fi(t,4),n,o,Hr)},mr.repeat=function(e,t,n){return t=(n?Yi(e,t,n):t===o)?1:zl(t),So(Gl(e),t)},mr.replace=function(){var e=arguments,t=Gl(e[0]);return e.length<3?t:t.replace(e[1],e[2])},mr.result=function(e,t,n){var r=-1,i=(t=Yo(t,e)).length;for(i||(i=1,e=o);++rA)return[];var n=I,r=Zn(e,I);t=Fi(t),e-=I;for(var o=On(r,t);++n=a)return e;var s=n-Hn(r);if(s<1)return r;var c=l?Qo(l,0,s).join(""):e.slice(0,s);if(i===o)return c+r;if(l&&(s+=c.length-s),jl(i)){if(e.slice(s).search(i)){var u,f=c;for(i.global||(i=rt(i.source,Gl(ze.exec(i))+"g")),i.lastIndex=0;u=i.exec(f);)var d=u.index;c=c.slice(0,d===o?s:d)}}else if(e.indexOf(Do(i),s)!=s){var p=c.lastIndexOf(i);p>-1&&(c=c.slice(0,p))}return c+r},mr.unescape=function(e){return(e=Gl(e))&&ke.test(e)?e.replace(Ee,Wn):e},mr.uniqueId=function(e){var t=++dt;return Gl(e)+t},mr.upperCase=ks,mr.upperFirst=Ss,mr.each=Ga,mr.eachRight=Za,mr.first=_a,Is(mr,(Js={},Yr(mr,(function(e,t){ft.call(mr.prototype,t)||(Js[t]=e)})),Js),{chain:!1}),mr.VERSION="4.17.21",on(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(e){mr[e].placeholder=mr})),on(["drop","take"],(function(e,t){wr.prototype[e]=function(n){n=n===o?1:Gn(zl(n),0);var r=this.__filtered__&&!t?new wr(this):this.clone();return r.__filtered__?r.__takeCount__=Zn(n,r.__takeCount__):r.__views__.push({size:Zn(n,I),type:e+(r.__dir__<0?"Right":"")}),r},wr.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}})),on(["filter","map","takeWhile"],(function(e,t){var n=t+1,r=n==V||3==n;wr.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:Fi(e,3),type:n}),t.__filtered__=t.__filtered__||r,t}})),on(["head","last"],(function(e,t){var n="take"+(t?"Right":"");wr.prototype[e]=function(){return this[n](1).value()[0]}})),on(["initial","tail"],(function(e,t){var n="drop"+(t?"":"Right");wr.prototype[e]=function(){return this.__filtered__?new wr(this):this[n](1)}})),wr.prototype.compact=function(){return this.filter(Ls)},wr.prototype.find=function(e){return this.filter(e).head()},wr.prototype.findLast=function(e){return this.reverse().find(e)},wr.prototype.invokeMap=Oo((function(e,t){return"function"==typeof e?new wr(this):this.map((function(n){return ao(n,e,t)}))})),wr.prototype.reject=function(e){return this.filter(fl(Fi(e)))},wr.prototype.slice=function(e,t){e=zl(e);var n=this;return n.__filtered__&&(e>0||t<0)?new wr(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),t!==o&&(n=(t=zl(t))<0?n.dropRight(-t):n.take(t-e)),n)},wr.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},wr.prototype.toArray=function(){return this.take(I)},Yr(wr.prototype,(function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),i=mr[r?"take"+("last"==t?"Right":""):t],a=r||/^find/.test(t);i&&(mr.prototype[t]=function(){var t=this.__wrapped__,l=r?[1]:arguments,s=t instanceof wr,c=l[0],u=s||wl(t),f=function(e){var t=i.apply(mr,dn([e],l));return r&&d?t[0]:t};u&&n&&"function"==typeof c&&1!=c.length&&(s=u=!1);var d=this.__chain__,p=!!this.__actions__.length,h=a&&!d,v=s&&!p;if(!a&&u){t=v?t:new wr(this);var m=e.apply(t,l);return m.__actions__.push({func:Ha,args:[f],thisArg:o}),new br(m,d)}return h&&v?e.apply(this,l):(m=this.thru(f),h?r?m.value()[0]:m.value():m)})})),on(["pop","push","shift","sort","splice","unshift"],(function(e){var t=at[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",r=/^(?:pop|shift)$/.test(e);mr.prototype[e]=function(){var e=arguments;if(r&&!this.__chain__){var o=this.value();return t.apply(wl(o)?o:[],e)}return this[n]((function(n){return t.apply(wl(n)?n:[],e)}))}})),Yr(wr.prototype,(function(e,t){var n=mr[t];if(n){var r=n.name+"";ft.call(lr,r)||(lr[r]=[]),lr[r].push({name:t,func:n})}})),lr[gi(o,y).name]=[{name:"wrapper",func:o}],wr.prototype.clone=function(){var e=new wr(this.__wrapped__);return e.__actions__=ai(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=ai(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=ai(this.__views__),e},wr.prototype.reverse=function(){if(this.__filtered__){var e=new wr(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},wr.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=wl(e),r=t<0,o=n?e.length:0,i=function(e,t,n){var r=-1,o=n.length;for(;++r=this.__values__.length;return{done:e,value:e?o:this.__values__[this.__index__++]}},mr.prototype.plant=function(e){for(var t,n=this;n instanceof yr;){var r=va(n);r.__index__=0,r.__values__=o,t?i.__wrapped__=r:t=r;var i=r;n=n.__wrapped__}return i.__wrapped__=e,t},mr.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof wr){var t=e;return this.__actions__.length&&(t=new wr(this)),(t=t.reverse()).__actions__.push({func:Ha,args:[Ta],thisArg:o}),new br(t,this.__chain__)}return this.thru(Ta)},mr.prototype.toJSON=mr.prototype.valueOf=mr.prototype.value=function(){return qo(this.__wrapped__,this.__actions__)},mr.prototype.first=mr.prototype.head,Ot&&(mr.prototype[Ot]=function(){return this}),mr}();zt._=Kn,(r=function(){return Kn}.call(t,n,t,e))===o||(e.exports=r)}.call(this)},378:()=>{},744:(e,t)=>{"use strict";t.Z=(e,t)=>{const n=e.__vccOpts||e;for(const[e,r]of t)n[e]=r;return n}},821:(e,t,n)=>{"use strict";n.r(t),n.d(t,{BaseTransition:()=>vr,Comment:()=>si,EffectScope:()=>pe,Fragment:()=>ai,KeepAlive:()=>Or,ReactiveEffect:()=>Ne,Static:()=>ci,Suspense:()=>Yn,Teleport:()=>oi,Text:()=>li,Transition:()=>Ja,TransitionGroup:()=>ml,VueElement:()=>za,assertNumber:()=>ln,callWithAsyncErrorHandling:()=>cn,callWithErrorHandling:()=>sn,camelize:()=>ee,capitalize:()=>re,cloneVNode:()=>Ti,compatUtils:()=>ka,compile:()=>Uf,computed:()=>ia,createApp:()=>Gl,createBlock:()=>bi,createCommentVNode:()=>Li,createElementBlock:()=>yi,createElementVNode:()=>Si,createHydrationRenderer:()=>Zo,createPropsRestProxy:()=>ha,createRenderer:()=>Go,createSSRApp:()=>Zl,createSlots:()=>oo,createStaticVNode:()=>Ri,createTextVNode:()=>Vi,createVNode:()=>Oi,customRef:()=>Xt,defineAsyncComponent:()=>xr,defineComponent:()=>_r,defineCustomElement:()=>Ua,defineEmits:()=>la,defineExpose:()=>sa,defineProps:()=>aa,defineSSRCustomElement:()=>$a,devtools:()=>Pn,effect:()=>Te,effectScope:()=>he,getCurrentInstance:()=>Hi,getCurrentScope:()=>me,getTransitionRawChildren:()=>Cr,guardReactiveProps:()=>Pi,h:()=>ma,handleError:()=>un,hydrate:()=>Kl,initCustomFormatter:()=>ba,initDirectivesForSSR:()=>Ql,inject:()=>rr,isMemoSame:()=>Ca,isProxy:()=>Bt,isReactive:()=>Lt,isReadonly:()=>At,isRef:()=>Ht,isRuntimeOnly:()=>Xi,isShallow:()=>jt,isVNode:()=>wi,markRaw:()=>Mt,mergeDefaults:()=>pa,mergeProps:()=>Ii,nextTick:()=>wn,normalizeClass:()=>d,normalizeProps:()=>p,normalizeStyle:()=>l,onActivated:()=>Pr,onBeforeMount:()=>Ir,onBeforeUnmount:()=>Ur,onBeforeUpdate:()=>Fr,onDeactivated:()=>Tr,onErrorCaptured:()=>Wr,onMounted:()=>Mr,onRenderTracked:()=>qr,onRenderTriggered:()=>zr,onScopeDispose:()=>ge,onServerPrefetch:()=>Hr,onUnmounted:()=>$r,onUpdated:()=>Dr,openBlock:()=>di,popScopeId:()=>Dn,provide:()=>nr,proxyRefs:()=>Jt,pushScopeId:()=>Fn,queuePostFlushCb:()=>En,reactive:()=>Nt,readonly:()=>Tt,ref:()=>zt,registerRuntimeCompiler:()=>Qi,render:()=>Wl,renderList:()=>ro,renderSlot:()=>io,resolveComponent:()=>Jr,resolveDirective:()=>eo,resolveDynamicComponent:()=>Xr,resolveFilter:()=>xa,resolveTransitionHooks:()=>gr,setBlockTracking:()=>mi,setDevtoolsHook:()=>Rn,setTransitionHooks:()=>wr,shallowReactive:()=>Pt,shallowReadonly:()=>Vt,shallowRef:()=>qt,ssrContextKey:()=>ga,ssrUtils:()=>Ea,stop:()=>Ve,toDisplayString:()=>_,toHandlerKey:()=>oe,toHandlers:()=>lo,toRaw:()=>It,toRef:()=>nn,toRefs:()=>en,transformVNodeArgs:()=>_i,triggerRef:()=>Gt,unref:()=>Zt,useAttrs:()=>fa,useCssModule:()=>qa,useCssVars:()=>Wa,useSSRContext:()=>ya,useSlots:()=>ua,useTransitionState:()=>pr,vModelCheckbox:()=>xl,vModelDynamic:()=>Vl,vModelRadio:()=>Sl,vModelSelect:()=>Ol,vModelText:()=>El,vShow:()=>Fl,version:()=>_a,warn:()=>an,watch:()=>sr,watchEffect:()=>or,watchPostEffect:()=>ir,watchSyncEffect:()=>ar,withAsyncContext:()=>va,withCtx:()=>$n,withDefaults:()=>ca,withDirectives:()=>Kr,withKeys:()=>Ml,withMemo:()=>wa,withModifiers:()=>Bl,withScopeId:()=>Un});var r={};function o(e,t){const n=Object.create(null),r=e.split(",");for(let e=0;e!!n[e.toLowerCase()]:e=>!!n[e]}n.r(r),n.d(r,{BaseTransition:()=>vr,Comment:()=>si,EffectScope:()=>pe,Fragment:()=>ai,KeepAlive:()=>Or,ReactiveEffect:()=>Ne,Static:()=>ci,Suspense:()=>Yn,Teleport:()=>oi,Text:()=>li,Transition:()=>Ja,TransitionGroup:()=>ml,VueElement:()=>za,assertNumber:()=>ln,callWithAsyncErrorHandling:()=>cn,callWithErrorHandling:()=>sn,camelize:()=>ee,capitalize:()=>re,cloneVNode:()=>Ti,compatUtils:()=>ka,computed:()=>ia,createApp:()=>Gl,createBlock:()=>bi,createCommentVNode:()=>Li,createElementBlock:()=>yi,createElementVNode:()=>Si,createHydrationRenderer:()=>Zo,createPropsRestProxy:()=>ha,createRenderer:()=>Go,createSSRApp:()=>Zl,createSlots:()=>oo,createStaticVNode:()=>Ri,createTextVNode:()=>Vi,createVNode:()=>Oi,customRef:()=>Xt,defineAsyncComponent:()=>xr,defineComponent:()=>_r,defineCustomElement:()=>Ua,defineEmits:()=>la,defineExpose:()=>sa,defineProps:()=>aa,defineSSRCustomElement:()=>$a,devtools:()=>Pn,effect:()=>Te,effectScope:()=>he,getCurrentInstance:()=>Hi,getCurrentScope:()=>me,getTransitionRawChildren:()=>Cr,guardReactiveProps:()=>Pi,h:()=>ma,handleError:()=>un,hydrate:()=>Kl,initCustomFormatter:()=>ba,initDirectivesForSSR:()=>Ql,inject:()=>rr,isMemoSame:()=>Ca,isProxy:()=>Bt,isReactive:()=>Lt,isReadonly:()=>At,isRef:()=>Ht,isRuntimeOnly:()=>Xi,isShallow:()=>jt,isVNode:()=>wi,markRaw:()=>Mt,mergeDefaults:()=>pa,mergeProps:()=>Ii,nextTick:()=>wn,normalizeClass:()=>d,normalizeProps:()=>p,normalizeStyle:()=>l,onActivated:()=>Pr,onBeforeMount:()=>Ir,onBeforeUnmount:()=>Ur,onBeforeUpdate:()=>Fr,onDeactivated:()=>Tr,onErrorCaptured:()=>Wr,onMounted:()=>Mr,onRenderTracked:()=>qr,onRenderTriggered:()=>zr,onScopeDispose:()=>ge,onServerPrefetch:()=>Hr,onUnmounted:()=>$r,onUpdated:()=>Dr,openBlock:()=>di,popScopeId:()=>Dn,provide:()=>nr,proxyRefs:()=>Jt,pushScopeId:()=>Fn,queuePostFlushCb:()=>En,reactive:()=>Nt,readonly:()=>Tt,ref:()=>zt,registerRuntimeCompiler:()=>Qi,render:()=>Wl,renderList:()=>ro,renderSlot:()=>io,resolveComponent:()=>Jr,resolveDirective:()=>eo,resolveDynamicComponent:()=>Xr,resolveFilter:()=>xa,resolveTransitionHooks:()=>gr,setBlockTracking:()=>mi,setDevtoolsHook:()=>Rn,setTransitionHooks:()=>wr,shallowReactive:()=>Pt,shallowReadonly:()=>Vt,shallowRef:()=>qt,ssrContextKey:()=>ga,ssrUtils:()=>Ea,stop:()=>Ve,toDisplayString:()=>_,toHandlerKey:()=>oe,toHandlers:()=>lo,toRaw:()=>It,toRef:()=>nn,toRefs:()=>en,transformVNodeArgs:()=>_i,triggerRef:()=>Gt,unref:()=>Zt,useAttrs:()=>fa,useCssModule:()=>qa,useCssVars:()=>Wa,useSSRContext:()=>ya,useSlots:()=>ua,useTransitionState:()=>pr,vModelCheckbox:()=>xl,vModelDynamic:()=>Vl,vModelRadio:()=>Sl,vModelSelect:()=>Ol,vModelText:()=>El,vShow:()=>Fl,version:()=>_a,warn:()=>an,watch:()=>sr,watchEffect:()=>or,watchPostEffect:()=>ir,watchSyncEffect:()=>ar,withAsyncContext:()=>va,withCtx:()=>$n,withDefaults:()=>ca,withDirectives:()=>Kr,withKeys:()=>Ml,withMemo:()=>wa,withModifiers:()=>Bl,withScopeId:()=>Un});const i={1:"TEXT",2:"CLASS",4:"STYLE",8:"PROPS",16:"FULL_PROPS",32:"HYDRATE_EVENTS",64:"STABLE_FRAGMENT",128:"KEYED_FRAGMENT",256:"UNKEYED_FRAGMENT",512:"NEED_PATCH",1024:"DYNAMIC_SLOTS",2048:"DEV_ROOT_FRAGMENT",[-1]:"HOISTED",[-2]:"BAIL"},a=o("Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt");function l(e){if(j(e)){const t={};for(let n=0;n{if(e){const n=e.split(c);n.length>1&&(t[n[0].trim()]=n[1].trim())}})),t}function d(e){let t="";if(U(e))t=e;else if(j(e))for(let n=0;nw(e,t)))}const _=e=>U(e)?e:null==e?"":j(e)||H(e)&&(e.toString===q||!D(e.toString))?JSON.stringify(e,E,2):String(e),E=(e,t)=>t&&t.__v_isRef?E(e,t.value):B(t)?{[`Map(${t.size})`]:[...t.entries()].reduce(((e,[t,n])=>(e[`${t} =>`]=n,e)),{})}:I(t)?{[`Set(${t.size})`]:[...t.values()]}:!H(t)||j(t)||G(t)?t:String(t),x={},k=[],S=()=>{},O=()=>!1,N=/^on[^a-z]/,P=e=>N.test(e),T=e=>e.startsWith("onUpdate:"),V=Object.assign,R=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},L=Object.prototype.hasOwnProperty,A=(e,t)=>L.call(e,t),j=Array.isArray,B=e=>"[object Map]"===W(e),I=e=>"[object Set]"===W(e),M=e=>"[object Date]"===W(e),F=e=>"[object RegExp]"===W(e),D=e=>"function"==typeof e,U=e=>"string"==typeof e,$=e=>"symbol"==typeof e,H=e=>null!==e&&"object"==typeof e,z=e=>H(e)&&D(e.then)&&D(e.catch),q=Object.prototype.toString,W=e=>q.call(e),K=e=>W(e).slice(8,-1),G=e=>"[object Object]"===W(e),Z=e=>U(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,Y=o(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),J=o("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),Q=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},X=/-(\w)/g,ee=Q((e=>e.replace(X,((e,t)=>t?t.toUpperCase():"")))),te=/\B([A-Z])/g,ne=Q((e=>e.replace(te,"-$1").toLowerCase())),re=Q((e=>e.charAt(0).toUpperCase()+e.slice(1))),oe=Q((e=>e?`on${re(e)}`:"")),ie=(e,t)=>!Object.is(e,t),ae=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},se=e=>{const t=parseFloat(e);return isNaN(t)?e:t},ce=e=>{const t=U(e)?Number(e):NaN;return isNaN(t)?e:t};let ue;const fe=()=>ue||(ue="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n.g?n.g:{});let de;class pe{constructor(e=!1){this.detached=e,this._active=!0,this.effects=[],this.cleanups=[],this.parent=de,!e&&de&&(this.index=(de.scopes||(de.scopes=[])).push(this)-1)}get active(){return this._active}run(e){if(this._active){const t=de;try{return de=this,e()}finally{de=t}}else 0}on(){de=this}off(){de=this.parent}stop(e){if(this._active){let t,n;for(t=0,n=this.effects.length;t{const t=new Set(e);return t.w=0,t.n=0,t},be=e=>(e.w&Ee)>0,we=e=>(e.n&Ee)>0,Ce=new WeakMap;let _e=0,Ee=1;const xe=30;let ke;const Se=Symbol(""),Oe=Symbol("");class Ne{constructor(e,t=null,n){this.fn=e,this.scheduler=t,this.active=!0,this.deps=[],this.parent=void 0,ve(this,n)}run(){if(!this.active)return this.fn();let e=ke,t=Re;for(;e;){if(e===this)return;e=e.parent}try{return this.parent=ke,ke=this,Re=!0,Ee=1<<++_e,_e<=xe?(({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{("length"===n||n>=e)&&l.push(t)}))}else switch(void 0!==n&&l.push(a.get(n)),t){case"add":j(e)?Z(n)&&l.push(a.get("length")):(l.push(a.get(Se)),B(e)&&l.push(a.get(Oe)));break;case"delete":j(e)||(l.push(a.get(Se)),B(e)&&l.push(a.get(Oe)));break;case"set":B(e)&&l.push(a.get(Se))}if(1===l.length)l[0]&&Fe(l[0]);else{const e=[];for(const t of l)t&&e.push(...t);Fe(ye(e))}}function Fe(e,t){const n=j(e)?e:[...e];for(const e of n)e.computed&&De(e,t);for(const e of n)e.computed||De(e,t)}function De(e,t){(e!==ke||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const Ue=o("__proto__,__v_isRef,__isVue"),$e=new Set(Object.getOwnPropertyNames(Symbol).filter((e=>"arguments"!==e&&"caller"!==e)).map((e=>Symbol[e])).filter($)),He=Ye(),ze=Ye(!1,!0),qe=Ye(!0),We=Ye(!0,!0),Ke=Ge();function Ge(){const e={};return["includes","indexOf","lastIndexOf"].forEach((t=>{e[t]=function(...e){const n=It(this);for(let e=0,t=this.length;e{e[t]=function(...e){Ae();const n=It(this)[t].apply(this,e);return je(),n}})),e}function Ze(e){const t=It(this);return Be(t,0,e),t.hasOwnProperty(e)}function Ye(e=!1,t=!1){return function(n,r,o){if("__v_isReactive"===r)return!e;if("__v_isReadonly"===r)return e;if("__v_isShallow"===r)return t;if("__v_raw"===r&&o===(e?t?Ot:St:t?kt:xt).get(n))return n;const i=j(n);if(!e){if(i&&A(Ke,r))return Reflect.get(Ke,r,o);if("hasOwnProperty"===r)return Ze}const a=Reflect.get(n,r,o);return($(r)?$e.has(r):Ue(r))?a:(e||Be(n,0,r),t?a:Ht(a)?i&&Z(r)?a:a.value:H(a)?e?Tt(a):Nt(a):a)}}function Je(e=!1){return function(t,n,r,o){let i=t[n];if(At(i)&&Ht(i)&&!Ht(r))return!1;if(!e&&(jt(r)||At(r)||(i=It(i),r=It(r)),!j(t)&&Ht(i)&&!Ht(r)))return i.value=r,!0;const a=j(t)&&Z(n)?Number(n)!0,deleteProperty:(e,t)=>!0},et=V({},Qe,{get:ze,set:Je(!0)}),tt=V({},Xe,{get:We}),nt=e=>e,rt=e=>Reflect.getPrototypeOf(e);function ot(e,t,n=!1,r=!1){const o=It(e=e.__v_raw),i=It(t);n||(t!==i&&Be(o,0,t),Be(o,0,i));const{has:a}=rt(o),l=r?nt:n?Dt:Ft;return a.call(o,t)?l(e.get(t)):a.call(o,i)?l(e.get(i)):void(e!==o&&e.get(t))}function it(e,t=!1){const n=this.__v_raw,r=It(n),o=It(e);return t||(e!==o&&Be(r,0,e),Be(r,0,o)),e===o?n.has(e):n.has(e)||n.has(o)}function at(e,t=!1){return e=e.__v_raw,!t&&Be(It(e),0,Se),Reflect.get(e,"size",e)}function lt(e){e=It(e);const t=It(this);return rt(t).has.call(t,e)||(t.add(e),Me(t,"add",e,e)),this}function st(e,t){t=It(t);const n=It(this),{has:r,get:o}=rt(n);let i=r.call(n,e);i||(e=It(e),i=r.call(n,e));const a=o.call(n,e);return n.set(e,t),i?ie(t,a)&&Me(n,"set",e,t):Me(n,"add",e,t),this}function ct(e){const t=It(this),{has:n,get:r}=rt(t);let o=n.call(t,e);o||(e=It(e),o=n.call(t,e));r&&r.call(t,e);const i=t.delete(e);return o&&Me(t,"delete",e,void 0),i}function ut(){const e=It(this),t=0!==e.size,n=e.clear();return t&&Me(e,"clear",void 0,void 0),n}function ft(e,t){return function(n,r){const o=this,i=o.__v_raw,a=It(i),l=t?nt:e?Dt:Ft;return!e&&Be(a,0,Se),i.forEach(((e,t)=>n.call(r,l(e),l(t),o)))}}function dt(e,t,n){return function(...r){const o=this.__v_raw,i=It(o),a=B(i),l="entries"===e||e===Symbol.iterator&&a,s="keys"===e&&a,c=o[e](...r),u=n?nt:t?Dt:Ft;return!t&&Be(i,0,s?Oe:Se),{next(){const{value:e,done:t}=c.next();return t?{value:e,done:t}:{value:l?[u(e[0]),u(e[1])]:u(e),done:t}},[Symbol.iterator](){return this}}}}function pt(e){return function(...t){return"delete"!==e&&this}}function ht(){const e={get(e){return ot(this,e)},get size(){return at(this)},has:it,add:lt,set:st,delete:ct,clear:ut,forEach:ft(!1,!1)},t={get(e){return ot(this,e,!1,!0)},get size(){return at(this)},has:it,add:lt,set:st,delete:ct,clear:ut,forEach:ft(!1,!0)},n={get(e){return ot(this,e,!0)},get size(){return at(this,!0)},has(e){return it.call(this,e,!0)},add:pt("add"),set:pt("set"),delete:pt("delete"),clear:pt("clear"),forEach:ft(!0,!1)},r={get(e){return ot(this,e,!0,!0)},get size(){return at(this,!0)},has(e){return it.call(this,e,!0)},add:pt("add"),set:pt("set"),delete:pt("delete"),clear:pt("clear"),forEach:ft(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach((o=>{e[o]=dt(o,!1,!1),n[o]=dt(o,!0,!1),t[o]=dt(o,!1,!0),r[o]=dt(o,!0,!0)})),[e,n,t,r]}const[vt,mt,gt,yt]=ht();function bt(e,t){const n=t?e?yt:gt:e?mt:vt;return(t,r,o)=>"__v_isReactive"===r?!e:"__v_isReadonly"===r?e:"__v_raw"===r?t:Reflect.get(A(n,r)&&r in t?n:t,r,o)}const wt={get:bt(!1,!1)},Ct={get:bt(!1,!0)},_t={get:bt(!0,!1)},Et={get:bt(!0,!0)};const xt=new WeakMap,kt=new WeakMap,St=new WeakMap,Ot=new WeakMap;function Nt(e){return At(e)?e:Rt(e,!1,Qe,wt,xt)}function Pt(e){return Rt(e,!1,et,Ct,kt)}function Tt(e){return Rt(e,!0,Xe,_t,St)}function Vt(e){return Rt(e,!0,tt,Et,Ot)}function Rt(e,t,n,r,o){if(!H(e))return e;if(e.__v_raw&&(!t||!e.__v_isReactive))return e;const i=o.get(e);if(i)return i;const a=(l=e).__v_skip||!Object.isExtensible(l)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}(K(l));var l;if(0===a)return e;const s=new Proxy(e,2===a?r:n);return o.set(e,s),s}function Lt(e){return At(e)?Lt(e.__v_raw):!(!e||!e.__v_isReactive)}function At(e){return!(!e||!e.__v_isReadonly)}function jt(e){return!(!e||!e.__v_isShallow)}function Bt(e){return Lt(e)||At(e)}function It(e){const t=e&&e.__v_raw;return t?It(t):e}function Mt(e){return le(e,"__v_skip",!0),e}const Ft=e=>H(e)?Nt(e):e,Dt=e=>H(e)?Tt(e):e;function Ut(e){Re&&ke&&Ie((e=It(e)).dep||(e.dep=ye()))}function $t(e,t){const n=(e=It(e)).dep;n&&Fe(n)}function Ht(e){return!(!e||!0!==e.__v_isRef)}function zt(e){return Wt(e,!1)}function qt(e){return Wt(e,!0)}function Wt(e,t){return Ht(e)?e:new Kt(e,t)}class Kt{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?e:It(e),this._value=t?e:Ft(e)}get value(){return Ut(this),this._value}set value(e){const t=this.__v_isShallow||jt(e)||At(e);e=t?e:It(e),ie(e,this._rawValue)&&(this._rawValue=e,this._value=t?e:Ft(e),$t(this))}}function Gt(e){$t(e)}function Zt(e){return Ht(e)?e.value:e}const Yt={get:(e,t,n)=>Zt(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Ht(o)&&!Ht(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function Jt(e){return Lt(e)?e:new Proxy(e,Yt)}class Qt{constructor(e){this.dep=void 0,this.__v_isRef=!0;const{get:t,set:n}=e((()=>Ut(this)),(()=>$t(this)));this._get=t,this._set=n}get value(){return this._get()}set value(e){this._set(e)}}function Xt(e){return new Qt(e)}function en(e){const t=j(e)?new Array(e.length):{};for(const n in e)t[n]=nn(e,n);return t}class tn{constructor(e,t,n){this._object=e,this._key=t,this._defaultValue=n,this.__v_isRef=!0}get value(){const e=this._object[this._key];return void 0===e?this._defaultValue:e}set value(e){this._object[this._key]=e}get dep(){return function(e,t){var n;return null===(n=Ce.get(e))||void 0===n?void 0:n.get(t)}(It(this._object),this._key)}}function nn(e,t,n){const r=e[t];return Ht(r)?r:new tn(e,t,n)}var rn;class on{constructor(e,t,n,r){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this[rn]=!1,this._dirty=!0,this.effect=new Ne(e,(()=>{this._dirty||(this._dirty=!0,$t(this))})),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=n}get value(){const e=It(this);return Ut(e),!e._dirty&&e._cacheable||(e._dirty=!1,e._value=e.effect.run()),e._value}set value(e){this._setter(e)}}rn="__v_isReadonly";function an(e,...t){}function ln(e,t){}function sn(e,t,n,r){let o;try{o=r?e(...r):e()}catch(e){un(e,t,n)}return o}function cn(e,t,n,r){if(D(e)){const o=sn(e,t,n,r);return o&&z(o)&&o.catch((e=>{un(e,t,n)})),o}const o=[];for(let i=0;i>>1;Sn(pn[r])Sn(e)-Sn(t))),gn=0;gnnull==e.id?1/0:e.id,On=(e,t)=>{const n=Sn(e)-Sn(t);if(0===n){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Nn(e){dn=!1,fn=!0,pn.sort(On);try{for(hn=0;hnPn.emit(e,...t))),Tn=[];else if("undefined"!=typeof window&&window.HTMLElement&&!(null===(r=null===(n=window.navigator)||void 0===n?void 0:n.userAgent)||void 0===r?void 0:r.includes("jsdom"))){(t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push((e=>{Rn(e,t)})),setTimeout((()=>{Pn||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,Vn=!0,Tn=[])}),3e3)}else Vn=!0,Tn=[]}function Ln(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||x;let o=n;const i=t.startsWith("update:"),a=i&&t.slice(7);if(a&&a in r){const e=`${"modelValue"===a?"model":a}Modifiers`,{number:t,trim:i}=r[e]||x;i&&(o=n.map((e=>U(e)?e.trim():e))),t&&(o=n.map(se))}let l;let s=r[l=oe(t)]||r[l=oe(ee(t))];!s&&i&&(s=r[l=oe(ne(t))]),s&&cn(s,e,6,o);const c=r[l+"Once"];if(c){if(e.emitted){if(e.emitted[l])return}else e.emitted={};e.emitted[l]=!0,cn(c,e,6,o)}}function An(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(void 0!==o)return o;const i=e.emits;let a={},l=!1;if(!D(e)){const r=e=>{const n=An(e,t,!0);n&&(l=!0,V(a,n))};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}return i||l?(j(i)?i.forEach((e=>a[e]=null)):V(a,i),H(e)&&r.set(e,a),a):(H(e)&&r.set(e,null),null)}function jn(e,t){return!(!e||!P(t))&&(t=t.slice(2).replace(/Once$/,""),A(e,t[0].toLowerCase()+t.slice(1))||A(e,ne(t))||A(e,t))}let Bn=null,In=null;function Mn(e){const t=Bn;return Bn=e,In=e&&e.type.__scopeId||null,t}function Fn(e){In=e}function Dn(){In=null}const Un=e=>$n;function $n(e,t=Bn,n){if(!t)return e;if(e._n)return e;const r=(...n)=>{r._d&&mi(-1);const o=Mn(t);let i;try{i=e(...n)}finally{Mn(o),r._d&&mi(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function Hn(e){const{type:t,vnode:n,proxy:r,withProxy:o,props:i,propsOptions:[a],slots:l,attrs:s,emit:c,render:u,renderCache:f,data:d,setupState:p,ctx:h,inheritAttrs:v}=e;let m,g;const y=Mn(e);try{if(4&n.shapeFlag){const e=o||r;m=Ai(u.call(e,e,f,i,p,d,h)),g=s}else{const e=t;0,m=Ai(e.length>1?e(i,{attrs:s,slots:l,emit:c}):e(i,null)),g=t.props?s:qn(s)}}catch(t){ui.length=0,un(t,e,1),m=Oi(si)}let b=m;if(g&&!1!==v){const e=Object.keys(g),{shapeFlag:t}=b;e.length&&7&t&&(a&&e.some(T)&&(g=Wn(g,a)),b=Ti(b,g))}return n.dirs&&(b=Ti(b),b.dirs=b.dirs?b.dirs.concat(n.dirs):n.dirs),n.transition&&(b.transition=n.transition),m=b,Mn(y),m}function zn(e){let t;for(let n=0;n{let t;for(const n in e)("class"===n||"style"===n||P(n))&&((t||(t={}))[n]=e[n]);return t},Wn=(e,t)=>{const n={};for(const r in e)T(r)&&r.slice(9)in t||(n[r]=e[r]);return n};function Kn(e,t,n){const r=Object.keys(t);if(r.length!==Object.keys(e).length)return!0;for(let o=0;oe.__isSuspense,Yn={name:"Suspense",__isSuspense:!0,process(e,t,n,r,o,i,a,l,s,c){null==e?function(e,t,n,r,o,i,a,l,s){const{p:c,o:{createElement:u}}=s,f=u("div"),d=e.suspense=Qn(e,o,r,t,f,n,i,a,l,s);c(null,d.pendingBranch=e.ssContent,f,null,r,d,i,a),d.deps>0?(Jn(e,"onPending"),Jn(e,"onFallback"),c(null,e.ssFallback,t,n,r,null,i,a),tr(d,e.ssFallback)):d.resolve()}(t,n,r,o,i,a,l,s,c):function(e,t,n,r,o,i,a,l,{p:s,um:c,o:{createElement:u}}){const f=t.suspense=e.suspense;f.vnode=t,t.el=e.el;const d=t.ssContent,p=t.ssFallback,{activeBranch:h,pendingBranch:v,isInFallback:m,isHydrating:g}=f;if(v)f.pendingBranch=d,Ci(d,v)?(s(v,d,f.hiddenContainer,null,o,f,i,a,l),f.deps<=0?f.resolve():m&&(s(h,p,n,r,o,null,i,a,l),tr(f,p))):(f.pendingId++,g?(f.isHydrating=!1,f.activeBranch=v):c(v,o,f),f.deps=0,f.effects.length=0,f.hiddenContainer=u("div"),m?(s(null,d,f.hiddenContainer,null,o,f,i,a,l),f.deps<=0?f.resolve():(s(h,p,n,r,o,null,i,a,l),tr(f,p))):h&&Ci(d,h)?(s(h,d,n,r,o,f,i,a,l),f.resolve(!0)):(s(null,d,f.hiddenContainer,null,o,f,i,a,l),f.deps<=0&&f.resolve()));else if(h&&Ci(d,h))s(h,d,n,r,o,f,i,a,l),tr(f,d);else if(Jn(t,"onPending"),f.pendingBranch=d,f.pendingId++,s(null,d,f.hiddenContainer,null,o,f,i,a,l),f.deps<=0)f.resolve();else{const{timeout:e,pendingId:t}=f;e>0?setTimeout((()=>{f.pendingId===t&&f.fallback(p)}),e):0===e&&f.fallback(p)}}(e,t,n,r,o,a,l,s,c)},hydrate:function(e,t,n,r,o,i,a,l,s){const c=t.suspense=Qn(t,r,n,e.parentNode,document.createElement("div"),null,o,i,a,l,!0),u=s(e,c.pendingBranch=t.ssContent,n,c,i,a);0===c.deps&&c.resolve();return u},create:Qn,normalize:function(e){const{shapeFlag:t,children:n}=e,r=32&t;e.ssContent=Xn(r?n.default:n),e.ssFallback=r?Xn(n.fallback):Oi(si)}};function Jn(e,t){const n=e.props&&e.props[t];D(n)&&n()}function Qn(e,t,n,r,o,i,a,l,s,c,u=!1){const{p:f,m:d,um:p,n:h,o:{parentNode:v,remove:m}}=c,g=e.props?ce(e.props.timeout):void 0;const y={vnode:e,parent:t,parentComponent:n,isSVG:a,container:r,hiddenContainer:o,anchor:i,deps:0,pendingId:0,timeout:"number"==typeof g?g:-1,activeBranch:null,pendingBranch:null,isInFallback:!0,isHydrating:u,isUnmounted:!1,effects:[],resolve(e=!1){const{vnode:t,activeBranch:n,pendingBranch:r,pendingId:o,effects:i,parentComponent:a,container:l}=y;if(y.isHydrating)y.isHydrating=!1;else if(!e){const e=n&&r.transition&&"out-in"===r.transition.mode;e&&(n.transition.afterLeave=()=>{o===y.pendingId&&d(r,l,t,0)});let{anchor:t}=y;n&&(t=h(n),p(n,a,y,!0)),e||d(r,l,t,0)}tr(y,r),y.pendingBranch=null,y.isInFallback=!1;let s=y.parent,c=!1;for(;s;){if(s.pendingBranch){s.effects.push(...i),c=!0;break}s=s.parent}c||En(i),y.effects=[],Jn(t,"onResolve")},fallback(e){if(!y.pendingBranch)return;const{vnode:t,activeBranch:n,parentComponent:r,container:o,isSVG:i}=y;Jn(t,"onFallback");const a=h(n),c=()=>{y.isInFallback&&(f(null,e,o,a,r,null,i,l,s),tr(y,e))},u=e.transition&&"out-in"===e.transition.mode;u&&(n.transition.afterLeave=c),y.isInFallback=!0,p(n,r,null,!0),u||c()},move(e,t,n){y.activeBranch&&d(y.activeBranch,e,t,n),y.container=e},next:()=>y.activeBranch&&h(y.activeBranch),registerDep(e,t){const n=!!y.pendingBranch;n&&y.deps++;const r=e.vnode.el;e.asyncDep.catch((t=>{un(t,e,0)})).then((o=>{if(e.isUnmounted||y.isUnmounted||y.pendingId!==e.suspenseId)return;e.asyncResolved=!0;const{vnode:i}=e;Ji(e,o,!1),r&&(i.el=r);const l=!r&&e.subTree.el;t(e,i,v(r||e.subTree.el),r?null:h(e.subTree),y,a,s),l&&m(l),Gn(e,i.el),n&&0==--y.deps&&y.resolve()}))},unmount(e,t){y.isUnmounted=!0,y.activeBranch&&p(y.activeBranch,n,e,t),y.pendingBranch&&p(y.pendingBranch,n,e,t)}};return y}function Xn(e){let t;if(D(e)){const n=vi&&e._c;n&&(e._d=!1,di()),e=e(),n&&(e._d=!0,t=fi,pi())}if(j(e)){const t=zn(e);0,e=t}return e=Ai(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter((t=>t!==e))),e}function er(e,t){t&&t.pendingBranch?j(e)?t.effects.push(...e):t.effects.push(e):En(e)}function tr(e,t){e.activeBranch=t;const{vnode:n,parentComponent:r}=e,o=n.el=t.el;r&&r.subTree===n&&(r.vnode.el=o,Gn(r,o))}function nr(e,t){if($i){let n=$i.provides;const r=$i.parent&&$i.parent.provides;r===n&&(n=$i.provides=Object.create(r)),n[e]=t}else 0}function rr(e,t,n=!1){const r=$i||Bn;if(r){const o=null==r.parent?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(o&&e in o)return o[e];if(arguments.length>1)return n&&D(t)?t.call(r.proxy):t}else 0}function or(e,t){return cr(e,null,t)}function ir(e,t){return cr(e,null,{flush:"post"})}function ar(e,t){return cr(e,null,{flush:"sync"})}const lr={};function sr(e,t,n){return cr(e,t,n)}function cr(e,t,{immediate:n,deep:r,flush:o,onTrack:i,onTrigger:a}=x){const l=me()===(null==$i?void 0:$i.scope)?$i:null;let s,c,u=!1,f=!1;if(Ht(e)?(s=()=>e.value,u=jt(e)):Lt(e)?(s=()=>e,r=!0):j(e)?(f=!0,u=e.some((e=>Lt(e)||jt(e))),s=()=>e.map((e=>Ht(e)?e.value:Lt(e)?dr(e):D(e)?sn(e,l,2):void 0))):s=D(e)?t?()=>sn(e,l,2):()=>{if(!l||!l.isUnmounted)return c&&c(),cn(e,l,3,[p])}:S,t&&r){const e=s;s=()=>dr(e())}let d,p=e=>{c=g.onStop=()=>{sn(e,l,4)}};if(Zi){if(p=S,t?n&&cn(t,l,3,[s(),f?[]:void 0,p]):s(),"sync"!==o)return S;{const e=ya();d=e.__watcherHandles||(e.__watcherHandles=[])}}let h=f?new Array(e.length).fill(lr):lr;const v=()=>{if(g.active)if(t){const e=g.run();(r||u||(f?e.some(((e,t)=>ie(e,h[t]))):ie(e,h)))&&(c&&c(),cn(t,l,3,[e,h===lr?void 0:f&&h[0]===lr?[]:h,p]),h=e)}else g.run()};let m;v.allowRecurse=!!t,"sync"===o?m=v:"post"===o?m=()=>Ko(v,l&&l.suspense):(v.pre=!0,l&&(v.id=l.uid),m=()=>Cn(v));const g=new Ne(s,m);t?n?v():h=g.run():"post"===o?Ko(g.run.bind(g),l&&l.suspense):g.run();const y=()=>{g.stop(),l&&l.scope&&R(l.scope.effects,g)};return d&&d.push(y),y}function ur(e,t,n){const r=this.proxy,o=U(e)?e.includes(".")?fr(r,e):()=>r[e]:e.bind(r,r);let i;D(t)?i=t:(i=t.handler,n=t);const a=$i;zi(this);const l=cr(o,i.bind(r),n);return a?zi(a):qi(),l}function fr(e,t){const n=t.split(".");return()=>{let t=e;for(let e=0;e{dr(e,t)}));else if(G(e))for(const n in e)dr(e[n],t);return e}function pr(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Mr((()=>{e.isMounted=!0})),Ur((()=>{e.isUnmounting=!0})),e}const hr=[Function,Array],vr={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:hr,onEnter:hr,onAfterEnter:hr,onEnterCancelled:hr,onBeforeLeave:hr,onLeave:hr,onAfterLeave:hr,onLeaveCancelled:hr,onBeforeAppear:hr,onAppear:hr,onAfterAppear:hr,onAppearCancelled:hr},setup(e,{slots:t}){const n=Hi(),r=pr();let o;return()=>{const i=t.default&&Cr(t.default(),!0);if(!i||!i.length)return;let a=i[0];if(i.length>1){let e=!1;for(const t of i)if(t.type!==si){0,a=t,e=!0;break}}const l=It(e),{mode:s}=l;if(r.isLeaving)return yr(a);const c=br(a);if(!c)return yr(a);const u=gr(c,l,r,n);wr(c,u);const f=n.subTree,d=f&&br(f);let p=!1;const{getTransitionKey:h}=c.type;if(h){const e=h();void 0===o?o=e:e!==o&&(o=e,p=!0)}if(d&&d.type!==si&&(!Ci(c,d)||p)){const e=gr(d,l,r,n);if(wr(d,e),"out-in"===s)return r.isLeaving=!0,e.afterLeave=()=>{r.isLeaving=!1,!1!==n.update.active&&n.update()},yr(a);"in-out"===s&&c.type!==si&&(e.delayLeave=(e,t,n)=>{mr(r,d)[String(d.key)]=d,e._leaveCb=()=>{t(),e._leaveCb=void 0,delete u.delayedLeave},u.delayedLeave=n})}return a}}};function mr(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function gr(e,t,n,r){const{appear:o,mode:i,persisted:a=!1,onBeforeEnter:l,onEnter:s,onAfterEnter:c,onEnterCancelled:u,onBeforeLeave:f,onLeave:d,onAfterLeave:p,onLeaveCancelled:h,onBeforeAppear:v,onAppear:m,onAfterAppear:g,onAppearCancelled:y}=t,b=String(e.key),w=mr(n,e),C=(e,t)=>{e&&cn(e,r,9,t)},_=(e,t)=>{const n=t[1];C(e,t),j(e)?e.every((e=>e.length<=1))&&n():e.length<=1&&n()},E={mode:i,persisted:a,beforeEnter(t){let r=l;if(!n.isMounted){if(!o)return;r=v||l}t._leaveCb&&t._leaveCb(!0);const i=w[b];i&&Ci(e,i)&&i.el._leaveCb&&i.el._leaveCb(),C(r,[t])},enter(e){let t=s,r=c,i=u;if(!n.isMounted){if(!o)return;t=m||s,r=g||c,i=y||u}let a=!1;const l=e._enterCb=t=>{a||(a=!0,C(t?i:r,[e]),E.delayedLeave&&E.delayedLeave(),e._enterCb=void 0)};t?_(t,[e,l]):l()},leave(t,r){const o=String(e.key);if(t._enterCb&&t._enterCb(!0),n.isUnmounting)return r();C(f,[t]);let i=!1;const a=t._leaveCb=n=>{i||(i=!0,r(),C(n?h:p,[t]),t._leaveCb=void 0,w[o]===e&&delete w[o])};w[o]=e,d?_(d,[t,a]):a()},clone:e=>gr(e,t,n,r)};return E}function yr(e){if(Sr(e))return(e=Ti(e)).children=null,e}function br(e){return Sr(e)?e.children?e.children[0]:void 0:e}function wr(e,t){6&e.shapeFlag&&e.component?wr(e.component.subTree,t):128&e.shapeFlag?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Cr(e,t=!1,n){let r=[],o=0;for(let i=0;i1)for(let e=0;e!!e.type.__asyncLoader;function xr(e){D(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:o=200,timeout:i,suspensible:a=!0,onError:l}=e;let s,c=null,u=0;const f=()=>{let e;return c||(e=c=t().catch((e=>{if(e=e instanceof Error?e:new Error(String(e)),l)return new Promise(((t,n)=>{l(e,(()=>t((u++,c=null,f()))),(()=>n(e)),u+1)}));throw e})).then((t=>e!==c&&c?c:(t&&(t.__esModule||"Module"===t[Symbol.toStringTag])&&(t=t.default),s=t,t))))};return _r({name:"AsyncComponentWrapper",__asyncLoader:f,get __asyncResolved(){return s},setup(){const e=$i;if(s)return()=>kr(s,e);const t=t=>{c=null,un(t,e,13,!r)};if(a&&e.suspense||Zi)return f().then((t=>()=>kr(t,e))).catch((e=>(t(e),()=>r?Oi(r,{error:e}):null)));const l=zt(!1),u=zt(),d=zt(!!o);return o&&setTimeout((()=>{d.value=!1}),o),null!=i&&setTimeout((()=>{if(!l.value&&!u.value){const e=new Error(`Async component timed out after ${i}ms.`);t(e),u.value=e}}),i),f().then((()=>{l.value=!0,e.parent&&Sr(e.parent.vnode)&&Cn(e.parent.update)})).catch((e=>{t(e),u.value=e})),()=>l.value&&s?kr(s,e):u.value&&r?Oi(r,{error:u.value}):n&&!d.value?Oi(n):void 0}})}function kr(e,t){const{ref:n,props:r,children:o,ce:i}=t.vnode,a=Oi(e,r,o);return a.ref=n,a.ce=i,delete t.vnode.ce,a}const Sr=e=>e.type.__isKeepAlive,Or={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=Hi(),r=n.ctx;if(!r.renderer)return()=>{const e=t.default&&t.default();return e&&1===e.length?e[0]:e};const o=new Map,i=new Set;let a=null;const l=n.suspense,{renderer:{p:s,m:c,um:u,o:{createElement:f}}}=r,d=f("div");function p(e){Lr(e),u(e,n,l,!0)}function h(e){o.forEach(((t,n)=>{const r=ra(t.type);!r||e&&e(r)||v(n)}))}function v(e){const t=o.get(e);a&&Ci(t,a)?a&&Lr(a):p(t),o.delete(e),i.delete(e)}r.activate=(e,t,n,r,o)=>{const i=e.component;c(e,t,n,0,l),s(i.vnode,e,t,n,i,l,r,e.slotScopeIds,o),Ko((()=>{i.isDeactivated=!1,i.a&&ae(i.a);const t=e.props&&e.props.onVnodeMounted;t&&Mi(t,i.parent,e)}),l)},r.deactivate=e=>{const t=e.component;c(e,d,null,1,l),Ko((()=>{t.da&&ae(t.da);const n=e.props&&e.props.onVnodeUnmounted;n&&Mi(n,t.parent,e),t.isDeactivated=!0}),l)},sr((()=>[e.include,e.exclude]),(([e,t])=>{e&&h((t=>Nr(e,t))),t&&h((e=>!Nr(t,e)))}),{flush:"post",deep:!0});let m=null;const g=()=>{null!=m&&o.set(m,Ar(n.subTree))};return Mr(g),Dr(g),Ur((()=>{o.forEach((e=>{const{subTree:t,suspense:r}=n,o=Ar(t);if(e.type!==o.type||e.key!==o.key)p(e);else{Lr(o);const e=o.component.da;e&&Ko(e,r)}}))})),()=>{if(m=null,!t.default)return null;const n=t.default(),r=n[0];if(n.length>1)return a=null,n;if(!(wi(r)&&(4&r.shapeFlag||128&r.shapeFlag)))return a=null,r;let l=Ar(r);const s=l.type,c=ra(Er(l)?l.type.__asyncResolved||{}:s),{include:u,exclude:f,max:d}=e;if(u&&(!c||!Nr(u,c))||f&&c&&Nr(f,c))return a=l,r;const p=null==l.key?s:l.key,h=o.get(p);return l.el&&(l=Ti(l),128&r.shapeFlag&&(r.ssContent=l)),m=p,h?(l.el=h.el,l.component=h.component,l.transition&&wr(l,l.transition),l.shapeFlag|=512,i.delete(p),i.add(p)):(i.add(p),d&&i.size>parseInt(d,10)&&v(i.values().next().value)),l.shapeFlag|=256,a=l,Zn(r.type)?r:l}}};function Nr(e,t){return j(e)?e.some((e=>Nr(e,t))):U(e)?e.split(",").includes(t):!!F(e)&&e.test(t)}function Pr(e,t){Vr(e,"a",t)}function Tr(e,t){Vr(e,"da",t)}function Vr(e,t,n=$i){const r=e.__wdc||(e.__wdc=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()});if(jr(t,r,n),n){let e=n.parent;for(;e&&e.parent;)Sr(e.parent.vnode)&&Rr(r,t,n,e),e=e.parent}}function Rr(e,t,n,r){const o=jr(t,e,r,!0);$r((()=>{R(r[t],o)}),n)}function Lr(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function Ar(e){return 128&e.shapeFlag?e.ssContent:e}function jr(e,t,n=$i,r=!1){if(n){const o=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...r)=>{if(n.isUnmounted)return;Ae(),zi(n);const o=cn(t,n,e,r);return qi(),je(),o});return r?o.unshift(i):o.push(i),i}}const Br=e=>(t,n=$i)=>(!Zi||"sp"===e)&&jr(e,((...e)=>t(...e)),n),Ir=Br("bm"),Mr=Br("m"),Fr=Br("bu"),Dr=Br("u"),Ur=Br("bum"),$r=Br("um"),Hr=Br("sp"),zr=Br("rtg"),qr=Br("rtc");function Wr(e,t=$i){jr("ec",e,t)}function Kr(e,t){const n=Bn;if(null===n)return e;const r=na(n)||n.proxy,o=e.dirs||(e.dirs=[]);for(let e=0;et(e,n,void 0,i&&i[n])));else{const n=Object.keys(e);o=new Array(n.length);for(let r=0,a=n.length;r{const t=r.fn(...e);return t&&(t.key=r.key),t}:r.fn)}return e}function io(e,t,n={},r,o){if(Bn.isCE||Bn.parent&&Er(Bn.parent)&&Bn.parent.isCE)return"default"!==t&&(n.name=t),Oi("slot",n,r&&r());let i=e[t];i&&i._c&&(i._d=!1),di();const a=i&&ao(i(n)),l=bi(ai,{key:n.key||a&&a.key||`_${t}`},a||(r?r():[]),a&&1===e._?64:-2);return!o&&l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),i&&i._c&&(i._d=!0),l}function ao(e){return e.some((e=>!wi(e)||e.type!==si&&!(e.type===ai&&!ao(e.children))))?e:null}function lo(e,t){const n={};for(const r in e)n[t&&/[A-Z]/.test(r)?`on:${r}`:oe(r)]=e[r];return n}const so=e=>e?Wi(e)?na(e)||e.proxy:so(e.parent):null,co=V(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>so(e.parent),$root:e=>so(e.root),$emit:e=>e.emit,$options:e=>yo(e),$forceUpdate:e=>e.f||(e.f=()=>Cn(e.update)),$nextTick:e=>e.n||(e.n=wn.bind(e.proxy)),$watch:e=>ur.bind(e)}),uo=(e,t)=>e!==x&&!e.__isScriptSetup&&A(e,t),fo={get({_:e},t){const{ctx:n,setupState:r,data:o,props:i,accessCache:a,type:l,appContext:s}=e;let c;if("$"!==t[0]){const l=a[t];if(void 0!==l)switch(l){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return i[t]}else{if(uo(r,t))return a[t]=1,r[t];if(o!==x&&A(o,t))return a[t]=2,o[t];if((c=e.propsOptions[0])&&A(c,t))return a[t]=3,i[t];if(n!==x&&A(n,t))return a[t]=4,n[t];ho&&(a[t]=0)}}const u=co[t];let f,d;return u?("$attrs"===t&&Be(e,0,t),u(e)):(f=l.__cssModules)&&(f=f[t])?f:n!==x&&A(n,t)?(a[t]=4,n[t]):(d=s.config.globalProperties,A(d,t)?d[t]:void 0)},set({_:e},t,n){const{data:r,setupState:o,ctx:i}=e;return uo(o,t)?(o[t]=n,!0):r!==x&&A(r,t)?(r[t]=n,!0):!A(e.props,t)&&(("$"!==t[0]||!(t.slice(1)in e))&&(i[t]=n,!0))},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:i}},a){let l;return!!n[a]||e!==x&&A(e,a)||uo(t,a)||(l=i[0])&&A(l,a)||A(r,a)||A(co,a)||A(o.config.globalProperties,a)},defineProperty(e,t,n){return null!=n.get?e._.accessCache[t]=0:A(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};const po=V({},fo,{get(e,t){if(t!==Symbol.unscopables)return fo.get(e,t,e)},has:(e,t)=>"_"!==t[0]&&!a(t)});let ho=!0;function vo(e){const t=yo(e),n=e.proxy,r=e.ctx;ho=!1,t.beforeCreate&&mo(t.beforeCreate,e,"bc");const{data:o,computed:i,methods:a,watch:l,provide:s,inject:c,created:u,beforeMount:f,mounted:d,beforeUpdate:p,updated:h,activated:v,deactivated:m,beforeDestroy:g,beforeUnmount:y,destroyed:b,unmounted:w,render:C,renderTracked:_,renderTriggered:E,errorCaptured:x,serverPrefetch:k,expose:O,inheritAttrs:N,components:P,directives:T,filters:V}=t;if(c&&function(e,t,n=S,r=!1){j(e)&&(e=_o(e));for(const n in e){const o=e[n];let i;i=H(o)?"default"in o?rr(o.from||n,o.default,!0):rr(o.from||n):rr(o),Ht(i)&&r?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e}):t[n]=i}}(c,r,null,e.appContext.config.unwrapInjectedRef),a)for(const e in a){const t=a[e];D(t)&&(r[e]=t.bind(n))}if(o){0;const t=o.call(n,n);0,H(t)&&(e.data=Nt(t))}if(ho=!0,i)for(const e in i){const t=i[e],o=D(t)?t.bind(n,n):D(t.get)?t.get.bind(n,n):S;0;const a=!D(t)&&D(t.set)?t.set.bind(n):S,l=ia({get:o,set:a});Object.defineProperty(r,e,{enumerable:!0,configurable:!0,get:()=>l.value,set:e=>l.value=e})}if(l)for(const e in l)go(l[e],r,n,e);if(s){const e=D(s)?s.call(n):s;Reflect.ownKeys(e).forEach((t=>{nr(t,e[t])}))}function R(e,t){j(t)?t.forEach((t=>e(t.bind(n)))):t&&e(t.bind(n))}if(u&&mo(u,e,"c"),R(Ir,f),R(Mr,d),R(Fr,p),R(Dr,h),R(Pr,v),R(Tr,m),R(Wr,x),R(qr,_),R(zr,E),R(Ur,y),R($r,w),R(Hr,k),j(O))if(O.length){const t=e.exposed||(e.exposed={});O.forEach((e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t})}))}else e.exposed||(e.exposed={});C&&e.render===S&&(e.render=C),null!=N&&(e.inheritAttrs=N),P&&(e.components=P),T&&(e.directives=T)}function mo(e,t,n){cn(j(e)?e.map((e=>e.bind(t.proxy))):e.bind(t.proxy),t,n)}function go(e,t,n,r){const o=r.includes(".")?fr(n,r):()=>n[r];if(U(e)){const n=t[e];D(n)&&sr(o,n)}else if(D(e))sr(o,e.bind(n));else if(H(e))if(j(e))e.forEach((e=>go(e,t,n,r)));else{const r=D(e.handler)?e.handler.bind(n):t[e.handler];D(r)&&sr(o,r,e)}else 0}function yo(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:i,config:{optionMergeStrategies:a}}=e.appContext,l=i.get(t);let s;return l?s=l:o.length||n||r?(s={},o.length&&o.forEach((e=>bo(s,e,a,!0))),bo(s,t,a)):s=t,H(t)&&i.set(t,s),s}function bo(e,t,n,r=!1){const{mixins:o,extends:i}=t;i&&bo(e,i,n,!0),o&&o.forEach((t=>bo(e,t,n,!0)));for(const o in t)if(r&&"expose"===o);else{const r=wo[o]||n&&n[o];e[o]=r?r(e[o],t[o]):t[o]}return e}const wo={data:Co,props:xo,emits:xo,methods:xo,computed:xo,beforeCreate:Eo,created:Eo,beforeMount:Eo,mounted:Eo,beforeUpdate:Eo,updated:Eo,beforeDestroy:Eo,beforeUnmount:Eo,destroyed:Eo,unmounted:Eo,activated:Eo,deactivated:Eo,errorCaptured:Eo,serverPrefetch:Eo,components:xo,directives:xo,watch:function(e,t){if(!e)return t;if(!t)return e;const n=V(Object.create(null),e);for(const r in t)n[r]=Eo(e[r],t[r]);return n},provide:Co,inject:function(e,t){return xo(_o(e),_o(t))}};function Co(e,t){return t?e?function(){return V(D(e)?e.call(this,this):e,D(t)?t.call(this,this):t)}:t:e}function _o(e){if(j(e)){const t={};for(let n=0;n{s=!0;const[n,r]=Oo(e,t,!0);V(a,n),r&&l.push(...r)};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}if(!i&&!s)return H(e)&&r.set(e,k),k;if(j(i))for(let e=0;e-1,r[1]=n<0||e-1||A(r,"default"))&&l.push(t)}}}}const c=[a,l];return H(e)&&r.set(e,c),c}function No(e){return"$"!==e[0]}function Po(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:null===e?"null":""}function To(e,t){return Po(e)===Po(t)}function Vo(e,t){return j(t)?t.findIndex((t=>To(t,e))):D(t)&&To(t,e)?0:-1}const Ro=e=>"_"===e[0]||"$stable"===e,Lo=e=>j(e)?e.map(Ai):[Ai(e)],Ao=(e,t,n)=>{if(t._n)return t;const r=$n(((...e)=>Lo(t(...e))),n);return r._c=!1,r},jo=(e,t,n)=>{const r=e._ctx;for(const n in e){if(Ro(n))continue;const o=e[n];if(D(o))t[n]=Ao(0,o,r);else if(null!=o){0;const e=Lo(o);t[n]=()=>e}}},Bo=(e,t)=>{const n=Lo(t);e.slots.default=()=>n},Io=(e,t)=>{if(32&e.vnode.shapeFlag){const n=t._;n?(e.slots=It(t),le(t,"_",n)):jo(t,e.slots={})}else e.slots={},t&&Bo(e,t);le(e.slots,Ei,1)},Mo=(e,t,n)=>{const{vnode:r,slots:o}=e;let i=!0,a=x;if(32&r.shapeFlag){const e=t._;e?n&&1===e?i=!1:(V(o,t),n||1!==e||delete o._):(i=!t.$stable,jo(t,o)),a=t}else t&&(Bo(e,t),a={default:1});if(i)for(const e in o)Ro(e)||e in a||delete o[e]};function Fo(){return{app:null,config:{isNativeTag:O,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Do=0;function Uo(e,t){return function(n,r=null){D(n)||(n=Object.assign({},n)),null==r||H(r)||(r=null);const o=Fo(),i=new Set;let a=!1;const l=o.app={_uid:Do++,_component:n,_props:r,_container:null,_context:o,_instance:null,version:_a,get config(){return o.config},set config(e){0},use:(e,...t)=>(i.has(e)||(e&&D(e.install)?(i.add(e),e.install(l,...t)):D(e)&&(i.add(e),e(l,...t))),l),mixin:e=>(o.mixins.includes(e)||o.mixins.push(e),l),component:(e,t)=>t?(o.components[e]=t,l):o.components[e],directive:(e,t)=>t?(o.directives[e]=t,l):o.directives[e],mount(i,s,c){if(!a){0;const u=Oi(n,r);return u.appContext=o,s&&t?t(u,i):e(u,i,c),a=!0,l._container=i,i.__vue_app__=l,na(u.component)||u.component.proxy}},unmount(){a&&(e(null,l._container),delete l._container.__vue_app__)},provide:(e,t)=>(o.provides[e]=t,l)};return l}}function $o(e,t,n,r,o=!1){if(j(e))return void e.forEach(((e,i)=>$o(e,t&&(j(t)?t[i]:t),n,r,o)));if(Er(r)&&!o)return;const i=4&r.shapeFlag?na(r.component)||r.component.proxy:r.el,a=o?null:i,{i:l,r:s}=e;const c=t&&t.r,u=l.refs===x?l.refs={}:l.refs,f=l.setupState;if(null!=c&&c!==s&&(U(c)?(u[c]=null,A(f,c)&&(f[c]=null)):Ht(c)&&(c.value=null)),D(s))sn(s,l,12,[a,u]);else{const t=U(s),r=Ht(s);if(t||r){const l=()=>{if(e.f){const n=t?A(f,s)?f[s]:u[s]:s.value;o?j(n)&&R(n,i):j(n)?n.includes(i)||n.push(i):t?(u[s]=[i],A(f,s)&&(f[s]=u[s])):(s.value=[i],e.k&&(u[e.k]=s.value))}else t?(u[s]=a,A(f,s)&&(f[s]=a)):r&&(s.value=a,e.k&&(u[e.k]=a))};a?(l.id=-1,Ko(l,n)):l()}else 0}}let Ho=!1;const zo=e=>/svg/.test(e.namespaceURI)&&"foreignObject"!==e.tagName,qo=e=>8===e.nodeType;function Wo(e){const{mt:t,p:n,o:{patchProp:r,createText:o,nextSibling:i,parentNode:a,remove:l,insert:s,createComment:c}}=e,u=(n,r,l,c,m,g=!1)=>{const y=qo(n)&&"["===n.data,b=()=>h(n,r,l,c,m,y),{type:w,ref:C,shapeFlag:_,patchFlag:E}=r;let x=n.nodeType;r.el=n,-2===E&&(g=!1,r.dynamicChildren=null);let k=null;switch(w){case li:3!==x?""===r.children?(s(r.el=o(""),a(n),n),k=n):k=b():(n.data!==r.children&&(Ho=!0,n.data=r.children),k=i(n));break;case si:k=8!==x||y?b():i(n);break;case ci:if(y&&(x=(n=i(n)).nodeType),1===x||3===x){k=n;const e=!r.children.length;for(let t=0;t{a=a||!!t.dynamicChildren;const{type:s,props:c,patchFlag:u,shapeFlag:f,dirs:p}=t,h="input"===s&&p||"option"===s;if(h||-1!==u){if(p&&Gr(t,null,n,"created"),c)if(h||!a||48&u)for(const t in c)(h&&t.endsWith("value")||P(t)&&!Y(t))&&r(e,t,null,c[t],!1,void 0,n);else c.onClick&&r(e,"onClick",null,c.onClick,!1,void 0,n);let s;if((s=c&&c.onVnodeBeforeMount)&&Mi(s,n,t),p&&Gr(t,null,n,"beforeMount"),((s=c&&c.onVnodeMounted)||p)&&er((()=>{s&&Mi(s,n,t),p&&Gr(t,null,n,"mounted")}),o),16&f&&(!c||!c.innerHTML&&!c.textContent)){let r=d(e.firstChild,t,e,n,o,i,a);for(;r;){Ho=!0;const e=r;r=r.nextSibling,l(e)}}else 8&f&&e.textContent!==t.children&&(Ho=!0,e.textContent=t.children)}return e.nextSibling},d=(e,t,r,o,i,a,l)=>{l=l||!!t.dynamicChildren;const s=t.children,c=s.length;for(let t=0;t{const{slotScopeIds:u}=t;u&&(o=o?o.concat(u):u);const f=a(e),p=d(i(e),t,f,n,r,o,l);return p&&qo(p)&&"]"===p.data?i(t.anchor=p):(Ho=!0,s(t.anchor=c("]"),f,p),p)},h=(e,t,r,o,s,c)=>{if(Ho=!0,t.el=null,c){const t=v(e);for(;;){const n=i(e);if(!n||n===t)break;l(n)}}const u=i(e),f=a(e);return l(e),n(null,t,f,u,r,o,zo(f),s),u},v=e=>{let t=0;for(;e;)if((e=i(e))&&qo(e)&&("["===e.data&&t++,"]"===e.data)){if(0===t)return i(e);t--}return e};return[(e,t)=>{if(!t.hasChildNodes())return n(null,e,t),kn(),void(t._vnode=e);Ho=!1,u(t.firstChild,e,null,null,null),kn(),t._vnode=e},u]}const Ko=er;function Go(e){return Yo(e)}function Zo(e){return Yo(e,Wo)}function Yo(e,t){fe().__VUE__=!0;const{insert:n,remove:r,patchProp:o,createElement:i,createText:a,createComment:l,setText:s,setElementText:c,parentNode:u,nextSibling:f,setScopeId:d=S,insertStaticContent:p}=e,h=(e,t,n,r=null,o=null,i=null,a=!1,l=null,s=!!t.dynamicChildren)=>{if(e===t)return;e&&!Ci(e,t)&&(r=q(e),D(e,o,i,!0),e=null),-2===t.patchFlag&&(s=!1,t.dynamicChildren=null);const{type:c,ref:u,shapeFlag:f}=t;switch(c){case li:v(e,t,n,r);break;case si:m(e,t,n,r);break;case ci:null==e&&g(t,n,r,a);break;case ai:P(e,t,n,r,o,i,a,l,s);break;default:1&f?b(e,t,n,r,o,i,a,l,s):6&f?T(e,t,n,r,o,i,a,l,s):(64&f||128&f)&&c.process(e,t,n,r,o,i,a,l,s,K)}null!=u&&o&&$o(u,e&&e.ref,i,t||e,!t)},v=(e,t,r,o)=>{if(null==e)n(t.el=a(t.children),r,o);else{const n=t.el=e.el;t.children!==e.children&&s(n,t.children)}},m=(e,t,r,o)=>{null==e?n(t.el=l(t.children||""),r,o):t.el=e.el},g=(e,t,n,r)=>{[e.el,e.anchor]=p(e.children,t,n,r,e.el,e.anchor)},y=({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=f(e),r(e),e=n;r(t)},b=(e,t,n,r,o,i,a,l,s)=>{a=a||"svg"===t.type,null==e?w(t,n,r,o,i,a,l,s):E(e,t,o,i,a,l,s)},w=(e,t,r,a,l,s,u,f)=>{let d,p;const{type:h,props:v,shapeFlag:m,transition:g,dirs:y}=e;if(d=e.el=i(e.type,s,v&&v.is,v),8&m?c(d,e.children):16&m&&_(e.children,d,null,a,l,s&&"foreignObject"!==h,u,f),y&&Gr(e,null,a,"created"),C(d,e,e.scopeId,u,a),v){for(const t in v)"value"===t||Y(t)||o(d,t,null,v[t],s,e.children,a,l,z);"value"in v&&o(d,"value",null,v.value),(p=v.onVnodeBeforeMount)&&Mi(p,a,e)}y&&Gr(e,null,a,"beforeMount");const b=(!l||l&&!l.pendingBranch)&&g&&!g.persisted;b&&g.beforeEnter(d),n(d,t,r),((p=v&&v.onVnodeMounted)||b||y)&&Ko((()=>{p&&Mi(p,a,e),b&&g.enter(d),y&&Gr(e,null,a,"mounted")}),l)},C=(e,t,n,r,o)=>{if(n&&d(e,n),r)for(let t=0;t{for(let c=s;c{const s=t.el=e.el;let{patchFlag:u,dynamicChildren:f,dirs:d}=t;u|=16&e.patchFlag;const p=e.props||x,h=t.props||x;let v;n&&Jo(n,!1),(v=h.onVnodeBeforeUpdate)&&Mi(v,n,t,e),d&&Gr(t,e,n,"beforeUpdate"),n&&Jo(n,!0);const m=i&&"foreignObject"!==t.type;if(f?O(e.dynamicChildren,f,s,n,r,m,a):l||B(e,t,s,null,n,r,m,a,!1),u>0){if(16&u)N(s,t,p,h,n,r,i);else if(2&u&&p.class!==h.class&&o(s,"class",null,h.class,i),4&u&&o(s,"style",p.style,h.style,i),8&u){const a=t.dynamicProps;for(let t=0;t{v&&Mi(v,n,t,e),d&&Gr(t,e,n,"updated")}),r)},O=(e,t,n,r,o,i,a)=>{for(let l=0;l{if(n!==r){if(n!==x)for(const s in n)Y(s)||s in r||o(e,s,n[s],null,l,t.children,i,a,z);for(const s in r){if(Y(s))continue;const c=r[s],u=n[s];c!==u&&"value"!==s&&o(e,s,u,c,l,t.children,i,a,z)}"value"in r&&o(e,"value",n.value,r.value)}},P=(e,t,r,o,i,l,s,c,u)=>{const f=t.el=e?e.el:a(""),d=t.anchor=e?e.anchor:a("");let{patchFlag:p,dynamicChildren:h,slotScopeIds:v}=t;v&&(c=c?c.concat(v):v),null==e?(n(f,r,o),n(d,r,o),_(t.children,r,d,i,l,s,c,u)):p>0&&64&p&&h&&e.dynamicChildren?(O(e.dynamicChildren,h,r,i,l,s,c),(null!=t.key||i&&t===i.subTree)&&Qo(e,t,!0)):B(e,t,r,d,i,l,s,c,u)},T=(e,t,n,r,o,i,a,l,s)=>{t.slotScopeIds=l,null==e?512&t.shapeFlag?o.ctx.activate(t,n,r,a,s):V(t,n,r,o,i,a,s):R(e,t,s)},V=(e,t,n,r,o,i,a)=>{const l=e.component=Ui(e,r,o);if(Sr(e)&&(l.ctx.renderer=K),Yi(l),l.asyncDep){if(o&&o.registerDep(l,L),!e.el){const e=l.subTree=Oi(si);m(null,e,t,n)}}else L(l,e,t,n,o,i,a)},R=(e,t,n)=>{const r=t.component=e.component;if(function(e,t,n){const{props:r,children:o,component:i}=e,{props:a,children:l,patchFlag:s}=t,c=i.emitsOptions;if(t.dirs||t.transition)return!0;if(!(n&&s>=0))return!(!o&&!l||l&&l.$stable)||r!==a&&(r?!a||Kn(r,a,c):!!a);if(1024&s)return!0;if(16&s)return r?Kn(r,a,c):!!a;if(8&s){const e=t.dynamicProps;for(let t=0;thn&&pn.splice(t,1)}(r.update),r.update()}else t.el=e.el,r.vnode=t},L=(e,t,n,r,o,i,a)=>{const l=e.effect=new Ne((()=>{if(e.isMounted){let t,{next:n,bu:r,u:l,parent:s,vnode:c}=e,f=n;0,Jo(e,!1),n?(n.el=c.el,j(e,n,a)):n=c,r&&ae(r),(t=n.props&&n.props.onVnodeBeforeUpdate)&&Mi(t,s,n,c),Jo(e,!0);const d=Hn(e);0;const p=e.subTree;e.subTree=d,h(p,d,u(p.el),q(p),e,o,i),n.el=d.el,null===f&&Gn(e,d.el),l&&Ko(l,o),(t=n.props&&n.props.onVnodeUpdated)&&Ko((()=>Mi(t,s,n,c)),o)}else{let a;const{el:l,props:s}=t,{bm:c,m:u,parent:f}=e,d=Er(t);if(Jo(e,!1),c&&ae(c),!d&&(a=s&&s.onVnodeBeforeMount)&&Mi(a,f,t),Jo(e,!0),l&&Z){const n=()=>{e.subTree=Hn(e),Z(l,e.subTree,e,o,null)};d?t.type.__asyncLoader().then((()=>!e.isUnmounted&&n())):n()}else{0;const a=e.subTree=Hn(e);0,h(null,a,n,r,e,o,i),t.el=a.el}if(u&&Ko(u,o),!d&&(a=s&&s.onVnodeMounted)){const e=t;Ko((()=>Mi(a,f,e)),o)}(256&t.shapeFlag||f&&Er(f.vnode)&&256&f.vnode.shapeFlag)&&e.a&&Ko(e.a,o),e.isMounted=!0,t=n=r=null}}),(()=>Cn(s)),e.scope),s=e.update=()=>l.run();s.id=e.uid,Jo(e,!0),s()},j=(e,t,n)=>{t.component=e;const r=e.vnode.props;e.vnode=t,e.next=null,function(e,t,n,r){const{props:o,attrs:i,vnode:{patchFlag:a}}=e,l=It(o),[s]=e.propsOptions;let c=!1;if(!(r||a>0)||16&a){let r;ko(e,t,o,i)&&(c=!0);for(const i in l)t&&(A(t,i)||(r=ne(i))!==i&&A(t,r))||(s?!n||void 0===n[i]&&void 0===n[r]||(o[i]=So(s,l,i,void 0,e,!0)):delete o[i]);if(i!==l)for(const e in i)t&&A(t,e)||(delete i[e],c=!0)}else if(8&a){const n=e.vnode.dynamicProps;for(let r=0;r{const u=e&&e.children,f=e?e.shapeFlag:0,d=t.children,{patchFlag:p,shapeFlag:h}=t;if(p>0){if(128&p)return void M(u,d,n,r,o,i,a,l,s);if(256&p)return void I(u,d,n,r,o,i,a,l,s)}8&h?(16&f&&z(u,o,i),d!==u&&c(n,d)):16&f?16&h?M(u,d,n,r,o,i,a,l,s):z(u,o,i,!0):(8&f&&c(n,""),16&h&&_(d,n,r,o,i,a,l,s))},I=(e,t,n,r,o,i,a,l,s)=>{t=t||k;const c=(e=e||k).length,u=t.length,f=Math.min(c,u);let d;for(d=0;du?z(e,o,i,!0,!1,f):_(t,n,r,o,i,a,l,s,f)},M=(e,t,n,r,o,i,a,l,s)=>{let c=0;const u=t.length;let f=e.length-1,d=u-1;for(;c<=f&&c<=d;){const r=e[c],u=t[c]=s?ji(t[c]):Ai(t[c]);if(!Ci(r,u))break;h(r,u,n,null,o,i,a,l,s),c++}for(;c<=f&&c<=d;){const r=e[f],c=t[d]=s?ji(t[d]):Ai(t[d]);if(!Ci(r,c))break;h(r,c,n,null,o,i,a,l,s),f--,d--}if(c>f){if(c<=d){const e=d+1,f=ed)for(;c<=f;)D(e[c],o,i,!0),c++;else{const p=c,v=c,m=new Map;for(c=v;c<=d;c++){const e=t[c]=s?ji(t[c]):Ai(t[c]);null!=e.key&&m.set(e.key,c)}let g,y=0;const b=d-v+1;let w=!1,C=0;const _=new Array(b);for(c=0;c=b){D(r,o,i,!0);continue}let u;if(null!=r.key)u=m.get(r.key);else for(g=v;g<=d;g++)if(0===_[g-v]&&Ci(r,t[g])){u=g;break}void 0===u?D(r,o,i,!0):(_[u-v]=c+1,u>=C?C=u:w=!0,h(r,t[u],n,null,o,i,a,l,s),y++)}const E=w?function(e){const t=e.slice(),n=[0];let r,o,i,a,l;const s=e.length;for(r=0;r>1,e[n[l]]0&&(t[r]=n[i-1]),n[i]=r)}}i=n.length,a=n[i-1];for(;i-- >0;)n[i]=a,a=t[a];return n}(_):k;for(g=E.length-1,c=b-1;c>=0;c--){const e=v+c,f=t[e],d=e+1{const{el:a,type:l,transition:s,children:c,shapeFlag:u}=e;if(6&u)return void F(e.component.subTree,t,r,o);if(128&u)return void e.suspense.move(t,r,o);if(64&u)return void l.move(e,t,r,K);if(l===ai){n(a,t,r);for(let e=0;e{let i;for(;e&&e!==t;)i=f(e),n(e,r,o),e=i;n(t,r,o)})(e,t,r);if(2!==o&&1&u&&s)if(0===o)s.beforeEnter(a),n(a,t,r),Ko((()=>s.enter(a)),i);else{const{leave:e,delayLeave:o,afterLeave:i}=s,l=()=>n(a,t,r),c=()=>{e(a,(()=>{l(),i&&i()}))};o?o(a,l,c):c()}else n(a,t,r)},D=(e,t,n,r=!1,o=!1)=>{const{type:i,props:a,ref:l,children:s,dynamicChildren:c,shapeFlag:u,patchFlag:f,dirs:d}=e;if(null!=l&&$o(l,null,n,e,!0),256&u)return void t.ctx.deactivate(e);const p=1&u&&d,h=!Er(e);let v;if(h&&(v=a&&a.onVnodeBeforeUnmount)&&Mi(v,t,e),6&u)H(e.component,n,r);else{if(128&u)return void e.suspense.unmount(n,r);p&&Gr(e,null,t,"beforeUnmount"),64&u?e.type.remove(e,t,n,o,K,r):c&&(i!==ai||f>0&&64&f)?z(c,t,n,!1,!0):(i===ai&&384&f||!o&&16&u)&&z(s,t,n),r&&U(e)}(h&&(v=a&&a.onVnodeUnmounted)||p)&&Ko((()=>{v&&Mi(v,t,e),p&&Gr(e,null,t,"unmounted")}),n)},U=e=>{const{type:t,el:n,anchor:o,transition:i}=e;if(t===ai)return void $(n,o);if(t===ci)return void y(e);const a=()=>{r(n),i&&!i.persisted&&i.afterLeave&&i.afterLeave()};if(1&e.shapeFlag&&i&&!i.persisted){const{leave:t,delayLeave:r}=i,o=()=>t(n,a);r?r(e.el,a,o):o()}else a()},$=(e,t)=>{let n;for(;e!==t;)n=f(e),r(e),e=n;r(t)},H=(e,t,n)=>{const{bum:r,scope:o,update:i,subTree:a,um:l}=e;r&&ae(r),o.stop(),i&&(i.active=!1,D(a,e,t,n)),l&&Ko(l,t),Ko((()=>{e.isUnmounted=!0}),t),t&&t.pendingBranch&&!t.isUnmounted&&e.asyncDep&&!e.asyncResolved&&e.suspenseId===t.pendingId&&(t.deps--,0===t.deps&&t.resolve())},z=(e,t,n,r=!1,o=!1,i=0)=>{for(let a=i;a6&e.shapeFlag?q(e.component.subTree):128&e.shapeFlag?e.suspense.next():f(e.anchor||e.el),W=(e,t,n)=>{null==e?t._vnode&&D(t._vnode,null,null,!0):h(t._vnode||null,e,t,null,null,null,n),xn(),kn(),t._vnode=e},K={p:h,um:D,m:F,r:U,mt:V,mc:_,pc:B,pbc:O,n:q,o:e};let G,Z;return t&&([G,Z]=t(K)),{render:W,hydrate:G,createApp:Uo(W,G)}}function Jo({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Qo(e,t,n=!1){const r=e.children,o=t.children;if(j(r)&&j(o))for(let e=0;ee.__isTeleport,ei=e=>e&&(e.disabled||""===e.disabled),ti=e=>"undefined"!=typeof SVGElement&&e instanceof SVGElement,ni=(e,t)=>{const n=e&&e.to;if(U(n)){if(t){const e=t(n);return e}return null}return n};function ri(e,t,n,{o:{insert:r},m:o},i=2){0===i&&r(e.targetAnchor,t,n);const{el:a,anchor:l,shapeFlag:s,children:c,props:u}=e,f=2===i;if(f&&r(a,t,n),(!f||ei(u))&&16&s)for(let e=0;e{16&y&&u(b,e,t,o,i,a,l,s)};g?m(n,c):f&&m(f,d)}else{t.el=e.el;const r=t.anchor=e.anchor,u=t.target=e.target,p=t.targetAnchor=e.targetAnchor,v=ei(e.props),m=v?n:u,y=v?r:p;if(a=a||ti(u),w?(d(e.dynamicChildren,w,m,o,i,a,l),Qo(e,t,!0)):s||f(e,t,m,y,o,i,a,l,!1),g)v||ri(t,n,r,c,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const e=t.target=ni(t.props,h);e&&ri(t,e,null,c,0)}else v&&ri(t,u,p,c,1)}ii(t)},remove(e,t,n,r,{um:o,o:{remove:i}},a){const{shapeFlag:l,children:s,anchor:c,targetAnchor:u,target:f,props:d}=e;if(f&&i(u),(a||!ei(d))&&(i(c),16&l))for(let e=0;e0?fi||k:null,pi(),vi>0&&fi&&fi.push(e),e}function yi(e,t,n,r,o,i){return gi(Si(e,t,n,r,o,i,!0))}function bi(e,t,n,r,o){return gi(Oi(e,t,n,r,o,!0))}function wi(e){return!!e&&!0===e.__v_isVNode}function Ci(e,t){return e.type===t.type&&e.key===t.key}function _i(e){hi=e}const Ei="__vInternal",xi=({key:e})=>null!=e?e:null,ki=({ref:e,ref_key:t,ref_for:n})=>null!=e?U(e)||Ht(e)||D(e)?{i:Bn,r:e,k:t,f:!!n}:e:null;function Si(e,t=null,n=null,r=0,o=null,i=(e===ai?0:1),a=!1,l=!1){const s={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&xi(t),ref:t&&ki(t),scopeId:In,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:Bn};return l?(Bi(s,n),128&i&&e.normalize(s)):n&&(s.shapeFlag|=U(n)?8:16),vi>0&&!a&&fi&&(s.patchFlag>0||6&i)&&32!==s.patchFlag&&fi.push(s),s}const Oi=Ni;function Ni(e,t=null,n=null,r=0,o=null,i=!1){if(e&&e!==Qr||(e=si),wi(e)){const r=Ti(e,t,!0);return n&&Bi(r,n),vi>0&&!i&&fi&&(6&r.shapeFlag?fi[fi.indexOf(e)]=r:fi.push(r)),r.patchFlag|=-2,r}if(oa(e)&&(e=e.__vccOpts),t){t=Pi(t);let{class:e,style:n}=t;e&&!U(e)&&(t.class=d(e)),H(n)&&(Bt(n)&&!j(n)&&(n=V({},n)),t.style=l(n))}return Si(e,t,n,r,o,U(e)?1:Zn(e)?128:Xo(e)?64:H(e)?4:D(e)?2:0,i,!0)}function Pi(e){return e?Bt(e)||Ei in e?V({},e):e:null}function Ti(e,t,n=!1){const{props:r,ref:o,patchFlag:i,children:a}=e,l=t?Ii(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&xi(l),ref:t&&t.ref?n&&o?j(o)?o.concat(ki(t)):[o,ki(t)]:ki(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ai?-1===i?16:16|i:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Ti(e.ssContent),ssFallback:e.ssFallback&&Ti(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Vi(e=" ",t=0){return Oi(li,null,e,t)}function Ri(e,t){const n=Oi(ci,null,e);return n.staticCount=t,n}function Li(e="",t=!1){return t?(di(),bi(si,null,e)):Oi(si,null,e)}function Ai(e){return null==e||"boolean"==typeof e?Oi(si):j(e)?Oi(ai,null,e.slice()):"object"==typeof e?ji(e):Oi(li,null,String(e))}function ji(e){return null===e.el&&-1!==e.patchFlag||e.memo?e:Ti(e)}function Bi(e,t){let n=0;const{shapeFlag:r}=e;if(null==t)t=null;else if(j(t))n=16;else if("object"==typeof t){if(65&r){const n=t.default;return void(n&&(n._c&&(n._d=!1),Bi(e,n()),n._c&&(n._d=!0)))}{n=32;const r=t._;r||Ei in t?3===r&&Bn&&(1===Bn.slots._?t._=1:(t._=2,e.patchFlag|=1024)):t._ctx=Bn}}else D(t)?(t={default:t,_ctx:Bn},n=32):(t=String(t),64&r?(n=16,t=[Vi(t)]):n=8);e.children=t,e.shapeFlag|=n}function Ii(...e){const t={};for(let n=0;n$i||Bn,zi=e=>{$i=e,e.scope.on()},qi=()=>{$i&&$i.scope.off(),$i=null};function Wi(e){return 4&e.vnode.shapeFlag}let Ki,Gi,Zi=!1;function Yi(e,t=!1){Zi=t;const{props:n,children:r}=e.vnode,o=Wi(e);!function(e,t,n,r=!1){const o={},i={};le(i,Ei,1),e.propsDefaults=Object.create(null),ko(e,t,o,i);for(const t in e.propsOptions[0])t in o||(o[t]=void 0);n?e.props=r?o:Pt(o):e.type.props?e.props=o:e.props=i,e.attrs=i}(e,n,o,t),Io(e,r);const i=o?function(e,t){const n=e.type;0;e.accessCache=Object.create(null),e.proxy=Mt(new Proxy(e.ctx,fo)),!1;const{setup:r}=n;if(r){const n=e.setupContext=r.length>1?ta(e):null;zi(e),Ae();const o=sn(r,e,0,[e.props,n]);if(je(),qi(),z(o)){if(o.then(qi,qi),t)return o.then((n=>{Ji(e,n,t)})).catch((t=>{un(t,e,0)}));e.asyncDep=o}else Ji(e,o,t)}else ea(e,t)}(e,t):void 0;return Zi=!1,i}function Ji(e,t,n){D(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:H(t)&&(e.setupState=Jt(t)),ea(e,n)}function Qi(e){Ki=e,Gi=e=>{e.render._rc&&(e.withProxy=new Proxy(e.ctx,po))}}const Xi=()=>!Ki;function ea(e,t,n){const r=e.type;if(!e.render){if(!t&&Ki&&!r.render){const t=r.template||yo(e).template;if(t){0;const{isCustomElement:n,compilerOptions:o}=e.appContext.config,{delimiters:i,compilerOptions:a}=r,l=V(V({isCustomElement:n,delimiters:i},o),a);r.render=Ki(t,l)}}e.render=r.render||S,Gi&&Gi(e)}zi(e),Ae(),vo(e),je(),qi()}function ta(e){const t=t=>{e.exposed=t||{}};let n;return{get attrs(){return n||(n=function(e){return new Proxy(e.attrs,{get:(t,n)=>(Be(e,0,"$attrs"),t[n])})}(e))},slots:e.slots,emit:e.emit,expose:t}}function na(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Jt(Mt(e.exposed)),{get:(t,n)=>n in t?t[n]:n in co?co[n](e):void 0,has:(e,t)=>t in e||t in co}))}function ra(e,t=!0){return D(e)?e.displayName||e.name:e.name||t&&e.__name}function oa(e){return D(e)&&"__vccOpts"in e}const ia=(e,t)=>function(e,t,n=!1){let r,o;const i=D(e);return i?(r=e,o=S):(r=e.get,o=e.set),new on(r,o,i||!o,n)}(e,0,Zi);function aa(){return null}function la(){return null}function sa(e){0}function ca(e,t){return null}function ua(){return da().slots}function fa(){return da().attrs}function da(){const e=Hi();return e.setupContext||(e.setupContext=ta(e))}function pa(e,t){const n=j(e)?e.reduce(((e,t)=>(e[t]={},e)),{}):e;for(const e in t){const r=n[e];r?j(r)||D(r)?n[e]={type:r,default:t[e]}:r.default=t[e]:null===r&&(n[e]={default:t[e]})}return n}function ha(e,t){const n={};for(const r in e)t.includes(r)||Object.defineProperty(n,r,{enumerable:!0,get:()=>e[r]});return n}function va(e){const t=Hi();let n=e();return qi(),z(n)&&(n=n.catch((e=>{throw zi(t),e}))),[n,()=>zi(t)]}function ma(e,t,n){const r=arguments.length;return 2===r?H(t)&&!j(t)?wi(t)?Oi(e,null,[t]):Oi(e,t):Oi(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):3===r&&wi(n)&&(n=[n]),Oi(e,t,n))}const ga=Symbol(""),ya=()=>{{const e=rr(ga);return e}};function ba(){return void 0}function wa(e,t,n,r){const o=n[r];if(o&&Ca(o,e))return o;const i=t();return i.memo=e.slice(),n[r]=i}function Ca(e,t){const n=e.memo;if(n.length!=t.length)return!1;for(let e=0;e0&&fi&&fi.push(e),!0}const _a="3.2.47",Ea={createComponentInstance:Ui,setupComponent:Yi,renderComponentRoot:Hn,setCurrentRenderingInstance:Mn,isVNode:wi,normalizeVNode:Ai},xa=null,ka=null,Sa="undefined"!=typeof document?document:null,Oa=Sa&&Sa.createElement("template"),Na={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t?Sa.createElementNS("http://www.w3.org/2000/svg",e):Sa.createElement(e,n?{is:n}:void 0);return"select"===e&&r&&null!=r.multiple&&o.setAttribute("multiple",r.multiple),o},createText:e=>Sa.createTextNode(e),createComment:e=>Sa.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Sa.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,i){const a=n?n.previousSibling:t.lastChild;if(o&&(o===i||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),o!==i&&(o=o.nextSibling););else{Oa.innerHTML=r?`${e}`:e;const o=Oa.content;if(r){const e=o.firstChild;for(;e.firstChild;)o.appendChild(e.firstChild);o.removeChild(e)}t.insertBefore(o,n)}return[a?a.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};const Pa=/\s*!important$/;function Ta(e,t,n){if(j(n))n.forEach((n=>Ta(e,t,n)));else if(null==n&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=function(e,t){const n=Ra[t];if(n)return n;let r=ee(t);if("filter"!==r&&r in e)return Ra[t]=r;r=re(r);for(let n=0;n{if(e._vts){if(e._vts<=n.attached)return}else e._vts=Date.now();cn(function(e,t){if(j(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map((e=>t=>!t._stopped&&e&&e(t)))}return t}(e,n.value),t,5,[e])};return n.value=e,n.attached=Fa(),n}(r,o);Aa(e,n,a,l)}else a&&(!function(e,t,n,r){e.removeEventListener(t,n,r)}(e,n,a,l),i[t]=void 0)}}const Ba=/(?:Once|Passive|Capture)$/;let Ia=0;const Ma=Promise.resolve(),Fa=()=>Ia||(Ma.then((()=>Ia=0)),Ia=Date.now());const Da=/^on[a-z]/;function Ua(e,t){const n=_r(e);class r extends za{constructor(e){super(n,e,t)}}return r.def=n,r}const $a=e=>Ua(e,Kl),Ha="undefined"!=typeof HTMLElement?HTMLElement:class{};class za extends Ha{constructor(e,t={},n){super(),this._def=e,this._props=t,this._instance=null,this._connected=!1,this._resolved=!1,this._numberProps=null,this.shadowRoot&&n?n(this._createVNode(),this.shadowRoot):(this.attachShadow({mode:"open"}),this._def.__asyncLoader||this._resolveProps(this._def))}connectedCallback(){this._connected=!0,this._instance||(this._resolved?this._update():this._resolveDef())}disconnectedCallback(){this._connected=!1,wn((()=>{this._connected||(Wl(null,this.shadowRoot),this._instance=null)}))}_resolveDef(){this._resolved=!0;for(let e=0;e{for(const t of e)this._setAttr(t.attributeName)})).observe(this,{attributes:!0});const e=(e,t=!1)=>{const{props:n,styles:r}=e;let o;if(n&&!j(n))for(const e in n){const t=n[e];(t===Number||t&&t.type===Number)&&(e in this._props&&(this._props[e]=ce(this._props[e])),(o||(o=Object.create(null)))[ee(e)]=!0)}this._numberProps=o,t&&this._resolveProps(e),this._applyStyles(r),this._update()},t=this._def.__asyncLoader;t?t().then((t=>e(t,!0))):e(this._def)}_resolveProps(e){const{props:t}=e,n=j(t)?t:Object.keys(t||{});for(const e of Object.keys(this))"_"!==e[0]&&n.includes(e)&&this._setProp(e,this[e],!0,!1);for(const e of n.map(ee))Object.defineProperty(this,e,{get(){return this._getProp(e)},set(t){this._setProp(e,t)}})}_setAttr(e){let t=this.getAttribute(e);const n=ee(e);this._numberProps&&this._numberProps[n]&&(t=ce(t)),this._setProp(n,t,!1)}_getProp(e){return this._props[e]}_setProp(e,t,n=!0,r=!0){t!==this._props[e]&&(this._props[e]=t,r&&this._instance&&this._update(),n&&(!0===t?this.setAttribute(ne(e),""):"string"==typeof t||"number"==typeof t?this.setAttribute(ne(e),t+""):t||this.removeAttribute(ne(e))))}_update(){Wl(this._createVNode(),this.shadowRoot)}_createVNode(){const e=Oi(this._def,V({},this._props));return this._instance||(e.ce=e=>{this._instance=e,e.isCE=!0;const t=(e,t)=>{this.dispatchEvent(new CustomEvent(e,{detail:t}))};e.emit=(e,...n)=>{t(e,n),ne(e)!==e&&t(ne(e),n)};let n=this;for(;n=n&&(n.parentNode||n.host);)if(n instanceof za){e.parent=n._instance,e.provides=n._instance.provides;break}}),e}_applyStyles(e){e&&e.forEach((e=>{const t=document.createElement("style");t.textContent=e,this.shadowRoot.appendChild(t)}))}}function qa(e="$style"){{const t=Hi();if(!t)return x;const n=t.type.__cssModules;if(!n)return x;const r=n[e];return r||x}}function Wa(e){const t=Hi();if(!t)return;const n=t.ut=(n=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach((e=>Ga(e,n)))},r=()=>{const r=e(t.proxy);Ka(t.subTree,r),n(r)};ir(r),Mr((()=>{const e=new MutationObserver(r);e.observe(t.subTree.el.parentNode,{childList:!0}),$r((()=>e.disconnect()))}))}function Ka(e,t){if(128&e.shapeFlag){const n=e.suspense;e=n.activeBranch,n.pendingBranch&&!n.isHydrating&&n.effects.push((()=>{Ka(n.activeBranch,t)}))}for(;e.component;)e=e.component.subTree;if(1&e.shapeFlag&&e.el)Ga(e.el,t);else if(e.type===ai)e.children.forEach((e=>Ka(e,t)));else if(e.type===ci){let{el:n,anchor:r}=e;for(;n&&(Ga(n,t),n!==r);)n=n.nextSibling}}function Ga(e,t){if(1===e.nodeType){const n=e.style;for(const e in t)n.setProperty(`--${e}`,t[e])}}const Za="transition",Ya="animation",Ja=(e,{slots:t})=>ma(vr,nl(e),t);Ja.displayName="Transition";const Qa={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Xa=Ja.props=V({},vr.props,Qa),el=(e,t=[])=>{j(e)?e.forEach((e=>e(...t))):e&&e(...t)},tl=e=>!!e&&(j(e)?e.some((e=>e.length>1)):e.length>1);function nl(e){const t={};for(const n in e)n in Qa||(t[n]=e[n]);if(!1===e.css)return t;const{name:n="v",type:r,duration:o,enterFromClass:i=`${n}-enter-from`,enterActiveClass:a=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:s=i,appearActiveClass:c=a,appearToClass:u=l,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:p=`${n}-leave-to`}=e,h=function(e){if(null==e)return null;if(H(e))return[rl(e.enter),rl(e.leave)];{const t=rl(e);return[t,t]}}(o),v=h&&h[0],m=h&&h[1],{onBeforeEnter:g,onEnter:y,onEnterCancelled:b,onLeave:w,onLeaveCancelled:C,onBeforeAppear:_=g,onAppear:E=y,onAppearCancelled:x=b}=t,k=(e,t,n)=>{il(e,t?u:l),il(e,t?c:a),n&&n()},S=(e,t)=>{e._isLeaving=!1,il(e,f),il(e,p),il(e,d),t&&t()},O=e=>(t,n)=>{const o=e?E:y,a=()=>k(t,e,n);el(o,[t,a]),al((()=>{il(t,e?s:i),ol(t,e?u:l),tl(o)||sl(t,r,v,a)}))};return V(t,{onBeforeEnter(e){el(g,[e]),ol(e,i),ol(e,a)},onBeforeAppear(e){el(_,[e]),ol(e,s),ol(e,c)},onEnter:O(!1),onAppear:O(!0),onLeave(e,t){e._isLeaving=!0;const n=()=>S(e,t);ol(e,f),dl(),ol(e,d),al((()=>{e._isLeaving&&(il(e,f),ol(e,p),tl(w)||sl(e,r,m,n))})),el(w,[e,n])},onEnterCancelled(e){k(e,!1),el(b,[e])},onAppearCancelled(e){k(e,!0),el(x,[e])},onLeaveCancelled(e){S(e),el(C,[e])}})}function rl(e){return ce(e)}function ol(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.add(t))),(e._vtc||(e._vtc=new Set)).add(t)}function il(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.remove(t)));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function al(e){requestAnimationFrame((()=>{requestAnimationFrame(e)}))}let ll=0;function sl(e,t,n,r){const o=e._endId=++ll,i=()=>{o===e._endId&&r()};if(n)return setTimeout(i,n);const{type:a,timeout:l,propCount:s}=cl(e,t);if(!a)return r();const c=a+"end";let u=0;const f=()=>{e.removeEventListener(c,d),i()},d=t=>{t.target===e&&++u>=s&&f()};setTimeout((()=>{u(n[e]||"").split(", "),o=r(`${Za}Delay`),i=r(`${Za}Duration`),a=ul(o,i),l=r(`${Ya}Delay`),s=r(`${Ya}Duration`),c=ul(l,s);let u=null,f=0,d=0;t===Za?a>0&&(u=Za,f=a,d=i.length):t===Ya?c>0&&(u=Ya,f=c,d=s.length):(f=Math.max(a,c),u=f>0?a>c?Za:Ya:null,d=u?u===Za?i.length:s.length:0);return{type:u,timeout:f,propCount:d,hasTransform:u===Za&&/\b(transform|all)(,|$)/.test(r(`${Za}Property`).toString())}}function ul(e,t){for(;e.lengthfl(t)+fl(e[n]))))}function fl(e){return 1e3*Number(e.slice(0,-1).replace(",","."))}function dl(){return document.body.offsetHeight}const pl=new WeakMap,hl=new WeakMap,vl={name:"TransitionGroup",props:V({},Xa,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=Hi(),r=pr();let o,i;return Dr((()=>{if(!o.length)return;const t=e.moveClass||`${e.name||"v"}-move`;if(!function(e,t,n){const r=e.cloneNode();e._vtc&&e._vtc.forEach((e=>{e.split(/\s+/).forEach((e=>e&&r.classList.remove(e)))}));n.split(/\s+/).forEach((e=>e&&r.classList.add(e))),r.style.display="none";const o=1===t.nodeType?t:t.parentNode;o.appendChild(r);const{hasTransform:i}=cl(r);return o.removeChild(r),i}(o[0].el,n.vnode.el,t))return;o.forEach(gl),o.forEach(yl);const r=o.filter(bl);dl(),r.forEach((e=>{const n=e.el,r=n.style;ol(n,t),r.transform=r.webkitTransform=r.transitionDuration="";const o=n._moveCb=e=>{e&&e.target!==n||e&&!/transform$/.test(e.propertyName)||(n.removeEventListener("transitionend",o),n._moveCb=null,il(n,t))};n.addEventListener("transitionend",o)}))})),()=>{const a=It(e),l=nl(a);let s=a.tag||ai;o=i,i=t.default?Cr(t.default()):[];for(let e=0;e{const t=e.props["onUpdate:modelValue"]||!1;return j(t)?e=>ae(t,e):t};function Cl(e){e.target.composing=!0}function _l(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const El={created(e,{modifiers:{lazy:t,trim:n,number:r}},o){e._assign=wl(o);const i=r||o.props&&"number"===o.props.type;Aa(e,t?"change":"input",(t=>{if(t.target.composing)return;let r=e.value;n&&(r=r.trim()),i&&(r=se(r)),e._assign(r)})),n&&Aa(e,"change",(()=>{e.value=e.value.trim()})),t||(Aa(e,"compositionstart",Cl),Aa(e,"compositionend",_l),Aa(e,"change",_l))},mounted(e,{value:t}){e.value=null==t?"":t},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:r,number:o}},i){if(e._assign=wl(i),e.composing)return;if(document.activeElement===e&&"range"!==e.type){if(n)return;if(r&&e.value.trim()===t)return;if((o||"number"===e.type)&&se(e.value)===t)return}const a=null==t?"":t;e.value!==a&&(e.value=a)}},xl={deep:!0,created(e,t,n){e._assign=wl(n),Aa(e,"change",(()=>{const t=e._modelValue,n=Pl(e),r=e.checked,o=e._assign;if(j(t)){const e=C(t,n),i=-1!==e;if(r&&!i)o(t.concat(n));else if(!r&&i){const n=[...t];n.splice(e,1),o(n)}}else if(I(t)){const e=new Set(t);r?e.add(n):e.delete(n),o(e)}else o(Tl(e,r))}))},mounted:kl,beforeUpdate(e,t,n){e._assign=wl(n),kl(e,t,n)}};function kl(e,{value:t,oldValue:n},r){e._modelValue=t,j(t)?e.checked=C(t,r.props.value)>-1:I(t)?e.checked=t.has(r.props.value):t!==n&&(e.checked=w(t,Tl(e,!0)))}const Sl={created(e,{value:t},n){e.checked=w(t,n.props.value),e._assign=wl(n),Aa(e,"change",(()=>{e._assign(Pl(e))}))},beforeUpdate(e,{value:t,oldValue:n},r){e._assign=wl(r),t!==n&&(e.checked=w(t,r.props.value))}},Ol={deep:!0,created(e,{value:t,modifiers:{number:n}},r){const o=I(t);Aa(e,"change",(()=>{const t=Array.prototype.filter.call(e.options,(e=>e.selected)).map((e=>n?se(Pl(e)):Pl(e)));e._assign(e.multiple?o?new Set(t):t:t[0])})),e._assign=wl(r)},mounted(e,{value:t}){Nl(e,t)},beforeUpdate(e,t,n){e._assign=wl(n)},updated(e,{value:t}){Nl(e,t)}};function Nl(e,t){const n=e.multiple;if(!n||j(t)||I(t)){for(let r=0,o=e.options.length;r-1:o.selected=t.has(i);else if(w(Pl(o),t))return void(e.selectedIndex!==r&&(e.selectedIndex=r))}n||-1===e.selectedIndex||(e.selectedIndex=-1)}}function Pl(e){return"_value"in e?e._value:e.value}function Tl(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Vl={created(e,t,n){Ll(e,t,n,null,"created")},mounted(e,t,n){Ll(e,t,n,null,"mounted")},beforeUpdate(e,t,n,r){Ll(e,t,n,r,"beforeUpdate")},updated(e,t,n,r){Ll(e,t,n,r,"updated")}};function Rl(e,t){switch(e){case"SELECT":return Ol;case"TEXTAREA":return El;default:switch(t){case"checkbox":return xl;case"radio":return Sl;default:return El}}}function Ll(e,t,n,r,o){const i=Rl(e.tagName,n.props&&n.props.type)[o];i&&i(e,t,n,r)}const Al=["ctrl","shift","alt","meta"],jl={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&0!==e.button,middle:e=>"button"in e&&1!==e.button,right:e=>"button"in e&&2!==e.button,exact:(e,t)=>Al.some((n=>e[`${n}Key`]&&!t.includes(n)))},Bl=(e,t)=>(n,...r)=>{for(let e=0;en=>{if(!("key"in n))return;const r=ne(n.key);return t.some((e=>e===r||Il[e]===r))?e(n):void 0},Fl={beforeMount(e,{value:t},{transition:n}){e._vod="none"===e.style.display?"":e.style.display,n&&t?n.beforeEnter(e):Dl(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),Dl(e,!0),r.enter(e)):r.leave(e,(()=>{Dl(e,!1)})):Dl(e,t))},beforeUnmount(e,{value:t}){Dl(e,t)}};function Dl(e,t){e.style.display=t?e._vod:"none"}const Ul=V({patchProp:(e,t,n,r,o=!1,i,a,l,s)=>{"class"===t?function(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),null==t?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}(e,r,o):"style"===t?function(e,t,n){const r=e.style,o=U(n);if(n&&!o){if(t&&!U(t))for(const e in t)null==n[e]&&Ta(r,e,"");for(const e in n)Ta(r,e,n[e])}else{const i=r.display;o?t!==n&&(r.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(r.display=i)}}(e,n,r):P(t)?T(t)||ja(e,t,0,r,a):("."===t[0]?(t=t.slice(1),1):"^"===t[0]?(t=t.slice(1),0):function(e,t,n,r){if(r)return"innerHTML"===t||"textContent"===t||!!(t in e&&Da.test(t)&&D(n));if("spellcheck"===t||"draggable"===t||"translate"===t)return!1;if("form"===t)return!1;if("list"===t&&"INPUT"===e.tagName)return!1;if("type"===t&&"TEXTAREA"===e.tagName)return!1;if(Da.test(t)&&U(n))return!1;return t in e}(e,t,r,o))?function(e,t,n,r,o,i,a){if("innerHTML"===t||"textContent"===t)return r&&a(r,o,i),void(e[t]=null==n?"":n);if("value"===t&&"PROGRESS"!==e.tagName&&!e.tagName.includes("-")){e._value=n;const r=null==n?"":n;return e.value===r&&"OPTION"!==e.tagName||(e.value=r),void(null==n&&e.removeAttribute(t))}let l=!1;if(""===n||null==n){const r=typeof e[t];"boolean"===r?n=b(n):null==n&&"string"===r?(n="",l=!0):"number"===r&&(n=0,l=!0)}try{e[t]=n}catch(e){}l&&e.removeAttribute(t)}(e,t,r,i,a,l,s):("true-value"===t?e._trueValue=r:"false-value"===t&&(e._falseValue=r),function(e,t,n,r,o){if(r&&t.startsWith("xlink:"))null==n?e.removeAttributeNS(La,t.slice(6,t.length)):e.setAttributeNS(La,t,n);else{const r=y(t);null==n||r&&!b(n)?e.removeAttribute(t):e.setAttribute(t,r?"":n)}}(e,t,r,o))}},Na);let $l,Hl=!1;function zl(){return $l||($l=Go(Ul))}function ql(){return $l=Hl?$l:Zo(Ul),Hl=!0,$l}const Wl=(...e)=>{zl().render(...e)},Kl=(...e)=>{ql().hydrate(...e)},Gl=(...e)=>{const t=zl().createApp(...e);const{mount:n}=t;return t.mount=e=>{const r=Yl(e);if(!r)return;const o=t._component;D(o)||o.render||o.template||(o.template=r.innerHTML),r.innerHTML="";const i=n(r,!1,r instanceof SVGElement);return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t},Zl=(...e)=>{const t=ql().createApp(...e);const{mount:n}=t;return t.mount=e=>{const t=Yl(e);if(t)return n(t,!0,t instanceof SVGElement)},t};function Yl(e){if(U(e)){return document.querySelector(e)}return e}let Jl=!1;const Ql=()=>{Jl||(Jl=!0,El.getSSRProps=({value:e})=>({value:e}),Sl.getSSRProps=({value:e},t)=>{if(t.props&&w(t.props.value,e))return{checked:!0}},xl.getSSRProps=({value:e},t)=>{if(j(e)){if(t.props&&C(e,t.props.value)>-1)return{checked:!0}}else if(I(e)){if(t.props&&e.has(t.props.value))return{checked:!0}}else if(e)return{checked:!0}},Vl.getSSRProps=(e,t)=>{if("string"!=typeof t.type)return;const n=Rl(t.type.toUpperCase(),t.props&&t.props.type);return n.getSSRProps?n.getSSRProps(e,t):void 0},Fl.getSSRProps=({value:e})=>{if(!e)return{style:{display:"none"}}})};function Xl(e){throw e}function es(e){}function ts(e,t,n,r){const o=new SyntaxError(String(e));return o.code=e,o.loc=t,o}const ns=Symbol(""),rs=Symbol(""),os=Symbol(""),is=Symbol(""),as=Symbol(""),ls=Symbol(""),ss=Symbol(""),cs=Symbol(""),us=Symbol(""),fs=Symbol(""),ds=Symbol(""),ps=Symbol(""),hs=Symbol(""),vs=Symbol(""),ms=Symbol(""),gs=Symbol(""),ys=Symbol(""),bs=Symbol(""),ws=Symbol(""),Cs=Symbol(""),_s=Symbol(""),Es=Symbol(""),xs=Symbol(""),ks=Symbol(""),Ss=Symbol(""),Os=Symbol(""),Ns=Symbol(""),Ps=Symbol(""),Ts=Symbol(""),Vs=Symbol(""),Rs=Symbol(""),Ls=Symbol(""),As=Symbol(""),js=Symbol(""),Bs=Symbol(""),Is=Symbol(""),Ms=Symbol(""),Fs=Symbol(""),Ds=Symbol(""),Us={[ns]:"Fragment",[rs]:"Teleport",[os]:"Suspense",[is]:"KeepAlive",[as]:"BaseTransition",[ls]:"openBlock",[ss]:"createBlock",[cs]:"createElementBlock",[us]:"createVNode",[fs]:"createElementVNode",[ds]:"createCommentVNode",[ps]:"createTextVNode",[hs]:"createStaticVNode",[vs]:"resolveComponent",[ms]:"resolveDynamicComponent",[gs]:"resolveDirective",[ys]:"resolveFilter",[bs]:"withDirectives",[ws]:"renderList",[Cs]:"renderSlot",[_s]:"createSlots",[Es]:"toDisplayString",[xs]:"mergeProps",[ks]:"normalizeClass",[Ss]:"normalizeStyle",[Os]:"normalizeProps",[Ns]:"guardReactiveProps",[Ps]:"toHandlers",[Ts]:"camelize",[Vs]:"capitalize",[Rs]:"toHandlerKey",[Ls]:"setBlockTracking",[As]:"pushScopeId",[js]:"popScopeId",[Bs]:"withCtx",[Is]:"unref",[Ms]:"isRef",[Fs]:"withMemo",[Ds]:"isMemoSame"};const $s={source:"",start:{line:1,column:1,offset:0},end:{line:1,column:1,offset:0}};function Hs(e,t,n,r,o,i,a,l=!1,s=!1,c=!1,u=$s){return e&&(l?(e.helper(ls),e.helper(yc(e.inSSR,c))):e.helper(gc(e.inSSR,c)),a&&e.helper(bs)),{type:13,tag:t,props:n,children:r,patchFlag:o,dynamicProps:i,directives:a,isBlock:l,disableTracking:s,isComponent:c,loc:u}}function zs(e,t=$s){return{type:17,loc:t,elements:e}}function qs(e,t=$s){return{type:15,loc:t,properties:e}}function Ws(e,t){return{type:16,loc:$s,key:U(e)?Ks(e,!0):e,value:t}}function Ks(e,t=!1,n=$s,r=0){return{type:4,loc:n,content:e,isStatic:t,constType:t?3:r}}function Gs(e,t=$s){return{type:8,loc:t,children:e}}function Zs(e,t=[],n=$s){return{type:14,loc:n,callee:e,arguments:t}}function Ys(e,t,n=!1,r=!1,o=$s){return{type:18,params:e,returns:t,newline:n,isSlot:r,loc:o}}function Js(e,t,n,r=!0){return{type:19,test:e,consequent:t,alternate:n,newline:r,loc:$s}}const Qs=e=>4===e.type&&e.isStatic,Xs=(e,t)=>e===t||e===ne(t);function ec(e){return Xs(e,"Teleport")?rs:Xs(e,"Suspense")?os:Xs(e,"KeepAlive")?is:Xs(e,"BaseTransition")?as:void 0}const tc=/^\d|[^\$\w]/,nc=e=>!tc.test(e),rc=/[A-Za-z_$\xA0-\uFFFF]/,oc=/[\.\?\w$\xA0-\uFFFF]/,ic=/\s+[.[]\s*|\s*[.[]\s+/g,ac=e=>{e=e.trim().replace(ic,(e=>e.trim()));let t=0,n=[],r=0,o=0,i=null;for(let a=0;a4===e.key.type&&e.key.content===r))}return n}function Ec(e,t){return`_${t}_${e.replace(/[^\w]/g,((t,n)=>"-"===t?"_":e.charCodeAt(n).toString()))}`}function xc(e,{helper:t,removeHelper:n,inSSR:r}){e.isBlock||(e.isBlock=!0,n(gc(r,e.isComponent)),t(ls),t(yc(r,e.isComponent)))}function kc(e,t){const n=t.options?t.options.compatConfig:t.compatConfig,r=n&&n[e];return"MODE"===e?r||3:r}function Sc(e,t){const n=kc("MODE",t),r=kc(e,t);return 3===n?!0===r:!1!==r}function Oc(e,t,n,...r){return Sc(e,t)}const Nc=/&(gt|lt|amp|apos|quot);/g,Pc={gt:">",lt:"<",amp:"&",apos:"'",quot:'"'},Tc={delimiters:["{{","}}"],getNamespace:()=>0,getTextMode:()=>0,isVoidTag:O,isPreTag:O,isCustomElement:O,decodeEntities:e=>e.replace(Nc,((e,t)=>Pc[t])),onError:Xl,onWarn:es,comments:!1};function Vc(e,t={}){const n=function(e,t){const n=V({},Tc);let r;for(r in t)n[r]=void 0===t[r]?Tc[r]:t[r];return{options:n,column:1,line:1,offset:0,originalSource:e,source:e,inPre:!1,inVPre:!1,onWarn:n.onWarn}}(e,t),r=qc(n);return function(e,t=$s){return{type:0,children:e,helpers:new Set,components:[],directives:[],hoists:[],imports:[],cached:0,temps:0,codegenNode:void 0,loc:t}}(Rc(n,0,[]),Wc(n,r))}function Rc(e,t,n){const r=Kc(n),o=r?r.ns:0,i=[];for(;!Xc(e,t,n);){const a=e.source;let l;if(0===t||1===t)if(!e.inVPre&&Gc(a,e.options.delimiters[0]))l=$c(e,t);else if(0===t&&"<"===a[0])if(1===a.length)Qc(e,5,1);else if("!"===a[1])Gc(a,"\x3c!--")?l=jc(e):Gc(a,""===a[2]){Qc(e,14,2),Zc(e,3);continue}if(/[a-z]/i.test(a[2])){Qc(e,23),Fc(e,1,r);continue}Qc(e,12,2),l=Bc(e)}else/[a-z]/i.test(a[1])?(l=Ic(e,n),Sc("COMPILER_NATIVE_TEMPLATE",e)&&l&&"template"===l.tag&&!l.props.some((e=>7===e.type&&Mc(e.name)))&&(l=l.children)):"?"===a[1]?(Qc(e,21,1),l=Bc(e)):Qc(e,12,1);if(l||(l=Hc(e,t)),j(l))for(let e=0;e/.exec(e.source);if(r){r.index<=3&&Qc(e,0),r[1]&&Qc(e,10),n=e.source.slice(4,r.index);const t=e.source.slice(0,r.index);let o=1,i=0;for(;-1!==(i=t.indexOf("\x3c!--",o));)Zc(e,i-o+1),i+4");return-1===o?(r=e.source.slice(n),Zc(e,e.source.length)):(r=e.source.slice(n,o),Zc(e,o+1)),{type:3,content:r,loc:Wc(e,t)}}function Ic(e,t){const n=e.inPre,r=e.inVPre,o=Kc(t),i=Fc(e,0,o),a=e.inPre&&!n,l=e.inVPre&&!r;if(i.isSelfClosing||e.options.isVoidTag(i.tag))return a&&(e.inPre=!1),l&&(e.inVPre=!1),i;t.push(i);const s=e.options.getTextMode(i,o),c=Rc(e,s,t);t.pop();{const t=i.props.find((e=>6===e.type&&"inline-template"===e.name));if(t&&Oc("COMPILER_INLINE_TEMPLATE",e,t.loc)){const n=Wc(e,i.loc.end);t.value={type:2,content:n.source,loc:n}}}if(i.children=c,eu(e.source,i.tag))Fc(e,1,o);else if(Qc(e,24,0,i.loc.start),0===e.source.length&&"script"===i.tag.toLowerCase()){const t=c[0];t&&Gc(t.loc.source,"\x3c!--")&&Qc(e,8)}return i.loc=Wc(e,i.loc.start),a&&(e.inPre=!1),l&&(e.inVPre=!1),i}const Mc=o("if,else,else-if,for,slot");function Fc(e,t,n){const r=qc(e),o=/^<\/?([a-z][^\t\r\n\f />]*)/i.exec(e.source),i=o[1],a=e.options.getNamespace(i,n);Zc(e,o[0].length),Yc(e);const l=qc(e),s=e.source;e.options.isPreTag(i)&&(e.inPre=!0);let c=Dc(e,t);0===t&&!e.inVPre&&c.some((e=>7===e.type&&"pre"===e.name))&&(e.inVPre=!0,V(e,l),e.source=s,c=Dc(e,t).filter((e=>"v-pre"!==e.name)));let u=!1;if(0===e.source.length?Qc(e,9):(u=Gc(e.source,"/>"),1===t&&u&&Qc(e,4),Zc(e,u?2:1)),1===t)return;let f=0;return e.inVPre||("slot"===i?f=2:"template"===i?c.some((e=>7===e.type&&Mc(e.name)))&&(f=3):function(e,t,n){const r=n.options;if(r.isCustomElement(e))return!1;if("component"===e||/^[A-Z]/.test(e)||ec(e)||r.isBuiltInComponent&&r.isBuiltInComponent(e)||r.isNativeTag&&!r.isNativeTag(e))return!0;for(let e=0;e0&&!Gc(e.source,">")&&!Gc(e.source,"/>");){if(Gc(e.source,"/")){Qc(e,22),Zc(e,1),Yc(e);continue}1===t&&Qc(e,3);const o=Uc(e,r);6===o.type&&o.value&&"class"===o.name&&(o.value.content=o.value.content.replace(/\s+/g," ").trim()),0===t&&n.push(o),/^[^\t\r\n\f />]/.test(e.source)&&Qc(e,15),Yc(e)}return n}function Uc(e,t){const n=qc(e),r=/^[^\t\r\n\f />][^\t\r\n\f />=]*/.exec(e.source)[0];t.has(r)&&Qc(e,2),t.add(r),"="===r[0]&&Qc(e,19);{const t=/["'<]/g;let n;for(;n=t.exec(r);)Qc(e,17,n.index)}let o;Zc(e,r.length),/^[\t\r\n\f ]*=/.test(e.source)&&(Yc(e),Zc(e,1),Yc(e),o=function(e){const t=qc(e);let n;const r=e.source[0],o='"'===r||"'"===r;if(o){Zc(e,1);const t=e.source.indexOf(r);-1===t?n=zc(e,e.source.length,4):(n=zc(e,t,4),Zc(e,1))}else{const t=/^[^\t\r\n\f >]+/.exec(e.source);if(!t)return;const r=/["'<=`]/g;let o;for(;o=r.exec(t[0]);)Qc(e,18,o.index);n=zc(e,t[0].length,4)}return{content:n,isQuoted:o,loc:Wc(e,t)}}(e),o||Qc(e,13));const i=Wc(e,n);if(!e.inVPre&&/^(v-[A-Za-z0-9-]|:|\.|@|#)/.test(r)){const t=/(?:^v-([a-z0-9-]+))?(?:(?::|^\.|^@|^#)(\[[^\]]+\]|[^\.]+))?(.+)?$/i.exec(r);let a,l=Gc(r,"."),s=t[1]||(l||Gc(r,":")?"bind":Gc(r,"@")?"on":"slot");if(t[2]){const o="slot"===s,i=r.lastIndexOf(t[2]),l=Wc(e,Jc(e,n,i),Jc(e,n,i+t[2].length+(o&&t[3]||"").length));let c=t[2],u=!0;c.startsWith("[")?(u=!1,c.endsWith("]")?c=c.slice(1,c.length-1):(Qc(e,27),c=c.slice(1))):o&&(c+=t[3]||""),a={type:4,content:c,isStatic:u,constType:u?3:0,loc:l}}if(o&&o.isQuoted){const e=o.loc;e.start.offset++,e.start.column++,e.end=sc(e.start,o.content),e.source=e.source.slice(1,-1)}const c=t[3]?t[3].slice(1).split("."):[];return l&&c.push("prop"),"bind"===s&&a&&c.includes("sync")&&Oc("COMPILER_V_BIND_SYNC",e,0,a.loc.source)&&(s="model",c.splice(c.indexOf("sync"),1)),{type:7,name:s,exp:o&&{type:4,content:o.content,isStatic:!1,constType:0,loc:o.loc},arg:a,modifiers:c,loc:i}}return!e.inVPre&&Gc(r,"v-")&&Qc(e,26),{type:6,name:r,value:o&&{type:2,content:o.content,loc:o.loc},loc:i}}function $c(e,t){const[n,r]=e.options.delimiters,o=e.source.indexOf(r,n.length);if(-1===o)return void Qc(e,25);const i=qc(e);Zc(e,n.length);const a=qc(e),l=qc(e),s=o-n.length,c=e.source.slice(0,s),u=zc(e,s,t),f=u.trim(),d=u.indexOf(f);d>0&&cc(a,c,d);return cc(l,c,s-(u.length-f.length-d)),Zc(e,r.length),{type:5,content:{type:4,isStatic:!1,constType:0,content:f,loc:Wc(e,a,l)},loc:Wc(e,i)}}function Hc(e,t){const n=3===t?["]]>"]:["<",e.options.delimiters[0]];let r=e.source.length;for(let t=0;to&&(r=o)}const o=qc(e);return{type:2,content:zc(e,r,t),loc:Wc(e,o)}}function zc(e,t,n){const r=e.source.slice(0,t);return Zc(e,t),2!==n&&3!==n&&r.includes("&")?e.options.decodeEntities(r,4===n):r}function qc(e){const{column:t,line:n,offset:r}=e;return{column:t,line:n,offset:r}}function Wc(e,t,n){return{start:t,end:n=n||qc(e),source:e.originalSource.slice(t.offset,n.offset)}}function Kc(e){return e[e.length-1]}function Gc(e,t){return e.startsWith(t)}function Zc(e,t){const{source:n}=e;cc(e,n,t),e.source=n.slice(t)}function Yc(e){const t=/^[\t\r\n\f ]+/.exec(e.source);t&&Zc(e,t[0].length)}function Jc(e,t,n){return sc(t,e.originalSource.slice(t.offset,n),n)}function Qc(e,t,n,r=qc(e)){n&&(r.offset+=n,r.column+=n),e.options.onError(ts(t,{start:r,end:r,source:""}))}function Xc(e,t,n){const r=e.source;switch(t){case 0:if(Gc(r,"=0;--e)if(eu(r,n[e].tag))return!0;break;case 1:case 2:{const e=Kc(n);if(e&&eu(r,e.tag))return!0;break}case 3:if(Gc(r,"]]>"))return!0}return!r}function eu(e,t){return Gc(e,"]/.test(e[2+t.length]||">")}function tu(e,t){ru(e,t,nu(e,e.children[0]))}function nu(e,t){const{children:n}=e;return 1===n.length&&1===t.type&&!mc(t)}function ru(e,t,n=!1){const{children:r}=e,o=r.length;let i=0;for(let e=0;e0){if(e>=2){o.codegenNode.patchFlag="-1",o.codegenNode=t.hoist(o.codegenNode),i++;continue}}else{const e=o.codegenNode;if(13===e.type){const n=cu(e);if((!n||512===n||1===n)&&lu(o,t)>=2){const n=su(o);n&&(e.props=t.hoist(n))}e.dynamicProps&&(e.dynamicProps=t.hoist(e.dynamicProps))}}}if(1===o.type){const e=1===o.tagType;e&&t.scopes.vSlot++,ru(o,t),e&&t.scopes.vSlot--}else if(11===o.type)ru(o,t,1===o.children.length);else if(9===o.type)for(let e=0;e1)for(let o=0;o`_${Us[E.helper(e)]}`,replaceNode(e){E.parent.children[E.childIndex]=E.currentNode=e},removeNode(e){const t=E.parent.children,n=e?t.indexOf(e):E.currentNode?E.childIndex:-1;e&&e!==E.currentNode?E.childIndex>n&&(E.childIndex--,E.onNodeRemoved()):(E.currentNode=null,E.onNodeRemoved()),E.parent.children.splice(n,1)},onNodeRemoved:()=>{},addIdentifiers(e){},removeIdentifiers(e){},hoist(e){U(e)&&(e=Ks(e)),E.hoists.push(e);const t=Ks(`_hoisted_${E.hoists.length}`,!1,e.loc,2);return t.hoisted=e,t},cache:(e,t=!1)=>function(e,t,n=!1){return{type:20,index:e,value:t,isVNode:n,loc:$s}}(E.cached++,e,t)};return E.filters=new Set,E}function fu(e,t){const n=uu(e,t);du(e,n),t.hoistStatic&&tu(e,n),t.ssr||function(e,t){const{helper:n}=t,{children:r}=e;if(1===r.length){const n=r[0];if(nu(e,n)&&n.codegenNode){const r=n.codegenNode;13===r.type&&xc(r,t),e.codegenNode=r}else e.codegenNode=n}else if(r.length>1){let r=64;i[64];0,e.codegenNode=Hs(t,n(ns),void 0,e.children,r+"",void 0,void 0,!0,void 0,!1)}}(e,n),e.helpers=new Set([...n.helpers.keys()]),e.components=[...n.components],e.directives=[...n.directives],e.imports=n.imports,e.hoists=n.hoists,e.temps=n.temps,e.cached=n.cached,e.filters=[...n.filters]}function du(e,t){t.currentNode=e;const{nodeTransforms:n}=t,r=[];for(let o=0;o{n--};for(;nt===e:t=>e.test(t);return(e,r)=>{if(1===e.type){const{props:o}=e;if(3===e.tagType&&o.some(hc))return;const i=[];for(let a=0;a`${Us[e]}: _${Us[e]}`;function mu(e,{mode:t="function",prefixIdentifiers:n="module"===t,sourceMap:r=!1,filename:o="template.vue.html",scopeId:i=null,optimizeImports:a=!1,runtimeGlobalName:l="Vue",runtimeModuleName:s="vue",ssrRuntimeModuleName:c="vue/server-renderer",ssr:u=!1,isTS:f=!1,inSSR:d=!1}){const p={mode:t,prefixIdentifiers:n,sourceMap:r,filename:o,scopeId:i,optimizeImports:a,runtimeGlobalName:l,runtimeModuleName:s,ssrRuntimeModuleName:c,ssr:u,isTS:f,inSSR:d,source:e.loc.source,code:"",column:1,line:1,offset:0,indentLevel:0,pure:!1,map:void 0,helper:e=>`_${Us[e]}`,push(e,t){p.code+=e},indent(){h(++p.indentLevel)},deindent(e=!1){e?--p.indentLevel:h(--p.indentLevel)},newline(){h(p.indentLevel)}};function h(e){p.push("\n"+" ".repeat(e))}return p}function gu(e,t={}){const n=mu(e,t);t.onContextCreated&&t.onContextCreated(n);const{mode:r,push:o,prefixIdentifiers:i,indent:a,deindent:l,newline:s,scopeId:c,ssr:u}=n,f=Array.from(e.helpers),d=f.length>0,p=!i&&"module"!==r,h=n;!function(e,t){const{ssr:n,prefixIdentifiers:r,push:o,newline:i,runtimeModuleName:a,runtimeGlobalName:l,ssrRuntimeModuleName:s}=t,c=l,u=Array.from(e.helpers);if(u.length>0&&(o(`const _Vue = ${c}\n`),e.hoists.length)){o(`const { ${[us,fs,ds,ps,hs].filter((e=>u.includes(e))).map(vu).join(", ")} } = _Vue\n`)}(function(e,t){if(!e.length)return;t.pure=!0;const{push:n,newline:r,helper:o,scopeId:i,mode:a}=t;r();for(let o=0;o0)&&s()),e.directives.length&&(yu(e.directives,"directive",n),e.temps>0&&s()),e.filters&&e.filters.length&&(s(),yu(e.filters,"filter",n),s()),e.temps>0){o("let ");for(let t=0;t0?", ":""}_temp${t}`)}return(e.components.length||e.directives.length||e.temps)&&(o("\n"),s()),u||o("return "),e.codegenNode?Cu(e.codegenNode,n):o("null"),p&&(l(),o("}")),l(),o("}"),{ast:e,code:n.code,preamble:"",map:n.map?n.map.toJSON():void 0}}function yu(e,t,{helper:n,push:r,newline:o,isTS:i}){const a=n("filter"===t?ys:"component"===t?vs:gs);for(let n=0;n3||!1;t.push("["),n&&t.indent(),wu(e,t,n),n&&t.deindent(),t.push("]")}function wu(e,t,n=!1,r=!0){const{push:o,newline:i}=t;for(let a=0;ae||"null"))}([i,a,l,s,c]),t),n(")"),f&&n(")");u&&(n(", "),Cu(u,t),n(")"))}(e,t);break;case 14:!function(e,t){const{push:n,helper:r,pure:o}=t,i=U(e.callee)?e.callee:r(e.callee);o&&n(hu);n(i+"(",e),wu(e.arguments,t),n(")")}(e,t);break;case 15:!function(e,t){const{push:n,indent:r,deindent:o,newline:i}=t,{properties:a}=e;if(!a.length)return void n("{}",e);const l=a.length>1||!1;n(l?"{":"{ "),l&&r();for(let e=0;e "),(s||l)&&(n("{"),r());a?(s&&n("return "),j(a)?bu(a,t):Cu(a,t)):l&&Cu(l,t);(s||l)&&(o(),n("}"));c&&(e.isNonScopedSlot&&n(", undefined, true"),n(")"))}(e,t);break;case 19:!function(e,t){const{test:n,consequent:r,alternate:o,newline:i}=e,{push:a,indent:l,deindent:s,newline:c}=t;if(4===n.type){const e=!nc(n.content);e&&a("("),_u(n,t),e&&a(")")}else a("("),Cu(n,t),a(")");i&&l(),t.indentLevel++,i||a(" "),a("? "),Cu(r,t),t.indentLevel--,i&&c(),i||a(" "),a(": ");const u=19===o.type;u||t.indentLevel++;Cu(o,t),u||t.indentLevel--;i&&s(!0)}(e,t);break;case 20:!function(e,t){const{push:n,helper:r,indent:o,deindent:i,newline:a}=t;n(`_cache[${e.index}] || (`),e.isVNode&&(o(),n(`${r(Ls)}(-1),`),a());n(`_cache[${e.index}] = `),Cu(e.value,t),e.isVNode&&(n(","),a(),n(`${r(Ls)}(1),`),a(),n(`_cache[${e.index}]`),i());n(")")}(e,t);break;case 21:wu(e.body,t,!0,!1)}}function _u(e,t){const{content:n,isStatic:r}=e;t.push(r?JSON.stringify(n):n,e)}function Eu(e,t){for(let n=0;nfunction(e,t,n,r){if(!("else"===t.name||t.exp&&t.exp.content.trim())){const r=t.exp?t.exp.loc:e.loc;n.onError(ts(28,t.loc)),t.exp=Ks("true",!1,r)}0;if("if"===t.name){const o=Su(e,t),i={type:9,loc:e.loc,branches:[o]};if(n.replaceNode(i),r)return r(i,o,!0)}else{const o=n.parent.children;let i=o.indexOf(e);for(;i-- >=-1;){const a=o[i];if(a&&3===a.type)n.removeNode(a);else{if(!a||2!==a.type||a.content.trim().length){if(a&&9===a.type){"else-if"===t.name&&void 0===a.branches[a.branches.length-1].condition&&n.onError(ts(30,e.loc)),n.removeNode();const o=Su(e,t);0,a.branches.push(o);const i=r&&r(a,o,!1);du(o,n),i&&i(),n.currentNode=null}else n.onError(ts(30,e.loc));break}n.removeNode(a)}}}}(e,t,n,((e,t,r)=>{const o=n.parent.children;let i=o.indexOf(e),a=0;for(;i-- >=0;){const e=o[i];e&&9===e.type&&(a+=e.branches.length)}return()=>{if(r)e.codegenNode=Ou(t,a,n);else{const r=function(e){for(;;)if(19===e.type){if(19!==e.alternate.type)return e;e=e.alternate}else 20===e.type&&(e=e.value)}(e.codegenNode);r.alternate=Ou(t,a+e.branches.length-1,n)}}}))));function Su(e,t){const n=3===e.tagType;return{type:10,loc:e.loc,condition:"else"===t.name?void 0:t.exp,children:n&&!uc(e,"for")?e.children:[e],userKey:fc(e,"key"),isTemplateIf:n}}function Ou(e,t,n){return e.condition?Js(e.condition,Nu(e,t,n),Zs(n.helper(ds),['""',"true"])):Nu(e,t,n)}function Nu(e,t,n){const{helper:r}=n,o=Ws("key",Ks(`${t}`,!1,$s,2)),{children:a}=e,l=a[0];if(1!==a.length||1!==l.type){if(1===a.length&&11===l.type){const e=l.codegenNode;return Cc(e,o,n),e}{let t=64;i[64];return Hs(n,r(ns),qs([o]),a,t+"",void 0,void 0,!0,!1,!1,e.loc)}}{const e=l.codegenNode,t=14===(s=e).type&&s.callee===Fs?s.arguments[1].returns:s;return 13===t.type&&xc(t,n),Cc(t,o,n),e}var s}const Pu=pu("for",((e,t,n)=>{const{helper:r,removeHelper:o}=n;return function(e,t,n,r){if(!t.exp)return void n.onError(ts(31,t.loc));const o=Lu(t.exp,n);if(!o)return void n.onError(ts(32,t.loc));const{addIdentifiers:i,removeIdentifiers:a,scopes:l}=n,{source:s,value:c,key:u,index:f}=o,d={type:11,loc:t.loc,source:s,valueAlias:c,keyAlias:u,objectIndexAlias:f,parseResult:o,children:vc(e)?e.children:[e]};n.replaceNode(d),l.vFor++;const p=r&&r(d);return()=>{l.vFor--,p&&p()}}(e,t,n,(t=>{const i=Zs(r(ws),[t.source]),a=vc(e),l=uc(e,"memo"),s=fc(e,"key"),c=s&&(6===s.type?Ks(s.value.content,!0):s.exp),u=s?Ws("key",c):null,f=4===t.source.type&&t.source.constType>0,d=f?64:s?128:256;return t.codegenNode=Hs(n,r(ns),void 0,i,d+"",void 0,void 0,!0,!f,!1,e.loc),()=>{let s;const{children:d}=t;const p=1!==d.length||1!==d[0].type,h=mc(e)?e:a&&1===e.children.length&&mc(e.children[0])?e.children[0]:null;if(h?(s=h.codegenNode,a&&u&&Cc(s,u,n)):p?s=Hs(n,r(ns),u?qs([u]):void 0,e.children,"64",void 0,void 0,!0,void 0,!1):(s=d[0].codegenNode,a&&u&&Cc(s,u,n),s.isBlock!==!f&&(s.isBlock?(o(ls),o(yc(n.inSSR,s.isComponent))):o(gc(n.inSSR,s.isComponent))),s.isBlock=!f,s.isBlock?(r(ls),r(yc(n.inSSR,s.isComponent))):r(gc(n.inSSR,s.isComponent))),l){const e=Ys(ju(t.parseResult,[Ks("_cached")]));e.body={type:21,body:[Gs(["const _memo = (",l.exp,")"]),Gs(["if (_cached",...c?[" && _cached.key === ",c]:[],` && ${n.helperString(Ds)}(_cached, _memo)) return _cached`]),Gs(["const _item = ",s]),Ks("_item.memo = _memo"),Ks("return _item")],loc:$s},i.arguments.push(e,Ks("_cache"),Ks(String(n.cached++)))}else i.arguments.push(Ys(ju(t.parseResult),s,!0))}}))}));const Tu=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,Vu=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,Ru=/^\(|\)$/g;function Lu(e,t){const n=e.loc,r=e.content,o=r.match(Tu);if(!o)return;const[,i,a]=o,l={source:Au(n,a.trim(),r.indexOf(a,i.length)),value:void 0,key:void 0,index:void 0};let s=i.trim().replace(Ru,"").trim();const c=i.indexOf(s),u=s.match(Vu);if(u){s=s.replace(Vu,"").trim();const e=u[1].trim();let t;if(e&&(t=r.indexOf(e,c+s.length),l.key=Au(n,e,t)),u[2]){const o=u[2].trim();o&&(l.index=Au(n,o,r.indexOf(o,l.key?t+e.length:c+s.length)))}}return s&&(l.value=Au(n,s,c)),l}function Au(e,t,n){return Ks(t,!1,lc(e,n,t.length))}function ju({value:e,key:t,index:n},r=[]){return function(e){let t=e.length;for(;t--&&!e[t];);return e.slice(0,t+1).map(((e,t)=>e||Ks("_".repeat(t+1),!1)))}([e,t,n,...r])}const Bu=Ks("undefined",!1),Iu=(e,t)=>{if(1===e.type&&(1===e.tagType||3===e.tagType)){const n=uc(e,"slot");if(n)return n.exp,t.scopes.vSlot++,()=>{t.scopes.vSlot--}}},Mu=(e,t,n)=>Ys(e,t,!1,!0,t.length?t[0].loc:n);function Fu(e,t,n=Mu){t.helper(Bs);const{children:r,loc:o}=e,i=[],a=[];let l=t.scopes.vSlot>0||t.scopes.vFor>0;const s=uc(e,"slot",!0);if(s){const{arg:e,exp:t}=s;e&&!Qs(e)&&(l=!0),i.push(Ws(e||Ks("default",!0),n(t,r,o)))}let c=!1,u=!1;const f=[],d=new Set;let p=0;for(let e=0;e{const i=n(e,r,o);return t.compatConfig&&(i.isNonScopedSlot=!0),Ws("default",i)};c?f.length&&f.some((e=>$u(e)))&&(u?t.onError(ts(39,f[0].loc)):i.push(e(void 0,f))):i.push(e(void 0,r))}const h=l?2:Uu(e.children)?3:1;let v=qs(i.concat(Ws("_",Ks(h+"",!1))),o);return a.length&&(v=Zs(t.helper(_s),[v,zs(a)])),{slots:v,hasDynamicSlots:l}}function Du(e,t,n){const r=[Ws("name",e),Ws("fn",t)];return null!=n&&r.push(Ws("key",Ks(String(n),!0))),qs(r)}function Uu(e){for(let t=0;tfunction(){if(1!==(e=t.currentNode).type||0!==e.tagType&&1!==e.tagType)return;const{tag:n,props:r}=e,o=1===e.tagType;let i=o?function(e,t,n=!1){let{tag:r}=e;const o=Gu(r),i=fc(e,"is");if(i)if(o||Sc("COMPILER_IS_ON_ELEMENT",t)){const e=6===i.type?i.value&&Ks(i.value.content,!0):i.exp;if(e)return Zs(t.helper(ms),[e])}else 6===i.type&&i.value.content.startsWith("vue:")&&(r=i.value.content.slice(4));const a=!o&&uc(e,"is");if(a&&a.exp)return Zs(t.helper(ms),[a.exp]);const l=ec(r)||t.isBuiltInComponent(r);if(l)return n||t.helper(l),l;return t.helper(vs),t.components.add(r),Ec(r,"component")}(e,t):`"${n}"`;const a=H(i)&&i.callee===ms;let l,s,c,u,f,d,p=0,h=a||i===rs||i===os||!o&&("svg"===n||"foreignObject"===n);if(r.length>0){const n=qu(e,t,void 0,o,a);l=n.props,p=n.patchFlag,f=n.dynamicPropNames;const r=n.directives;d=r&&r.length?zs(r.map((e=>function(e,t){const n=[],r=Hu.get(e);r?n.push(t.helperString(r)):(t.helper(gs),t.directives.add(e.name),n.push(Ec(e.name,"directive")));const{loc:o}=e;e.exp&&n.push(e.exp);e.arg&&(e.exp||n.push("void 0"),n.push(e.arg));if(Object.keys(e.modifiers).length){e.arg||(e.exp||n.push("void 0"),n.push("void 0"));const t=Ks("true",!1,o);n.push(qs(e.modifiers.map((e=>Ws(e,t))),o))}return zs(n,e.loc)}(e,t)))):void 0,n.shouldUseBlock&&(h=!0)}if(e.children.length>0){i===is&&(h=!0,p|=1024);if(o&&i!==rs&&i!==is){const{slots:n,hasDynamicSlots:r}=Fu(e,t);s=n,r&&(p|=1024)}else if(1===e.children.length&&i!==rs){const n=e.children[0],r=n.type,o=5===r||8===r;o&&0===ou(n,t)&&(p|=1),s=o||2===r?n:e.children}else s=e.children}0!==p&&(c=String(p),f&&f.length&&(u=function(e){let t="[";for(let n=0,r=e.length;n0;let p=!1,h=0,v=!1,m=!1,g=!1,y=!1,b=!1,w=!1;const C=[],_=e=>{c.length&&(u.push(qs(Wu(c),l)),c=[]),e&&u.push(e)},E=({key:e,value:n})=>{if(Qs(e)){const i=e.content,a=P(i);if(!a||r&&!o||"onclick"===i.toLowerCase()||"onUpdate:modelValue"===i||Y(i)||(y=!0),a&&Y(i)&&(w=!0),20===n.type||(4===n.type||8===n.type)&&ou(n,t)>0)return;"ref"===i?v=!0:"class"===i?m=!0:"style"===i?g=!0:"key"===i||C.includes(i)||C.push(i),!r||"class"!==i&&"style"!==i||C.includes(i)||C.push(i)}else b=!0};for(let o=0;o0&&c.push(Ws(Ks("ref_for",!0),Ks("true")))),"is"===n&&(Gu(a)||r&&r.content.startsWith("vue:")||Sc("COMPILER_IS_ON_ELEMENT",t)))continue;c.push(Ws(Ks(n,!0,lc(e,0,n.length)),Ks(r?r.content:"",o,r?r.loc:e)))}else{const{name:n,arg:o,exp:h,loc:v}=s,m="bind"===n,g="on"===n;if("slot"===n){r||t.onError(ts(40,v));continue}if("once"===n||"memo"===n)continue;if("is"===n||m&&dc(o,"is")&&(Gu(a)||Sc("COMPILER_IS_ON_ELEMENT",t)))continue;if(g&&i)continue;if((m&&dc(o,"key")||g&&d&&dc(o,"vue:before-update"))&&(p=!0),m&&dc(o,"ref")&&t.scopes.vFor>0&&c.push(Ws(Ks("ref_for",!0),Ks("true"))),!o&&(m||g)){if(b=!0,h)if(m){if(_(),Sc("COMPILER_V_BIND_OBJECT_ORDER",t)){u.unshift(h);continue}u.push(h)}else _({type:14,loc:v,callee:t.helper(Ps),arguments:r?[h]:[h,"true"]});else t.onError(ts(m?34:35,v));continue}const y=t.directiveTransforms[n];if(y){const{props:n,needRuntime:r}=y(s,e,t);!i&&n.forEach(E),g&&o&&!Qs(o)?_(qs(n,l)):c.push(...n),r&&(f.push(s),$(r)&&Hu.set(s,r))}else J(n)||(f.push(s),d&&(p=!0))}}let x;if(u.length?(_(),x=u.length>1?Zs(t.helper(xs),u,l):u[0]):c.length&&(x=qs(Wu(c),l)),b?h|=16:(m&&!r&&(h|=2),g&&!r&&(h|=4),C.length&&(h|=8),y&&(h|=32)),p||0!==h&&32!==h||!(v||w||f.length>0)||(h|=512),!t.inSSR&&x)switch(x.type){case 15:let e=-1,n=-1,r=!1;for(let t=0;t{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))})((e=>e.replace(Zu,((e,t)=>t?t.toUpperCase():"")))),Ju=(e,t)=>{if(mc(e)){const{children:n,loc:r}=e,{slotName:o,slotProps:i}=function(e,t){let n,r='"default"';const o=[];for(let t=0;t0){const{props:r,directives:i}=qu(e,t,o,!1,!1);n=r,i.length&&t.onError(ts(36,i[0].loc))}return{slotName:r,slotProps:n}}(e,t),a=[t.prefixIdentifiers?"_ctx.$slots":"$slots",o,"{}","undefined","true"];let l=2;i&&(a[2]=i,l=3),n.length&&(a[3]=Ys([],n,!1,!1,r),l=4),t.scopeId&&!t.slotted&&(l=5),a.splice(l),e.codegenNode=Zs(t.helper(Cs),a,r)}};const Qu=/^\s*([\w$_]+|(async\s*)?\([^)]*?\))\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/,Xu=(e,t,n,r)=>{const{loc:o,modifiers:i,arg:a}=e;let l;if(e.exp||i.length||n.onError(ts(35,o)),4===a.type)if(a.isStatic){let e=a.content;e.startsWith("vue:")&&(e=`vnode-${e.slice(4)}`);l=Ks(0!==t.tagType||e.startsWith("vnode")||!/[A-Z]/.test(e)?oe(ee(e)):`on:${e}`,!0,a.loc)}else l=Gs([`${n.helperString(Rs)}(`,a,")"]);else l=a,l.children.unshift(`${n.helperString(Rs)}(`),l.children.push(")");let s=e.exp;s&&!s.content.trim()&&(s=void 0);let c=n.cacheHandlers&&!s&&!n.inVOnce;if(s){const e=ac(s.content),t=!(e||Qu.test(s.content)),n=s.content.includes(";");0,(t||c&&e)&&(s=Gs([`${t?"$event":"(...args)"} => ${n?"{":"("}`,s,n?"}":")"]))}let u={props:[Ws(l,s||Ks("() => {}",!1,o))]};return r&&(u=r(u)),c&&(u.props[0].value=n.cache(u.props[0].value)),u.props.forEach((e=>e.key.isHandlerKey=!0)),u},ef=(e,t,n)=>{const{exp:r,modifiers:o,loc:i}=e,a=e.arg;return 4!==a.type?(a.children.unshift("("),a.children.push(') || ""')):a.isStatic||(a.content=`${a.content} || ""`),o.includes("camel")&&(4===a.type?a.isStatic?a.content=ee(a.content):a.content=`${n.helperString(Ts)}(${a.content})`:(a.children.unshift(`${n.helperString(Ts)}(`),a.children.push(")"))),n.inSSR||(o.includes("prop")&&tf(a,"."),o.includes("attr")&&tf(a,"^")),!r||4===r.type&&!r.content.trim()?(n.onError(ts(34,i)),{props:[Ws(a,Ks("",!0,i))]}):{props:[Ws(a,r)]}},tf=(e,t)=>{4===e.type?e.isStatic?e.content=t+e.content:e.content=`\`${t}\${${e.content}}\``:(e.children.unshift(`'${t}' + (`),e.children.push(")"))},nf=(e,t)=>{if(0===e.type||1===e.type||11===e.type||10===e.type)return()=>{const n=e.children;let r,o=!1;for(let e=0;e7===e.type&&!t.directiveTransforms[e.name]))||"template"===e.tag)))for(let e=0;e{if(1===e.type&&uc(e,"once",!0)){if(rf.has(e)||t.inVOnce)return;return rf.add(e),t.inVOnce=!0,t.helper(Ls),()=>{t.inVOnce=!1;const e=t.currentNode;e.codegenNode&&(e.codegenNode=t.cache(e.codegenNode,!0))}}},af=(e,t,n)=>{const{exp:r,arg:o}=e;if(!r)return n.onError(ts(41,e.loc)),lf();const i=r.loc.source,a=4===r.type?r.content:i,l=n.bindingMetadata[i];if("props"===l||"props-aliased"===l)return n.onError(ts(44,r.loc)),lf();if(!a.trim()||!ac(a))return n.onError(ts(42,r.loc)),lf();const s=o||Ks("modelValue",!0),c=o?Qs(o)?`onUpdate:${ee(o.content)}`:Gs(['"onUpdate:" + ',o]):"onUpdate:modelValue";let u;u=Gs([`${n.isTS?"($event: any)":"$event"} => ((`,r,") = $event)"]);const f=[Ws(s,e.exp),Ws(c,u)];if(e.modifiers.length&&1===t.tagType){const t=e.modifiers.map((e=>(nc(e)?e:JSON.stringify(e))+": true")).join(", "),n=o?Qs(o)?`${o.content}Modifiers`:Gs([o,' + "Modifiers"']):"modelModifiers";f.push(Ws(n,Ks(`{ ${t} }`,!1,e.loc,2)))}return lf(f)};function lf(e=[]){return{props:e}}const sf=/[\w).+\-_$\]]/,cf=(e,t)=>{Sc("COMPILER_FILTER",t)&&(5===e.type&&uf(e.content,t),1===e.type&&e.props.forEach((e=>{7===e.type&&"for"!==e.name&&e.exp&&uf(e.exp,t)})))};function uf(e,t){if(4===e.type)ff(e,t);else for(let n=0;n=0&&(e=n.charAt(t)," "===e);t--);e&&sf.test(e)||(u=!0)}}else void 0===a?(h=i+1,a=n.slice(0,i).trim()):m();function m(){v.push(n.slice(h,i).trim()),h=i+1}if(void 0===a?a=n.slice(0,i).trim():0!==h&&m(),v.length){for(i=0;i{if(1===e.type){const n=uc(e,"memo");if(!n||pf.has(e))return;return pf.add(e),()=>{const r=e.codegenNode||t.currentNode.codegenNode;r&&13===r.type&&(1!==e.tagType&&xc(r,t),e.codegenNode=Zs(t.helper(Fs),[n.exp,Ys(void 0,r),"_cache",String(t.cached++)]))}}};function vf(e,t={}){const n=t.onError||Xl,r="module"===t.mode;!0===t.prefixIdentifiers?n(ts(47)):r&&n(ts(48));t.cacheHandlers&&n(ts(49)),t.scopeId&&!r&&n(ts(50));const o=U(e)?Vc(e,t):e,[i,a]=[[of,ku,hf,Pu,cf,Ju,zu,Iu,nf],{on:Xu,bind:ef,model:af}];return fu(o,V({},t,{prefixIdentifiers:false,nodeTransforms:[...i,...t.nodeTransforms||[]],directiveTransforms:V({},a,t.directiveTransforms||{})})),gu(o,V({},t,{prefixIdentifiers:false}))}const mf=Symbol(""),gf=Symbol(""),yf=Symbol(""),bf=Symbol(""),wf=Symbol(""),Cf=Symbol(""),_f=Symbol(""),Ef=Symbol(""),xf=Symbol(""),kf=Symbol("");var Sf;let Of;Sf={[mf]:"vModelRadio",[gf]:"vModelCheckbox",[yf]:"vModelText",[bf]:"vModelSelect",[wf]:"vModelDynamic",[Cf]:"withModifiers",[_f]:"withKeys",[Ef]:"vShow",[xf]:"Transition",[kf]:"TransitionGroup"},Object.getOwnPropertySymbols(Sf).forEach((e=>{Us[e]=Sf[e]}));const Nf=o("style,iframe,script,noscript",!0),Pf={isVoidTag:m,isNativeTag:e=>h(e)||v(e),isPreTag:e=>"pre"===e,decodeEntities:function(e,t=!1){return Of||(Of=document.createElement("div")),t?(Of.innerHTML=`
`,Of.children[0].getAttribute("foo")):(Of.innerHTML=e,Of.textContent)},isBuiltInComponent:e=>Xs(e,"Transition")?xf:Xs(e,"TransitionGroup")?kf:void 0,getNamespace(e,t){let n=t?t.ns:0;if(t&&2===n)if("annotation-xml"===t.tag){if("svg"===e)return 1;t.props.some((e=>6===e.type&&"encoding"===e.name&&null!=e.value&&("text/html"===e.value.content||"application/xhtml+xml"===e.value.content)))&&(n=0)}else/^m(?:[ions]|text)$/.test(t.tag)&&"mglyph"!==e&&"malignmark"!==e&&(n=0);else t&&1===n&&("foreignObject"!==t.tag&&"desc"!==t.tag&&"title"!==t.tag||(n=0));if(0===n){if("svg"===e)return 1;if("math"===e)return 2}return n},getTextMode({tag:e,ns:t}){if(0===t){if("textarea"===e||"title"===e)return 1;if(Nf(e))return 2}return 0}},Tf=(e,t)=>{const n=f(e);return Ks(JSON.stringify(n),!1,t,3)};function Vf(e,t){return ts(e,t)}const Rf=o("passive,once,capture"),Lf=o("stop,prevent,self,ctrl,shift,alt,meta,exact,middle"),Af=o("left,right"),jf=o("onkeyup,onkeydown,onkeypress",!0),Bf=(e,t)=>Qs(e)&&"onclick"===e.content.toLowerCase()?Ks(t,!0):4!==e.type?Gs(["(",e,`) === "onClick" ? "${t}" : (`,e,")"]):e;const If=(e,t)=>{1!==e.type||0!==e.tagType||"script"!==e.tag&&"style"!==e.tag||(t.onError(Vf(61,e.loc)),t.removeNode())},Mf=[e=>{1===e.type&&e.props.forEach(((t,n)=>{6===t.type&&"style"===t.name&&t.value&&(e.props[n]={type:7,name:"bind",arg:Ks("style",!0,t.loc),exp:Tf(t.value.content,t.loc),modifiers:[],loc:t.loc})}))}],Ff={cloak:()=>({props:[]}),html:(e,t,n)=>{const{exp:r,loc:o}=e;return r||n.onError(Vf(51,o)),t.children.length&&(n.onError(Vf(52,o)),t.children.length=0),{props:[Ws(Ks("innerHTML",!0,o),r||Ks("",!0))]}},text:(e,t,n)=>{const{exp:r,loc:o}=e;return r||n.onError(Vf(53,o)),t.children.length&&(n.onError(Vf(54,o)),t.children.length=0),{props:[Ws(Ks("textContent",!0),r?ou(r,n)>0?r:Zs(n.helperString(Es),[r],o):Ks("",!0))]}},model:(e,t,n)=>{const r=af(e,t,n);if(!r.props.length||1===t.tagType)return r;e.arg&&n.onError(Vf(56,e.arg.loc));const{tag:o}=t,i=n.isCustomElement(o);if("input"===o||"textarea"===o||"select"===o||i){let a=yf,l=!1;if("input"===o||i){const r=fc(t,"type");if(r){if(7===r.type)a=wf;else if(r.value)switch(r.value.content){case"radio":a=mf;break;case"checkbox":a=gf;break;case"file":l=!0,n.onError(Vf(57,e.loc))}}else(function(e){return e.props.some((e=>!(7!==e.type||"bind"!==e.name||e.arg&&4===e.arg.type&&e.arg.isStatic)))})(t)&&(a=wf)}else"select"===o&&(a=bf);l||(r.needRuntime=n.helper(a))}else n.onError(Vf(55,e.loc));return r.props=r.props.filter((e=>!(4===e.key.type&&"modelValue"===e.key.content))),r},on:(e,t,n)=>Xu(e,t,n,(t=>{const{modifiers:r}=e;if(!r.length)return t;let{key:o,value:i}=t.props[0];const{keyModifiers:a,nonKeyModifiers:l,eventOptionModifiers:s}=((e,t,n,r)=>{const o=[],i=[],a=[];for(let r=0;r{const{exp:r,loc:o}=e;return r||n.onError(Vf(59,o)),{props:[],needRuntime:n.helper(Ef)}}};const Df=Object.create(null);function Uf(e,t){if(!U(e)){if(!e.nodeType)return S;e=e.innerHTML}const n=e,o=Df[n];if(o)return o;if("#"===e[0]){const t=document.querySelector(e);0,e=t?t.innerHTML:""}const i=V({hoistStatic:!0,onError:void 0,onWarn:S},t);i.isCustomElement||"undefined"==typeof customElements||(i.isCustomElement=e=>!!customElements.get(e));const{code:a}=function(e,t={}){return vf(e,V({},Pf,t,{nodeTransforms:[If,...Mf,...t.nodeTransforms||[]],directiveTransforms:V({},Ff,t.directiveTransforms||{}),transformHoist:null}))}(e,i);const l=new Function("Vue",a)(r);return l._rc=!0,Df[n]=l}Qi(Uf)}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var i=n[e]={id:e,loaded:!1,exports:{}};return t[e].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}r.m=t,e=[],r.O=(t,n,o,i)=>{if(!n){var a=1/0;for(u=0;u=i)&&Object.keys(r.O).every((e=>r.O[e](n[s])))?n.splice(s--,1):(l=!1,i0&&e[u-1][2]>i;u--)e[u]=e[u-1];e[u]=[n,o,i]},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e={260:0,143:0};r.O.j=t=>0===e[t];var t=(t,n)=>{var o,i,[a,l,s]=n,c=0;if(a.some((t=>0!==e[t]))){for(o in l)r.o(l,o)&&(r.m[o]=l[o]);if(s)var u=s(r)}for(t&&t(n);cr(500)));var o=r.O(void 0,[143],(()=>r(378)));o=r.O(o)})(); \ No newline at end of file +(()=>{var e,t={514:(e,t,n)=>{"use strict";var r={};n.r(r),n.d(r,{BaseTransition:()=>Er,BaseTransitionPropsValidators:()=>Or,Comment:()=>Ri,EffectScope:()=>de,Fragment:()=>Ai,KeepAlive:()=>Br,ReactiveEffect:()=>Pe,Static:()=>Li,Suspense:()=>rr,Teleport:()=>Pi,Text:()=>ji,Transition:()=>Ys,TransitionGroup:()=>Ul,VueElement:()=>Al,assertNumber:()=>sn,callWithAsyncErrorHandling:()=>an,callWithErrorHandling:()=>ln,camelize:()=>F,capitalize:()=>D,cloneVNode:()=>es,compatUtils:()=>Vs,computed:()=>Rs,createApp:()=>ma,createBlock:()=>Hi,createCommentVNode:()=>rs,createElementBlock:()=>Vi,createElementVNode:()=>Ji,createHydrationRenderer:()=>yi,createPropsRestProxy:()=>Ao,createRenderer:()=>mi,createSSRApp:()=>ya,createSlots:()=>so,createStaticVNode:()=>ns,createTextVNode:()=>ts,createVNode:()=>Qi,customRef:()=>Qt,defineAsyncComponent:()=>Fr,defineComponent:()=>Lr,defineCustomElement:()=>Cl,defineEmits:()=>mo,defineExpose:()=>yo,defineModel:()=>_o,defineOptions:()=>bo,defineProps:()=>go,defineSSRCustomElement:()=>Pl,defineSlots:()=>wo,devtools:()=>Pn,effect:()=>Ae,effectScope:()=>he,getCurrentInstance:()=>ds,getCurrentScope:()=>ge,getTransitionRawChildren:()=>Rr,guardReactiveProps:()=>Xi,h:()=>Ls,handleError:()=>un,hasInjectionContext:()=>Jo,hydrate:()=>ga,initCustomFormatter:()=>Ns,initDirectivesForSSR:()=>_a,inject:()=>Yo,isMemoSame:()=>Ds,isProxy:()=>Lt,isReactive:()=>At,isReadonly:()=>jt,isRef:()=>Ut,isRuntimeOnly:()=>Es,isShallow:()=>Rt,isVNode:()=>zi,markRaw:()=>Ft,mergeDefaults:()=>Po,mergeModels:()=>To,mergeProps:()=>ls,nextTick:()=>bn,normalizeClass:()=>ee,normalizeProps:()=>te,normalizeStyle:()=>Y,onActivated:()=>$r,onBeforeMount:()=>Yr,onBeforeUnmount:()=>Xr,onBeforeUpdate:()=>Qr,onDeactivated:()=>Vr,onErrorCaptured:()=>oo,onMounted:()=>Jr,onRenderTracked:()=>ro,onRenderTriggered:()=>no,onScopeDispose:()=>me,onServerPrefetch:()=>to,onUnmounted:()=>eo,onUpdated:()=>Zr,openBlock:()=>Ni,popScopeId:()=>Bn,provide:()=>Go,proxyRefs:()=>Yt,pushScopeId:()=>Dn,queuePostFlushCb:()=>xn,reactive:()=>kt,readonly:()=>Ct,ref:()=>$t,registerRuntimeCompiler:()=>ks,render:()=>va,renderList:()=>io,renderSlot:()=>lo,resolveComponent:()=>Jn,resolveDirective:()=>Xn,resolveDynamicComponent:()=>Zn,resolveFilter:()=>$s,resolveTransitionHooks:()=>Pr,setBlockTracking:()=>Ui,setDevtoolsHook:()=>jn,setTransitionHooks:()=>jr,shallowReactive:()=>Et,shallowReadonly:()=>Pt,shallowRef:()=>Vt,ssrContextKey:()=>Is,ssrUtils:()=>Us,stop:()=>je,toDisplayString:()=>ce,toHandlerKey:()=>B,toHandlers:()=>uo,toRaw:()=>It,toRef:()=>tn,toRefs:()=>Zt,toValue:()=>Kt,transformVNodeArgs:()=>Wi,triggerRef:()=>qt,unref:()=>Wt,useAttrs:()=>Oo,useCssModule:()=>jl,useCssVars:()=>Rl,useModel:()=>ko,useSSRContext:()=>Fs,useSlots:()=>So,useTransitionState:()=>xr,vModelCheckbox:()=>Yl,vModelDynamic:()=>na,vModelRadio:()=>Ql,vModelSelect:()=>Zl,vModelText:()=>Gl,vShow:()=>pl,version:()=>Bs,warn:()=>on,watch:()=>dr,watchEffect:()=>ur,watchPostEffect:()=>cr,watchSyncEffect:()=>fr,withAsyncContext:()=>jo,withCtx:()=>$n,withDefaults:()=>xo,withDirectives:()=>yr,withKeys:()=>ua,withMemo:()=>Ms,withModifiers:()=>la,withScopeId:()=>Un});var o={};function i(e,t){const n=Object.create(null),r=e.split(",");for(let e=0;e!!n[e.toLowerCase()]:e=>!!n[e]}n.r(o),n.d(o,{hasBrowserEnv:()=>dh,hasStandardBrowserEnv:()=>hh,hasStandardBrowserWebWorkerEnv:()=>gh});const s={},l=[],a=()=>{},u=()=>!1,c=/^on[^a-z]/,f=e=>c.test(e),p=e=>e.startsWith("onUpdate:"),d=Object.assign,h=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},v=Object.prototype.hasOwnProperty,g=(e,t)=>v.call(e,t),m=Array.isArray,y=e=>"[object Map]"===C(e),b=e=>"[object Set]"===C(e),w=e=>"[object Date]"===C(e),_=e=>"function"==typeof e,x=e=>"string"==typeof e,S=e=>"symbol"==typeof e,O=e=>null!==e&&"object"==typeof e,k=e=>(O(e)||_(e))&&_(e.then)&&_(e.catch),E=Object.prototype.toString,C=e=>E.call(e),P=e=>C(e).slice(8,-1),T=e=>"[object Object]"===C(e),A=e=>x(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,j=i(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),R=i("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),L=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},I=/-(\w)/g,F=L((e=>e.replace(I,((e,t)=>t?t.toUpperCase():"")))),N=/\B([A-Z])/g,M=L((e=>e.replace(N,"-$1").toLowerCase())),D=L((e=>e.charAt(0).toUpperCase()+e.slice(1))),B=L((e=>e?`on${D(e)}`:"")),U=(e,t)=>!Object.is(e,t),$=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},H=e=>{const t=parseFloat(e);return isNaN(t)?e:t},z=e=>{const t=x(e)?Number(e):NaN;return isNaN(t)?e:t};let q;const W=()=>q||(q="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n.g?n.g:{});const K={1:"TEXT",2:"CLASS",4:"STYLE",8:"PROPS",16:"FULL_PROPS",32:"HYDRATE_EVENTS",64:"STABLE_FRAGMENT",128:"KEYED_FRAGMENT",256:"UNKEYED_FRAGMENT",512:"NEED_PATCH",1024:"DYNAMIC_SLOTS",2048:"DEV_ROOT_FRAGMENT",[-1]:"HOISTED",[-2]:"BAIL"},G=i("Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console");function Y(e){if(m(e)){const t={};for(let n=0;n{if(e){const n=e.split(Q);n.length>1&&(t[n[0].trim()]=n[1].trim())}})),t}function ee(e){let t="";if(x(e))t=e;else if(m(e))for(let n=0;nae(e,t)))}const ce=e=>x(e)?e:null==e?"":m(e)||O(e)&&(e.toString===E||!_(e.toString))?JSON.stringify(e,fe,2):String(e),fe=(e,t)=>t&&t.__v_isRef?fe(e,t.value):y(t)?{[`Map(${t.size})`]:[...t.entries()].reduce(((e,[t,n])=>(e[`${t} =>`]=n,e)),{})}:b(t)?{[`Set(${t.size})`]:[...t.values()]}:!O(t)||m(t)||T(t)?t:String(t);let pe;class de{constructor(e=!1){this.detached=e,this._active=!0,this.effects=[],this.cleanups=[],this.parent=pe,!e&&pe&&(this.index=(pe.scopes||(pe.scopes=[])).push(this)-1)}get active(){return this._active}run(e){if(this._active){const t=pe;try{return pe=this,e()}finally{pe=t}}else 0}on(){pe=this}off(){pe=this.parent}stop(e){if(this._active){let t,n;for(t=0,n=this.effects.length;t{const t=new Set(e);return t.w=0,t.n=0,t},be=e=>(e.w&Se)>0,we=e=>(e.n&Se)>0,_e=new WeakMap;let xe=0,Se=1;const Oe=30;let ke;const Ee=Symbol(""),Ce=Symbol("");class Pe{constructor(e,t=null,n){this.fn=e,this.scheduler=t,this.active=!0,this.deps=[],this.parent=void 0,ve(this,n)}run(){if(!this.active)return this.fn();let e=ke,t=Re;for(;e;){if(e===this)return;e=e.parent}try{return this.parent=ke,ke=this,Re=!0,Se=1<<++xe,xe<=Oe?(({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{("length"===n||!S(n)&&n>=e)&&l.push(t)}))}else switch(void 0!==n&&l.push(s.get(n)),t){case"add":m(e)?A(n)&&l.push(s.get("length")):(l.push(s.get(Ee)),y(e)&&l.push(s.get(Ce)));break;case"delete":m(e)||(l.push(s.get(Ee)),y(e)&&l.push(s.get(Ce)));break;case"set":y(e)&&l.push(s.get(Ee))}if(1===l.length)l[0]&&Be(l[0]);else{const e=[];for(const t of l)t&&e.push(...t);Be(ye(e))}}function Be(e,t){const n=m(e)?e:[...e];for(const e of n)e.computed&&Ue(e,t);for(const e of n)e.computed||Ue(e,t)}function Ue(e,t){(e!==ke||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const $e=i("__proto__,__v_isRef,__isVue"),Ve=new Set(Object.getOwnPropertyNames(Symbol).filter((e=>"arguments"!==e&&"caller"!==e)).map((e=>Symbol[e])).filter(S)),He=ze();function ze(){const e={};return["includes","indexOf","lastIndexOf"].forEach((t=>{e[t]=function(...e){const n=It(this);for(let e=0,t=this.length;e{e[t]=function(...e){Ie();const n=It(this)[t].apply(this,e);return Fe(),n}})),e}function qe(e){const t=It(this);return Ne(t,0,e),t.hasOwnProperty(e)}class We{constructor(e=!1,t=!1){this._isReadonly=e,this._shallow=t}get(e,t,n){const r=this._isReadonly,o=this._shallow;if("__v_isReactive"===t)return!r;if("__v_isReadonly"===t)return r;if("__v_isShallow"===t)return o;if("__v_raw"===t&&n===(r?o?Ot:St:o?xt:_t).get(e))return e;const i=m(e);if(!r){if(i&&g(He,t))return Reflect.get(He,t,n);if("hasOwnProperty"===t)return qe}const s=Reflect.get(e,t,n);return(S(t)?Ve.has(t):$e(t))?s:(r||Ne(e,0,t),o?s:Ut(s)?i&&A(t)?s:s.value:O(s)?r?Ct(s):kt(s):s)}}class Ke extends We{constructor(e=!1){super(!1,e)}set(e,t,n,r){let o=e[t];if(jt(o)&&Ut(o)&&!Ut(n))return!1;if(!this._shallow&&(Rt(n)||jt(n)||(o=It(o),n=It(n)),!m(e)&&Ut(o)&&!Ut(n)))return o.value=n,!0;const i=m(e)&&A(t)?Number(t)e,et=e=>Reflect.getPrototypeOf(e);function tt(e,t,n=!1,r=!1){const o=It(e=e.__v_raw),i=It(t);n||(U(t,i)&&Ne(o,0,t),Ne(o,0,i));const{has:s}=et(o),l=r?Xe:n?Mt:Nt;return s.call(o,t)?l(e.get(t)):s.call(o,i)?l(e.get(i)):void(e!==o&&e.get(t))}function nt(e,t=!1){const n=this.__v_raw,r=It(n),o=It(e);return t||(U(e,o)&&Ne(r,0,e),Ne(r,0,o)),e===o?n.has(e):n.has(e)||n.has(o)}function rt(e,t=!1){return e=e.__v_raw,!t&&Ne(It(e),0,Ee),Reflect.get(e,"size",e)}function ot(e){e=It(e);const t=It(this);return et(t).has.call(t,e)||(t.add(e),De(t,"add",e,e)),this}function it(e,t){t=It(t);const n=It(this),{has:r,get:o}=et(n);let i=r.call(n,e);i||(e=It(e),i=r.call(n,e));const s=o.call(n,e);return n.set(e,t),i?U(t,s)&&De(n,"set",e,t):De(n,"add",e,t),this}function st(e){const t=It(this),{has:n,get:r}=et(t);let o=n.call(t,e);o||(e=It(e),o=n.call(t,e));r&&r.call(t,e);const i=t.delete(e);return o&&De(t,"delete",e,void 0),i}function lt(){const e=It(this),t=0!==e.size,n=e.clear();return t&&De(e,"clear",void 0,void 0),n}function at(e,t){return function(n,r){const o=this,i=o.__v_raw,s=It(i),l=t?Xe:e?Mt:Nt;return!e&&Ne(s,0,Ee),i.forEach(((e,t)=>n.call(r,l(e),l(t),o)))}}function ut(e,t,n){return function(...r){const o=this.__v_raw,i=It(o),s=y(i),l="entries"===e||e===Symbol.iterator&&s,a="keys"===e&&s,u=o[e](...r),c=n?Xe:t?Mt:Nt;return!t&&Ne(i,0,a?Ce:Ee),{next(){const{value:e,done:t}=u.next();return t?{value:e,done:t}:{value:l?[c(e[0]),c(e[1])]:c(e),done:t}},[Symbol.iterator](){return this}}}}function ct(e){return function(...t){return"delete"!==e&&this}}function ft(){const e={get(e){return tt(this,e)},get size(){return rt(this)},has:nt,add:ot,set:it,delete:st,clear:lt,forEach:at(!1,!1)},t={get(e){return tt(this,e,!1,!0)},get size(){return rt(this)},has:nt,add:ot,set:it,delete:st,clear:lt,forEach:at(!1,!0)},n={get(e){return tt(this,e,!0)},get size(){return rt(this,!0)},has(e){return nt.call(this,e,!0)},add:ct("add"),set:ct("set"),delete:ct("delete"),clear:ct("clear"),forEach:at(!0,!1)},r={get(e){return tt(this,e,!0,!0)},get size(){return rt(this,!0)},has(e){return nt.call(this,e,!0)},add:ct("add"),set:ct("set"),delete:ct("delete"),clear:ct("clear"),forEach:at(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach((o=>{e[o]=ut(o,!1,!1),n[o]=ut(o,!0,!1),t[o]=ut(o,!1,!0),r[o]=ut(o,!0,!0)})),[e,n,t,r]}const[pt,dt,ht,vt]=ft();function gt(e,t){const n=t?e?vt:ht:e?dt:pt;return(t,r,o)=>"__v_isReactive"===r?!e:"__v_isReadonly"===r?e:"__v_raw"===r?t:Reflect.get(g(n,r)&&r in t?n:t,r,o)}const mt={get:gt(!1,!1)},yt={get:gt(!1,!0)},bt={get:gt(!0,!1)},wt={get:gt(!0,!0)};const _t=new WeakMap,xt=new WeakMap,St=new WeakMap,Ot=new WeakMap;function kt(e){return jt(e)?e:Tt(e,!1,Ye,mt,_t)}function Et(e){return Tt(e,!1,Qe,yt,xt)}function Ct(e){return Tt(e,!0,Je,bt,St)}function Pt(e){return Tt(e,!0,Ze,wt,Ot)}function Tt(e,t,n,r,o){if(!O(e))return e;if(e.__v_raw&&(!t||!e.__v_isReactive))return e;const i=o.get(e);if(i)return i;const s=function(e){return e.__v_skip||!Object.isExtensible(e)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}(P(e))}(e);if(0===s)return e;const l=new Proxy(e,2===s?r:n);return o.set(e,l),l}function At(e){return jt(e)?At(e.__v_raw):!(!e||!e.__v_isReactive)}function jt(e){return!(!e||!e.__v_isReadonly)}function Rt(e){return!(!e||!e.__v_isShallow)}function Lt(e){return At(e)||jt(e)}function It(e){const t=e&&e.__v_raw;return t?It(t):e}function Ft(e){return V(e,"__v_skip",!0),e}const Nt=e=>O(e)?kt(e):e,Mt=e=>O(e)?Ct(e):e;function Dt(e){Re&&ke&&Me((e=It(e)).dep||(e.dep=ye()))}function Bt(e,t){const n=(e=It(e)).dep;n&&Be(n)}function Ut(e){return!(!e||!0!==e.__v_isRef)}function $t(e){return Ht(e,!1)}function Vt(e){return Ht(e,!0)}function Ht(e,t){return Ut(e)?e:new zt(e,t)}class zt{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?e:It(e),this._value=t?e:Nt(e)}get value(){return Dt(this),this._value}set value(e){const t=this.__v_isShallow||Rt(e)||jt(e);e=t?e:It(e),U(e,this._rawValue)&&(this._rawValue=e,this._value=t?e:Nt(e),Bt(this))}}function qt(e){Bt(e)}function Wt(e){return Ut(e)?e.value:e}function Kt(e){return _(e)?e():Wt(e)}const Gt={get:(e,t,n)=>Wt(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Ut(o)&&!Ut(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function Yt(e){return At(e)?e:new Proxy(e,Gt)}class Jt{constructor(e){this.dep=void 0,this.__v_isRef=!0;const{get:t,set:n}=e((()=>Dt(this)),(()=>Bt(this)));this._get=t,this._set=n}get value(){return this._get()}set value(e){this._set(e)}}function Qt(e){return new Jt(e)}function Zt(e){const t=m(e)?new Array(e.length):{};for(const n in e)t[n]=nn(e,n);return t}class Xt{constructor(e,t,n){this._object=e,this._key=t,this._defaultValue=n,this.__v_isRef=!0}get value(){const e=this._object[this._key];return void 0===e?this._defaultValue:e}set value(e){this._object[this._key]=e}get dep(){return function(e,t){var n;return null==(n=_e.get(e))?void 0:n.get(t)}(It(this._object),this._key)}}class en{constructor(e){this._getter=e,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function tn(e,t,n){return Ut(e)?e:_(e)?new en(e):O(e)&&arguments.length>1?nn(e,t,n):$t(e)}function nn(e,t,n){const r=e[t];return Ut(r)?r:new Xt(e,t,n)}class rn{constructor(e,t,n,r){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new Pe(e,(()=>{this._dirty||(this._dirty=!0,Bt(this))})),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=n}get value(){const e=It(this);return Dt(e),!e._dirty&&e._cacheable||(e._dirty=!1,e._value=e.effect.run()),e._value}set value(e){this._setter(e)}}function on(e,...t){}function sn(e,t){}function ln(e,t,n,r){let o;try{o=r?e(...r):e()}catch(e){un(e,t,n)}return o}function an(e,t,n,r){if(_(e)){const o=ln(e,t,n,r);return o&&k(o)&&o.catch((e=>{un(e,t,n)})),o}const o=[];for(let i=0;i>>1,o=pn[r],i=kn(o);ikn(e)-kn(t))),gn=0;gnnull==e.id?1/0:e.id,En=(e,t)=>{const n=kn(e)-kn(t);if(0===n){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Cn(e){fn=!1,cn=!0,pn.sort(En);try{for(dn=0;dnPn.emit(e,...t))),Tn=[];else if("undefined"!=typeof window&&window.HTMLElement&&!(null==(r=null==(n=window.navigator)?void 0:n.userAgent)?void 0:r.includes("jsdom"))){(t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push((e=>{jn(e,t)})),setTimeout((()=>{Pn||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,An=!0,Tn=[])}),3e3)}else An=!0,Tn=[]}function Rn(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||s;let o=n;const i=t.startsWith("update:"),l=i&&t.slice(7);if(l&&l in r){const e=`${"modelValue"===l?"model":l}Modifiers`,{number:t,trim:i}=r[e]||s;i&&(o=n.map((e=>x(e)?e.trim():e))),t&&(o=n.map(H))}let a;let u=r[a=B(t)]||r[a=B(F(t))];!u&&i&&(u=r[a=B(M(t))]),u&&an(u,e,6,o);const c=r[a+"Once"];if(c){if(e.emitted){if(e.emitted[a])return}else e.emitted={};e.emitted[a]=!0,an(c,e,6,o)}}function Ln(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(void 0!==o)return o;const i=e.emits;let s={},l=!1;if(!_(e)){const r=e=>{const n=Ln(e,t,!0);n&&(l=!0,d(s,n))};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}return i||l?(m(i)?i.forEach((e=>s[e]=null)):d(s,i),O(e)&&r.set(e,s),s):(O(e)&&r.set(e,null),null)}function In(e,t){return!(!e||!f(t))&&(t=t.slice(2).replace(/Once$/,""),g(e,t[0].toLowerCase()+t.slice(1))||g(e,M(t))||g(e,t))}let Fn=null,Nn=null;function Mn(e){const t=Fn;return Fn=e,Nn=e&&e.type.__scopeId||null,t}function Dn(e){Nn=e}function Bn(){Nn=null}const Un=e=>$n;function $n(e,t=Fn,n){if(!t)return e;if(e._n)return e;const r=(...n)=>{r._d&&Ui(-1);const o=Mn(t);let i;try{i=e(...n)}finally{Mn(o),r._d&&Ui(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function Vn(e){const{type:t,vnode:n,proxy:r,withProxy:o,props:i,propsOptions:[s],slots:l,attrs:a,emit:u,render:c,renderCache:f,data:d,setupState:h,ctx:v,inheritAttrs:g}=e;let m,y;const b=Mn(e);try{if(4&n.shapeFlag){const e=o||r;m=os(c.call(e,e,f,i,h,d,v)),y=a}else{const e=t;0,m=os(e.length>1?e(i,{attrs:a,slots:l,emit:u}):e(i,null)),y=t.props?a:zn(a)}}catch(t){Ii.length=0,un(t,e,1),m=Qi(Ri)}let w=m;if(y&&!1!==g){const e=Object.keys(y),{shapeFlag:t}=w;e.length&&7&t&&(s&&e.some(p)&&(y=qn(y,s)),w=es(w,y))}return n.dirs&&(w=es(w),w.dirs=w.dirs?w.dirs.concat(n.dirs):n.dirs),n.transition&&(w.transition=n.transition),m=w,Mn(b),m}function Hn(e){let t;for(let n=0;n{let t;for(const n in e)("class"===n||"style"===n||f(n))&&((t||(t={}))[n]=e[n]);return t},qn=(e,t)=>{const n={};for(const r in e)p(r)&&r.slice(9)in t||(n[r]=e[r]);return n};function Wn(e,t,n){const r=Object.keys(t);if(r.length!==Object.keys(e).length)return!0;for(let o=0;oe.__isSuspense,rr={name:"Suspense",__isSuspense:!0,process(e,t,n,r,o,i,s,l,a,u){null==e?function(e,t,n,r,o,i,s,l,a){const{p:u,o:{createElement:c}}=a,f=c("div"),p=e.suspense=ir(e,o,r,t,f,n,i,s,l,a);u(null,p.pendingBranch=e.ssContent,f,null,r,p,i,s),p.deps>0?(or(e,"onPending"),or(e,"onFallback"),u(null,e.ssFallback,t,n,r,null,i,s),ar(p,e.ssFallback)):p.resolve(!1,!0)}(t,n,r,o,i,s,l,a,u):function(e,t,n,r,o,i,s,l,{p:a,um:u,o:{createElement:c}}){const f=t.suspense=e.suspense;f.vnode=t,t.el=e.el;const p=t.ssContent,d=t.ssFallback,{activeBranch:h,pendingBranch:v,isInFallback:g,isHydrating:m}=f;if(v)f.pendingBranch=p,qi(p,v)?(a(v,p,f.hiddenContainer,null,o,f,i,s,l),f.deps<=0?f.resolve():g&&(a(h,d,n,r,o,null,i,s,l),ar(f,d))):(f.pendingId++,m?(f.isHydrating=!1,f.activeBranch=v):u(v,o,f),f.deps=0,f.effects.length=0,f.hiddenContainer=c("div"),g?(a(null,p,f.hiddenContainer,null,o,f,i,s,l),f.deps<=0?f.resolve():(a(h,d,n,r,o,null,i,s,l),ar(f,d))):h&&qi(p,h)?(a(h,p,n,r,o,f,i,s,l),f.resolve(!0)):(a(null,p,f.hiddenContainer,null,o,f,i,s,l),f.deps<=0&&f.resolve()));else if(h&&qi(p,h))a(h,p,n,r,o,f,i,s,l),ar(f,p);else if(or(t,"onPending"),f.pendingBranch=p,f.pendingId++,a(null,p,f.hiddenContainer,null,o,f,i,s,l),f.deps<=0)f.resolve();else{const{timeout:e,pendingId:t}=f;e>0?setTimeout((()=>{f.pendingId===t&&f.fallback(d)}),e):0===e&&f.fallback(d)}}(e,t,n,r,o,s,l,a,u)},hydrate:function(e,t,n,r,o,i,s,l,a){const u=t.suspense=ir(t,r,n,e.parentNode,document.createElement("div"),null,o,i,s,l,!0),c=a(e,u.pendingBranch=t.ssContent,n,u,i,s);0===u.deps&&u.resolve(!1,!0);return c},create:ir,normalize:function(e){const{shapeFlag:t,children:n}=e,r=32&t;e.ssContent=sr(r?n.default:n),e.ssFallback=r?sr(n.fallback):Qi(Ri)}};function or(e,t){const n=e.props&&e.props[t];_(n)&&n()}function ir(e,t,n,r,o,i,s,l,a,u,c=!1){const{p:f,m:p,um:d,n:h,o:{parentNode:v,remove:g}}=u;let m;const y=function(e){var t;return null!=(null==(t=e.props)?void 0:t.suspensible)&&!1!==e.props.suspensible}(e);y&&(null==t?void 0:t.pendingBranch)&&(m=t.pendingId,t.deps++);const b=e.props?z(e.props.timeout):void 0;const w={vnode:e,parent:t,parentComponent:n,isSVG:s,container:r,hiddenContainer:o,anchor:i,deps:0,pendingId:0,timeout:"number"==typeof b?b:-1,activeBranch:null,pendingBranch:null,isInFallback:!0,isHydrating:c,isUnmounted:!1,effects:[],resolve(e=!1,n=!1){const{vnode:r,activeBranch:o,pendingBranch:i,pendingId:s,effects:l,parentComponent:a,container:u}=w;let c=!1;if(w.isHydrating)w.isHydrating=!1;else if(!e){c=o&&i.transition&&"out-in"===i.transition.mode,c&&(o.transition.afterLeave=()=>{s===w.pendingId&&(p(i,u,e,0),xn(l))});let{anchor:e}=w;o&&(e=h(o),d(o,a,w,!0)),c||p(i,u,e,0)}ar(w,i),w.pendingBranch=null,w.isInFallback=!1;let f=w.parent,v=!1;for(;f;){if(f.pendingBranch){f.effects.push(...l),v=!0;break}f=f.parent}v||c||xn(l),w.effects=[],y&&t&&t.pendingBranch&&m===t.pendingId&&(t.deps--,0!==t.deps||n||t.resolve()),or(r,"onResolve")},fallback(e){if(!w.pendingBranch)return;const{vnode:t,activeBranch:n,parentComponent:r,container:o,isSVG:i}=w;or(t,"onFallback");const s=h(n),u=()=>{w.isInFallback&&(f(null,e,o,s,r,null,i,l,a),ar(w,e))},c=e.transition&&"out-in"===e.transition.mode;c&&(n.transition.afterLeave=u),w.isInFallback=!0,d(n,r,null,!0),c||u()},move(e,t,n){w.activeBranch&&p(w.activeBranch,e,t,n),w.container=e},next:()=>w.activeBranch&&h(w.activeBranch),registerDep(e,t){const n=!!w.pendingBranch;n&&w.deps++;const r=e.vnode.el;e.asyncDep.catch((t=>{un(t,e,0)})).then((o=>{if(e.isUnmounted||w.isUnmounted||w.pendingId!==e.suspenseId)return;e.asyncResolved=!0;const{vnode:i}=e;Os(e,o,!1),r&&(i.el=r);const l=!r&&e.subTree.el;t(e,i,v(r||e.subTree.el),r?null:h(e.subTree),w,s,a),l&&g(l),Kn(e,i.el),n&&0==--w.deps&&w.resolve()}))},unmount(e,t){w.isUnmounted=!0,w.activeBranch&&d(w.activeBranch,n,e,t),w.pendingBranch&&d(w.pendingBranch,n,e,t)}};return w}function sr(e){let t;if(_(e)){const n=Bi&&e._c;n&&(e._d=!1,Ni()),e=e(),n&&(e._d=!0,t=Fi,Mi())}if(m(e)){const t=Hn(e);0,e=t}return e=os(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter((t=>t!==e))),e}function lr(e,t){t&&t.pendingBranch?m(e)?t.effects.push(...e):t.effects.push(e):xn(e)}function ar(e,t){e.activeBranch=t;const{vnode:n,parentComponent:r}=e,o=n.el=t.el;r&&r.subTree===n&&(r.vnode.el=o,Kn(r,o))}function ur(e,t){return hr(e,null,t)}function cr(e,t){return hr(e,null,{flush:"post"})}function fr(e,t){return hr(e,null,{flush:"sync"})}const pr={};function dr(e,t,n){return hr(e,t,n)}function hr(e,t,{immediate:n,deep:r,flush:o,onTrack:i,onTrigger:l}=s){var u;const c=ge()===(null==(u=ps)?void 0:u.scope)?ps:null;let f,p,d=!1,v=!1;if(Ut(e)?(f=()=>e.value,d=Rt(e)):At(e)?(f=()=>e,r=!0):m(e)?(v=!0,d=e.some((e=>At(e)||Rt(e))),f=()=>e.map((e=>Ut(e)?e.value:At(e)?mr(e):_(e)?ln(e,c,2):void 0))):f=_(e)?t?()=>ln(e,c,2):()=>{if(!c||!c.isUnmounted)return p&&p(),an(e,c,3,[y])}:a,t&&r){const e=f;f=()=>mr(e())}let g,y=e=>{p=S.onStop=()=>{ln(e,c,4)}};if(xs){if(y=a,t?n&&an(t,c,3,[f(),v?[]:void 0,y]):f(),"sync"!==o)return a;{const e=Fs();g=e.__watcherHandles||(e.__watcherHandles=[])}}let b=v?new Array(e.length).fill(pr):pr;const w=()=>{if(S.active)if(t){const e=S.run();(r||d||(v?e.some(((e,t)=>U(e,b[t]))):U(e,b)))&&(p&&p(),an(t,c,3,[e,b===pr?void 0:v&&b[0]===pr?[]:b,y]),b=e)}else S.run()};let x;w.allowRecurse=!!t,"sync"===o?x=w:"post"===o?x=()=>gi(w,c&&c.suspense):(w.pre=!0,c&&(w.id=c.uid),x=()=>wn(w));const S=new Pe(f,x);t?n?w():b=S.run():"post"===o?gi(S.run.bind(S),c&&c.suspense):S.run();const O=()=>{S.stop(),c&&c.scope&&h(c.scope.effects,S)};return g&&g.push(O),O}function vr(e,t,n){const r=this.proxy,o=x(e)?e.includes(".")?gr(r,e):()=>r[e]:e.bind(r,r);let i;_(t)?i=t:(i=t.handler,n=t);const s=ps;ms(this);const l=hr(o,i.bind(r),n);return s?ms(s):ys(),l}function gr(e,t){const n=t.split(".");return()=>{let t=e;for(let e=0;e{mr(e,t)}));else if(T(e))for(const n in e)mr(e[n],t);return e}function yr(e,t){const n=Fn;if(null===n)return e;const r=Ts(n)||n.proxy,o=e.dirs||(e.dirs=[]);for(let e=0;e{e.isMounted=!0})),Xr((()=>{e.isUnmounting=!0})),e}const Sr=[Function,Array],Or={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Sr,onEnter:Sr,onAfterEnter:Sr,onEnterCancelled:Sr,onBeforeLeave:Sr,onLeave:Sr,onAfterLeave:Sr,onLeaveCancelled:Sr,onBeforeAppear:Sr,onAppear:Sr,onAfterAppear:Sr,onAppearCancelled:Sr},kr={name:"BaseTransition",props:Or,setup(e,{slots:t}){const n=ds(),r=xr();let o;return()=>{const i=t.default&&Rr(t.default(),!0);if(!i||!i.length)return;let s=i[0];if(i.length>1){let e=!1;for(const t of i)if(t.type!==Ri){0,s=t,e=!0;break}}const l=It(e),{mode:a}=l;if(r.isLeaving)return Tr(s);const u=Ar(s);if(!u)return Tr(s);const c=Pr(u,l,r,n);jr(u,c);const f=n.subTree,p=f&&Ar(f);let d=!1;const{getTransitionKey:h}=u.type;if(h){const e=h();void 0===o?o=e:e!==o&&(o=e,d=!0)}if(p&&p.type!==Ri&&(!qi(u,p)||d)){const e=Pr(p,l,r,n);if(jr(p,e),"out-in"===a)return r.isLeaving=!0,e.afterLeave=()=>{r.isLeaving=!1,!1!==n.update.active&&n.update()},Tr(s);"in-out"===a&&u.type!==Ri&&(e.delayLeave=(e,t,n)=>{Cr(r,p)[String(p.key)]=p,e[wr]=()=>{t(),e[wr]=void 0,delete c.delayedLeave},c.delayedLeave=n})}return s}}},Er=kr;function Cr(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Pr(e,t,n,r){const{appear:o,mode:i,persisted:s=!1,onBeforeEnter:l,onEnter:a,onAfterEnter:u,onEnterCancelled:c,onBeforeLeave:f,onLeave:p,onAfterLeave:d,onLeaveCancelled:h,onBeforeAppear:v,onAppear:g,onAfterAppear:y,onAppearCancelled:b}=t,w=String(e.key),_=Cr(n,e),x=(e,t)=>{e&&an(e,r,9,t)},S=(e,t)=>{const n=t[1];x(e,t),m(e)?e.every((e=>e.length<=1))&&n():e.length<=1&&n()},O={mode:i,persisted:s,beforeEnter(t){let r=l;if(!n.isMounted){if(!o)return;r=v||l}t[wr]&&t[wr](!0);const i=_[w];i&&qi(e,i)&&i.el[wr]&&i.el[wr](),x(r,[t])},enter(e){let t=a,r=u,i=c;if(!n.isMounted){if(!o)return;t=g||a,r=y||u,i=b||c}let s=!1;const l=e[_r]=t=>{s||(s=!0,x(t?i:r,[e]),O.delayedLeave&&O.delayedLeave(),e[_r]=void 0)};t?S(t,[e,l]):l()},leave(t,r){const o=String(e.key);if(t[_r]&&t[_r](!0),n.isUnmounting)return r();x(f,[t]);let i=!1;const s=t[wr]=n=>{i||(i=!0,r(),x(n?h:d,[t]),t[wr]=void 0,_[o]===e&&delete _[o])};_[o]=e,p?S(p,[t,s]):s()},clone:e=>Pr(e,t,n,r)};return O}function Tr(e){if(Mr(e))return(e=es(e)).children=null,e}function Ar(e){return Mr(e)?e.children?e.children[0]:void 0:e}function jr(e,t){6&e.shapeFlag&&e.component?jr(e.component.subTree,t):128&e.shapeFlag?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Rr(e,t=!1,n){let r=[],o=0;for(let i=0;i1)for(let e=0;ed({name:e.name},t,{setup:e}))():e}const Ir=e=>!!e.type.__asyncLoader;function Fr(e){_(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:o=200,timeout:i,suspensible:s=!0,onError:l}=e;let a,u=null,c=0;const f=()=>{let e;return u||(e=u=t().catch((e=>{if(e=e instanceof Error?e:new Error(String(e)),l)return new Promise(((t,n)=>{l(e,(()=>t((c++,u=null,f()))),(()=>n(e)),c+1)}));throw e})).then((t=>e!==u&&u?u:(t&&(t.__esModule||"Module"===t[Symbol.toStringTag])&&(t=t.default),a=t,t))))};return Lr({name:"AsyncComponentWrapper",__asyncLoader:f,get __asyncResolved(){return a},setup(){const e=ps;if(a)return()=>Nr(a,e);const t=t=>{u=null,un(t,e,13,!r)};if(s&&e.suspense||xs)return f().then((t=>()=>Nr(t,e))).catch((e=>(t(e),()=>r?Qi(r,{error:e}):null)));const l=$t(!1),c=$t(),p=$t(!!o);return o&&setTimeout((()=>{p.value=!1}),o),null!=i&&setTimeout((()=>{if(!l.value&&!c.value){const e=new Error(`Async component timed out after ${i}ms.`);t(e),c.value=e}}),i),f().then((()=>{l.value=!0,e.parent&&Mr(e.parent.vnode)&&wn(e.parent.update)})).catch((e=>{t(e),c.value=e})),()=>l.value&&a?Nr(a,e):c.value&&r?Qi(r,{error:c.value}):n&&!p.value?Qi(n):void 0}})}function Nr(e,t){const{ref:n,props:r,children:o,ce:i}=t.vnode,s=Qi(e,r,o);return s.ref=n,s.ce=i,delete t.vnode.ce,s}const Mr=e=>e.type.__isKeepAlive,Dr={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=ds(),r=n.ctx;if(!r.renderer)return()=>{const e=t.default&&t.default();return e&&1===e.length?e[0]:e};const o=new Map,i=new Set;let s=null;const l=n.suspense,{renderer:{p:a,m:u,um:c,o:{createElement:f}}}=r,p=f("div");function d(e){qr(e),c(e,n,l,!0)}function h(e){o.forEach(((t,n)=>{const r=As(t.type);!r||e&&e(r)||v(n)}))}function v(e){const t=o.get(e);s&&qi(t,s)?s&&qr(s):d(t),o.delete(e),i.delete(e)}r.activate=(e,t,n,r,o)=>{const i=e.component;u(e,t,n,0,l),a(i.vnode,e,t,n,i,l,r,e.slotScopeIds,o),gi((()=>{i.isDeactivated=!1,i.a&&$(i.a);const t=e.props&&e.props.onVnodeMounted;t&&as(t,i.parent,e)}),l)},r.deactivate=e=>{const t=e.component;u(e,p,null,1,l),gi((()=>{t.da&&$(t.da);const n=e.props&&e.props.onVnodeUnmounted;n&&as(n,t.parent,e),t.isDeactivated=!0}),l)},dr((()=>[e.include,e.exclude]),(([e,t])=>{e&&h((t=>Ur(e,t))),t&&h((e=>!Ur(t,e)))}),{flush:"post",deep:!0});let g=null;const m=()=>{null!=g&&o.set(g,Wr(n.subTree))};return Jr(m),Zr(m),Xr((()=>{o.forEach((e=>{const{subTree:t,suspense:r}=n,o=Wr(t);if(e.type!==o.type||e.key!==o.key)d(e);else{qr(o);const e=o.component.da;e&&gi(e,r)}}))})),()=>{if(g=null,!t.default)return null;const n=t.default(),r=n[0];if(n.length>1)return s=null,n;if(!(zi(r)&&(4&r.shapeFlag||128&r.shapeFlag)))return s=null,r;let l=Wr(r);const a=l.type,u=As(Ir(l)?l.type.__asyncResolved||{}:a),{include:c,exclude:f,max:p}=e;if(c&&(!u||!Ur(c,u))||f&&u&&Ur(f,u))return s=l,r;const d=null==l.key?a:l.key,h=o.get(d);return l.el&&(l=es(l),128&r.shapeFlag&&(r.ssContent=l)),g=d,h?(l.el=h.el,l.component=h.component,l.transition&&jr(l,l.transition),l.shapeFlag|=512,i.delete(d),i.add(d)):(i.add(d),p&&i.size>parseInt(p,10)&&v(i.values().next().value)),l.shapeFlag|=256,s=l,nr(r.type)?r:l}}},Br=Dr;function Ur(e,t){return m(e)?e.some((e=>Ur(e,t))):x(e)?e.split(",").includes(t):"[object RegExp]"===C(e)&&e.test(t)}function $r(e,t){Hr(e,"a",t)}function Vr(e,t){Hr(e,"da",t)}function Hr(e,t,n=ps){const r=e.__wdc||(e.__wdc=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()});if(Kr(t,r,n),n){let e=n.parent;for(;e&&e.parent;)Mr(e.parent.vnode)&&zr(r,t,n,e),e=e.parent}}function zr(e,t,n,r){const o=Kr(t,e,r,!0);eo((()=>{h(r[t],o)}),n)}function qr(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function Wr(e){return 128&e.shapeFlag?e.ssContent:e}function Kr(e,t,n=ps,r=!1){if(n){const o=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...r)=>{if(n.isUnmounted)return;Ie(),ms(n);const o=an(t,n,e,r);return ys(),Fe(),o});return r?o.unshift(i):o.push(i),i}}const Gr=e=>(t,n=ps)=>(!xs||"sp"===e)&&Kr(e,((...e)=>t(...e)),n),Yr=Gr("bm"),Jr=Gr("m"),Qr=Gr("bu"),Zr=Gr("u"),Xr=Gr("bum"),eo=Gr("um"),to=Gr("sp"),no=Gr("rtg"),ro=Gr("rtc");function oo(e,t=ps){Kr("ec",e,t)}function io(e,t,n,r){let o;const i=n&&n[r];if(m(e)||x(e)){o=new Array(e.length);for(let n=0,r=e.length;nt(e,n,void 0,i&&i[n])));else{const n=Object.keys(e);o=new Array(n.length);for(let r=0,s=n.length;r{const t=r.fn(...e);return t&&(t.key=r.key),t}:r.fn)}return e}function lo(e,t,n={},r,o){if(Fn.isCE||Fn.parent&&Ir(Fn.parent)&&Fn.parent.isCE)return"default"!==t&&(n.name=t),Qi("slot",n,r&&r());let i=e[t];i&&i._c&&(i._d=!1),Ni();const s=i&&ao(i(n)),l=Hi(Ai,{key:n.key||s&&s.key||`_${t}`},s||(r?r():[]),s&&1===e._?64:-2);return!o&&l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),i&&i._c&&(i._d=!0),l}function ao(e){return e.some((e=>!zi(e)||e.type!==Ri&&!(e.type===Ai&&!ao(e.children))))?e:null}function uo(e,t){const n={};for(const r in e)n[t&&/[A-Z]/.test(r)?`on:${r}`:B(r)]=e[r];return n}const co=e=>e?bs(e)?Ts(e)||e.proxy:co(e.parent):null,fo=d(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>co(e.parent),$root:e=>co(e.root),$emit:e=>e.emit,$options:e=>No(e),$forceUpdate:e=>e.f||(e.f=()=>wn(e.update)),$nextTick:e=>e.n||(e.n=bn.bind(e.proxy)),$watch:e=>vr.bind(e)}),po=(e,t)=>e!==s&&!e.__isScriptSetup&&g(e,t),ho={get({_:e},t){const{ctx:n,setupState:r,data:o,props:i,accessCache:l,type:a,appContext:u}=e;let c;if("$"!==t[0]){const a=l[t];if(void 0!==a)switch(a){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return i[t]}else{if(po(r,t))return l[t]=1,r[t];if(o!==s&&g(o,t))return l[t]=2,o[t];if((c=e.propsOptions[0])&&g(c,t))return l[t]=3,i[t];if(n!==s&&g(n,t))return l[t]=4,n[t];Ro&&(l[t]=0)}}const f=fo[t];let p,d;return f?("$attrs"===t&&Ne(e,0,t),f(e)):(p=a.__cssModules)&&(p=p[t])?p:n!==s&&g(n,t)?(l[t]=4,n[t]):(d=u.config.globalProperties,g(d,t)?d[t]:void 0)},set({_:e},t,n){const{data:r,setupState:o,ctx:i}=e;return po(o,t)?(o[t]=n,!0):r!==s&&g(r,t)?(r[t]=n,!0):!g(e.props,t)&&(("$"!==t[0]||!(t.slice(1)in e))&&(i[t]=n,!0))},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:i}},l){let a;return!!n[l]||e!==s&&g(e,l)||po(t,l)||(a=i[0])&&g(a,l)||g(r,l)||g(fo,l)||g(o.config.globalProperties,l)},defineProperty(e,t,n){return null!=n.get?e._.accessCache[t]=0:g(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};const vo=d({},ho,{get(e,t){if(t!==Symbol.unscopables)return ho.get(e,t,e)},has:(e,t)=>"_"!==t[0]&&!G(t)});function go(){return null}function mo(){return null}function yo(e){0}function bo(e){0}function wo(){return null}function _o(){0}function xo(e,t){return null}function So(){return Eo().slots}function Oo(){return Eo().attrs}function ko(e,t,n){const r=ds();if(n&&n.local){const n=$t(e[t]);return dr((()=>e[t]),(e=>n.value=e)),dr(n,(n=>{n!==e[t]&&r.emit(`update:${t}`,n)})),n}return{__v_isRef:!0,get value(){return e[t]},set value(e){r.emit(`update:${t}`,e)}}}function Eo(){const e=ds();return e.setupContext||(e.setupContext=Ps(e))}function Co(e){return m(e)?e.reduce(((e,t)=>(e[t]=null,e)),{}):e}function Po(e,t){const n=Co(e);for(const e in t){if(e.startsWith("__skip"))continue;let r=n[e];r?m(r)||_(r)?r=n[e]={type:r,default:t[e]}:r.default=t[e]:null===r&&(r=n[e]={default:t[e]}),r&&t[`__skip_${e}`]&&(r.skipFactory=!0)}return n}function To(e,t){return e&&t?m(e)&&m(t)?e.concat(t):d({},Co(e),Co(t)):e||t}function Ao(e,t){const n={};for(const r in e)t.includes(r)||Object.defineProperty(n,r,{enumerable:!0,get:()=>e[r]});return n}function jo(e){const t=ds();let n=e();return ys(),k(n)&&(n=n.catch((e=>{throw ms(t),e}))),[n,()=>ms(t)]}let Ro=!0;function Lo(e){const t=No(e),n=e.proxy,r=e.ctx;Ro=!1,t.beforeCreate&&Io(t.beforeCreate,e,"bc");const{data:o,computed:i,methods:s,watch:l,provide:u,inject:c,created:f,beforeMount:p,mounted:d,beforeUpdate:h,updated:v,activated:g,deactivated:y,beforeDestroy:b,beforeUnmount:w,destroyed:x,unmounted:S,render:k,renderTracked:E,renderTriggered:C,errorCaptured:P,serverPrefetch:T,expose:A,inheritAttrs:j,components:R,directives:L,filters:I}=t;if(c&&function(e,t,n=a){m(e)&&(e=Uo(e));for(const n in e){const r=e[n];let o;o=O(r)?"default"in r?Yo(r.from||n,r.default,!0):Yo(r.from||n):Yo(r),Ut(o)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>o.value,set:e=>o.value=e}):t[n]=o}}(c,r,null),s)for(const e in s){const t=s[e];_(t)&&(r[e]=t.bind(n))}if(o){0;const t=o.call(n,n);0,O(t)&&(e.data=kt(t))}if(Ro=!0,i)for(const e in i){const t=i[e],o=_(t)?t.bind(n,n):_(t.get)?t.get.bind(n,n):a;0;const s=!_(t)&&_(t.set)?t.set.bind(n):a,l=Rs({get:o,set:s});Object.defineProperty(r,e,{enumerable:!0,configurable:!0,get:()=>l.value,set:e=>l.value=e})}if(l)for(const e in l)Fo(l[e],r,n,e);if(u){const e=_(u)?u.call(n):u;Reflect.ownKeys(e).forEach((t=>{Go(t,e[t])}))}function F(e,t){m(t)?t.forEach((t=>e(t.bind(n)))):t&&e(t.bind(n))}if(f&&Io(f,e,"c"),F(Yr,p),F(Jr,d),F(Qr,h),F(Zr,v),F($r,g),F(Vr,y),F(oo,P),F(ro,E),F(no,C),F(Xr,w),F(eo,S),F(to,T),m(A))if(A.length){const t=e.exposed||(e.exposed={});A.forEach((e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t})}))}else e.exposed||(e.exposed={});k&&e.render===a&&(e.render=k),null!=j&&(e.inheritAttrs=j),R&&(e.components=R),L&&(e.directives=L)}function Io(e,t,n){an(m(e)?e.map((e=>e.bind(t.proxy))):e.bind(t.proxy),t,n)}function Fo(e,t,n,r){const o=r.includes(".")?gr(n,r):()=>n[r];if(x(e)){const n=t[e];_(n)&&dr(o,n)}else if(_(e))dr(o,e.bind(n));else if(O(e))if(m(e))e.forEach((e=>Fo(e,t,n,r)));else{const r=_(e.handler)?e.handler.bind(n):t[e.handler];_(r)&&dr(o,r,e)}else 0}function No(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:i,config:{optionMergeStrategies:s}}=e.appContext,l=i.get(t);let a;return l?a=l:o.length||n||r?(a={},o.length&&o.forEach((e=>Mo(a,e,s,!0))),Mo(a,t,s)):a=t,O(t)&&i.set(t,a),a}function Mo(e,t,n,r=!1){const{mixins:o,extends:i}=t;i&&Mo(e,i,n,!0),o&&o.forEach((t=>Mo(e,t,n,!0)));for(const o in t)if(r&&"expose"===o);else{const r=Do[o]||n&&n[o];e[o]=r?r(e[o],t[o]):t[o]}return e}const Do={data:Bo,props:Ho,emits:Ho,methods:Vo,computed:Vo,beforeCreate:$o,created:$o,beforeMount:$o,mounted:$o,beforeUpdate:$o,updated:$o,beforeDestroy:$o,beforeUnmount:$o,destroyed:$o,unmounted:$o,activated:$o,deactivated:$o,errorCaptured:$o,serverPrefetch:$o,components:Vo,directives:Vo,watch:function(e,t){if(!e)return t;if(!t)return e;const n=d(Object.create(null),e);for(const r in t)n[r]=$o(e[r],t[r]);return n},provide:Bo,inject:function(e,t){return Vo(Uo(e),Uo(t))}};function Bo(e,t){return t?e?function(){return d(_(e)?e.call(this,this):e,_(t)?t.call(this,this):t)}:t:e}function Uo(e){if(m(e)){const t={};for(let n=0;n(i.has(e)||(e&&_(e.install)?(i.add(e),e.install(l,...t)):_(e)&&(i.add(e),e(l,...t))),l),mixin:e=>(o.mixins.includes(e)||o.mixins.push(e),l),component:(e,t)=>t?(o.components[e]=t,l):o.components[e],directive:(e,t)=>t?(o.directives[e]=t,l):o.directives[e],mount(i,a,u){if(!s){0;const c=Qi(n,r);return c.appContext=o,a&&t?t(c,i):e(c,i,u),s=!0,l._container=i,i.__vue_app__=l,Ts(c.component)||c.component.proxy}},unmount(){s&&(e(null,l._container),delete l._container.__vue_app__)},provide:(e,t)=>(o.provides[e]=t,l),runWithContext(e){Ko=l;try{return e()}finally{Ko=null}}};return l}}let Ko=null;function Go(e,t){if(ps){let n=ps.provides;const r=ps.parent&&ps.parent.provides;r===n&&(n=ps.provides=Object.create(r)),n[e]=t}else 0}function Yo(e,t,n=!1){const r=ps||Fn;if(r||Ko){const o=r?null==r.parent?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides:Ko._context.provides;if(o&&e in o)return o[e];if(arguments.length>1)return n&&_(t)?t.call(r&&r.proxy):t}else 0}function Jo(){return!!(ps||Fn||Ko)}function Qo(e,t,n,r){const[o,i]=e.propsOptions;let l,a=!1;if(t)for(let s in t){if(j(s))continue;const u=t[s];let c;o&&g(o,c=F(s))?i&&i.includes(c)?(l||(l={}))[c]=u:n[c]=u:In(e.emitsOptions,s)||s in r&&u===r[s]||(r[s]=u,a=!0)}if(i){const t=It(n),r=l||s;for(let s=0;s{c=!0;const[n,r]=Xo(e,t,!0);d(a,n),r&&u.push(...r)};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}if(!i&&!c)return O(e)&&r.set(e,l),l;if(m(i))for(let e=0;e-1,r[1]=n<0||e-1||g(r,"default"))&&u.push(t)}}}}const f=[a,u];return O(e)&&r.set(e,f),f}function ei(e){return"$"!==e[0]}function ti(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:null===e?"null":""}function ni(e,t){return ti(e)===ti(t)}function ri(e,t){return m(t)?t.findIndex((t=>ni(t,e))):_(t)&&ni(t,e)?0:-1}const oi=e=>"_"===e[0]||"$stable"===e,ii=e=>m(e)?e.map(os):[os(e)],si=(e,t,n)=>{if(t._n)return t;const r=$n(((...e)=>ii(t(...e))),n);return r._c=!1,r},li=(e,t,n)=>{const r=e._ctx;for(const n in e){if(oi(n))continue;const o=e[n];if(_(o))t[n]=si(0,o,r);else if(null!=o){0;const e=ii(o);t[n]=()=>e}}},ai=(e,t)=>{const n=ii(t);e.slots.default=()=>n},ui=(e,t)=>{if(32&e.vnode.shapeFlag){const n=t._;n?(e.slots=It(t),V(t,"_",n)):li(t,e.slots={})}else e.slots={},t&&ai(e,t);V(e.slots,Ki,1)},ci=(e,t,n)=>{const{vnode:r,slots:o}=e;let i=!0,l=s;if(32&r.shapeFlag){const e=t._;e?n&&1===e?i=!1:(d(o,t),n||1!==e||delete o._):(i=!t.$stable,li(t,o)),l=t}else t&&(ai(e,t),l={default:1});if(i)for(const e in o)oi(e)||null!=l[e]||delete o[e]};function fi(e,t,n,r,o=!1){if(m(e))return void e.forEach(((e,i)=>fi(e,t&&(m(t)?t[i]:t),n,r,o)));if(Ir(r)&&!o)return;const i=4&r.shapeFlag?Ts(r.component)||r.component.proxy:r.el,l=o?null:i,{i:a,r:u}=e;const c=t&&t.r,f=a.refs===s?a.refs={}:a.refs,p=a.setupState;if(null!=c&&c!==u&&(x(c)?(f[c]=null,g(p,c)&&(p[c]=null)):Ut(c)&&(c.value=null)),_(u))ln(u,a,12,[l,f]);else{const t=x(u),r=Ut(u);if(t||r){const s=()=>{if(e.f){const n=t?g(p,u)?p[u]:f[u]:u.value;o?m(n)&&h(n,i):m(n)?n.includes(i)||n.push(i):t?(f[u]=[i],g(p,u)&&(p[u]=f[u])):(u.value=[i],e.k&&(f[e.k]=u.value))}else t?(f[u]=l,g(p,u)&&(p[u]=l)):r&&(u.value=l,e.k&&(f[e.k]=l))};l?(s.id=-1,gi(s,n)):s()}else 0}}let pi=!1;const di=e=>/svg/.test(e.namespaceURI)&&"foreignObject"!==e.tagName,hi=e=>8===e.nodeType;function vi(e){const{mt:t,p:n,o:{patchProp:r,createText:o,nextSibling:i,parentNode:s,remove:l,insert:a,createComment:u}}=e,c=(n,r,l,u,f,b=!1)=>{const w=hi(n)&&"["===n.data,_=()=>v(n,r,l,u,f,w),{type:x,ref:S,shapeFlag:O,patchFlag:k}=r;let E=n.nodeType;r.el=n,-2===k&&(b=!1,r.dynamicChildren=null);let C=null;switch(x){case ji:3!==E?""===r.children?(a(r.el=o(""),s(n),n),C=n):C=_():(n.data!==r.children&&(pi=!0,n.data=r.children),C=i(n));break;case Ri:y(n)?(C=i(n),m(r.el=n.content.firstChild,n,l)):C=8!==E||w?_():i(n);break;case Li:if(w&&(E=(n=i(n)).nodeType),1===E||3===E){C=n;const e=!r.children.length;for(let t=0;t{s=s||!!t.dynamicChildren;const{type:a,props:u,patchFlag:c,shapeFlag:p,dirs:h,transition:v}=t,g="input"===a&&h||"option"===a;if(g||-1!==c){if(h&&br(t,null,n,"created"),u)if(g||!s||48&c)for(const t in u)(g&&t.endsWith("value")||f(t)&&!j(t))&&r(e,t,null,u[t],!1,void 0,n);else u.onClick&&r(e,"onClick",null,u.onClick,!1,void 0,n);let a;(a=u&&u.onVnodeBeforeMount)&&as(a,n,t);let b=!1;if(y(e)){b=_i(o,v)&&n&&n.vnode.props&&n.vnode.props.appear;const r=e.content.firstChild;b&&v.beforeEnter(r),m(r,e,n),t.el=e=r}if(h&&br(t,null,n,"beforeMount"),((a=u&&u.onVnodeMounted)||h||b)&&lr((()=>{a&&as(a,n,t),b&&v.enter(e),h&&br(t,null,n,"mounted")}),o),16&p&&(!u||!u.innerHTML&&!u.textContent)){let r=d(e.firstChild,t,e,n,o,i,s);for(;r;){pi=!0;const e=r;r=r.nextSibling,l(e)}}else 8&p&&e.textContent!==t.children&&(pi=!0,e.textContent=t.children)}return e.nextSibling},d=(e,t,r,o,i,s,l)=>{l=l||!!t.dynamicChildren;const a=t.children,u=a.length;for(let t=0;t{const{slotScopeIds:c}=t;c&&(o=o?o.concat(c):c);const f=s(e),p=d(i(e),t,f,n,r,o,l);return p&&hi(p)&&"]"===p.data?i(t.anchor=p):(pi=!0,a(t.anchor=u("]"),f,p),p)},v=(e,t,r,o,a,u)=>{if(pi=!0,t.el=null,u){const t=g(e);for(;;){const n=i(e);if(!n||n===t)break;l(n)}}const c=i(e),f=s(e);return l(e),n(null,t,f,c,r,o,di(f),a),c},g=(e,t="[",n="]")=>{let r=0;for(;e;)if((e=i(e))&&hi(e)&&(e.data===t&&r++,e.data===n)){if(0===r)return i(e);r--}return e},m=(e,t,n)=>{const r=t.parentNode;r&&r.replaceChild(e,t);let o=n;for(;o;)o.vnode.el===t&&(o.vnode.el=o.subTree.el=e),o=o.parent},y=e=>1===e.nodeType&&"template"===e.tagName.toLowerCase();return[(e,t)=>{if(!t.hasChildNodes())return n(null,e,t),On(),void(t._vnode=e);pi=!1,c(t.firstChild,e,null,null,null),On(),t._vnode=e},c]}const gi=lr;function mi(e){return bi(e)}function yi(e){return bi(e,vi)}function bi(e,t){W().__VUE__=!0;const{insert:n,remove:r,patchProp:o,createElement:i,createText:u,createComment:c,setText:f,setElementText:p,parentNode:d,nextSibling:h,setScopeId:v=a,insertStaticContent:m}=e,y=(e,t,n,r=null,o=null,i=null,s=!1,l=null,a=!!t.dynamicChildren)=>{if(e===t)return;e&&!qi(e,t)&&(r=J(e),z(e,o,i,!0),e=null),-2===t.patchFlag&&(a=!1,t.dynamicChildren=null);const{type:u,ref:c,shapeFlag:f}=t;switch(u){case ji:b(e,t,n,r);break;case Ri:w(e,t,n,r);break;case Li:null==e&&_(t,n,r,s);break;case Ai:A(e,t,n,r,o,i,s,l,a);break;default:1&f?S(e,t,n,r,o,i,s,l,a):6&f?R(e,t,n,r,o,i,s,l,a):(64&f||128&f)&&u.process(e,t,n,r,o,i,s,l,a,Z)}null!=c&&o&&fi(c,e&&e.ref,i,t||e,!t)},b=(e,t,r,o)=>{if(null==e)n(t.el=u(t.children),r,o);else{const n=t.el=e.el;t.children!==e.children&&f(n,t.children)}},w=(e,t,r,o)=>{null==e?n(t.el=c(t.children||""),r,o):t.el=e.el},_=(e,t,n,r)=>{[e.el,e.anchor]=m(e.children,t,n,r,e.el,e.anchor)},x=({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=h(e),r(e),e=n;r(t)},S=(e,t,n,r,o,i,s,l,a)=>{s=s||"svg"===t.type,null==e?O(t,n,r,o,i,s,l,a):C(e,t,o,i,s,l,a)},O=(e,t,r,s,l,a,u,c)=>{let f,d;const{type:h,props:v,shapeFlag:g,transition:m,dirs:y}=e;if(f=e.el=i(e.type,a,v&&v.is,v),8&g?p(f,e.children):16&g&&E(e.children,f,null,s,l,a&&"foreignObject"!==h,u,c),y&&br(e,null,s,"created"),k(f,e,e.scopeId,u,s),v){for(const t in v)"value"===t||j(t)||o(f,t,null,v[t],a,e.children,s,l,Y);"value"in v&&o(f,"value",null,v.value),(d=v.onVnodeBeforeMount)&&as(d,s,e)}y&&br(e,null,s,"beforeMount");const b=_i(l,m);b&&m.beforeEnter(f),n(f,t,r),((d=v&&v.onVnodeMounted)||b||y)&&gi((()=>{d&&as(d,s,e),b&&m.enter(f),y&&br(e,null,s,"mounted")}),l)},k=(e,t,n,r,o)=>{if(n&&v(e,n),r)for(let t=0;t{for(let u=a;u{const u=t.el=e.el;let{patchFlag:c,dynamicChildren:f,dirs:d}=t;c|=16&e.patchFlag;const h=e.props||s,v=t.props||s;let g;n&&wi(n,!1),(g=v.onVnodeBeforeUpdate)&&as(g,n,t,e),d&&br(t,e,n,"beforeUpdate"),n&&wi(n,!0);const m=i&&"foreignObject"!==t.type;if(f?P(e.dynamicChildren,f,u,n,r,m,l):a||B(e,t,u,null,n,r,m,l,!1),c>0){if(16&c)T(u,t,h,v,n,r,i);else if(2&c&&h.class!==v.class&&o(u,"class",null,v.class,i),4&c&&o(u,"style",h.style,v.style,i),8&c){const s=t.dynamicProps;for(let t=0;t{g&&as(g,n,t,e),d&&br(t,e,n,"updated")}),r)},P=(e,t,n,r,o,i,s)=>{for(let l=0;l{if(n!==r){if(n!==s)for(const s in n)j(s)||s in r||o(e,s,n[s],null,a,t.children,i,l,Y);for(const s in r){if(j(s))continue;const u=r[s],c=n[s];u!==c&&"value"!==s&&o(e,s,c,u,a,t.children,i,l,Y)}"value"in r&&o(e,"value",n.value,r.value)}},A=(e,t,r,o,i,s,l,a,c)=>{const f=t.el=e?e.el:u(""),p=t.anchor=e?e.anchor:u("");let{patchFlag:d,dynamicChildren:h,slotScopeIds:v}=t;v&&(a=a?a.concat(v):v),null==e?(n(f,r,o),n(p,r,o),E(t.children,r,p,i,s,l,a,c)):d>0&&64&d&&h&&e.dynamicChildren?(P(e.dynamicChildren,h,r,i,s,l,a),(null!=t.key||i&&t===i.subTree)&&xi(e,t,!0)):B(e,t,r,p,i,s,l,a,c)},R=(e,t,n,r,o,i,s,l,a)=>{t.slotScopeIds=l,null==e?512&t.shapeFlag?o.ctx.activate(t,n,r,s,a):L(t,n,r,o,i,s,a):I(e,t,a)},L=(e,t,n,r,o,i,s)=>{const l=e.component=fs(e,r,o);if(Mr(e)&&(l.ctx.renderer=Z),Ss(l),l.asyncDep){if(o&&o.registerDep(l,N),!e.el){const e=l.subTree=Qi(Ri);w(null,e,t,n)}}else N(l,e,t,n,o,i,s)},I=(e,t,n)=>{const r=t.component=e.component;if(function(e,t,n){const{props:r,children:o,component:i}=e,{props:s,children:l,patchFlag:a}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(!(n&&a>=0))return!(!o&&!l||l&&l.$stable)||r!==s&&(r?!s||Wn(r,s,u):!!s);if(1024&a)return!0;if(16&a)return r?Wn(r,s,u):!!s;if(8&a){const e=t.dynamicProps;for(let t=0;tdn&&pn.splice(t,1)}(r.update),r.update()}else t.el=e.el,r.vnode=t},N=(e,t,n,r,o,i,s)=>{const l=e.effect=new Pe((()=>{if(e.isMounted){let t,{next:n,bu:r,u:l,parent:a,vnode:u}=e,c=n;0,wi(e,!1),n?(n.el=u.el,D(e,n,s)):n=u,r&&$(r),(t=n.props&&n.props.onVnodeBeforeUpdate)&&as(t,a,n,u),wi(e,!0);const f=Vn(e);0;const p=e.subTree;e.subTree=f,y(p,f,d(p.el),J(p),e,o,i),n.el=f.el,null===c&&Kn(e,f.el),l&&gi(l,o),(t=n.props&&n.props.onVnodeUpdated)&&gi((()=>as(t,a,n,u)),o)}else{let s;const{el:l,props:a}=t,{bm:u,m:c,parent:f}=e,p=Ir(t);if(wi(e,!1),u&&$(u),!p&&(s=a&&a.onVnodeBeforeMount)&&as(s,f,t),wi(e,!0),l&&ee){const n=()=>{e.subTree=Vn(e),ee(l,e.subTree,e,o,null)};p?t.type.__asyncLoader().then((()=>!e.isUnmounted&&n())):n()}else{0;const s=e.subTree=Vn(e);0,y(null,s,n,r,e,o,i),t.el=s.el}if(c&&gi(c,o),!p&&(s=a&&a.onVnodeMounted)){const e=t;gi((()=>as(s,f,e)),o)}(256&t.shapeFlag||f&&Ir(f.vnode)&&256&f.vnode.shapeFlag)&&e.a&&gi(e.a,o),e.isMounted=!0,t=n=r=null}}),(()=>wn(a)),e.scope),a=e.update=()=>l.run();a.id=e.uid,wi(e,!0),a()},D=(e,t,n)=>{t.component=e;const r=e.vnode.props;e.vnode=t,e.next=null,function(e,t,n,r){const{props:o,attrs:i,vnode:{patchFlag:s}}=e,l=It(o),[a]=e.propsOptions;let u=!1;if(!(r||s>0)||16&s){let r;Qo(e,t,o,i)&&(u=!0);for(const i in l)t&&(g(t,i)||(r=M(i))!==i&&g(t,r))||(a?!n||void 0===n[i]&&void 0===n[r]||(o[i]=Zo(a,l,i,void 0,e,!0)):delete o[i]);if(i!==l)for(const e in i)t&&g(t,e)||(delete i[e],u=!0)}else if(8&s){const n=e.vnode.dynamicProps;for(let r=0;r{const u=e&&e.children,c=e?e.shapeFlag:0,f=t.children,{patchFlag:d,shapeFlag:h}=t;if(d>0){if(128&d)return void V(u,f,n,r,o,i,s,l,a);if(256&d)return void U(u,f,n,r,o,i,s,l,a)}8&h?(16&c&&Y(u,o,i),f!==u&&p(n,f)):16&c?16&h?V(u,f,n,r,o,i,s,l,a):Y(u,o,i,!0):(8&c&&p(n,""),16&h&&E(f,n,r,o,i,s,l,a))},U=(e,t,n,r,o,i,s,a,u)=>{t=t||l;const c=(e=e||l).length,f=t.length,p=Math.min(c,f);let d;for(d=0;df?Y(e,o,i,!0,!1,p):E(t,n,r,o,i,s,a,u,p)},V=(e,t,n,r,o,i,s,a,u)=>{let c=0;const f=t.length;let p=e.length-1,d=f-1;for(;c<=p&&c<=d;){const r=e[c],l=t[c]=u?is(t[c]):os(t[c]);if(!qi(r,l))break;y(r,l,n,null,o,i,s,a,u),c++}for(;c<=p&&c<=d;){const r=e[p],l=t[d]=u?is(t[d]):os(t[d]);if(!qi(r,l))break;y(r,l,n,null,o,i,s,a,u),p--,d--}if(c>p){if(c<=d){const e=d+1,l=ed)for(;c<=p;)z(e[c],o,i,!0),c++;else{const h=c,v=c,g=new Map;for(c=v;c<=d;c++){const e=t[c]=u?is(t[c]):os(t[c]);null!=e.key&&g.set(e.key,c)}let m,b=0;const w=d-v+1;let _=!1,x=0;const S=new Array(w);for(c=0;c=w){z(r,o,i,!0);continue}let l;if(null!=r.key)l=g.get(r.key);else for(m=v;m<=d;m++)if(0===S[m-v]&&qi(r,t[m])){l=m;break}void 0===l?z(r,o,i,!0):(S[l-v]=c+1,l>=x?x=l:_=!0,y(r,t[l],n,null,o,i,s,a,u),b++)}const O=_?function(e){const t=e.slice(),n=[0];let r,o,i,s,l;const a=e.length;for(r=0;r>1,e[n[l]]0&&(t[r]=n[i-1]),n[i]=r)}}i=n.length,s=n[i-1];for(;i-- >0;)n[i]=s,s=t[s];return n}(S):l;for(m=O.length-1,c=w-1;c>=0;c--){const e=v+c,l=t[e],p=e+1{const{el:s,type:l,transition:a,children:u,shapeFlag:c}=e;if(6&c)return void H(e.component.subTree,t,r,o);if(128&c)return void e.suspense.move(t,r,o);if(64&c)return void l.move(e,t,r,Z);if(l===Ai){n(s,t,r);for(let e=0;e{let i;for(;e&&e!==t;)i=h(e),n(e,r,o),e=i;n(t,r,o)})(e,t,r);if(2!==o&&1&c&&a)if(0===o)a.beforeEnter(s),n(s,t,r),gi((()=>a.enter(s)),i);else{const{leave:e,delayLeave:o,afterLeave:i}=a,l=()=>n(s,t,r),u=()=>{e(s,(()=>{l(),i&&i()}))};o?o(s,l,u):u()}else n(s,t,r)},z=(e,t,n,r=!1,o=!1)=>{const{type:i,props:s,ref:l,children:a,dynamicChildren:u,shapeFlag:c,patchFlag:f,dirs:p}=e;if(null!=l&&fi(l,null,n,e,!0),256&c)return void t.ctx.deactivate(e);const d=1&c&&p,h=!Ir(e);let v;if(h&&(v=s&&s.onVnodeBeforeUnmount)&&as(v,t,e),6&c)G(e.component,n,r);else{if(128&c)return void e.suspense.unmount(n,r);d&&br(e,null,t,"beforeUnmount"),64&c?e.type.remove(e,t,n,o,Z,r):u&&(i!==Ai||f>0&&64&f)?Y(u,t,n,!1,!0):(i===Ai&&384&f||!o&&16&c)&&Y(a,t,n),r&&q(e)}(h&&(v=s&&s.onVnodeUnmounted)||d)&&gi((()=>{v&&as(v,t,e),d&&br(e,null,t,"unmounted")}),n)},q=e=>{const{type:t,el:n,anchor:o,transition:i}=e;if(t===Ai)return void K(n,o);if(t===Li)return void x(e);const s=()=>{r(n),i&&!i.persisted&&i.afterLeave&&i.afterLeave()};if(1&e.shapeFlag&&i&&!i.persisted){const{leave:t,delayLeave:r}=i,o=()=>t(n,s);r?r(e.el,s,o):o()}else s()},K=(e,t)=>{let n;for(;e!==t;)n=h(e),r(e),e=n;r(t)},G=(e,t,n)=>{const{bum:r,scope:o,update:i,subTree:s,um:l}=e;r&&$(r),o.stop(),i&&(i.active=!1,z(s,e,t,n)),l&&gi(l,t),gi((()=>{e.isUnmounted=!0}),t),t&&t.pendingBranch&&!t.isUnmounted&&e.asyncDep&&!e.asyncResolved&&e.suspenseId===t.pendingId&&(t.deps--,0===t.deps&&t.resolve())},Y=(e,t,n,r=!1,o=!1,i=0)=>{for(let s=i;s6&e.shapeFlag?J(e.component.subTree):128&e.shapeFlag?e.suspense.next():h(e.anchor||e.el),Q=(e,t,n)=>{null==e?t._vnode&&z(t._vnode,null,null,!0):y(t._vnode||null,e,t,null,null,null,n),Sn(),On(),t._vnode=e},Z={p:y,um:z,m:H,r:q,mt:L,mc:E,pc:B,pbc:P,n:J,o:e};let X,ee;return t&&([X,ee]=t(Z)),{render:Q,hydrate:X,createApp:Wo(Q,X)}}function wi({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function _i(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function xi(e,t,n=!1){const r=e.children,o=t.children;if(m(r)&&m(o))for(let e=0;ee&&(e.disabled||""===e.disabled),Oi=e=>"undefined"!=typeof SVGElement&&e instanceof SVGElement,ki=(e,t)=>{const n=e&&e.to;if(x(n)){if(t){const e=t(n);return e}return null}return n},Ei={__isTeleport:!0,process(e,t,n,r,o,i,s,l,a,u){const{mc:c,pc:f,pbc:p,o:{insert:d,querySelector:h,createText:v,createComment:g}}=u,m=Si(t.props);let{shapeFlag:y,children:b,dynamicChildren:w}=t;if(null==e){const e=t.el=v(""),u=t.anchor=v("");d(e,n,r),d(u,n,r);const f=t.target=ki(t.props,h),p=t.targetAnchor=v("");f&&(d(p,f),s=s||Oi(f));const g=(e,t)=>{16&y&&c(b,e,t,o,i,s,l,a)};m?g(n,u):f&&g(f,p)}else{t.el=e.el;const r=t.anchor=e.anchor,c=t.target=e.target,d=t.targetAnchor=e.targetAnchor,v=Si(e.props),g=v?n:c,y=v?r:d;if(s=s||Oi(c),w?(p(e.dynamicChildren,w,g,o,i,s,l),xi(e,t,!0)):a||f(e,t,g,y,o,i,s,l,!1),m)v?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Ci(t,n,r,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const e=t.target=ki(t.props,h);e&&Ci(t,e,null,u,0)}else v&&Ci(t,c,d,u,1)}Ti(t)},remove(e,t,n,r,{um:o,o:{remove:i}},s){const{shapeFlag:l,children:a,anchor:u,targetAnchor:c,target:f,props:p}=e;if(f&&i(c),s&&i(u),16&l){const e=s||!Si(p);for(let r=0;r0?Fi||l:null,Mi(),Bi>0&&Fi&&Fi.push(e),e}function Vi(e,t,n,r,o,i){return $i(Ji(e,t,n,r,o,i,!0))}function Hi(e,t,n,r,o){return $i(Qi(e,t,n,r,o,!0))}function zi(e){return!!e&&!0===e.__v_isVNode}function qi(e,t){return e.type===t.type&&e.key===t.key}function Wi(e){Di=e}const Ki="__vInternal",Gi=({key:e})=>null!=e?e:null,Yi=({ref:e,ref_key:t,ref_for:n})=>("number"==typeof e&&(e=""+e),null!=e?x(e)||Ut(e)||_(e)?{i:Fn,r:e,k:t,f:!!n}:e:null);function Ji(e,t=null,n=null,r=0,o=null,i=(e===Ai?0:1),s=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Gi(t),ref:t&&Yi(t),scopeId:Nn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:Fn};return l?(ss(a,n),128&i&&e.normalize(a)):n&&(a.shapeFlag|=x(n)?8:16),Bi>0&&!s&&Fi&&(a.patchFlag>0||6&i)&&32!==a.patchFlag&&Fi.push(a),a}const Qi=Zi;function Zi(e,t=null,n=null,r=0,o=null,i=!1){if(e&&e!==Qn||(e=Ri),zi(e)){const r=es(e,t,!0);return n&&ss(r,n),Bi>0&&!i&&Fi&&(6&r.shapeFlag?Fi[Fi.indexOf(e)]=r:Fi.push(r)),r.patchFlag|=-2,r}if(js(e)&&(e=e.__vccOpts),t){t=Xi(t);let{class:e,style:n}=t;e&&!x(e)&&(t.class=ee(e)),O(n)&&(Lt(n)&&!m(n)&&(n=d({},n)),t.style=Y(n))}return Ji(e,t,n,r,o,x(e)?1:nr(e)?128:(e=>e.__isTeleport)(e)?64:O(e)?4:_(e)?2:0,i,!0)}function Xi(e){return e?Lt(e)||Ki in e?d({},e):e:null}function es(e,t,n=!1){const{props:r,ref:o,patchFlag:i,children:s}=e,l=t?ls(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Gi(l),ref:t&&t.ref?n&&o?m(o)?o.concat(Yi(t)):[o,Yi(t)]:Yi(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ai?-1===i?16:16|i:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&es(e.ssContent),ssFallback:e.ssFallback&&es(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function ts(e=" ",t=0){return Qi(ji,null,e,t)}function ns(e,t){const n=Qi(Li,null,e);return n.staticCount=t,n}function rs(e="",t=!1){return t?(Ni(),Hi(Ri,null,e)):Qi(Ri,null,e)}function os(e){return null==e||"boolean"==typeof e?Qi(Ri):m(e)?Qi(Ai,null,e.slice()):"object"==typeof e?is(e):Qi(ji,null,String(e))}function is(e){return null===e.el&&-1!==e.patchFlag||e.memo?e:es(e)}function ss(e,t){let n=0;const{shapeFlag:r}=e;if(null==t)t=null;else if(m(t))n=16;else if("object"==typeof t){if(65&r){const n=t.default;return void(n&&(n._c&&(n._d=!1),ss(e,n()),n._c&&(n._d=!0)))}{n=32;const r=t._;r||Ki in t?3===r&&Fn&&(1===Fn.slots._?t._=1:(t._=2,e.patchFlag|=1024)):t._ctx=Fn}}else _(t)?(t={default:t,_ctx:Fn},n=32):(t=String(t),64&r?(n=16,t=[ts(t)]):n=8);e.children=t,e.shapeFlag|=n}function ls(...e){const t={};for(let n=0;nps||Fn;let hs,vs,gs="__VUE_INSTANCE_SETTERS__";(vs=W()[gs])||(vs=W()[gs]=[]),vs.push((e=>ps=e)),hs=e=>{vs.length>1?vs.forEach((t=>t(e))):vs[0](e)};const ms=e=>{hs(e),e.scope.on()},ys=()=>{ps&&ps.scope.off(),hs(null)};function bs(e){return 4&e.vnode.shapeFlag}let ws,_s,xs=!1;function Ss(e,t=!1){xs=t;const{props:n,children:r}=e.vnode,o=bs(e);!function(e,t,n,r=!1){const o={},i={};V(i,Ki,1),e.propsDefaults=Object.create(null),Qo(e,t,o,i);for(const t in e.propsOptions[0])t in o||(o[t]=void 0);n?e.props=r?o:Et(o):e.type.props?e.props=o:e.props=i,e.attrs=i}(e,n,o,t),ui(e,r);const i=o?function(e,t){const n=e.type;0;e.accessCache=Object.create(null),e.proxy=Ft(new Proxy(e.ctx,ho)),!1;const{setup:r}=n;if(r){const n=e.setupContext=r.length>1?Ps(e):null;ms(e),Ie();const o=ln(r,e,0,[e.props,n]);if(Fe(),ys(),k(o)){if(o.then(ys,ys),t)return o.then((n=>{Os(e,n,t)})).catch((t=>{un(t,e,0)}));e.asyncDep=o}else Os(e,o,t)}else Cs(e,t)}(e,t):void 0;return xs=!1,i}function Os(e,t,n){_(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:O(t)&&(e.setupState=Yt(t)),Cs(e,n)}function ks(e){ws=e,_s=e=>{e.render._rc&&(e.withProxy=new Proxy(e.ctx,vo))}}const Es=()=>!ws;function Cs(e,t,n){const r=e.type;if(!e.render){if(!t&&ws&&!r.render){const t=r.template||No(e).template;if(t){0;const{isCustomElement:n,compilerOptions:o}=e.appContext.config,{delimiters:i,compilerOptions:s}=r,l=d(d({isCustomElement:n,delimiters:i},o),s);r.render=ws(t,l)}}e.render=r.render||a,_s&&_s(e)}ms(e),Ie();try{Lo(e)}finally{Fe(),ys()}}function Ps(e){const t=t=>{e.exposed=t||{}};return{get attrs(){return function(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get:(t,n)=>(Ne(e,0,"$attrs"),t[n])}))}(e)},slots:e.slots,emit:e.emit,expose:t}}function Ts(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Yt(Ft(e.exposed)),{get:(t,n)=>n in t?t[n]:n in fo?fo[n](e):void 0,has:(e,t)=>t in e||t in fo}))}function As(e,t=!0){return _(e)?e.displayName||e.name:e.name||t&&e.__name}function js(e){return _(e)&&"__vccOpts"in e}const Rs=(e,t)=>function(e,t,n=!1){let r,o;const i=_(e);return i?(r=e,o=a):(r=e.get,o=e.set),new rn(r,o,i||!o,n)}(e,0,xs);function Ls(e,t,n){const r=arguments.length;return 2===r?O(t)&&!m(t)?zi(t)?Qi(e,null,[t]):Qi(e,t):Qi(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):3===r&&zi(n)&&(n=[n]),Qi(e,t,n))}const Is=Symbol.for("v-scx"),Fs=()=>{{const e=Yo(Is);return e}};function Ns(){return void 0}function Ms(e,t,n,r){const o=n[r];if(o&&Ds(o,e))return o;const i=t();return i.memo=e.slice(),n[r]=i}function Ds(e,t){const n=e.memo;if(n.length!=t.length)return!1;for(let e=0;e0&&Fi&&Fi.push(e),!0}const Bs="3.3.8",Us={createComponentInstance:fs,setupComponent:Ss,renderComponentRoot:Vn,setCurrentRenderingInstance:Mn,isVNode:zi,normalizeVNode:os},$s=null,Vs=null,Hs="undefined"!=typeof document?document:null,zs=Hs&&Hs.createElement("template"),qs={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t?Hs.createElementNS("http://www.w3.org/2000/svg",e):Hs.createElement(e,n?{is:n}:void 0);return"select"===e&&r&&null!=r.multiple&&o.setAttribute("multiple",r.multiple),o},createText:e=>Hs.createTextNode(e),createComment:e=>Hs.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Hs.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,i){const s=n?n.previousSibling:t.lastChild;if(o&&(o===i||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),o!==i&&(o=o.nextSibling););else{zs.innerHTML=r?`${e}`:e;const o=zs.content;if(r){const e=o.firstChild;for(;e.firstChild;)o.appendChild(e.firstChild);o.removeChild(e)}t.insertBefore(o,n)}return[s?s.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Ws="transition",Ks="animation",Gs=Symbol("_vtc"),Ys=(e,{slots:t})=>Ls(Er,el(e),t);Ys.displayName="Transition";const Js={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Qs=Ys.props=d({},Or,Js),Zs=(e,t=[])=>{m(e)?e.forEach((e=>e(...t))):e&&e(...t)},Xs=e=>!!e&&(m(e)?e.some((e=>e.length>1)):e.length>1);function el(e){const t={};for(const n in e)n in Js||(t[n]=e[n]);if(!1===e.css)return t;const{name:n="v",type:r,duration:o,enterFromClass:i=`${n}-enter-from`,enterActiveClass:s=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:a=i,appearActiveClass:u=s,appearToClass:c=l,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:h=`${n}-leave-to`}=e,v=function(e){if(null==e)return null;if(O(e))return[tl(e.enter),tl(e.leave)];{const t=tl(e);return[t,t]}}(o),g=v&&v[0],m=v&&v[1],{onBeforeEnter:y,onEnter:b,onEnterCancelled:w,onLeave:_,onLeaveCancelled:x,onBeforeAppear:S=y,onAppear:k=b,onAppearCancelled:E=w}=t,C=(e,t,n)=>{rl(e,t?c:l),rl(e,t?u:s),n&&n()},P=(e,t)=>{e._isLeaving=!1,rl(e,f),rl(e,h),rl(e,p),t&&t()},T=e=>(t,n)=>{const o=e?k:b,s=()=>C(t,e,n);Zs(o,[t,s]),ol((()=>{rl(t,e?a:i),nl(t,e?c:l),Xs(o)||sl(t,r,g,s)}))};return d(t,{onBeforeEnter(e){Zs(y,[e]),nl(e,i),nl(e,s)},onBeforeAppear(e){Zs(S,[e]),nl(e,a),nl(e,u)},onEnter:T(!1),onAppear:T(!0),onLeave(e,t){e._isLeaving=!0;const n=()=>P(e,t);nl(e,f),cl(),nl(e,p),ol((()=>{e._isLeaving&&(rl(e,f),nl(e,h),Xs(_)||sl(e,r,m,n))})),Zs(_,[e,n])},onEnterCancelled(e){C(e,!1),Zs(w,[e])},onAppearCancelled(e){C(e,!0),Zs(E,[e])},onLeaveCancelled(e){P(e),Zs(x,[e])}})}function tl(e){return z(e)}function nl(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.add(t))),(e[Gs]||(e[Gs]=new Set)).add(t)}function rl(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.remove(t)));const n=e[Gs];n&&(n.delete(t),n.size||(e[Gs]=void 0))}function ol(e){requestAnimationFrame((()=>{requestAnimationFrame(e)}))}let il=0;function sl(e,t,n,r){const o=e._endId=++il,i=()=>{o===e._endId&&r()};if(n)return setTimeout(i,n);const{type:s,timeout:l,propCount:a}=ll(e,t);if(!s)return r();const u=s+"end";let c=0;const f=()=>{e.removeEventListener(u,p),i()},p=t=>{t.target===e&&++c>=a&&f()};setTimeout((()=>{c(n[e]||"").split(", "),o=r(`${Ws}Delay`),i=r(`${Ws}Duration`),s=al(o,i),l=r(`${Ks}Delay`),a=r(`${Ks}Duration`),u=al(l,a);let c=null,f=0,p=0;t===Ws?s>0&&(c=Ws,f=s,p=i.length):t===Ks?u>0&&(c=Ks,f=u,p=a.length):(f=Math.max(s,u),c=f>0?s>u?Ws:Ks:null,p=c?c===Ws?i.length:a.length:0);return{type:c,timeout:f,propCount:p,hasTransform:c===Ws&&/\b(transform|all)(,|$)/.test(r(`${Ws}Property`).toString())}}function al(e,t){for(;e.lengthul(t)+ul(e[n]))))}function ul(e){return"auto"===e?0:1e3*Number(e.slice(0,-1).replace(",","."))}function cl(){return document.body.offsetHeight}const fl=Symbol("_vod"),pl={beforeMount(e,{value:t},{transition:n}){e[fl]="none"===e.style.display?"":e.style.display,n&&t?n.beforeEnter(e):dl(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),dl(e,!0),r.enter(e)):r.leave(e,(()=>{dl(e,!1)})):dl(e,t))},beforeUnmount(e,{value:t}){dl(e,t)}};function dl(e,t){e.style.display=t?e[fl]:"none"}const hl=/\s*!important$/;function vl(e,t,n){if(m(n))n.forEach((n=>vl(e,t,n)));else if(null==n&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=function(e,t){const n=ml[t];if(n)return n;let r=F(t);if("filter"!==r&&r in e)return ml[t]=r;r=D(r);for(let n=0;n{if(e._vts){if(e._vts<=n.attached)return}else e._vts=Date.now();an(function(e,t){if(m(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map((e=>t=>!t._stopped&&e&&e(t)))}return t}(e,n.value),t,5,[e])};return n.value=e,n.attached=kl(),n}(r,o);bl(e,n,s,l)}else s&&(!function(e,t,n,r){e.removeEventListener(t,n,r)}(e,n,s,l),i[t]=void 0)}}const xl=/(?:Once|Passive|Capture)$/;let Sl=0;const Ol=Promise.resolve(),kl=()=>Sl||(Ol.then((()=>Sl=0)),Sl=Date.now());const El=/^on[a-z]/;function Cl(e,t){const n=Lr(e);class r extends Al{constructor(e){super(n,e,t)}}return r.def=n,r}const Pl=e=>Cl(e,ga),Tl="undefined"!=typeof HTMLElement?HTMLElement:class{};class Al extends Tl{constructor(e,t={},n){super(),this._def=e,this._props=t,this._instance=null,this._connected=!1,this._resolved=!1,this._numberProps=null,this._ob=null,this.shadowRoot&&n?n(this._createVNode(),this.shadowRoot):(this.attachShadow({mode:"open"}),this._def.__asyncLoader||this._resolveProps(this._def))}connectedCallback(){this._connected=!0,this._instance||(this._resolved?this._update():this._resolveDef())}disconnectedCallback(){this._connected=!1,this._ob&&(this._ob.disconnect(),this._ob=null),bn((()=>{this._connected||(va(null,this.shadowRoot),this._instance=null)}))}_resolveDef(){this._resolved=!0;for(let e=0;e{for(const t of e)this._setAttr(t.attributeName)})),this._ob.observe(this,{attributes:!0});const e=(e,t=!1)=>{const{props:n,styles:r}=e;let o;if(n&&!m(n))for(const e in n){const t=n[e];(t===Number||t&&t.type===Number)&&(e in this._props&&(this._props[e]=z(this._props[e])),(o||(o=Object.create(null)))[F(e)]=!0)}this._numberProps=o,t&&this._resolveProps(e),this._applyStyles(r),this._update()},t=this._def.__asyncLoader;t?t().then((t=>e(t,!0))):e(this._def)}_resolveProps(e){const{props:t}=e,n=m(t)?t:Object.keys(t||{});for(const e of Object.keys(this))"_"!==e[0]&&n.includes(e)&&this._setProp(e,this[e],!0,!1);for(const e of n.map(F))Object.defineProperty(this,e,{get(){return this._getProp(e)},set(t){this._setProp(e,t)}})}_setAttr(e){let t=this.getAttribute(e);const n=F(e);this._numberProps&&this._numberProps[n]&&(t=z(t)),this._setProp(n,t,!1)}_getProp(e){return this._props[e]}_setProp(e,t,n=!0,r=!0){t!==this._props[e]&&(this._props[e]=t,r&&this._instance&&this._update(),n&&(!0===t?this.setAttribute(M(e),""):"string"==typeof t||"number"==typeof t?this.setAttribute(M(e),t+""):t||this.removeAttribute(M(e))))}_update(){va(this._createVNode(),this.shadowRoot)}_createVNode(){const e=Qi(this._def,d({},this._props));return this._instance||(e.ce=e=>{this._instance=e,e.isCE=!0;const t=(e,t)=>{this.dispatchEvent(new CustomEvent(e,{detail:t}))};e.emit=(e,...n)=>{t(e,n),M(e)!==e&&t(M(e),n)};let n=this;for(;n=n&&(n.parentNode||n.host);)if(n instanceof Al){e.parent=n._instance,e.provides=n._instance.provides;break}}),e}_applyStyles(e){e&&e.forEach((e=>{const t=document.createElement("style");t.textContent=e,this.shadowRoot.appendChild(t)}))}}function jl(e="$style"){{const t=ds();if(!t)return s;const n=t.type.__cssModules;if(!n)return s;const r=n[e];return r||s}}function Rl(e){const t=ds();if(!t)return;const n=t.ut=(n=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach((e=>Il(e,n)))},r=()=>{const r=e(t.proxy);Ll(t.subTree,r),n(r)};cr(r),Jr((()=>{const e=new MutationObserver(r);e.observe(t.subTree.el.parentNode,{childList:!0}),eo((()=>e.disconnect()))}))}function Ll(e,t){if(128&e.shapeFlag){const n=e.suspense;e=n.activeBranch,n.pendingBranch&&!n.isHydrating&&n.effects.push((()=>{Ll(n.activeBranch,t)}))}for(;e.component;)e=e.component.subTree;if(1&e.shapeFlag&&e.el)Il(e.el,t);else if(e.type===Ai)e.children.forEach((e=>Ll(e,t)));else if(e.type===Li){let{el:n,anchor:r}=e;for(;n&&(Il(n,t),n!==r);)n=n.nextSibling}}function Il(e,t){if(1===e.nodeType){const n=e.style;for(const e in t)n.setProperty(`--${e}`,t[e])}}const Fl=new WeakMap,Nl=new WeakMap,Ml=Symbol("_moveCb"),Dl=Symbol("_enterCb"),Bl={name:"TransitionGroup",props:d({},Qs,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=ds(),r=xr();let o,i;return Zr((()=>{if(!o.length)return;const t=e.moveClass||`${e.name||"v"}-move`;if(!function(e,t,n){const r=e.cloneNode(),o=e[Gs];o&&o.forEach((e=>{e.split(/\s+/).forEach((e=>e&&r.classList.remove(e)))}));n.split(/\s+/).forEach((e=>e&&r.classList.add(e))),r.style.display="none";const i=1===t.nodeType?t:t.parentNode;i.appendChild(r);const{hasTransform:s}=ll(r);return i.removeChild(r),s}(o[0].el,n.vnode.el,t))return;o.forEach($l),o.forEach(Vl);const r=o.filter(Hl);cl(),r.forEach((e=>{const n=e.el,r=n.style;nl(n,t),r.transform=r.webkitTransform=r.transitionDuration="";const o=n[Ml]=e=>{e&&e.target!==n||e&&!/transform$/.test(e.propertyName)||(n.removeEventListener("transitionend",o),n[Ml]=null,rl(n,t))};n.addEventListener("transitionend",o)}))})),()=>{const s=It(e),l=el(s);let a=s.tag||Ai;o=i,i=t.default?Rr(t.default()):[];for(let e=0;e{const t=e.props["onUpdate:modelValue"]||!1;return m(t)?e=>$(t,e):t};function ql(e){e.target.composing=!0}function Wl(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Kl=Symbol("_assign"),Gl={created(e,{modifiers:{lazy:t,trim:n,number:r}},o){e[Kl]=zl(o);const i=r||o.props&&"number"===o.props.type;bl(e,t?"change":"input",(t=>{if(t.target.composing)return;let r=e.value;n&&(r=r.trim()),i&&(r=H(r)),e[Kl](r)})),n&&bl(e,"change",(()=>{e.value=e.value.trim()})),t||(bl(e,"compositionstart",ql),bl(e,"compositionend",Wl),bl(e,"change",Wl))},mounted(e,{value:t}){e.value=null==t?"":t},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:r,number:o}},i){if(e[Kl]=zl(i),e.composing)return;if(document.activeElement===e&&"range"!==e.type){if(n)return;if(r&&e.value.trim()===t)return;if((o||"number"===e.type)&&H(e.value)===t)return}const s=null==t?"":t;e.value!==s&&(e.value=s)}},Yl={deep:!0,created(e,t,n){e[Kl]=zl(n),bl(e,"change",(()=>{const t=e._modelValue,n=ea(e),r=e.checked,o=e[Kl];if(m(t)){const e=ue(t,n),i=-1!==e;if(r&&!i)o(t.concat(n));else if(!r&&i){const n=[...t];n.splice(e,1),o(n)}}else if(b(t)){const e=new Set(t);r?e.add(n):e.delete(n),o(e)}else o(ta(e,r))}))},mounted:Jl,beforeUpdate(e,t,n){e[Kl]=zl(n),Jl(e,t,n)}};function Jl(e,{value:t,oldValue:n},r){e._modelValue=t,m(t)?e.checked=ue(t,r.props.value)>-1:b(t)?e.checked=t.has(r.props.value):t!==n&&(e.checked=ae(t,ta(e,!0)))}const Ql={created(e,{value:t},n){e.checked=ae(t,n.props.value),e[Kl]=zl(n),bl(e,"change",(()=>{e[Kl](ea(e))}))},beforeUpdate(e,{value:t,oldValue:n},r){e[Kl]=zl(r),t!==n&&(e.checked=ae(t,r.props.value))}},Zl={deep:!0,created(e,{value:t,modifiers:{number:n}},r){const o=b(t);bl(e,"change",(()=>{const t=Array.prototype.filter.call(e.options,(e=>e.selected)).map((e=>n?H(ea(e)):ea(e)));e[Kl](e.multiple?o?new Set(t):t:t[0])})),e[Kl]=zl(r)},mounted(e,{value:t}){Xl(e,t)},beforeUpdate(e,t,n){e[Kl]=zl(n)},updated(e,{value:t}){Xl(e,t)}};function Xl(e,t){const n=e.multiple;if(!n||m(t)||b(t)){for(let r=0,o=e.options.length;r-1:o.selected=t.has(i);else if(ae(ea(o),t))return void(e.selectedIndex!==r&&(e.selectedIndex=r))}n||-1===e.selectedIndex||(e.selectedIndex=-1)}}function ea(e){return"_value"in e?e._value:e.value}function ta(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const na={created(e,t,n){oa(e,t,n,null,"created")},mounted(e,t,n){oa(e,t,n,null,"mounted")},beforeUpdate(e,t,n,r){oa(e,t,n,r,"beforeUpdate")},updated(e,t,n,r){oa(e,t,n,r,"updated")}};function ra(e,t){switch(e){case"SELECT":return Zl;case"TEXTAREA":return Gl;default:switch(t){case"checkbox":return Yl;case"radio":return Ql;default:return Gl}}}function oa(e,t,n,r,o){const i=ra(e.tagName,n.props&&n.props.type)[o];i&&i(e,t,n,r)}const ia=["ctrl","shift","alt","meta"],sa={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&0!==e.button,middle:e=>"button"in e&&1!==e.button,right:e=>"button"in e&&2!==e.button,exact:(e,t)=>ia.some((n=>e[`${n}Key`]&&!t.includes(n)))},la=(e,t)=>(n,...r)=>{for(let e=0;en=>{if(!("key"in n))return;const r=M(n.key);return t.some((e=>e===r||aa[e]===r))?e(n):void 0},ca=d({patchProp:(e,t,n,r,o=!1,i,s,l,a)=>{"class"===t?function(e,t,n){const r=e[Gs];r&&(t=(t?[t,...r]:[...r]).join(" ")),null==t?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}(e,r,o):"style"===t?function(e,t,n){const r=e.style,o=x(n);if(n&&!o){if(t&&!x(t))for(const e in t)null==n[e]&&vl(r,e,"");for(const e in n)vl(r,e,n[e])}else{const i=r.display;o?t!==n&&(r.cssText=n):t&&e.removeAttribute("style"),fl in e&&(r.display=i)}}(e,n,r):f(t)?p(t)||_l(e,t,0,r,s):("."===t[0]?(t=t.slice(1),1):"^"===t[0]?(t=t.slice(1),0):function(e,t,n,r){if(r)return"innerHTML"===t||"textContent"===t||!!(t in e&&El.test(t)&&_(n));if("spellcheck"===t||"draggable"===t||"translate"===t)return!1;if("form"===t)return!1;if("list"===t&&"INPUT"===e.tagName)return!1;if("type"===t&&"TEXTAREA"===e.tagName)return!1;if(El.test(t)&&x(n))return!1;return t in e}(e,t,r,o))?function(e,t,n,r,o,i,s){if("innerHTML"===t||"textContent"===t)return r&&s(r,o,i),void(e[t]=null==n?"":n);const l=e.tagName;if("value"===t&&"PROGRESS"!==l&&!l.includes("-")){e._value=n;const r=null==n?"":n;return("OPTION"===l?e.getAttribute("value"):e.value)!==r&&(e.value=r),void(null==n&&e.removeAttribute(t))}let a=!1;if(""===n||null==n){const r=typeof e[t];"boolean"===r?n=le(n):null==n&&"string"===r?(n="",a=!0):"number"===r&&(n=0,a=!0)}try{e[t]=n}catch(e){}a&&e.removeAttribute(t)}(e,t,r,i,s,l,a):("true-value"===t?e._trueValue=r:"false-value"===t&&(e._falseValue=r),function(e,t,n,r,o){if(r&&t.startsWith("xlink:"))null==n?e.removeAttributeNS(yl,t.slice(6,t.length)):e.setAttributeNS(yl,t,n);else{const r=se(t);null==n||r&&!le(n)?e.removeAttribute(t):e.setAttribute(t,r?"":n)}}(e,t,r,o))}},qs);let fa,pa=!1;function da(){return fa||(fa=mi(ca))}function ha(){return fa=pa?fa:yi(ca),pa=!0,fa}const va=(...e)=>{da().render(...e)},ga=(...e)=>{ha().hydrate(...e)},ma=(...e)=>{const t=da().createApp(...e);const{mount:n}=t;return t.mount=e=>{const r=ba(e);if(!r)return;const o=t._component;_(o)||o.render||o.template||(o.template=r.innerHTML),r.innerHTML="";const i=n(r,!1,r instanceof SVGElement);return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t},ya=(...e)=>{const t=ha().createApp(...e);const{mount:n}=t;return t.mount=e=>{const t=ba(e);if(t)return n(t,!0,t instanceof SVGElement)},t};function ba(e){if(x(e)){return document.querySelector(e)}return e}let wa=!1;const _a=()=>{wa||(wa=!0,Gl.getSSRProps=({value:e})=>({value:e}),Ql.getSSRProps=({value:e},t)=>{if(t.props&&ae(t.props.value,e))return{checked:!0}},Yl.getSSRProps=({value:e},t)=>{if(m(e)){if(t.props&&ue(e,t.props.value)>-1)return{checked:!0}}else if(b(e)){if(t.props&&e.has(t.props.value))return{checked:!0}}else if(e)return{checked:!0}},na.getSSRProps=(e,t)=>{if("string"!=typeof t.type)return;const n=ra(t.type.toUpperCase(),t.props&&t.props.type);return n.getSSRProps?n.getSSRProps(e,t):void 0},pl.getSSRProps=({value:e})=>{if(!e)return{style:{display:"none"}}})};function xa(e){throw e}function Sa(e){}function Oa(e,t,n,r){const o=new SyntaxError(String(e));return o.code=e,o.loc=t,o}const ka=Symbol(""),Ea=Symbol(""),Ca=Symbol(""),Pa=Symbol(""),Ta=Symbol(""),Aa=Symbol(""),ja=Symbol(""),Ra=Symbol(""),La=Symbol(""),Ia=Symbol(""),Fa=Symbol(""),Na=Symbol(""),Ma=Symbol(""),Da=Symbol(""),Ba=Symbol(""),Ua=Symbol(""),$a=Symbol(""),Va=Symbol(""),Ha=Symbol(""),za=Symbol(""),qa=Symbol(""),Wa=Symbol(""),Ka=Symbol(""),Ga=Symbol(""),Ya=Symbol(""),Ja=Symbol(""),Qa=Symbol(""),Za=Symbol(""),Xa=Symbol(""),eu=Symbol(""),tu=Symbol(""),nu=Symbol(""),ru=Symbol(""),ou=Symbol(""),iu=Symbol(""),su=Symbol(""),lu=Symbol(""),au=Symbol(""),uu=Symbol(""),cu={[ka]:"Fragment",[Ea]:"Teleport",[Ca]:"Suspense",[Pa]:"KeepAlive",[Ta]:"BaseTransition",[Aa]:"openBlock",[ja]:"createBlock",[Ra]:"createElementBlock",[La]:"createVNode",[Ia]:"createElementVNode",[Fa]:"createCommentVNode",[Na]:"createTextVNode",[Ma]:"createStaticVNode",[Da]:"resolveComponent",[Ba]:"resolveDynamicComponent",[Ua]:"resolveDirective",[$a]:"resolveFilter",[Va]:"withDirectives",[Ha]:"renderList",[za]:"renderSlot",[qa]:"createSlots",[Wa]:"toDisplayString",[Ka]:"mergeProps",[Ga]:"normalizeClass",[Ya]:"normalizeStyle",[Ja]:"normalizeProps",[Qa]:"guardReactiveProps",[Za]:"toHandlers",[Xa]:"camelize",[eu]:"capitalize",[tu]:"toHandlerKey",[nu]:"setBlockTracking",[ru]:"pushScopeId",[ou]:"popScopeId",[iu]:"withCtx",[su]:"unref",[lu]:"isRef",[au]:"withMemo",[uu]:"isMemoSame"};const fu={source:"",start:{line:1,column:1,offset:0},end:{line:1,column:1,offset:0}};function pu(e,t,n,r,o,i,s,l=!1,a=!1,u=!1,c=fu){return e&&(l?(e.helper(Aa),e.helper(xu(e.inSSR,u))):e.helper(_u(e.inSSR,u)),s&&e.helper(Va)),{type:13,tag:t,props:n,children:r,patchFlag:o,dynamicProps:i,directives:s,isBlock:l,disableTracking:a,isComponent:u,loc:c}}function du(e,t=fu){return{type:17,loc:t,elements:e}}function hu(e,t=fu){return{type:15,loc:t,properties:e}}function vu(e,t){return{type:16,loc:fu,key:x(e)?gu(e,!0):e,value:t}}function gu(e,t=!1,n=fu,r=0){return{type:4,loc:n,content:e,isStatic:t,constType:t?3:r}}function mu(e,t=fu){return{type:8,loc:t,children:e}}function yu(e,t=[],n=fu){return{type:14,loc:n,callee:e,arguments:t}}function bu(e,t=void 0,n=!1,r=!1,o=fu){return{type:18,params:e,returns:t,newline:n,isSlot:r,loc:o}}function wu(e,t,n,r=!0){return{type:19,test:e,consequent:t,alternate:n,newline:r,loc:fu}}function _u(e,t){return e||t?La:Ia}function xu(e,t){return e||t?ja:Ra}function Su(e,{helper:t,removeHelper:n,inSSR:r}){e.isBlock||(e.isBlock=!0,n(_u(r,e.isComponent)),t(Aa),t(xu(r,e.isComponent)))}const Ou=e=>4===e.type&&e.isStatic,ku=(e,t)=>e===t||e===M(t);function Eu(e){return ku(e,"Teleport")?Ea:ku(e,"Suspense")?Ca:ku(e,"KeepAlive")?Pa:ku(e,"BaseTransition")?Ta:void 0}const Cu=/^\d|[^\$\w]/,Pu=e=>!Cu.test(e),Tu=/[A-Za-z_$\xA0-\uFFFF]/,Au=/[\.\?\w$\xA0-\uFFFF]/,ju=/\s+[.[]\s*|\s*[.[]\s+/g,Ru=e=>{e=e.trim().replace(ju,(e=>e.trim()));let t=0,n=[],r=0,o=0,i=null;for(let s=0;s4===e.key.type&&e.key.content===r))}return n}function Ku(e,t){return`_${t}_${e.replace(/[^\w]/g,((t,n)=>"-"===t?"_":e.charCodeAt(n).toString()))}`}function Gu(e,t){const n=t.options?t.options.compatConfig:t.compatConfig,r=n&&n[e];return"MODE"===e?r||3:r}function Yu(e,t){const n=Gu("MODE",t),r=Gu(e,t);return 3===n?!0===r:!1!==r}function Ju(e,t,n,...r){return Yu(e,t)}const Qu=/&(gt|lt|amp|apos|quot);/g,Zu={gt:">",lt:"<",amp:"&",apos:"'",quot:'"'},Xu={delimiters:["{{","}}"],getNamespace:()=>0,getTextMode:()=>0,isVoidTag:u,isPreTag:u,isCustomElement:u,decodeEntities:e=>e.replace(Qu,((e,t)=>Zu[t])),onError:xa,onWarn:Sa,comments:!1};function ec(e,t={}){const n=function(e,t){const n=d({},Xu);let r;for(r in t)n[r]=void 0===t[r]?Xu[r]:t[r];return{options:n,column:1,line:1,offset:0,originalSource:e,source:e,inPre:!1,inVPre:!1,onWarn:n.onWarn}}(e,t),r=hc(n);return function(e,t=fu){return{type:0,children:e,helpers:new Set,components:[],directives:[],hoists:[],imports:[],cached:0,temps:0,codegenNode:void 0,loc:t}}(tc(n,0,[]),vc(n,r))}function tc(e,t,n){const r=gc(n),o=r?r.ns:0,i=[];for(;!xc(e,t,n);){const s=e.source;let l;if(0===t||1===t)if(!e.inVPre&&mc(s,e.options.delimiters[0]))l=fc(e,t);else if(0===t&&"<"===s[0])if(1===s.length)_c(e,5,1);else if("!"===s[1])mc(s,"\x3c!--")?l=oc(e):mc(s,""===s[2]){_c(e,14,2),yc(e,3);continue}if(/[a-z]/i.test(s[2])){_c(e,23),ac(e,1,r);continue}_c(e,12,2),l=ic(e)}else/[a-z]/i.test(s[1])?(l=sc(e,n),Yu("COMPILER_NATIVE_TEMPLATE",e)&&l&&"template"===l.tag&&!l.props.some((e=>7===e.type&&lc(e.name)))&&(l=l.children)):"?"===s[1]?(_c(e,21,1),l=ic(e)):_c(e,12,1);if(l||(l=pc(e,t)),m(l))for(let e=0;e/.exec(e.source);if(r){r.index<=3&&_c(e,0),r[1]&&_c(e,10),n=e.source.slice(4,r.index);const t=e.source.slice(0,r.index);let o=1,i=0;for(;-1!==(i=t.indexOf("\x3c!--",o));)yc(e,i-o+1),i+4");return-1===o?(r=e.source.slice(n),yc(e,e.source.length)):(r=e.source.slice(n,o),yc(e,o+1)),{type:3,content:r,loc:vc(e,t)}}function sc(e,t){const n=e.inPre,r=e.inVPre,o=gc(t),i=ac(e,0,o),s=e.inPre&&!n,l=e.inVPre&&!r;if(i.isSelfClosing||e.options.isVoidTag(i.tag))return s&&(e.inPre=!1),l&&(e.inVPre=!1),i;t.push(i);const a=e.options.getTextMode(i,o),u=tc(e,a,t);t.pop();{const t=i.props.find((e=>6===e.type&&"inline-template"===e.name));if(t&&Ju("COMPILER_INLINE_TEMPLATE",e,t.loc)){const n=vc(e,i.loc.end);t.value={type:2,content:n.source,loc:n}}}if(i.children=u,Sc(e.source,i.tag))ac(e,1,o);else if(_c(e,24,0,i.loc.start),0===e.source.length&&"script"===i.tag.toLowerCase()){const t=u[0];t&&mc(t.loc.source,"\x3c!--")&&_c(e,8)}return i.loc=vc(e,i.loc.start),s&&(e.inPre=!1),l&&(e.inVPre=!1),i}const lc=i("if,else,else-if,for,slot");function ac(e,t,n){const r=hc(e),o=/^<\/?([a-z][^\t\r\n\f />]*)/i.exec(e.source),i=o[1],s=e.options.getNamespace(i,n);yc(e,o[0].length),bc(e);const l=hc(e),a=e.source;e.options.isPreTag(i)&&(e.inPre=!0);let u=uc(e,t);0===t&&!e.inVPre&&u.some((e=>7===e.type&&"pre"===e.name))&&(e.inVPre=!0,d(e,l),e.source=a,u=uc(e,t).filter((e=>"v-pre"!==e.name)));let c=!1;if(0===e.source.length?_c(e,9):(c=mc(e.source,"/>"),1===t&&c&&_c(e,4),yc(e,c?2:1)),1===t)return;let f=0;return e.inVPre||("slot"===i?f=2:"template"===i?u.some((e=>7===e.type&&lc(e.name)))&&(f=3):function(e,t,n){const r=n.options;if(r.isCustomElement(e))return!1;if("component"===e||/^[A-Z]/.test(e)||Eu(e)||r.isBuiltInComponent&&r.isBuiltInComponent(e)||r.isNativeTag&&!r.isNativeTag(e))return!0;for(let e=0;e0&&!mc(e.source,">")&&!mc(e.source,"/>");){if(mc(e.source,"/")){_c(e,22),yc(e,1),bc(e);continue}1===t&&_c(e,3);const o=cc(e,r);6===o.type&&o.value&&"class"===o.name&&(o.value.content=o.value.content.replace(/\s+/g," ").trim()),0===t&&n.push(o),/^[^\t\r\n\f />]/.test(e.source)&&_c(e,15),bc(e)}return n}function cc(e,t){var n;const r=hc(e),o=/^[^\t\r\n\f />][^\t\r\n\f />=]*/.exec(e.source)[0];t.has(o)&&_c(e,2),t.add(o),"="===o[0]&&_c(e,19);{const t=/["'<]/g;let n;for(;n=t.exec(o);)_c(e,17,n.index)}let i;yc(e,o.length),/^[\t\r\n\f ]*=/.test(e.source)&&(bc(e),yc(e,1),bc(e),i=function(e){const t=hc(e);let n;const r=e.source[0],o='"'===r||"'"===r;if(o){yc(e,1);const t=e.source.indexOf(r);-1===t?n=dc(e,e.source.length,4):(n=dc(e,t,4),yc(e,1))}else{const t=/^[^\t\r\n\f >]+/.exec(e.source);if(!t)return;const r=/["'<=`]/g;let o;for(;o=r.exec(t[0]);)_c(e,18,o.index);n=dc(e,t[0].length,4)}return{content:n,isQuoted:o,loc:vc(e,t)}}(e),i||_c(e,13));const s=vc(e,r);if(!e.inVPre&&/^(v-[A-Za-z0-9-]|:|\.|@|#)/.test(o)){const t=/(?:^v-([a-z0-9-]+))?(?:(?::|^\.|^@|^#)(\[[^\]]+\]|[^\.]+))?(.+)?$/i.exec(o);let l,a=mc(o,"."),u=t[1]||(a||mc(o,":")?"bind":mc(o,"@")?"on":"slot");if(t[2]){const i="slot"===u,s=o.lastIndexOf(t[2],o.length-((null==(n=t[3])?void 0:n.length)||0)),a=vc(e,wc(e,r,s),wc(e,r,s+t[2].length+(i&&t[3]||"").length));let c=t[2],f=!0;c.startsWith("[")?(f=!1,c.endsWith("]")?c=c.slice(1,c.length-1):(_c(e,27),c=c.slice(1))):i&&(c+=t[3]||""),l={type:4,content:c,isStatic:f,constType:f?3:0,loc:a}}if(i&&i.isQuoted){const e=i.loc;e.start.offset++,e.start.column++,e.end=Iu(e.start,i.content),e.source=e.source.slice(1,-1)}const c=t[3]?t[3].slice(1).split("."):[];return a&&c.push("prop"),"bind"===u&&l&&c.includes("sync")&&Ju("COMPILER_V_BIND_SYNC",e,0,l.loc.source)&&(u="model",c.splice(c.indexOf("sync"),1)),{type:7,name:u,exp:i&&{type:4,content:i.content,isStatic:!1,constType:0,loc:i.loc},arg:l,modifiers:c,loc:s}}return!e.inVPre&&mc(o,"v-")&&_c(e,26),{type:6,name:o,value:i&&{type:2,content:i.content,loc:i.loc},loc:s}}function fc(e,t){const[n,r]=e.options.delimiters,o=e.source.indexOf(r,n.length);if(-1===o)return void _c(e,25);const i=hc(e);yc(e,n.length);const s=hc(e),l=hc(e),a=o-n.length,u=e.source.slice(0,a),c=dc(e,a,t),f=c.trim(),p=c.indexOf(f);p>0&&Fu(s,u,p);return Fu(l,u,a-(c.length-f.length-p)),yc(e,r.length),{type:5,content:{type:4,isStatic:!1,constType:0,content:f,loc:vc(e,s,l)},loc:vc(e,i)}}function pc(e,t){const n=3===t?["]]>"]:["<",e.options.delimiters[0]];let r=e.source.length;for(let t=0;to&&(r=o)}const o=hc(e);return{type:2,content:dc(e,r,t),loc:vc(e,o)}}function dc(e,t,n){const r=e.source.slice(0,t);return yc(e,t),2!==n&&3!==n&&r.includes("&")?e.options.decodeEntities(r,4===n):r}function hc(e){const{column:t,line:n,offset:r}=e;return{column:t,line:n,offset:r}}function vc(e,t,n){return{start:t,end:n=n||hc(e),source:e.originalSource.slice(t.offset,n.offset)}}function gc(e){return e[e.length-1]}function mc(e,t){return e.startsWith(t)}function yc(e,t){const{source:n}=e;Fu(e,n,t),e.source=n.slice(t)}function bc(e){const t=/^[\t\r\n\f ]+/.exec(e.source);t&&yc(e,t[0].length)}function wc(e,t,n){return Iu(t,e.originalSource.slice(t.offset,n),n)}function _c(e,t,n,r=hc(e)){n&&(r.offset+=n,r.column+=n),e.options.onError(Oa(t,{start:r,end:r,source:""}))}function xc(e,t,n){const r=e.source;switch(t){case 0:if(mc(r,"=0;--e)if(Sc(r,n[e].tag))return!0;break;case 1:case 2:{const e=gc(n);if(e&&Sc(r,e.tag))return!0;break}case 3:if(mc(r,"]]>"))return!0}return!r}function Sc(e,t){return mc(e,"]/.test(e[2+t.length]||">")}function Oc(e,t){Ec(e,t,kc(e,e.children[0]))}function kc(e,t){const{children:n}=e;return 1===n.length&&1===t.type&&!Vu(t)}function Ec(e,t,n=!1){const{children:r}=e,o=r.length;let i=0;for(let e=0;e0){if(e>=2){o.codegenNode.patchFlag="-1",o.codegenNode=t.hoist(o.codegenNode),i++;continue}}else{const e=o.codegenNode;if(13===e.type){const n=Rc(e);if((!n||512===n||1===n)&&Ac(o,t)>=2){const n=jc(o);n&&(e.props=t.hoist(n))}e.dynamicProps&&(e.dynamicProps=t.hoist(e.dynamicProps))}}}if(1===o.type){const e=1===o.tagType;e&&t.scopes.vSlot++,Ec(o,t),e&&t.scopes.vSlot--}else if(11===o.type)Ec(o,t,1===o.children.length);else if(9===o.type)for(let e=0;e1)for(let o=0;o`_${cu[C.helper(e)]}`,replaceNode(e){C.parent.children[C.childIndex]=C.currentNode=e},removeNode(e){const t=C.parent.children,n=e?t.indexOf(e):C.currentNode?C.childIndex:-1;e&&e!==C.currentNode?C.childIndex>n&&(C.childIndex--,C.onNodeRemoved()):(C.currentNode=null,C.onNodeRemoved()),C.parent.children.splice(n,1)},onNodeRemoved:()=>{},addIdentifiers(e){},removeIdentifiers(e){},hoist(e){x(e)&&(e=gu(e)),C.hoists.push(e);const t=gu(`_hoisted_${C.hoists.length}`,!1,e.loc,2);return t.hoisted=e,t},cache:(e,t=!1)=>function(e,t,n=!1){return{type:20,index:e,value:t,isVNode:n,loc:fu}}(C.cached++,e,t)};return C.filters=new Set,C}function Ic(e,t){const n=Lc(e,t);Fc(e,n),t.hoistStatic&&Oc(e,n),t.ssr||function(e,t){const{helper:n}=t,{children:r}=e;if(1===r.length){const n=r[0];if(kc(e,n)&&n.codegenNode){const r=n.codegenNode;13===r.type&&Su(r,t),e.codegenNode=r}else e.codegenNode=n}else if(r.length>1){let r=64;K[64];0,e.codegenNode=pu(t,n(ka),void 0,e.children,r+"",void 0,void 0,!0,void 0,!1)}}(e,n),e.helpers=new Set([...n.helpers.keys()]),e.components=[...n.components],e.directives=[...n.directives],e.imports=n.imports,e.hoists=n.hoists,e.temps=n.temps,e.cached=n.cached,e.filters=[...n.filters]}function Fc(e,t){t.currentNode=e;const{nodeTransforms:n}=t,r=[];for(let o=0;o{n--};for(;nt===e:t=>e.test(t);return(e,r)=>{if(1===e.type){const{props:o}=e;if(3===e.tagType&&o.some(Uu))return;const i=[];for(let s=0;s`${cu[e]}: _${cu[e]}`;function Bc(e,{mode:t="function",prefixIdentifiers:n="module"===t,sourceMap:r=!1,filename:o="template.vue.html",scopeId:i=null,optimizeImports:s=!1,runtimeGlobalName:l="Vue",runtimeModuleName:a="vue",ssrRuntimeModuleName:u="vue/server-renderer",ssr:c=!1,isTS:f=!1,inSSR:p=!1}){const d={mode:t,prefixIdentifiers:n,sourceMap:r,filename:o,scopeId:i,optimizeImports:s,runtimeGlobalName:l,runtimeModuleName:a,ssrRuntimeModuleName:u,ssr:c,isTS:f,inSSR:p,source:e.loc.source,code:"",column:1,line:1,offset:0,indentLevel:0,pure:!1,map:void 0,helper:e=>`_${cu[e]}`,push(e,t){d.code+=e},indent(){h(++d.indentLevel)},deindent(e=!1){e?--d.indentLevel:h(--d.indentLevel)},newline(){h(d.indentLevel)}};function h(e){d.push("\n"+" ".repeat(e))}return d}function Uc(e,t={}){const n=Bc(e,t);t.onContextCreated&&t.onContextCreated(n);const{mode:r,push:o,prefixIdentifiers:i,indent:s,deindent:l,newline:a,scopeId:u,ssr:c}=n,f=Array.from(e.helpers),p=f.length>0,d=!i&&"module"!==r,h=n;!function(e,t){const{ssr:n,prefixIdentifiers:r,push:o,newline:i,runtimeModuleName:s,runtimeGlobalName:l,ssrRuntimeModuleName:a}=t,u=l,c=Array.from(e.helpers);if(c.length>0&&(o(`const _Vue = ${u}\n`),e.hoists.length)){o(`const { ${[La,Ia,Fa,Na,Ma].filter((e=>c.includes(e))).map(Dc).join(", ")} } = _Vue\n`)}(function(e,t){if(!e.length)return;t.pure=!0;const{push:n,newline:r,helper:o,scopeId:i,mode:s}=t;r();for(let o=0;o0)&&a()),e.directives.length&&($c(e.directives,"directive",n),e.temps>0&&a()),e.filters&&e.filters.length&&(a(),$c(e.filters,"filter",n),a()),e.temps>0){o("let ");for(let t=0;t0?", ":""}_temp${t}`)}return(e.components.length||e.directives.length||e.temps)&&(o("\n"),a()),c||o("return "),e.codegenNode?zc(e.codegenNode,n):o("null"),d&&(l(),o("}")),l(),o("}"),{ast:e,code:n.code,preamble:"",map:n.map?n.map.toJSON():void 0}}function $c(e,t,{helper:n,push:r,newline:o,isTS:i}){const s=n("filter"===t?$a:"component"===t?Da:Ua);for(let n=0;n3||!1;t.push("["),n&&t.indent(),Hc(e,t,n),n&&t.deindent(),t.push("]")}function Hc(e,t,n=!1,r=!0){const{push:o,newline:i}=t;for(let s=0;se||"null"))}([i,s,l,a,u]),t),n(")"),f&&n(")");c&&(n(", "),zc(c,t),n(")"))}(e,t);break;case 14:!function(e,t){const{push:n,helper:r,pure:o}=t,i=x(e.callee)?e.callee:r(e.callee);o&&n(Mc);n(i+"(",e),Hc(e.arguments,t),n(")")}(e,t);break;case 15:!function(e,t){const{push:n,indent:r,deindent:o,newline:i}=t,{properties:s}=e;if(!s.length)return void n("{}",e);const l=s.length>1||!1;n(l?"{":"{ "),l&&r();for(let e=0;e "),(a||l)&&(n("{"),r());s?(a&&n("return "),m(s)?Vc(s,t):zc(s,t)):l&&zc(l,t);(a||l)&&(o(),n("}"));u&&(e.isNonScopedSlot&&n(", undefined, true"),n(")"))}(e,t);break;case 19:!function(e,t){const{test:n,consequent:r,alternate:o,newline:i}=e,{push:s,indent:l,deindent:a,newline:u}=t;if(4===n.type){const e=!Pu(n.content);e&&s("("),qc(n,t),e&&s(")")}else s("("),zc(n,t),s(")");i&&l(),t.indentLevel++,i||s(" "),s("? "),zc(r,t),t.indentLevel--,i&&u(),i||s(" "),s(": ");const c=19===o.type;c||t.indentLevel++;zc(o,t),c||t.indentLevel--;i&&a(!0)}(e,t);break;case 20:!function(e,t){const{push:n,helper:r,indent:o,deindent:i,newline:s}=t;n(`_cache[${e.index}] || (`),e.isVNode&&(o(),n(`${r(nu)}(-1),`),s());n(`_cache[${e.index}] = `),zc(e.value,t),e.isVNode&&(n(","),s(),n(`${r(nu)}(1),`),s(),n(`_cache[${e.index}]`),i());n(")")}(e,t);break;case 21:Hc(e.body,t,!0,!1)}}function qc(e,t){const{content:n,isStatic:r}=e;t.push(r?JSON.stringify(n):n,e)}function Wc(e,t){for(let n=0;nfunction(e,t,n,r){if(!("else"===t.name||t.exp&&t.exp.content.trim())){const r=t.exp?t.exp.loc:e.loc;n.onError(Oa(28,t.loc)),t.exp=gu("true",!1,r)}0;if("if"===t.name){const o=Yc(e,t),i={type:9,loc:e.loc,branches:[o]};if(n.replaceNode(i),r)return r(i,o,!0)}else{const o=n.parent.children;let i=o.indexOf(e);for(;i-- >=-1;){const s=o[i];if(s&&3===s.type)n.removeNode(s);else{if(!s||2!==s.type||s.content.trim().length){if(s&&9===s.type){"else-if"===t.name&&void 0===s.branches[s.branches.length-1].condition&&n.onError(Oa(30,e.loc)),n.removeNode();const o=Yc(e,t);0,s.branches.push(o);const i=r&&r(s,o,!1);Fc(o,n),i&&i(),n.currentNode=null}else n.onError(Oa(30,e.loc));break}n.removeNode(s)}}}}(e,t,n,((e,t,r)=>{const o=n.parent.children;let i=o.indexOf(e),s=0;for(;i-- >=0;){const e=o[i];e&&9===e.type&&(s+=e.branches.length)}return()=>{if(r)e.codegenNode=Jc(t,s,n);else{const r=function(e){for(;;)if(19===e.type){if(19!==e.alternate.type)return e;e=e.alternate}else 20===e.type&&(e=e.value)}(e.codegenNode);r.alternate=Jc(t,s+e.branches.length-1,n)}}}))));function Yc(e,t){const n=3===e.tagType;return{type:10,loc:e.loc,condition:"else"===t.name?void 0:t.exp,children:n&&!Nu(e,"for")?e.children:[e],userKey:Mu(e,"key"),isTemplateIf:n}}function Jc(e,t,n){return e.condition?wu(e.condition,Qc(e,t,n),yu(n.helper(Fa),['""',"true"])):Qc(e,t,n)}function Qc(e,t,n){const{helper:r}=n,o=vu("key",gu(`${t}`,!1,fu,2)),{children:i}=e,s=i[0];if(1!==i.length||1!==s.type){if(1===i.length&&11===s.type){const e=s.codegenNode;return qu(e,o,n),e}{let t=64;K[64];return pu(n,r(ka),hu([o]),i,t+"",void 0,void 0,!0,!1,!1,e.loc)}}{const e=s.codegenNode,t=14===(l=e).type&&l.callee===au?l.arguments[1].returns:l;return 13===t.type&&Su(t,n),qu(t,o,n),e}var l}const Zc=Nc("for",((e,t,n)=>{const{helper:r,removeHelper:o}=n;return function(e,t,n,r){if(!t.exp)return void n.onError(Oa(31,t.loc));const o=nf(t.exp,n);if(!o)return void n.onError(Oa(32,t.loc));const{addIdentifiers:i,removeIdentifiers:s,scopes:l}=n,{source:a,value:u,key:c,index:f}=o,p={type:11,loc:t.loc,source:a,valueAlias:u,keyAlias:c,objectIndexAlias:f,parseResult:o,children:$u(e)?e.children:[e]};n.replaceNode(p),l.vFor++;const d=r&&r(p);return()=>{l.vFor--,d&&d()}}(e,t,n,(t=>{const i=yu(r(Ha),[t.source]),s=$u(e),l=Nu(e,"memo"),a=Mu(e,"key"),u=a&&(6===a.type?gu(a.value.content,!0):a.exp),c=a?vu("key",u):null,f=4===t.source.type&&t.source.constType>0,p=f?64:a?128:256;return t.codegenNode=pu(n,r(ka),void 0,i,p+"",void 0,void 0,!0,!f,!1,e.loc),()=>{let a;const{children:p}=t;const d=1!==p.length||1!==p[0].type,h=Vu(e)?e:s&&1===e.children.length&&Vu(e.children[0])?e.children[0]:null;if(h?(a=h.codegenNode,s&&c&&qu(a,c,n)):d?a=pu(n,r(ka),c?hu([c]):void 0,e.children,"64",void 0,void 0,!0,void 0,!1):(a=p[0].codegenNode,s&&c&&qu(a,c,n),a.isBlock!==!f&&(a.isBlock?(o(Aa),o(xu(n.inSSR,a.isComponent))):o(_u(n.inSSR,a.isComponent))),a.isBlock=!f,a.isBlock?(r(Aa),r(xu(n.inSSR,a.isComponent))):r(_u(n.inSSR,a.isComponent))),l){const e=bu(of(t.parseResult,[gu("_cached")]));e.body={type:21,body:[mu(["const _memo = (",l.exp,")"]),mu(["if (_cached",...u?[" && _cached.key === ",u]:[],` && ${n.helperString(uu)}(_cached, _memo)) return _cached`]),mu(["const _item = ",a]),gu("_item.memo = _memo"),gu("return _item")],loc:fu},i.arguments.push(e,gu("_cache"),gu(String(n.cached++)))}else i.arguments.push(bu(of(t.parseResult),a,!0))}}))}));const Xc=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,ef=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,tf=/^\(|\)$/g;function nf(e,t){const n=e.loc,r=e.content,o=r.match(Xc);if(!o)return;const[,i,s]=o,l={source:rf(n,s.trim(),r.indexOf(s,i.length)),value:void 0,key:void 0,index:void 0};let a=i.trim().replace(tf,"").trim();const u=i.indexOf(a),c=a.match(ef);if(c){a=a.replace(ef,"").trim();const e=c[1].trim();let t;if(e&&(t=r.indexOf(e,u+a.length),l.key=rf(n,e,t)),c[2]){const o=c[2].trim();o&&(l.index=rf(n,o,r.indexOf(o,l.key?t+e.length:u+a.length)))}}return a&&(l.value=rf(n,a,u)),l}function rf(e,t,n){return gu(t,!1,Lu(e,n,t.length))}function of({value:e,key:t,index:n},r=[]){return function(e){let t=e.length;for(;t--&&!e[t];);return e.slice(0,t+1).map(((e,t)=>e||gu("_".repeat(t+1),!1)))}([e,t,n,...r])}const sf=gu("undefined",!1),lf=(e,t)=>{if(1===e.type&&(1===e.tagType||3===e.tagType)){const n=Nu(e,"slot");if(n)return n.exp,t.scopes.vSlot++,()=>{t.scopes.vSlot--}}},af=(e,t,n,r)=>bu(e,n,!1,!0,n.length?n[0].loc:r);function uf(e,t,n=af){t.helper(iu);const{children:r,loc:o}=e,i=[],s=[];let l=t.scopes.vSlot>0||t.scopes.vFor>0;const a=Nu(e,"slot",!0);if(a){const{arg:e,exp:t}=a;e&&!Ou(e)&&(l=!0),i.push(vu(e||gu("default",!0),n(t,void 0,r,o)))}let u=!1,c=!1;const f=[],p=new Set;let d=0;for(let e=0;e{const i=n(e,void 0,r,o);return t.compatConfig&&(i.isNonScopedSlot=!0),vu("default",i)};u?f.length&&f.some((e=>pf(e)))&&(c?t.onError(Oa(39,f[0].loc)):i.push(e(void 0,f))):i.push(e(void 0,r))}const h=l?2:ff(e.children)?3:1;let v=hu(i.concat(vu("_",gu(h+"",!1))),o);return s.length&&(v=yu(t.helper(qa),[v,du(s)])),{slots:v,hasDynamicSlots:l}}function cf(e,t,n){const r=[vu("name",e),vu("fn",t)];return null!=n&&r.push(vu("key",gu(String(n),!0))),hu(r)}function ff(e){for(let t=0;tfunction(){if(1!==(e=t.currentNode).type||0!==e.tagType&&1!==e.tagType)return;const{tag:n,props:r}=e,o=1===e.tagType;let i=o?function(e,t,n=!1){let{tag:r}=e;const o=yf(r),i=Mu(e,"is");if(i)if(o||Yu("COMPILER_IS_ON_ELEMENT",t)){const e=6===i.type?i.value&&gu(i.value.content,!0):i.exp;if(e)return yu(t.helper(Ba),[e])}else 6===i.type&&i.value.content.startsWith("vue:")&&(r=i.value.content.slice(4));const s=!o&&Nu(e,"is");if(s&&s.exp)return yu(t.helper(Ba),[s.exp]);const l=Eu(r)||t.isBuiltInComponent(r);if(l)return n||t.helper(l),l;return t.helper(Da),t.components.add(r),Ku(r,"component")}(e,t):`"${n}"`;const s=O(i)&&i.callee===Ba;let l,a,u,c,f,p,d=0,h=s||i===Ea||i===Ca||!o&&("svg"===n||"foreignObject"===n);if(r.length>0){const n=vf(e,t,void 0,o,s);l=n.props,d=n.patchFlag,f=n.dynamicPropNames;const r=n.directives;p=r&&r.length?du(r.map((e=>function(e,t){const n=[],r=df.get(e);r?n.push(t.helperString(r)):(t.helper(Ua),t.directives.add(e.name),n.push(Ku(e.name,"directive")));const{loc:o}=e;e.exp&&n.push(e.exp);e.arg&&(e.exp||n.push("void 0"),n.push(e.arg));if(Object.keys(e.modifiers).length){e.arg||(e.exp||n.push("void 0"),n.push("void 0"));const t=gu("true",!1,o);n.push(hu(e.modifiers.map((e=>vu(e,t))),o))}return du(n,e.loc)}(e,t)))):void 0,n.shouldUseBlock&&(h=!0)}if(e.children.length>0){i===Pa&&(h=!0,d|=1024);if(o&&i!==Ea&&i!==Pa){const{slots:n,hasDynamicSlots:r}=uf(e,t);a=n,r&&(d|=1024)}else if(1===e.children.length&&i!==Ea){const n=e.children[0],r=n.type,o=5===r||8===r;o&&0===Cc(n,t)&&(d|=1),a=o||2===r?n:e.children}else a=e.children}0!==d&&(u=String(d),f&&f.length&&(c=function(e){let t="[";for(let n=0,r=e.length;n0;let h=!1,v=0,g=!1,m=!1,y=!1,b=!1,w=!1,_=!1;const x=[],O=e=>{u.length&&(c.push(hu(gf(u),l)),u=[]),e&&c.push(e)},k=({key:e,value:n})=>{if(Ou(e)){const i=e.content,s=f(i);if(!s||r&&!o||"onclick"===i.toLowerCase()||"onUpdate:modelValue"===i||j(i)||(b=!0),s&&j(i)&&(_=!0),20===n.type||(4===n.type||8===n.type)&&Cc(n,t)>0)return;"ref"===i?g=!0:"class"===i?m=!0:"style"===i?y=!0:"key"===i||x.includes(i)||x.push(i),!r||"class"!==i&&"style"!==i||x.includes(i)||x.push(i)}else w=!0};for(let o=0;o0&&u.push(vu(gu("ref_for",!0),gu("true")))),"is"===n&&(yf(s)||r&&r.content.startsWith("vue:")||Yu("COMPILER_IS_ON_ELEMENT",t)))continue;u.push(vu(gu(n,!0,Lu(e,0,n.length)),gu(r?r.content:"",o,r?r.loc:e)))}else{const{name:n,arg:o,exp:f,loc:v}=a,g="bind"===n,m="on"===n;if("slot"===n){r||t.onError(Oa(40,v));continue}if("once"===n||"memo"===n)continue;if("is"===n||g&&Du(o,"is")&&(yf(s)||Yu("COMPILER_IS_ON_ELEMENT",t)))continue;if(m&&i)continue;if((g&&Du(o,"key")||m&&d&&Du(o,"vue:before-update"))&&(h=!0),g&&Du(o,"ref")&&t.scopes.vFor>0&&u.push(vu(gu("ref_for",!0),gu("true"))),!o&&(g||m)){if(w=!0,f)if(g){if(O(),Yu("COMPILER_V_BIND_OBJECT_ORDER",t)){c.unshift(f);continue}c.push(f)}else O({type:14,loc:v,callee:t.helper(Za),arguments:r?[f]:[f,"true"]});else t.onError(Oa(g?34:35,v));continue}const y=t.directiveTransforms[n];if(y){const{props:n,needRuntime:r}=y(a,e,t);!i&&n.forEach(k),m&&o&&!Ou(o)?O(hu(n,l)):u.push(...n),r&&(p.push(a),S(r)&&df.set(a,r))}else R(n)||(p.push(a),d&&(h=!0))}}let E;if(c.length?(O(),E=c.length>1?yu(t.helper(Ka),c,l):c[0]):u.length&&(E=hu(gf(u),l)),w?v|=16:(m&&!r&&(v|=2),y&&!r&&(v|=4),x.length&&(v|=8),b&&(v|=32)),h||0!==v&&32!==v||!(g||_||p.length>0)||(v|=512),!t.inSSR&&E)switch(E.type){case 15:let e=-1,n=-1,r=!1;for(let t=0;t{if(Vu(e)){const{children:n,loc:r}=e,{slotName:o,slotProps:i}=function(e,t){let n,r='"default"';const o=[];for(let t=0;t0){const{props:r,directives:i}=vf(e,t,o,!1,!1);n=r,i.length&&t.onError(Oa(36,i[0].loc))}return{slotName:r,slotProps:n}}(e,t),s=[t.prefixIdentifiers?"_ctx.$slots":"$slots",o,"{}","undefined","true"];let l=2;i&&(s[2]=i,l=3),n.length&&(s[3]=bu([],n,!1,!1,r),l=4),t.scopeId&&!t.slotted&&(l=5),s.splice(l),e.codegenNode=yu(t.helper(za),s,r)}};const wf=/^\s*([\w$_]+|(async\s*)?\([^)]*?\))\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/,_f=(e,t,n,r)=>{const{loc:o,modifiers:i,arg:s}=e;let l;if(e.exp||i.length||n.onError(Oa(35,o)),4===s.type)if(s.isStatic){let e=s.content;0,e.startsWith("vue:")&&(e=`vnode-${e.slice(4)}`);l=gu(0!==t.tagType||e.startsWith("vnode")||!/[A-Z]/.test(e)?B(F(e)):`on:${e}`,!0,s.loc)}else l=mu([`${n.helperString(tu)}(`,s,")"]);else l=s,l.children.unshift(`${n.helperString(tu)}(`),l.children.push(")");let a=e.exp;a&&!a.content.trim()&&(a=void 0);let u=n.cacheHandlers&&!a&&!n.inVOnce;if(a){const e=Ru(a.content),t=!(e||wf.test(a.content)),n=a.content.includes(";");0,(t||u&&e)&&(a=mu([`${t?"$event":"(...args)"} => ${n?"{":"("}`,a,n?"}":")"]))}let c={props:[vu(l,a||gu("() => {}",!1,o))]};return r&&(c=r(c)),u&&(c.props[0].value=n.cache(c.props[0].value)),c.props.forEach((e=>e.key.isHandlerKey=!0)),c},xf=(e,t,n)=>{const{exp:r,modifiers:o,loc:i}=e,s=e.arg;return 4!==s.type?(s.children.unshift("("),s.children.push(') || ""')):s.isStatic||(s.content=`${s.content} || ""`),o.includes("camel")&&(4===s.type?s.isStatic?s.content=F(s.content):s.content=`${n.helperString(Xa)}(${s.content})`:(s.children.unshift(`${n.helperString(Xa)}(`),s.children.push(")"))),n.inSSR||(o.includes("prop")&&Sf(s,"."),o.includes("attr")&&Sf(s,"^")),!r||4===r.type&&!r.content.trim()?(n.onError(Oa(34,i)),{props:[vu(s,gu("",!0,i))]}):{props:[vu(s,r)]}},Sf=(e,t)=>{4===e.type?e.isStatic?e.content=t+e.content:e.content=`\`${t}\${${e.content}}\``:(e.children.unshift(`'${t}' + (`),e.children.push(")"))},Of=(e,t)=>{if(0===e.type||1===e.type||11===e.type||10===e.type)return()=>{const n=e.children;let r,o=!1;for(let e=0;e7===e.type&&!t.directiveTransforms[e.name]))||"template"===e.tag)))for(let e=0;e{if(1===e.type&&Nu(e,"once",!0)){if(kf.has(e)||t.inVOnce||t.inSSR)return;return kf.add(e),t.inVOnce=!0,t.helper(nu),()=>{t.inVOnce=!1;const e=t.currentNode;e.codegenNode&&(e.codegenNode=t.cache(e.codegenNode,!0))}}},Cf=(e,t,n)=>{const{exp:r,arg:o}=e;if(!r)return n.onError(Oa(41,e.loc)),Pf();const i=r.loc.source,s=4===r.type?r.content:i,l=n.bindingMetadata[i];if("props"===l||"props-aliased"===l)return n.onError(Oa(44,r.loc)),Pf();if(!s.trim()||!Ru(s))return n.onError(Oa(42,r.loc)),Pf();const a=o||gu("modelValue",!0),u=o?Ou(o)?`onUpdate:${F(o.content)}`:mu(['"onUpdate:" + ',o]):"onUpdate:modelValue";let c;c=mu([`${n.isTS?"($event: any)":"$event"} => ((`,r,") = $event)"]);const f=[vu(a,e.exp),vu(u,c)];if(e.modifiers.length&&1===t.tagType){const t=e.modifiers.map((e=>(Pu(e)?e:JSON.stringify(e))+": true")).join(", "),n=o?Ou(o)?`${o.content}Modifiers`:mu([o,' + "Modifiers"']):"modelModifiers";f.push(vu(n,gu(`{ ${t} }`,!1,e.loc,2)))}return Pf(f)};function Pf(e=[]){return{props:e}}const Tf=/[\w).+\-_$\]]/,Af=(e,t)=>{Yu("COMPILER_FILTER",t)&&(5===e.type&&jf(e.content,t),1===e.type&&e.props.forEach((e=>{7===e.type&&"for"!==e.name&&e.exp&&jf(e.exp,t)})))};function jf(e,t){if(4===e.type)Rf(e,t);else for(let n=0;n=0&&(e=n.charAt(t)," "===e);t--);e&&Tf.test(e)||(c=!0)}}else void 0===s?(h=i+1,s=n.slice(0,i).trim()):g();function g(){v.push(n.slice(h,i).trim()),h=i+1}if(void 0===s?s=n.slice(0,i).trim():0!==h&&g(),v.length){for(i=0;i{if(1===e.type){const n=Nu(e,"memo");if(!n||If.has(e))return;return If.add(e),()=>{const r=e.codegenNode||t.currentNode.codegenNode;r&&13===r.type&&(1!==e.tagType&&Su(r,t),e.codegenNode=yu(t.helper(au),[n.exp,bu(void 0,r),"_cache",String(t.cached++)]))}}};function Nf(e,t={}){const n=t.onError||xa,r="module"===t.mode;!0===t.prefixIdentifiers?n(Oa(47)):r&&n(Oa(48));t.cacheHandlers&&n(Oa(49)),t.scopeId&&!r&&n(Oa(50));const o=x(e)?ec(e,t):e,[i,s]=[[Ef,Gc,Ff,Zc,Af,bf,hf,lf,Of],{on:_f,bind:xf,model:Cf}];return Ic(o,d({},t,{prefixIdentifiers:false,nodeTransforms:[...i,...t.nodeTransforms||[]],directiveTransforms:d({},s,t.directiveTransforms||{})})),Uc(o,d({},t,{prefixIdentifiers:false}))}const Mf=Symbol(""),Df=Symbol(""),Bf=Symbol(""),Uf=Symbol(""),$f=Symbol(""),Vf=Symbol(""),Hf=Symbol(""),zf=Symbol(""),qf=Symbol(""),Wf=Symbol("");var Kf;let Gf;Kf={[Mf]:"vModelRadio",[Df]:"vModelCheckbox",[Bf]:"vModelText",[Uf]:"vModelSelect",[$f]:"vModelDynamic",[Vf]:"withModifiers",[Hf]:"withKeys",[zf]:"vShow",[qf]:"Transition",[Wf]:"TransitionGroup"},Object.getOwnPropertySymbols(Kf).forEach((e=>{cu[e]=Kf[e]}));const Yf=i("style,iframe,script,noscript",!0),Jf={isVoidTag:oe,isNativeTag:e=>ne(e)||re(e),isPreTag:e=>"pre"===e,decodeEntities:function(e,t=!1){return Gf||(Gf=document.createElement("div")),t?(Gf.innerHTML=`
`,Gf.children[0].getAttribute("foo")):(Gf.innerHTML=e,Gf.textContent)},isBuiltInComponent:e=>ku(e,"Transition")?qf:ku(e,"TransitionGroup")?Wf:void 0,getNamespace(e,t){let n=t?t.ns:0;if(t&&2===n)if("annotation-xml"===t.tag){if("svg"===e)return 1;t.props.some((e=>6===e.type&&"encoding"===e.name&&null!=e.value&&("text/html"===e.value.content||"application/xhtml+xml"===e.value.content)))&&(n=0)}else/^m(?:[ions]|text)$/.test(t.tag)&&"mglyph"!==e&&"malignmark"!==e&&(n=0);else t&&1===n&&("foreignObject"!==t.tag&&"desc"!==t.tag&&"title"!==t.tag||(n=0));if(0===n){if("svg"===e)return 1;if("math"===e)return 2}return n},getTextMode({tag:e,ns:t}){if(0===t){if("textarea"===e||"title"===e)return 1;if(Yf(e))return 2}return 0}},Qf=(e,t)=>{const n=X(e);return gu(JSON.stringify(n),!1,t,3)};function Zf(e,t){return Oa(e,t)}const Xf=i("passive,once,capture"),ep=i("stop,prevent,self,ctrl,shift,alt,meta,exact,middle"),tp=i("left,right"),np=i("onkeyup,onkeydown,onkeypress",!0),rp=(e,t)=>Ou(e)&&"onclick"===e.content.toLowerCase()?gu(t,!0):4!==e.type?mu(["(",e,`) === "onClick" ? "${t}" : (`,e,")"]):e;const op=(e,t)=>{1!==e.type||0!==e.tagType||"script"!==e.tag&&"style"!==e.tag||t.removeNode()},ip=[e=>{1===e.type&&e.props.forEach(((t,n)=>{6===t.type&&"style"===t.name&&t.value&&(e.props[n]={type:7,name:"bind",arg:gu("style",!0,t.loc),exp:Qf(t.value.content,t.loc),modifiers:[],loc:t.loc})}))}],sp={cloak:()=>({props:[]}),html:(e,t,n)=>{const{exp:r,loc:o}=e;return r||n.onError(Zf(53,o)),t.children.length&&(n.onError(Zf(54,o)),t.children.length=0),{props:[vu(gu("innerHTML",!0,o),r||gu("",!0))]}},text:(e,t,n)=>{const{exp:r,loc:o}=e;return r||n.onError(Zf(55,o)),t.children.length&&(n.onError(Zf(56,o)),t.children.length=0),{props:[vu(gu("textContent",!0),r?Cc(r,n)>0?r:yu(n.helperString(Wa),[r],o):gu("",!0))]}},model:(e,t,n)=>{const r=Cf(e,t,n);if(!r.props.length||1===t.tagType)return r;e.arg&&n.onError(Zf(58,e.arg.loc));const{tag:o}=t,i=n.isCustomElement(o);if("input"===o||"textarea"===o||"select"===o||i){let s=Bf,l=!1;if("input"===o||i){const r=Mu(t,"type");if(r){if(7===r.type)s=$f;else if(r.value)switch(r.value.content){case"radio":s=Mf;break;case"checkbox":s=Df;break;case"file":l=!0,n.onError(Zf(59,e.loc))}}else(function(e){return e.props.some((e=>!(7!==e.type||"bind"!==e.name||e.arg&&4===e.arg.type&&e.arg.isStatic)))})(t)&&(s=$f)}else"select"===o&&(s=Uf);l||(r.needRuntime=n.helper(s))}else n.onError(Zf(57,e.loc));return r.props=r.props.filter((e=>!(4===e.key.type&&"modelValue"===e.key.content))),r},on:(e,t,n)=>_f(e,t,n,(t=>{const{modifiers:r}=e;if(!r.length)return t;let{key:o,value:i}=t.props[0];const{keyModifiers:s,nonKeyModifiers:l,eventOptionModifiers:a}=((e,t,n,r)=>{const o=[],i=[],s=[];for(let r=0;r{const{exp:r,loc:o}=e;return r||n.onError(Zf(61,o)),{props:[],needRuntime:n.helper(zf)}}};const lp=Object.create(null);ks((function(e,t){if(!x(e)){if(!e.nodeType)return a;e=e.innerHTML}const n=e,o=lp[n];if(o)return o;if("#"===e[0]){const t=document.querySelector(e);0,e=t?t.innerHTML:""}const i=d({hoistStatic:!0,onError:void 0,onWarn:a},t);i.isCustomElement||"undefined"==typeof customElements||(i.isCustomElement=e=>!!customElements.get(e));const{code:s}=function(e,t={}){return Nf(e,d({},Jf,t,{nodeTransforms:[op,...ip,...t.nodeTransforms||[]],directiveTransforms:d({},sp,t.directiveTransforms||{}),transformHoist:null}))}(e,i),l=new Function("Vue",s)(r);return l._rc=!0,lp[n]=l}));var ap=!1;function up(e,t,n){return Array.isArray(e)?(e.length=Math.max(e.length,t),e.splice(t,1,n),n):(e[t]=n,n)}function cp(){return"undefined"!=typeof navigator&&"undefined"!=typeof window?window:void 0!==n.g?n.g:{}}const fp="function"==typeof Proxy,pp="devtools-plugin:setup";let dp,hp,vp;function gp(){return function(){var e;return void 0!==dp||("undefined"!=typeof window&&window.performance?(dp=!0,hp=window.performance):void 0!==n.g&&(null===(e=n.g.perf_hooks)||void 0===e?void 0:e.performance)?(dp=!0,hp=n.g.perf_hooks.performance):dp=!1),dp}()?hp.now():Date.now()}class mp{constructor(e,t){this.target=null,this.targetQueue=[],this.onQueue=[],this.plugin=e,this.hook=t;const n={};if(e.settings)for(const t in e.settings){const r=e.settings[t];n[t]=r.defaultValue}const r=`__vue-devtools-plugin-settings__${e.id}`;let o=Object.assign({},n);try{const e=localStorage.getItem(r),t=JSON.parse(e);Object.assign(o,t)}catch(e){}this.fallbacks={getSettings:()=>o,setSettings(e){try{localStorage.setItem(r,JSON.stringify(e))}catch(e){}o=e},now:()=>gp()},t&&t.on("plugin:settings:set",((e,t)=>{e===this.plugin.id&&this.fallbacks.setSettings(t)})),this.proxiedOn=new Proxy({},{get:(e,t)=>this.target?this.target.on[t]:(...e)=>{this.onQueue.push({method:t,args:e})}}),this.proxiedTarget=new Proxy({},{get:(e,t)=>this.target?this.target[t]:"on"===t?this.proxiedOn:Object.keys(this.fallbacks).includes(t)?(...e)=>(this.targetQueue.push({method:t,args:e,resolve:()=>{}}),this.fallbacks[t](...e)):(...e)=>new Promise((n=>{this.targetQueue.push({method:t,args:e,resolve:n})}))})}async setRealTarget(e){this.target=e;for(const e of this.onQueue)this.target.on[e.method](...e.args);for(const e of this.targetQueue)e.resolve(await this.target[e.method](...e.args))}}function yp(e,t){const n=e,r=cp(),o=cp().__VUE_DEVTOOLS_GLOBAL_HOOK__,i=fp&&n.enableEarlyProxy;if(!o||!r.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__&&i){const e=i?new mp(n,o):null;(r.__VUE_DEVTOOLS_PLUGINS__=r.__VUE_DEVTOOLS_PLUGINS__||[]).push({pluginDescriptor:n,setupFn:t,proxy:e}),e&&t(e.proxiedTarget)}else o.emit(pp,e,t)}const bp=e=>vp=e,wp=Symbol();function _p(e){return e&&"object"==typeof e&&"[object Object]"===Object.prototype.toString.call(e)&&"function"!=typeof e.toJSON}var xp;!function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"}(xp||(xp={}));const Sp="undefined"!=typeof window,Op=!1,kp=(()=>"object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:"object"==typeof globalThis?globalThis:{HTMLElement:null})();function Ep(e,t,n){const r=new XMLHttpRequest;r.open("GET",e),r.responseType="blob",r.onload=function(){jp(r.response,t,n)},r.onerror=function(){},r.send()}function Cp(e){const t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return t.status>=200&&t.status<=299}function Pp(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(t){const n=document.createEvent("MouseEvents");n.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(n)}}const Tp="object"==typeof navigator?navigator:{userAgent:""},Ap=(()=>/Macintosh/.test(Tp.userAgent)&&/AppleWebKit/.test(Tp.userAgent)&&!/Safari/.test(Tp.userAgent))(),jp=Sp?"undefined"!=typeof HTMLAnchorElement&&"download"in HTMLAnchorElement.prototype&&!Ap?function(e,t="download",n){const r=document.createElement("a");r.download=t,r.rel="noopener","string"==typeof e?(r.href=e,r.origin!==location.origin?Cp(r.href)?Ep(e,t,n):(r.target="_blank",Pp(r)):Pp(r)):(r.href=URL.createObjectURL(e),setTimeout((function(){URL.revokeObjectURL(r.href)}),4e4),setTimeout((function(){Pp(r)}),0))}:"msSaveOrOpenBlob"in Tp?function(e,t="download",n){if("string"==typeof e)if(Cp(e))Ep(e,t,n);else{const t=document.createElement("a");t.href=e,t.target="_blank",setTimeout((function(){Pp(t)}))}else navigator.msSaveOrOpenBlob(function(e,{autoBom:t=!1}={}){return t&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([String.fromCharCode(65279),e],{type:e.type}):e}(e,n),t)}:function(e,t,n,r){(r=r||open("","_blank"))&&(r.document.title=r.document.body.innerText="downloading...");if("string"==typeof e)return Ep(e,t,n);const o="application/octet-stream"===e.type,i=/constructor/i.test(String(kp.HTMLElement))||"safari"in kp,s=/CriOS\/[\d]+/.test(navigator.userAgent);if((s||o&&i||Ap)&&"undefined"!=typeof FileReader){const t=new FileReader;t.onloadend=function(){let e=t.result;if("string"!=typeof e)throw r=null,new Error("Wrong reader.result type");e=s?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),r?r.location.href=e:location.assign(e),r=null},t.readAsDataURL(e)}else{const t=URL.createObjectURL(e);r?r.location.assign(t):location.href=t,r=null,setTimeout((function(){URL.revokeObjectURL(t)}),4e4)}}:()=>{};function Rp(e,t){"function"==typeof __VUE_DEVTOOLS_TOAST__&&__VUE_DEVTOOLS_TOAST__("🍍 "+e,t)}function Lp(e){return"_a"in e&&"install"in e}function Ip(){if(!("clipboard"in navigator))return Rp("Your browser doesn't support the Clipboard API","error"),!0}function Fp(e){return!!(e instanceof Error&&e.message.toLowerCase().includes("document is not focused"))&&(Rp('You need to activate the "Emulate a focused page" setting in the "Rendering" panel of devtools.',"warn"),!0)}let Np;async function Mp(e){try{const t=(Np||(Np=document.createElement("input"),Np.type="file",Np.accept=".json"),function(){return new Promise(((e,t)=>{Np.onchange=async()=>{const t=Np.files;if(!t)return e(null);const n=t.item(0);return e(n?{text:await n.text(),file:n}:null)},Np.oncancel=()=>e(null),Np.onerror=t,Np.click()}))}),n=await t();if(!n)return;const{text:r,file:o}=n;Dp(e,JSON.parse(r)),Rp(`Global state imported from "${o.name}".`)}catch(e){Rp("Failed to import the state from JSON. Check the console for more details.","error")}}function Dp(e,t){for(const n in t){const r=e.state.value[n];r?Object.assign(r,t[n]):e.state.value[n]=t[n]}}function Bp(e){return{_custom:{display:e}}}const Up="🍍 Pinia (root)",$p="_root";function Vp(e){return Lp(e)?{id:$p,label:Up}:{id:e.$id,label:e.$id}}function Hp(e){return e?Array.isArray(e)?e.reduce(((e,t)=>(e.keys.push(t.key),e.operations.push(t.type),e.oldValue[t.key]=t.oldValue,e.newValue[t.key]=t.newValue,e)),{oldValue:{},keys:[],operations:[],newValue:{}}):{operation:Bp(e.type),key:Bp(e.key),oldValue:e.oldValue,newValue:e.newValue}:{}}function zp(e){switch(e){case xp.direct:return"mutation";case xp.patchFunction:case xp.patchObject:return"$patch";default:return"unknown"}}let qp=!0;const Wp=[],Kp="pinia:mutations",Gp="pinia",{assign:Yp}=Object,Jp=e=>"🍍 "+e;function Qp(e,t){yp({id:"dev.esm.pinia",label:"Pinia 🍍",logo:"https://pinia.vuejs.org/logo.svg",packageName:"pinia",homepage:"https://pinia.vuejs.org",componentStateTypes:Wp,app:e},(n=>{"function"!=typeof n.now&&Rp("You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html."),n.addTimelineLayer({id:Kp,label:"Pinia 🍍",color:15064968}),n.addInspector({id:Gp,label:"Pinia 🍍",icon:"storage",treeFilterPlaceholder:"Search stores",actions:[{icon:"content_copy",action:()=>{!async function(e){if(!Ip())try{await navigator.clipboard.writeText(JSON.stringify(e.state.value)),Rp("Global state copied to clipboard.")}catch(e){if(Fp(e))return;Rp("Failed to serialize the state. Check the console for more details.","error")}}(t)},tooltip:"Serialize and copy the state"},{icon:"content_paste",action:async()=>{await async function(e){if(!Ip())try{Dp(e,JSON.parse(await navigator.clipboard.readText())),Rp("Global state pasted from clipboard.")}catch(e){if(Fp(e))return;Rp("Failed to deserialize the state from clipboard. Check the console for more details.","error")}}(t),n.sendInspectorTree(Gp),n.sendInspectorState(Gp)},tooltip:"Replace the state with the content of your clipboard"},{icon:"save",action:()=>{!async function(e){try{jp(new Blob([JSON.stringify(e.state.value)],{type:"text/plain;charset=utf-8"}),"pinia-state.json")}catch(e){Rp("Failed to export the state as JSON. Check the console for more details.","error")}}(t)},tooltip:"Save the state as a JSON file"},{icon:"folder_open",action:async()=>{await Mp(t),n.sendInspectorTree(Gp),n.sendInspectorState(Gp)},tooltip:"Import the state from a JSON file"}],nodeActions:[{icon:"restore",tooltip:'Reset the state (with "$reset")',action:e=>{const n=t._s.get(e);n?"function"!=typeof n.$reset?Rp(`Cannot reset "${e}" store because it doesn't have a "$reset" method implemented.`,"warn"):(n.$reset(),Rp(`Store "${e}" reset.`)):Rp(`Cannot reset "${e}" store because it wasn't found.`,"warn")}}]}),n.on.inspectComponent(((e,t)=>{const n=e.componentInstance&&e.componentInstance.proxy;if(n&&n._pStores){const t=e.componentInstance.proxy._pStores;Object.values(t).forEach((t=>{e.instanceData.state.push({type:Jp(t.$id),key:"state",editable:!0,value:t._isOptionsAPI?{_custom:{value:It(t.$state),actions:[{icon:"restore",tooltip:"Reset the state of this store",action:()=>t.$reset()}]}}:Object.keys(t.$state).reduce(((e,n)=>(e[n]=t.$state[n],e)),{})}),t._getters&&t._getters.length&&e.instanceData.state.push({type:Jp(t.$id),key:"getters",editable:!1,value:t._getters.reduce(((e,n)=>{try{e[n]=t[n]}catch(t){e[n]=t}return e}),{})})}))}})),n.on.getInspectorTree((n=>{if(n.app===e&&n.inspectorId===Gp){let e=[t];e=e.concat(Array.from(t._s.values())),n.rootNodes=(n.filter?e.filter((e=>"$id"in e?e.$id.toLowerCase().includes(n.filter.toLowerCase()):Up.toLowerCase().includes(n.filter.toLowerCase()))):e).map(Vp)}})),n.on.getInspectorState((n=>{if(n.app===e&&n.inspectorId===Gp){const e=n.nodeId===$p?t:t._s.get(n.nodeId);if(!e)return;e&&(n.state=function(e){if(Lp(e)){const t=Array.from(e._s.keys()),n=e._s,r={state:t.map((t=>({editable:!0,key:t,value:e.state.value[t]}))),getters:t.filter((e=>n.get(e)._getters)).map((e=>{const t=n.get(e);return{editable:!1,key:e,value:t._getters.reduce(((e,n)=>(e[n]=t[n],e)),{})}}))};return r}const t={state:Object.keys(e.$state).map((t=>({editable:!0,key:t,value:e.$state[t]})))};return e._getters&&e._getters.length&&(t.getters=e._getters.map((t=>({editable:!1,key:t,value:e[t]})))),e._customProperties.size&&(t.customProperties=Array.from(e._customProperties).map((t=>({editable:!0,key:t,value:e[t]})))),t}(e))}})),n.on.editInspectorState(((n,r)=>{if(n.app===e&&n.inspectorId===Gp){const e=n.nodeId===$p?t:t._s.get(n.nodeId);if(!e)return Rp(`store "${n.nodeId}" not found`,"error");const{path:r}=n;Lp(e)?r.unshift("state"):1===r.length&&e._customProperties.has(r[0])&&!(r[0]in e.$state)||r.unshift("$state"),qp=!1,n.set(e,r,n.state.value),qp=!0}})),n.on.editComponentState((e=>{if(e.type.startsWith("🍍")){const n=e.type.replace(/^🍍\s*/,""),r=t._s.get(n);if(!r)return Rp(`store "${n}" not found`,"error");const{path:o}=e;if("state"!==o[0])return Rp(`Invalid path for store "${n}":\n${o}\nOnly state can be modified.`);o[0]="$state",qp=!1,e.set(r,o,e.state.value),qp=!0}}))}))}let Zp,Xp=0;function ed(e,t,n){const r=t.reduce(((t,n)=>(t[n]=It(e)[n],t)),{});for(const t in r)e[t]=function(){const o=Xp,i=n?new Proxy(e,{get:(...e)=>(Zp=o,Reflect.get(...e)),set:(...e)=>(Zp=o,Reflect.set(...e))}):e;Zp=o;const s=r[t].apply(i,arguments);return Zp=void 0,s}}function td({app:e,store:t,options:n}){if(t.$id.startsWith("__hot:"))return;t._isOptionsAPI=!!n.state,ed(t,Object.keys(n.actions),t._isOptionsAPI);const r=t._hotUpdate;It(t)._hotUpdate=function(e){r.apply(this,arguments),ed(t,Object.keys(e._hmrPayload.actions),!!t._isOptionsAPI)},function(e,t){Wp.includes(Jp(t.$id))||Wp.push(Jp(t.$id)),yp({id:"dev.esm.pinia",label:"Pinia 🍍",logo:"https://pinia.vuejs.org/logo.svg",packageName:"pinia",homepage:"https://pinia.vuejs.org",componentStateTypes:Wp,app:e,settings:{logStoreChanges:{label:"Notify about new/deleted stores",type:"boolean",defaultValue:!0}}},(e=>{const n="function"==typeof e.now?e.now.bind(e):Date.now;t.$onAction((({after:r,onError:o,name:i,args:s})=>{const l=Xp++;e.addTimelineEvent({layerId:Kp,event:{time:n(),title:"🛫 "+i,subtitle:"start",data:{store:Bp(t.$id),action:Bp(i),args:s},groupId:l}}),r((r=>{Zp=void 0,e.addTimelineEvent({layerId:Kp,event:{time:n(),title:"🛬 "+i,subtitle:"end",data:{store:Bp(t.$id),action:Bp(i),args:s,result:r},groupId:l}})})),o((r=>{Zp=void 0,e.addTimelineEvent({layerId:Kp,event:{time:n(),logType:"error",title:"💥 "+i,subtitle:"end",data:{store:Bp(t.$id),action:Bp(i),args:s,error:r},groupId:l}})}))}),!0),t._customProperties.forEach((r=>{dr((()=>Wt(t[r])),((t,o)=>{e.notifyComponentUpdate(),e.sendInspectorState(Gp),qp&&e.addTimelineEvent({layerId:Kp,event:{time:n(),title:"Change",subtitle:r,data:{newValue:t,oldValue:o},groupId:Zp}})}),{deep:!0})})),t.$subscribe((({events:r,type:o},i)=>{if(e.notifyComponentUpdate(),e.sendInspectorState(Gp),!qp)return;const s={time:n(),title:zp(o),data:Yp({store:Bp(t.$id)},Hp(r)),groupId:Zp};o===xp.patchFunction?s.subtitle="⤵️":o===xp.patchObject?s.subtitle="🧩":r&&!Array.isArray(r)&&(s.subtitle=r.type),r&&(s.data["rawEvent(s)"]={_custom:{display:"DebuggerEvent",type:"object",tooltip:"raw DebuggerEvent[]",value:r}}),e.addTimelineEvent({layerId:Kp,event:s})}),{detached:!0,flush:"sync"});const r=t._hotUpdate;t._hotUpdate=Ft((o=>{r(o),e.addTimelineEvent({layerId:Kp,event:{time:n(),title:"🔥 "+t.$id,subtitle:"HMR update",data:{store:Bp(t.$id),info:Bp("HMR update")}}}),e.notifyComponentUpdate(),e.sendInspectorTree(Gp),e.sendInspectorState(Gp)}));const{$dispose:o}=t;t.$dispose=()=>{o(),e.notifyComponentUpdate(),e.sendInspectorTree(Gp),e.sendInspectorState(Gp),e.getSettings().logStoreChanges&&Rp(`Disposed "${t.$id}" store 🗑`)},e.notifyComponentUpdate(),e.sendInspectorTree(Gp),e.sendInspectorState(Gp),e.getSettings().logStoreChanges&&Rp(`"${t.$id}" store installed 🆕`)}))}(e,t)}const nd=()=>{};function rd(e,t,n,r=nd){e.push(t);const o=()=>{const n=e.indexOf(t);n>-1&&(e.splice(n,1),r())};return!n&&ge()&&me(o),o}function od(e,...t){e.slice().forEach((e=>{e(...t)}))}const id=e=>e();function sd(e,t){e instanceof Map&&t instanceof Map&&t.forEach(((t,n)=>e.set(n,t))),e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const r=t[n],o=e[n];_p(o)&&_p(r)&&e.hasOwnProperty(n)&&!Ut(r)&&!At(r)?e[n]=sd(o,r):e[n]=r}return e}const ld=Symbol(),ad=new WeakMap;const{assign:ud}=Object;function cd(e){return!(!Ut(e)||!e.effect)}function fd(e,t,n={},r,o,i){let s;const l=ud({actions:{}},n);const a={deep:!0};let u,c;let f,p=[],d=[];const h=r.state.value[e];i||h||(ap?up(r.state.value,e,{}):r.state.value[e]={});const v=$t({});let g;function m(t){let n;u=c=!1,"function"==typeof t?(t(r.state.value[e]),n={type:xp.patchFunction,storeId:e,events:f}):(sd(r.state.value[e],t),n={type:xp.patchObject,payload:t,storeId:e,events:f});const o=g=Symbol();bn().then((()=>{g===o&&(u=!0)})),c=!0,od(p,n,r.state.value[e])}const y=i?function(){const{state:e}=n,t=e?e():{};this.$patch((e=>{ud(e,t)}))}:nd;function b(t,n){return function(){bp(r);const o=Array.from(arguments),i=[],s=[];let l;od(d,{args:o,name:t,store:x,after:function(e){i.push(e)},onError:function(e){s.push(e)}});try{l=n.apply(this&&this.$id===e?this:x,o)}catch(e){throw od(s,e),e}return l instanceof Promise?l.then((e=>(od(i,e),e))).catch((e=>(od(s,e),Promise.reject(e)))):(od(i,l),l)}}const w=Ft({actions:{},getters:{},state:[],hotState:v}),_={_p:r,$id:e,$onAction:rd.bind(null,d),$patch:m,$reset:y,$subscribe(t,n={}){const o=rd(p,t,n.detached,(()=>i())),i=s.run((()=>dr((()=>r.state.value[e]),(r=>{("sync"===n.flush?c:u)&&t({storeId:e,type:xp.direct,events:f},r)}),ud({},a,n))));return o},$dispose:function(){s.stop(),p=[],d=[],r._s.delete(e)}};ap&&(_._r=!1);const x=kt(Op?ud({_hmrPayload:w,_customProperties:Ft(new Set)},_):_);r._s.set(e,x);const S=(r._a&&r._a.runWithContext||id)((()=>r._e.run((()=>(s=he()).run(t)))));for(const t in S){const n=S[t];if(Ut(n)&&!cd(n)||At(n))i||(!h||(O=n,ap?ad.has(O):_p(O)&&O.hasOwnProperty(ld))||(Ut(n)?n.value=h[t]:sd(n,h[t])),ap?up(r.state.value[e],t,n):r.state.value[e][t]=n);else if("function"==typeof n){const e=b(t,n);ap?up(S,t,e):S[t]=e,l.actions[t]=n}else 0}var O;if(ap?Object.keys(S).forEach((e=>{up(x,e,S[e])})):(ud(x,S),ud(It(x),S)),Object.defineProperty(x,"$state",{get:()=>r.state.value[e],set:e=>{m((t=>{ud(t,e)}))}}),Op){const e={writable:!0,configurable:!0,enumerable:!1};["_p","_hmrPayload","_getters","_customProperties"].forEach((t=>{Object.defineProperty(x,t,ud({value:x[t]},e))}))}return ap&&(x._r=!0),r._p.forEach((e=>{if(Op){const t=s.run((()=>e({store:x,app:r._a,pinia:r,options:l})));Object.keys(t||{}).forEach((e=>x._customProperties.add(e))),ud(x,t)}else ud(x,s.run((()=>e({store:x,app:r._a,pinia:r,options:l}))))})),h&&i&&n.hydrate&&n.hydrate(x.$state,h),u=!0,c=!0,x}function pd(e,t,n){let r,o;const i="function"==typeof t;function s(e,n){const s=Jo();(e=e||(s?Yo(wp,null):null))&&bp(e),(e=vp)._s.has(r)||(i?fd(r,t,o,e):function(e,t,n,r){const{state:o,actions:i,getters:s}=t,l=n.state.value[e];let a;a=fd(e,(function(){l||(ap?up(n.state.value,e,o?o():{}):n.state.value[e]=o?o():{});const t=Zt(n.state.value[e]);return ud(t,i,Object.keys(s||{}).reduce(((t,r)=>(t[r]=Ft(Rs((()=>{bp(n);const t=n._s.get(e);if(!ap||t._r)return s[r].call(t,t)}))),t)),{}))}),t,n,0,!0)}(r,o,e));return e._s.get(r)}return"string"==typeof e?(r=e,o=i?n:t):(o=e,r=e.id),s.$id=r,s}function dd(e,t){return function(){return e.apply(t,arguments)}}const{toString:hd}=Object.prototype,{getPrototypeOf:vd}=Object,gd=(md=Object.create(null),e=>{const t=hd.call(e);return md[t]||(md[t]=t.slice(8,-1).toLowerCase())});var md;const yd=e=>(e=e.toLowerCase(),t=>gd(t)===e),bd=e=>t=>typeof t===e,{isArray:wd}=Array,_d=bd("undefined");const xd=yd("ArrayBuffer");const Sd=bd("string"),Od=bd("function"),kd=bd("number"),Ed=e=>null!==e&&"object"==typeof e,Cd=e=>{if("object"!==gd(e))return!1;const t=vd(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},Pd=yd("Date"),Td=yd("File"),Ad=yd("Blob"),jd=yd("FileList"),Rd=yd("URLSearchParams");function Ld(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let r,o;if("object"!=typeof e&&(e=[e]),wd(e))for(r=0,o=e.length;r0;)if(r=n[o],t===r.toLowerCase())return r;return null}const Fd="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,Nd=e=>!_d(e)&&e!==Fd;const Md=(Dd="undefined"!=typeof Uint8Array&&vd(Uint8Array),e=>Dd&&e instanceof Dd);var Dd;const Bd=yd("HTMLFormElement"),Ud=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),$d=yd("RegExp"),Vd=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};Ld(n,((n,o)=>{let i;!1!==(i=t(n,o,e))&&(r[o]=i||n)})),Object.defineProperties(e,r)},Hd="abcdefghijklmnopqrstuvwxyz",zd="0123456789",qd={DIGIT:zd,ALPHA:Hd,ALPHA_DIGIT:Hd+Hd.toUpperCase()+zd};const Wd=yd("AsyncFunction"),Kd={isArray:wd,isArrayBuffer:xd,isBuffer:function(e){return null!==e&&!_d(e)&&null!==e.constructor&&!_d(e.constructor)&&Od(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||Od(e.append)&&("formdata"===(t=gd(e))||"object"===t&&Od(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&xd(e.buffer),t},isString:Sd,isNumber:kd,isBoolean:e=>!0===e||!1===e,isObject:Ed,isPlainObject:Cd,isUndefined:_d,isDate:Pd,isFile:Td,isBlob:Ad,isRegExp:$d,isFunction:Od,isStream:e=>Ed(e)&&Od(e.pipe),isURLSearchParams:Rd,isTypedArray:Md,isFileList:jd,forEach:Ld,merge:function e(){const{caseless:t}=Nd(this)&&this||{},n={},r=(r,o)=>{const i=t&&Id(n,o)||o;Cd(n[i])&&Cd(r)?n[i]=e(n[i],r):Cd(r)?n[i]=e({},r):wd(r)?n[i]=r.slice():n[i]=r};for(let e=0,t=arguments.length;e(Ld(t,((t,r)=>{n&&Od(t)?e[r]=dd(t,n):e[r]=t}),{allOwnKeys:r}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:(e,t,n,r)=>{let o,i,s;const l={};if(t=t||{},null==e)return t;do{for(o=Object.getOwnPropertyNames(e),i=o.length;i-- >0;)s=o[i],r&&!r(s,e,t)||l[s]||(t[s]=e[s],l[s]=!0);e=!1!==n&&vd(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:gd,kindOfTest:yd,endsWith:(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return-1!==r&&r===n},toArray:e=>{if(!e)return null;if(wd(e))return e;let t=e.length;if(!kd(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[Symbol.iterator]).call(e);let r;for(;(r=n.next())&&!r.done;){const n=r.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let n;const r=[];for(;null!==(n=e.exec(t));)r.push(n);return r},isHTMLForm:Bd,hasOwnProperty:Ud,hasOwnProp:Ud,reduceDescriptors:Vd,freezeMethods:e=>{Vd(e,((t,n)=>{if(Od(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const r=e[n];Od(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))}))},toObjectSet:(e,t)=>{const n={},r=e=>{e.forEach((e=>{n[e]=!0}))};return wd(e)?r(e):r(String(e).split(t)),n},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,n){return t.toUpperCase()+n})),noop:()=>{},toFiniteNumber:(e,t)=>(e=+e,Number.isFinite(e)?e:t),findKey:Id,global:Fd,isContextDefined:Nd,ALPHABET:qd,generateString:(e=16,t=qd.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n},isSpecCompliantForm:function(e){return!!(e&&Od(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),n=(e,r)=>{if(Ed(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[r]=e;const o=wd(e)?[]:{};return Ld(e,((e,t)=>{const i=n(e,r+1);!_d(i)&&(o[t]=i)})),t[r]=void 0,o}}return e};return n(e,0)},isAsyncFn:Wd,isThenable:e=>e&&(Ed(e)||Od(e))&&Od(e.then)&&Od(e.catch)};function Gd(e,t,n,r,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),o&&(this.response=o)}Kd.inherits(Gd,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:Kd.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const Yd=Gd.prototype,Jd={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{Jd[e]={value:e}})),Object.defineProperties(Gd,Jd),Object.defineProperty(Yd,"isAxiosError",{value:!0}),Gd.from=(e,t,n,r,o,i)=>{const s=Object.create(Yd);return Kd.toFlatObject(e,s,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),Gd.call(s,e.message,t,n,r,o),s.cause=e,s.name=e.name,i&&Object.assign(s,i),s};const Qd=Gd;var Zd=n(764).lW;function Xd(e){return Kd.isPlainObject(e)||Kd.isArray(e)}function eh(e){return Kd.endsWith(e,"[]")?e.slice(0,-2):e}function th(e,t,n){return e?e.concat(t).map((function(e,t){return e=eh(e),!n&&t?"["+e+"]":e})).join(n?".":""):t}const nh=Kd.toFlatObject(Kd,{},null,(function(e){return/^is[A-Z]/.test(e)}));const rh=function(e,t,n){if(!Kd.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const r=(n=Kd.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!Kd.isUndefined(t[e])}))).metaTokens,o=n.visitor||u,i=n.dots,s=n.indexes,l=(n.Blob||"undefined"!=typeof Blob&&Blob)&&Kd.isSpecCompliantForm(t);if(!Kd.isFunction(o))throw new TypeError("visitor must be a function");function a(e){if(null===e)return"";if(Kd.isDate(e))return e.toISOString();if(!l&&Kd.isBlob(e))throw new Qd("Blob is not supported. Use a Buffer instead.");return Kd.isArrayBuffer(e)||Kd.isTypedArray(e)?l&&"function"==typeof Blob?new Blob([e]):Zd.from(e):e}function u(e,n,o){let l=e;if(e&&!o&&"object"==typeof e)if(Kd.endsWith(n,"{}"))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(Kd.isArray(e)&&function(e){return Kd.isArray(e)&&!e.some(Xd)}(e)||(Kd.isFileList(e)||Kd.endsWith(n,"[]"))&&(l=Kd.toArray(e)))return n=eh(n),l.forEach((function(e,r){!Kd.isUndefined(e)&&null!==e&&t.append(!0===s?th([n],r,i):null===s?n:n+"[]",a(e))})),!1;return!!Xd(e)||(t.append(th(o,n,i),a(e)),!1)}const c=[],f=Object.assign(nh,{defaultVisitor:u,convertValue:a,isVisitable:Xd});if(!Kd.isObject(e))throw new TypeError("data must be an object");return function e(n,r){if(!Kd.isUndefined(n)){if(-1!==c.indexOf(n))throw Error("Circular reference detected in "+r.join("."));c.push(n),Kd.forEach(n,(function(n,i){!0===(!(Kd.isUndefined(n)||null===n)&&o.call(t,n,Kd.isString(i)?i.trim():i,r,f))&&e(n,r?r.concat(i):[i])})),c.pop()}}(e),t};function oh(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function ih(e,t){this._pairs=[],e&&rh(e,this,t)}const sh=ih.prototype;sh.append=function(e,t){this._pairs.push([e,t])},sh.toString=function(e){const t=e?function(t){return e.call(this,t,oh)}:oh;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};const lh=ih;function ah(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function uh(e,t,n){if(!t)return e;const r=n&&n.encode||ah,o=n&&n.serialize;let i;if(i=o?o(t,n):Kd.isURLSearchParams(t)?t.toString():new lh(t,n).toString(r),i){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e}const ch=class{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){Kd.forEach(this.handlers,(function(t){null!==t&&e(t)}))}},fh={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},ph={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:lh,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},dh="undefined"!=typeof window&&"undefined"!=typeof document,hh=(vh="undefined"!=typeof navigator&&navigator.product,dh&&["ReactNative","NativeScript","NS"].indexOf(vh)<0);var vh;const gh="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,mh={...o,...ph};const yh=function(e){function t(e,n,r,o){let i=e[o++];const s=Number.isFinite(+i),l=o>=e.length;if(i=!i&&Kd.isArray(r)?r.length:i,l)return Kd.hasOwnProp(r,i)?r[i]=[r[i],n]:r[i]=n,!s;r[i]&&Kd.isObject(r[i])||(r[i]=[]);return t(e,n,r[i],o)&&Kd.isArray(r[i])&&(r[i]=function(e){const t={},n=Object.keys(e);let r;const o=n.length;let i;for(r=0;r{t(function(e){return Kd.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),r,n,0)})),n}return null};const bh={transitional:fh,adapter:["xhr","http"],transformRequest:[function(e,t){const n=t.getContentType()||"",r=n.indexOf("application/json")>-1,o=Kd.isObject(e);o&&Kd.isHTMLForm(e)&&(e=new FormData(e));if(Kd.isFormData(e))return r&&r?JSON.stringify(yh(e)):e;if(Kd.isArrayBuffer(e)||Kd.isBuffer(e)||Kd.isStream(e)||Kd.isFile(e)||Kd.isBlob(e))return e;if(Kd.isArrayBufferView(e))return e.buffer;if(Kd.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let i;if(o){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return rh(e,new mh.classes.URLSearchParams,Object.assign({visitor:function(e,t,n,r){return mh.isNode&&Kd.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((i=Kd.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return rh(i?{"files[]":e}:e,t&&new t,this.formSerializer)}}return o||r?(t.setContentType("application/json",!1),function(e,t,n){if(Kd.isString(e))try{return(t||JSON.parse)(e),Kd.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||bh.transitional,n=t&&t.forcedJSONParsing,r="json"===this.responseType;if(e&&Kd.isString(e)&&(n&&!this.responseType||r)){const n=!(t&&t.silentJSONParsing)&&r;try{return JSON.parse(e)}catch(e){if(n){if("SyntaxError"===e.name)throw Qd.from(e,Qd.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:mh.classes.FormData,Blob:mh.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};Kd.forEach(["delete","get","head","post","put","patch"],(e=>{bh.headers[e]={}}));const wh=bh,_h=Kd.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),xh=Symbol("internals");function Sh(e){return e&&String(e).trim().toLowerCase()}function Oh(e){return!1===e||null==e?e:Kd.isArray(e)?e.map(Oh):String(e)}function kh(e,t,n,r,o){return Kd.isFunction(r)?r.call(this,t,n):(o&&(t=n),Kd.isString(t)?Kd.isString(r)?-1!==t.indexOf(r):Kd.isRegExp(r)?r.test(t):void 0:void 0)}class Eh{constructor(e){e&&this.set(e)}set(e,t,n){const r=this;function o(e,t,n){const o=Sh(t);if(!o)throw new Error("header name must be a non-empty string");const i=Kd.findKey(r,o);(!i||void 0===r[i]||!0===n||void 0===n&&!1!==r[i])&&(r[i||t]=Oh(e))}const i=(e,t)=>Kd.forEach(e,((e,n)=>o(e,n,t)));return Kd.isPlainObject(e)||e instanceof this.constructor?i(e,t):Kd.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim())?i((e=>{const t={};let n,r,o;return e&&e.split("\n").forEach((function(e){o=e.indexOf(":"),n=e.substring(0,o).trim().toLowerCase(),r=e.substring(o+1).trim(),!n||t[n]&&_h[n]||("set-cookie"===n?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)})),t})(e),t):null!=e&&o(t,e,n),this}get(e,t){if(e=Sh(e)){const n=Kd.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}(e);if(Kd.isFunction(t))return t.call(this,e,n);if(Kd.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=Sh(e)){const n=Kd.findKey(this,e);return!(!n||void 0===this[n]||t&&!kh(0,this[n],n,t))}return!1}delete(e,t){const n=this;let r=!1;function o(e){if(e=Sh(e)){const o=Kd.findKey(n,e);!o||t&&!kh(0,n[o],o,t)||(delete n[o],r=!0)}}return Kd.isArray(e)?e.forEach(o):o(e),r}clear(e){const t=Object.keys(this);let n=t.length,r=!1;for(;n--;){const o=t[n];e&&!kh(0,this[o],o,e,!0)||(delete this[o],r=!0)}return r}normalize(e){const t=this,n={};return Kd.forEach(this,((r,o)=>{const i=Kd.findKey(n,o);if(i)return t[i]=Oh(r),void delete t[o];const s=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,n)=>t.toUpperCase()+n))}(o):String(o).trim();s!==o&&delete t[o],t[s]=Oh(r),n[s]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return Kd.forEach(this,((n,r)=>{null!=n&&!1!==n&&(t[r]=e&&Kd.isArray(n)?n.join(", "):n)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach((e=>n.set(e))),n}static accessor(e){const t=(this[xh]=this[xh]={accessors:{}}).accessors,n=this.prototype;function r(e){const r=Sh(e);t[r]||(!function(e,t){const n=Kd.toCamelCase(" "+t);["get","set","has"].forEach((r=>{Object.defineProperty(e,r+n,{value:function(e,n,o){return this[r].call(this,t,e,n,o)},configurable:!0})}))}(n,e),t[r]=!0)}return Kd.isArray(e)?e.forEach(r):r(e),this}}Eh.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),Kd.reduceDescriptors(Eh.prototype,(({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}})),Kd.freezeMethods(Eh);const Ch=Eh;function Ph(e,t){const n=this||wh,r=t||n,o=Ch.from(r.headers);let i=r.data;return Kd.forEach(e,(function(e){i=e.call(n,i,o.normalize(),t?t.status:void 0)})),o.normalize(),i}function Th(e){return!(!e||!e.__CANCEL__)}function Ah(e,t,n){Qd.call(this,null==e?"canceled":e,Qd.ERR_CANCELED,t,n),this.name="CanceledError"}Kd.inherits(Ah,Qd,{__CANCEL__:!0});const jh=Ah;const Rh=mh.hasStandardBrowserEnv?{write(e,t,n,r,o,i){const s=[e+"="+encodeURIComponent(t)];Kd.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),Kd.isString(r)&&s.push("path="+r),Kd.isString(o)&&s.push("domain="+o),!0===i&&s.push("secure"),document.cookie=s.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function Lh(e,t){return e&&!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)?function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const Ih=mh.hasStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let n;function r(n){let r=n;return e&&(t.setAttribute("href",r),r=t.href),t.setAttribute("href",r),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return n=r(window.location.href),function(e){const t=Kd.isString(e)?r(e):e;return t.protocol===n.protocol&&t.host===n.host}}():function(){return!0};const Fh=function(e,t){e=e||10;const n=new Array(e),r=new Array(e);let o,i=0,s=0;return t=void 0!==t?t:1e3,function(l){const a=Date.now(),u=r[s];o||(o=a),n[i]=l,r[i]=a;let c=s,f=0;for(;c!==i;)f+=n[c++],c%=e;if(i=(i+1)%e,i===s&&(s=(s+1)%e),a-o{const i=o.loaded,s=o.lengthComputable?o.total:void 0,l=i-n,a=r(l);n=i;const u={loaded:i,total:s,progress:s?i/s:void 0,bytes:l,rate:a||void 0,estimated:a&&s&&i<=s?(s-i)/a:void 0,event:o};u[t?"download":"upload"]=!0,e(u)}}const Mh="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,n){let r=e.data;const o=Ch.from(e.headers).normalize();let i,s,{responseType:l,withXSRFToken:a}=e;function u(){e.cancelToken&&e.cancelToken.unsubscribe(i),e.signal&&e.signal.removeEventListener("abort",i)}if(Kd.isFormData(r))if(mh.hasStandardBrowserEnv||mh.hasStandardBrowserWebWorkerEnv)o.setContentType(!1);else if(!1!==(s=o.getContentType())){const[e,...t]=s?s.split(";").map((e=>e.trim())).filter(Boolean):[];o.setContentType([e||"multipart/form-data",...t].join("; "))}let c=new XMLHttpRequest;if(e.auth){const t=e.auth.username||"",n=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";o.set("Authorization","Basic "+btoa(t+":"+n))}const f=Lh(e.baseURL,e.url);function p(){if(!c)return;const r=Ch.from("getAllResponseHeaders"in c&&c.getAllResponseHeaders());!function(e,t,n){const r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(new Qd("Request failed with status code "+n.status,[Qd.ERR_BAD_REQUEST,Qd.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}((function(e){t(e),u()}),(function(e){n(e),u()}),{data:l&&"text"!==l&&"json"!==l?c.response:c.responseText,status:c.status,statusText:c.statusText,headers:r,config:e,request:c}),c=null}if(c.open(e.method.toUpperCase(),uh(f,e.params,e.paramsSerializer),!0),c.timeout=e.timeout,"onloadend"in c?c.onloadend=p:c.onreadystatechange=function(){c&&4===c.readyState&&(0!==c.status||c.responseURL&&0===c.responseURL.indexOf("file:"))&&setTimeout(p)},c.onabort=function(){c&&(n(new Qd("Request aborted",Qd.ECONNABORTED,e,c)),c=null)},c.onerror=function(){n(new Qd("Network Error",Qd.ERR_NETWORK,e,c)),c=null},c.ontimeout=function(){let t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const r=e.transitional||fh;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(new Qd(t,r.clarifyTimeoutError?Qd.ETIMEDOUT:Qd.ECONNABORTED,e,c)),c=null},mh.hasStandardBrowserEnv&&(a&&Kd.isFunction(a)&&(a=a(e)),a||!1!==a&&Ih(f))){const t=e.xsrfHeaderName&&e.xsrfCookieName&&Rh.read(e.xsrfCookieName);t&&o.set(e.xsrfHeaderName,t)}void 0===r&&o.setContentType(null),"setRequestHeader"in c&&Kd.forEach(o.toJSON(),(function(e,t){c.setRequestHeader(t,e)})),Kd.isUndefined(e.withCredentials)||(c.withCredentials=!!e.withCredentials),l&&"json"!==l&&(c.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&c.addEventListener("progress",Nh(e.onDownloadProgress,!0)),"function"==typeof e.onUploadProgress&&c.upload&&c.upload.addEventListener("progress",Nh(e.onUploadProgress)),(e.cancelToken||e.signal)&&(i=t=>{c&&(n(!t||t.type?new jh(null,e,c):t),c.abort(),c=null)},e.cancelToken&&e.cancelToken.subscribe(i),e.signal&&(e.signal.aborted?i():e.signal.addEventListener("abort",i)));const d=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(f);d&&-1===mh.protocols.indexOf(d)?n(new Qd("Unsupported protocol "+d+":",Qd.ERR_BAD_REQUEST,e)):c.send(r||null)}))},Dh={http:null,xhr:Mh};Kd.forEach(Dh,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const Bh=e=>`- ${e}`,Uh=e=>Kd.isFunction(e)||null===e||!1===e,$h=e=>{e=Kd.isArray(e)?e:[e];const{length:t}=e;let n,r;const o={};for(let i=0;i`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")));let n=t?e.length>1?"since :\n"+e.map(Bh).join("\n"):" "+Bh(e[0]):"as no adapter specified";throw new Qd("There is no suitable adapter to dispatch the request "+n,"ERR_NOT_SUPPORT")}return r};function Vh(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new jh(null,e)}function Hh(e){Vh(e),e.headers=Ch.from(e.headers),e.data=Ph.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return $h(e.adapter||wh.adapter)(e).then((function(t){return Vh(e),t.data=Ph.call(e,e.transformResponse,t),t.headers=Ch.from(t.headers),t}),(function(t){return Th(t)||(Vh(e),t&&t.response&&(t.response.data=Ph.call(e,e.transformResponse,t.response),t.response.headers=Ch.from(t.response.headers))),Promise.reject(t)}))}const zh=e=>e instanceof Ch?e.toJSON():e;function qh(e,t){t=t||{};const n={};function r(e,t,n){return Kd.isPlainObject(e)&&Kd.isPlainObject(t)?Kd.merge.call({caseless:n},e,t):Kd.isPlainObject(t)?Kd.merge({},t):Kd.isArray(t)?t.slice():t}function o(e,t,n){return Kd.isUndefined(t)?Kd.isUndefined(e)?void 0:r(void 0,e,n):r(e,t,n)}function i(e,t){if(!Kd.isUndefined(t))return r(void 0,t)}function s(e,t){return Kd.isUndefined(t)?Kd.isUndefined(e)?void 0:r(void 0,e):r(void 0,t)}function l(n,o,i){return i in t?r(n,o):i in e?r(void 0,n):void 0}const a={url:i,method:i,data:i,baseURL:s,transformRequest:s,transformResponse:s,paramsSerializer:s,timeout:s,timeoutMessage:s,withCredentials:s,withXSRFToken:s,adapter:s,responseType:s,xsrfCookieName:s,xsrfHeaderName:s,onUploadProgress:s,onDownloadProgress:s,decompress:s,maxContentLength:s,maxBodyLength:s,beforeRedirect:s,transport:s,httpAgent:s,httpsAgent:s,cancelToken:s,socketPath:s,responseEncoding:s,validateStatus:l,headers:(e,t)=>o(zh(e),zh(t),!0)};return Kd.forEach(Object.keys(Object.assign({},e,t)),(function(r){const i=a[r]||o,s=i(e[r],t[r],r);Kd.isUndefined(s)&&i!==l||(n[r]=s)})),n}const Wh="1.6.2",Kh={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{Kh[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));const Gh={};Kh.transitional=function(e,t,n){return(r,o,i)=>{if(!1===e)throw new Qd(function(e,t){return"[Axios v1.6.2] Transitional option '"+e+"'"+t+(n?". "+n:"")}(o," has been removed"+(t?" in "+t:"")),Qd.ERR_DEPRECATED);return t&&!Gh[o]&&(Gh[o]=!0),!e||e(r,o,i)}};const Yh={assertOptions:function(e,t,n){if("object"!=typeof e)throw new Qd("options must be an object",Qd.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let o=r.length;for(;o-- >0;){const i=r[o],s=t[i];if(s){const t=e[i],n=void 0===t||s(t,i,e);if(!0!==n)throw new Qd("option "+i+" must be "+n,Qd.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new Qd("Unknown option "+i,Qd.ERR_BAD_OPTION)}},validators:Kh},Jh=Yh.validators;class Qh{constructor(e){this.defaults=e,this.interceptors={request:new ch,response:new ch}}request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=qh(this.defaults,t);const{transitional:n,paramsSerializer:r,headers:o}=t;void 0!==n&&Yh.assertOptions(n,{silentJSONParsing:Jh.transitional(Jh.boolean),forcedJSONParsing:Jh.transitional(Jh.boolean),clarifyTimeoutError:Jh.transitional(Jh.boolean)},!1),null!=r&&(Kd.isFunction(r)?t.paramsSerializer={serialize:r}:Yh.assertOptions(r,{encode:Jh.function,serialize:Jh.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();let i=o&&Kd.merge(o.common,o[t.method]);o&&Kd.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete o[e]})),t.headers=Ch.concat(i,o);const s=[];let l=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(l=l&&e.synchronous,s.unshift(e.fulfilled,e.rejected))}));const a=[];let u;this.interceptors.response.forEach((function(e){a.push(e.fulfilled,e.rejected)}));let c,f=0;if(!l){const e=[Hh.bind(this),void 0];for(e.unshift.apply(e,s),e.push.apply(e,a),c=e.length,u=Promise.resolve(t);f{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null})),this.promise.then=e=>{let t;const r=new Promise((e=>{n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e((function(e,r,o){n.reason||(n.reason=new jh(e,r,o),t(n.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;const t=new Xh((function(t){e=t}));return{token:t,cancel:e}}}const ev=Xh;const tv={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(tv).forEach((([e,t])=>{tv[t]=e}));const nv=tv;const rv=function e(t){const n=new Zh(t),r=dd(Zh.prototype.request,n);return Kd.extend(r,Zh.prototype,n,{allOwnKeys:!0}),Kd.extend(r,n,null,{allOwnKeys:!0}),r.create=function(n){return e(qh(t,n))},r}(wh);rv.Axios=Zh,rv.CanceledError=jh,rv.CancelToken=ev,rv.isCancel=Th,rv.VERSION=Wh,rv.toFormData=rh,rv.AxiosError=Qd,rv.Cancel=rv.CanceledError,rv.all=function(e){return Promise.all(e)},rv.spread=function(e){return function(t){return e.apply(null,t)}},rv.isAxiosError=function(e){return Kd.isObject(e)&&!0===e.isAxiosError},rv.mergeConfig=qh,rv.AxiosHeaders=Ch,rv.formToJSON=e=>yh(Kd.isHTMLForm(e)?new FormData(e):e),rv.getAdapter=$h,rv.HttpStatusCode=nv,rv.default=rv;const ov=rv,iv="undefined"!=typeof window;function sv(e){return e.__esModule||"Module"===e[Symbol.toStringTag]}const lv=Object.assign;function av(e,t){const n={};for(const r in t){const o=t[r];n[r]=cv(o)?o.map(e):e(o)}return n}const uv=()=>{},cv=Array.isArray;const fv=/\/$/,pv=e=>e.replace(fv,"");function dv(e,t,n="/"){let r,o={},i="",s="";const l=t.indexOf("#");let a=t.indexOf("?");return l=0&&(a=-1),a>-1&&(r=t.slice(0,a),i=t.slice(a+1,l>-1?l:t.length),o=e(i)),l>-1&&(r=r||t.slice(0,l),s=t.slice(l,t.length)),r=function(e,t){if(e.startsWith("/"))return e;0;if(!e)return t;const n=t.split("/"),r=e.split("/"),o=r[r.length-1];".."!==o&&"."!==o||r.push("");let i,s,l=n.length-1;for(i=0;i1&&l--}return n.slice(0,l).join("/")+"/"+r.slice(i-(i===r.length?1:0)).join("/")}(null!=r?r:t,n),{fullPath:r+(i&&"?")+i+s,path:r,query:o,hash:s}}function hv(e,t){return t&&e.toLowerCase().startsWith(t.toLowerCase())?e.slice(t.length)||"/":e}function vv(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function gv(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!mv(e[n],t[n]))return!1;return!0}function mv(e,t){return cv(e)?yv(e,t):cv(t)?yv(t,e):e===t}function yv(e,t){return cv(t)?e.length===t.length&&e.every(((e,n)=>e===t[n])):1===e.length&&e[0]===t}var bv,wv;!function(e){e.pop="pop",e.push="push"}(bv||(bv={})),function(e){e.back="back",e.forward="forward",e.unknown=""}(wv||(wv={}));function _v(e){if(!e)if(iv){const t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return"/"!==e[0]&&"#"!==e[0]&&(e="/"+e),pv(e)}const xv=/^[^#]+#/;function Sv(e,t){return e.replace(xv,"#")+t}const Ov=()=>({left:window.pageXOffset,top:window.pageYOffset});function kv(e){let t;if("el"in e){const n=e.el,r="string"==typeof n&&n.startsWith("#");0;const o="string"==typeof n?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=function(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(null!=t.left?t.left:window.pageXOffset,null!=t.top?t.top:window.pageYOffset)}function Ev(e,t){return(history.state?history.state.position-t:-1)+e}const Cv=new Map;let Pv=()=>location.protocol+"//"+location.host;function Tv(e,t){const{pathname:n,search:r,hash:o}=t,i=e.indexOf("#");if(i>-1){let t=o.includes(e.slice(i))?e.slice(i).length:1,n=o.slice(t);return"/"!==n[0]&&(n="/"+n),hv(n,"")}return hv(n,e)+r+o}function Av(e,t,n,r=!1,o=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:o?Ov():null}}function jv(e){const t=function(e){const{history:t,location:n}=window,r={value:Tv(e,n)},o={value:t.state};function i(r,i,s){const l=e.indexOf("#"),a=l>-1?(n.host&&document.querySelector("base")?e:e.slice(l))+r:Pv()+e+r;try{t[s?"replaceState":"pushState"](i,"",a),o.value=i}catch(e){n[s?"replace":"assign"](a)}}return o.value||i(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0),{location:r,state:o,push:function(e,n){const s=lv({},o.value,t.state,{forward:e,scroll:Ov()});i(s.current,s,!0),i(e,lv({},Av(r.value,e,null),{position:s.position+1},n),!1),r.value=e},replace:function(e,n){i(e,lv({},t.state,Av(o.value.back,e,o.value.forward,!0),n,{position:o.value.position}),!0),r.value=e}}}(e=_v(e)),n=function(e,t,n,r){let o=[],i=[],s=null;const l=({state:i})=>{const l=Tv(e,location),a=n.value,u=t.value;let c=0;if(i){if(n.value=l,t.value=i,s&&s===a)return void(s=null);c=u?i.position-u.position:0}else r(l);o.forEach((e=>{e(n.value,a,{delta:c,type:bv.pop,direction:c?c>0?wv.forward:wv.back:wv.unknown})}))};function a(){const{history:e}=window;e.state&&e.replaceState(lv({},e.state,{scroll:Ov()}),"")}return window.addEventListener("popstate",l),window.addEventListener("beforeunload",a,{passive:!0}),{pauseListeners:function(){s=n.value},listen:function(e){o.push(e);const t=()=>{const t=o.indexOf(e);t>-1&&o.splice(t,1)};return i.push(t),t},destroy:function(){for(const e of i)e();i=[],window.removeEventListener("popstate",l),window.removeEventListener("beforeunload",a)}}}(e,t.state,t.location,t.replace);const r=lv({location:"",base:e,go:function(e,t=!0){t||n.pauseListeners(),history.go(e)},createHref:Sv.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}function Rv(e){return"string"==typeof e||"symbol"==typeof e}const Lv={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},Iv=Symbol("");var Fv;!function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"}(Fv||(Fv={}));function Nv(e,t){return lv(new Error,{type:e,[Iv]:!0},t)}function Mv(e,t){return e instanceof Error&&Iv in e&&(null==t||!!(e.type&t))}const Dv="[^/]+?",Bv={sensitive:!1,strict:!1,start:!0,end:!0},Uv=/[.+*?^${}()[\]/\\]/g;function $v(e,t){let n=0;for(;nt.length?1===t.length&&80===t[0]?1:-1:0}function Vv(e,t){let n=0;const r=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const zv={type:0,value:""},qv=/[a-zA-Z0-9_]/;function Wv(e,t,n){const r=function(e,t){const n=lv({},Bv,t),r=[];let o=n.start?"^":"";const i=[];for(const t of e){const e=t.length?[]:[90];n.strict&&!t.length&&(o+="/");for(let r=0;r1&&("*"===l||"+"===l)&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),i.push({type:1,value:u,regexp:c,repeatable:"*"===l||"+"===l,optional:"*"===l||"?"===l})):t("Invalid state to consume buffer"),u="")}function p(){u+=l}for(;a{i(p)}:uv}function i(e){if(Rv(e)){const t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(i),t.alias.forEach(i))}else{const t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(i),e.alias.forEach(i))}}function s(e){let t=0;for(;t=0&&(e.record.path!==n[t].record.path||!Xv(e,n[t]));)t++;n.splice(t,0,e),e.record.name&&!Jv(e)&&r.set(e.record.name,e)}return t=Zv({strict:!1,end:!0,sensitive:!1},t),e.forEach((e=>o(e))),{addRoute:o,resolve:function(e,t){let o,i,s,l={};if("name"in e&&e.name){if(o=r.get(e.name),!o)throw Nv(1,{location:e});0,s=o.record.name,l=lv(Gv(t.params,o.keys.filter((e=>!e.optional)).map((e=>e.name))),e.params&&Gv(e.params,o.keys.map((e=>e.name)))),i=o.stringify(l)}else if("path"in e)i=e.path,o=n.find((e=>e.re.test(i))),o&&(l=o.parse(i),s=o.record.name);else{if(o=t.name?r.get(t.name):n.find((e=>e.re.test(t.path))),!o)throw Nv(1,{location:e,currentLocation:t});s=o.record.name,l=lv({},t.params,e.params),i=o.stringify(l)}const a=[];let u=o;for(;u;)a.unshift(u.record),u=u.parent;return{name:s,path:i,params:l,matched:a,meta:Qv(a)}},removeRoute:i,getRoutes:function(){return n},getRecordMatcher:function(e){return r.get(e)}}}function Gv(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function Yv(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]="object"==typeof n?n[r]:n;return t}function Jv(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Qv(e){return e.reduce(((e,t)=>lv(e,t.meta)),{})}function Zv(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function Xv(e,t){return t.children.some((t=>t===e||Xv(e,t)))}const eg=/#/g,tg=/&/g,ng=/\//g,rg=/=/g,og=/\?/g,ig=/\+/g,sg=/%5B/g,lg=/%5D/g,ag=/%5E/g,ug=/%60/g,cg=/%7B/g,fg=/%7C/g,pg=/%7D/g,dg=/%20/g;function hg(e){return encodeURI(""+e).replace(fg,"|").replace(sg,"[").replace(lg,"]")}function vg(e){return hg(e).replace(ig,"%2B").replace(dg,"+").replace(eg,"%23").replace(tg,"%26").replace(ug,"`").replace(cg,"{").replace(pg,"}").replace(ag,"^")}function gg(e){return null==e?"":function(e){return hg(e).replace(eg,"%23").replace(og,"%3F")}(e).replace(ng,"%2F")}function mg(e){try{return decodeURIComponent(""+e)}catch(e){}return""+e}function yg(e){const t={};if(""===e||"?"===e)return t;const n=("?"===e[0]?e.slice(1):e).split("&");for(let e=0;ee&&vg(e))):[r&&vg(r)];o.forEach((e=>{void 0!==e&&(t+=(t.length?"&":"")+n,null!=e&&(t+="="+e))}))}return t}function wg(e){const t={};for(const n in e){const r=e[n];void 0!==r&&(t[n]=cv(r)?r.map((e=>null==e?null:""+e)):null==r?r:""+r)}return t}const _g=Symbol(""),xg=Symbol(""),Sg=Symbol(""),Og=Symbol(""),kg=Symbol("");function Eg(){let e=[];return{add:function(t){return e.push(t),()=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)}},list:()=>e.slice(),reset:function(){e=[]}}}function Cg(e,t,n,r,o){const i=r&&(r.enterCallbacks[o]=r.enterCallbacks[o]||[]);return()=>new Promise(((s,l)=>{const a=e=>{var a;!1===e?l(Nv(4,{from:n,to:t})):e instanceof Error?l(e):"string"==typeof(a=e)||a&&"object"==typeof a?l(Nv(2,{from:t,to:e})):(i&&r.enterCallbacks[o]===i&&"function"==typeof e&&i.push(e),s())},u=e.call(r&&r.instances[o],t,n,a);let c=Promise.resolve(u);e.length<3&&(c=c.then(a)),c.catch((e=>l(e)))}))}function Pg(e,t,n,r){const o=[];for(const s of e){0;for(const e in s.components){let l=s.components[e];if("beforeRouteEnter"===t||s.instances[e])if("object"==typeof(i=l)||"displayName"in i||"props"in i||"__vccOpts"in i){const i=(l.__vccOpts||l)[t];i&&o.push(Cg(i,n,r,s,e))}else{let i=l();0,o.push((()=>i.then((o=>{if(!o)return Promise.reject(new Error(`Couldn't resolve component "${e}" at "${s.path}"`));const i=sv(o)?o.default:o;s.components[e]=i;const l=(i.__vccOpts||i)[t];return l&&Cg(l,n,r,s,e)()}))))}}}var i;return o}function Tg(e){const t=Yo(Sg),n=Yo(Og),r=Rs((()=>t.resolve(Wt(e.to)))),o=Rs((()=>{const{matched:e}=r.value,{length:t}=e,o=e[t-1],i=n.matched;if(!o||!i.length)return-1;const s=i.findIndex(vv.bind(null,o));if(s>-1)return s;const l=jg(e[t-2]);return t>1&&jg(o)===l&&i[i.length-1].path!==l?i.findIndex(vv.bind(null,e[t-2])):s})),i=Rs((()=>o.value>-1&&function(e,t){for(const n in t){const r=t[n],o=e[n];if("string"==typeof r){if(r!==o)return!1}else if(!cv(o)||o.length!==r.length||r.some(((e,t)=>e!==o[t])))return!1}return!0}(n.params,r.value.params))),s=Rs((()=>o.value>-1&&o.value===n.matched.length-1&&gv(n.params,r.value.params)));return{route:r,href:Rs((()=>r.value.href)),isActive:i,isExactActive:s,navigate:function(n={}){return function(e){if(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)return;if(e.defaultPrevented)return;if(void 0!==e.button&&0!==e.button)return;if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}e.preventDefault&&e.preventDefault();return!0}(n)?t[Wt(e.replace)?"replace":"push"](Wt(e.to)).catch(uv):Promise.resolve()}}}const Ag=Lr({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:Tg,setup(e,{slots:t}){const n=kt(Tg(e)),{options:r}=Yo(Sg),o=Rs((()=>({[Rg(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[Rg(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive})));return()=>{const r=t.default&&t.default(n);return e.custom?r:Ls("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},r)}}});function jg(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Rg=(e,t,n)=>null!=e?e:null!=t?t:n;function Lg(e,t){if(!e)return null;const n=e(t);return 1===n.length?n[0]:n}const Ig=Lr({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=Yo(kg),o=Rs((()=>e.route||r.value)),i=Yo(xg,0),s=Rs((()=>{let e=Wt(i);const{matched:t}=o.value;let n;for(;(n=t[e])&&!n.components;)e++;return e})),l=Rs((()=>o.value.matched[s.value]));Go(xg,Rs((()=>s.value+1))),Go(_g,l),Go(kg,o);const a=$t();return dr((()=>[a.value,l.value,e.name]),(([e,t,n],[r,o,i])=>{t&&(t.instances[n]=e,o&&o!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=o.leaveGuards),t.updateGuards.size||(t.updateGuards=o.updateGuards))),!e||!t||o&&vv(t,o)&&r||(t.enterCallbacks[n]||[]).forEach((t=>t(e)))}),{flush:"post"}),()=>{const r=o.value,i=e.name,s=l.value,u=s&&s.components[i];if(!u)return Lg(n.default,{Component:u,route:r});const c=s.props[i],f=c?!0===c?r.params:"function"==typeof c?c(r):c:null,p=Ls(u,lv({},f,t,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(s.instances[i]=null)},ref:a}));return Lg(n.default,{Component:p,route:r})||p}}});function Fg(){return Yo(Sg)}function Ng(){return Yo(Og)}function Mg(e,t,...n){if(e in t){let r=t[e];return"function"==typeof r?r(...n):r}let r=new Error(`Tried to handle "${e}" but there is no handler defined. Only defined handlers are: ${Object.keys(t).map((e=>`"${e}"`)).join(", ")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(r,Mg),r}var Dg=(e=>(e[e.None=0]="None",e[e.RenderStrategy=1]="RenderStrategy",e[e.Static=2]="Static",e))(Dg||{}),Bg=(e=>(e[e.Unmount=0]="Unmount",e[e.Hidden=1]="Hidden",e))(Bg||{});function Ug({visible:e=!0,features:t=0,ourProps:n,theirProps:r,...o}){var i;let s=Hg(r,n),l=Object.assign(o,{props:s});if(e||2&t&&s.static)return $g(l);if(1&t){return Mg(null==(i=s.unmount)||i?0:1,{0:()=>null,1:()=>$g({...o,props:{...s,hidden:!0,style:{display:"none"}}})})}return $g(l)}function $g({props:e,attrs:t,slots:n,slot:r,name:o}){var i,s;let{as:l,...a}=zg(e,["unmount","static"]),u=null==(i=n.default)?void 0:i.call(n,r),c={};if(r){let e=!1,t=[];for(let[n,o]of Object.entries(r))"boolean"==typeof o&&(e=!0),!0===o&&t.push(n);e&&(c["data-headlessui-state"]=t.join(" "))}if("template"===l){if(u=Vg(null!=u?u:[]),Object.keys(a).length>0||Object.keys(t).length>0){let[e,...n]=null!=u?u:[];if(!function(e){return null!=e&&("string"==typeof e.type||"object"==typeof e.type||"function"==typeof e.type)}(e)||n.length>0)throw new Error(['Passing props on "template"!',"",`The current component <${o} /> is rendering a "template".`,"However we need to passthrough the following props:",Object.keys(a).concat(Object.keys(t)).map((e=>e.trim())).filter(((e,t,n)=>n.indexOf(e)===t)).sort(((e,t)=>e.localeCompare(t))).map((e=>` - ${e}`)).join("\n"),"","You can apply a few solutions:",['Add an `as="..."` prop, to ensure that we render an actual element instead of a "template".',"Render a single element as the child so that we can forward the props onto that element."].map((e=>` - ${e}`)).join("\n")].join("\n"));let r=Hg(null!=(s=e.props)?s:{},a),i=es(e,r);for(let e in r)e.startsWith("on")&&(i.props||(i.props={}),i.props[e]=r[e]);return i}return Array.isArray(u)&&1===u.length?u[0]:u}return Ls(l,Object.assign({},a,c),{default:()=>u})}function Vg(e){return e.flatMap((e=>e.type===Ai?Vg(e.children):[e]))}function Hg(...e){if(0===e.length)return{};if(1===e.length)return e[0];let t={},n={};for(let r of e)for(let e in r)e.startsWith("on")&&"function"==typeof r[e]?(null!=n[e]||(n[e]=[]),n[e].push(r[e])):t[e]=r[e];if(t.disabled||t["aria-disabled"])return Object.assign(t,Object.fromEntries(Object.keys(n).map((e=>[e,void 0]))));for(let e in n)Object.assign(t,{[e](t,...r){let o=n[e];for(let e of o){if(t instanceof Event&&t.defaultPrevented)return;e(t,...r)}}});return t}function zg(e,t=[]){let n=Object.assign({},e);for(let e of t)e in n&&delete n[e];return n}let qg=0;function Wg(){return++qg}var Kg=(e=>(e.Space=" ",e.Enter="Enter",e.Escape="Escape",e.Backspace="Backspace",e.Delete="Delete",e.ArrowLeft="ArrowLeft",e.ArrowUp="ArrowUp",e.ArrowRight="ArrowRight",e.ArrowDown="ArrowDown",e.Home="Home",e.End="End",e.PageUp="PageUp",e.PageDown="PageDown",e.Tab="Tab",e))(Kg||{});var Gg=(e=>(e[e.First=0]="First",e[e.Previous=1]="Previous",e[e.Next=2]="Next",e[e.Last=3]="Last",e[e.Specific=4]="Specific",e[e.Nothing=5]="Nothing",e))(Gg||{});function Yg(e,t){let n=t.resolveItems();if(n.length<=0)return null;let r=t.resolveActiveIndex(),o=null!=r?r:-1,i=(()=>{switch(e.focus){case 0:return n.findIndex((e=>!t.resolveDisabled(e)));case 1:{let e=n.slice().reverse().findIndex(((e,n,r)=>!(-1!==o&&r.length-n-1>=o)&&!t.resolveDisabled(e)));return-1===e?e:n.length-1-e}case 2:return n.findIndex(((e,n)=>!(n<=o)&&!t.resolveDisabled(e)));case 3:{let e=n.slice().reverse().findIndex((e=>!t.resolveDisabled(e)));return-1===e?e:n.length-1-e}case 4:return n.findIndex((n=>t.resolveId(n)===e.id));case 5:return null;default:!function(e){throw new Error("Unexpected object: "+e)}(e)}})();return-1===i?r:i}function Jg(e){var t;return null==e||null==e.value?null:null!=(t=e.value.$el)?t:e.value}var Qg=Object.defineProperty,Zg=(e,t,n)=>(((e,t,n)=>{t in e?Qg(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n})(e,"symbol"!=typeof t?t+"":t,n),n);let Xg=new class{constructor(){Zg(this,"current",this.detect()),Zg(this,"currentId",0)}set(e){this.current!==e&&(this.currentId=0,this.current=e)}reset(){this.set(this.detect())}nextId(){return++this.currentId}get isServer(){return"server"===this.current}get isClient(){return"client"===this.current}detect(){return"undefined"==typeof window||"undefined"==typeof document?"server":"client"}};function em(e){if(Xg.isServer)return null;if(e instanceof Node)return e.ownerDocument;if(null!=e&&e.hasOwnProperty("value")){let t=Jg(e);if(t)return t.ownerDocument}return document}let tm=Symbol("Context");var nm=(e=>(e[e.Open=1]="Open",e[e.Closed=2]="Closed",e[e.Closing=4]="Closing",e[e.Opening=8]="Opening",e))(nm||{});function rm(){return Yo(tm,null)}function om(e){Go(tm,e)}function im(e,t){if(e)return e;let n=null!=t?t:"button";return"string"==typeof n&&"button"===n.toLowerCase()?"button":void 0}function sm(e,t){let n=$t(im(e.value.type,e.value.as));return Jr((()=>{n.value=im(e.value.type,e.value.as)})),ur((()=>{var e;n.value||Jg(t)&&Jg(t)instanceof HTMLButtonElement&&(null==(e=Jg(t))||!e.hasAttribute("type"))&&(n.value="button")})),n}let lm=["[contentEditable=true]","[tabindex]","a[href]","area[href]","button:not([disabled])","iframe","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].map((e=>`${e}:not([tabindex='-1'])`)).join(",");var am=(e=>(e[e.First=1]="First",e[e.Previous=2]="Previous",e[e.Next=4]="Next",e[e.Last=8]="Last",e[e.WrapAround=16]="WrapAround",e[e.NoScroll=32]="NoScroll",e))(am||{}),um=(e=>(e[e.Error=0]="Error",e[e.Overflow=1]="Overflow",e[e.Success=2]="Success",e[e.Underflow=3]="Underflow",e))(um||{}),cm=(e=>(e[e.Previous=-1]="Previous",e[e.Next=1]="Next",e))(cm||{});function fm(e=document.body){return null==e?[]:Array.from(e.querySelectorAll(lm)).sort(((e,t)=>Math.sign((e.tabIndex||Number.MAX_SAFE_INTEGER)-(t.tabIndex||Number.MAX_SAFE_INTEGER))))}var pm=(e=>(e[e.Strict=0]="Strict",e[e.Loose=1]="Loose",e))(pm||{});function dm(e,t=0){var n;return e!==(null==(n=em(e))?void 0:n.body)&&Mg(t,{0:()=>e.matches(lm),1(){let t=e;for(;null!==t;){if(t.matches(lm))return!0;t=t.parentElement}return!1}})}function hm(e){let t=em(e);bn((()=>{t&&!dm(t.activeElement,0)&&gm(e)}))}var vm=(e=>(e[e.Keyboard=0]="Keyboard",e[e.Mouse=1]="Mouse",e))(vm||{});function gm(e){null==e||e.focus({preventScroll:!0})}"undefined"!=typeof window&&"undefined"!=typeof document&&(document.addEventListener("keydown",(e=>{e.metaKey||e.altKey||e.ctrlKey||(document.documentElement.dataset.headlessuiFocusVisible="")}),!0),document.addEventListener("click",(e=>{1===e.detail?delete document.documentElement.dataset.headlessuiFocusVisible:0===e.detail&&(document.documentElement.dataset.headlessuiFocusVisible="")}),!0));let mm=["textarea","input"].join(",");function ym(e,t=(e=>e)){return e.slice().sort(((e,n)=>{let r=t(e),o=t(n);if(null===r||null===o)return 0;let i=r.compareDocumentPosition(o);return i&Node.DOCUMENT_POSITION_FOLLOWING?-1:i&Node.DOCUMENT_POSITION_PRECEDING?1:0}))}function bm(e,t,{sorted:n=!0,relativeTo:r=null,skipElements:o=[]}={}){var i;let s=null!=(i=Array.isArray(e)?e.length>0?e[0].ownerDocument:document:null==e?void 0:e.ownerDocument)?i:document,l=Array.isArray(e)?n?ym(e):e:fm(e);o.length>0&&l.length>1&&(l=l.filter((e=>!o.includes(e)))),r=null!=r?r:s.activeElement;let a,u=(()=>{if(5&t)return 1;if(10&t)return-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),c=(()=>{if(1&t)return 0;if(2&t)return Math.max(0,l.indexOf(r))-1;if(4&t)return Math.max(0,l.indexOf(r))+1;if(8&t)return l.length-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),f=32&t?{preventScroll:!0}:{},p=0,d=l.length;do{if(p>=d||p+d<=0)return 0;let e=c+p;if(16&t)e=(e+d)%d;else{if(e<0)return 3;if(e>=d)return 1}a=l[e],null==a||a.focus(f),p+=u}while(a!==s.activeElement);return 6&t&&function(e){var t,n;return null!=(n=null==(t=null==e?void 0:e.matches)?void 0:t.call(e,mm))&&n}(a)&&a.select(),2}function wm(e,t,n){Xg.isServer||ur((r=>{document.addEventListener(e,t,n),r((()=>document.removeEventListener(e,t,n)))}))}function _m(e,t,n){Xg.isServer||ur((r=>{window.addEventListener(e,t,n),r((()=>window.removeEventListener(e,t,n)))}))}function xm(e,t,n=Rs((()=>!0))){function r(r,o){if(!n.value||r.defaultPrevented)return;let i=o(r);if(null===i||!i.getRootNode().contains(i))return;let s=function e(t){return"function"==typeof t?e(t()):Array.isArray(t)||t instanceof Set?t:[t]}(e);for(let e of s){if(null===e)continue;let t=e instanceof HTMLElement?e:Jg(e);if(null!=t&&t.contains(i)||r.composed&&r.composedPath().includes(t))return}return!dm(i,pm.Loose)&&-1!==i.tabIndex&&r.preventDefault(),t(r,i)}let o=$t(null);wm("pointerdown",(e=>{var t,r;n.value&&(o.value=(null==(r=null==(t=e.composedPath)?void 0:t.call(e))?void 0:r[0])||e.target)}),!0),wm("mousedown",(e=>{var t,r;n.value&&(o.value=(null==(r=null==(t=e.composedPath)?void 0:t.call(e))?void 0:r[0])||e.target)}),!0),wm("click",(e=>{o.value&&(r(e,(()=>o.value)),o.value=null)}),!0),wm("touchend",(e=>r(e,(()=>e.target instanceof HTMLElement?e.target:null))),!0),_m("blur",(e=>r(e,(()=>window.document.activeElement instanceof HTMLIFrameElement?window.document.activeElement:null))),!0)}function Sm(e){return[e.screenX,e.screenY]}function Om(){let e=$t([-1,-1]);return{wasMoved(t){let n=Sm(t);return(e.value[0]!==n[0]||e.value[1]!==n[1])&&(e.value=n,!0)},update(t){e.value=Sm(t)}}}let km=/([\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF])/g;function Em(e){var t,n;let r=null!=(t=e.innerText)?t:"",o=e.cloneNode(!0);if(!(o instanceof HTMLElement))return r;let i=!1;for(let e of o.querySelectorAll('[hidden],[aria-hidden],[role="img"]'))e.remove(),i=!0;let s=i?null!=(n=o.innerText)?n:"":r;return km.test(s)&&(s=s.replace(km,"")),s}function Cm(e){let t=$t(""),n=$t("");return()=>{let r=Jg(e);if(!r)return"";let o=r.innerText;if(t.value===o)return n.value;let i=function(e){let t=e.getAttribute("aria-label");if("string"==typeof t)return t.trim();let n=e.getAttribute("aria-labelledby");if(n){let e=n.split(" ").map((e=>{let t=document.getElementById(e);if(t){let e=t.getAttribute("aria-label");return"string"==typeof e?e.trim():Em(t).trim()}return null})).filter(Boolean);if(e.length>0)return e.join(", ")}return Em(e).trim()}(r).trim().toLowerCase();return t.value=o,n.value=i,i}}var Pm=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(Pm||{}),Tm=(e=>(e[e.Pointer=0]="Pointer",e[e.Other=1]="Other",e))(Tm||{});let Am=Symbol("MenuContext");function jm(e){let t=Yo(Am,null);if(null===t){let t=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,jm),t}return t}let Rm=Lr({name:"Menu",props:{as:{type:[Object,String],default:"template"}},setup(e,{slots:t,attrs:n}){let r=$t(1),o=$t(null),i=$t(null),s=$t([]),l=$t(""),a=$t(null),u=$t(1);function c(e=(e=>e)){let t=null!==a.value?s.value[a.value]:null,n=ym(e(s.value.slice()),(e=>Jg(e.dataRef.domRef))),r=t?n.indexOf(t):null;return-1===r&&(r=null),{items:n,activeItemIndex:r}}let f={menuState:r,buttonRef:o,itemsRef:i,items:s,searchQuery:l,activeItemIndex:a,activationTrigger:u,closeMenu:()=>{r.value=1,a.value=null},openMenu:()=>r.value=0,goToItem(e,t,n){let r=c(),o=Yg(e===Gg.Specific?{focus:Gg.Specific,id:t}:{focus:e},{resolveItems:()=>r.items,resolveActiveIndex:()=>r.activeItemIndex,resolveId:e=>e.id,resolveDisabled:e=>e.dataRef.disabled});l.value="",a.value=o,u.value=null!=n?n:1,s.value=r.items},search(e){let t=""!==l.value?0:1;l.value+=e.toLowerCase();let n=(null!==a.value?s.value.slice(a.value+t).concat(s.value.slice(0,a.value+t)):s.value).find((e=>e.dataRef.textValue.startsWith(l.value)&&!e.dataRef.disabled)),r=n?s.value.indexOf(n):-1;-1===r||r===a.value||(a.value=r,u.value=1)},clearSearch(){l.value=""},registerItem(e,t){let n=c((n=>[...n,{id:e,dataRef:t}]));s.value=n.items,a.value=n.activeItemIndex,u.value=1},unregisterItem(e){let t=c((t=>{let n=t.findIndex((t=>t.id===e));return-1!==n&&t.splice(n,1),t}));s.value=t.items,a.value=t.activeItemIndex,u.value=1}};return xm([o,i],((e,t)=>{var n;f.closeMenu(),dm(t,pm.Loose)||(e.preventDefault(),null==(n=Jg(o))||n.focus())}),Rs((()=>0===r.value))),Go(Am,f),om(Rs((()=>Mg(r.value,{0:nm.Open,1:nm.Closed})))),()=>{let o={open:0===r.value,close:f.closeMenu};return Ug({ourProps:{},theirProps:e,slot:o,slots:t,attrs:n,name:"Menu"})}}}),Lm=Lr({name:"MenuButton",props:{disabled:{type:Boolean,default:!1},as:{type:[Object,String],default:"button"},id:{type:String,default:()=>`headlessui-menu-button-${Wg()}`}},setup(e,{attrs:t,slots:n,expose:r}){let o=jm("MenuButton");function i(e){switch(e.key){case Kg.Space:case Kg.Enter:case Kg.ArrowDown:e.preventDefault(),e.stopPropagation(),o.openMenu(),bn((()=>{var e;null==(e=Jg(o.itemsRef))||e.focus({preventScroll:!0}),o.goToItem(Gg.First)}));break;case Kg.ArrowUp:e.preventDefault(),e.stopPropagation(),o.openMenu(),bn((()=>{var e;null==(e=Jg(o.itemsRef))||e.focus({preventScroll:!0}),o.goToItem(Gg.Last)}))}}function s(e){if(e.key===Kg.Space)e.preventDefault()}function l(t){e.disabled||(0===o.menuState.value?(o.closeMenu(),bn((()=>{var e;return null==(e=Jg(o.buttonRef))?void 0:e.focus({preventScroll:!0})}))):(t.preventDefault(),o.openMenu(),function(e){requestAnimationFrame((()=>requestAnimationFrame(e)))}((()=>{var e;return null==(e=Jg(o.itemsRef))?void 0:e.focus({preventScroll:!0})}))))}r({el:o.buttonRef,$el:o.buttonRef});let a=sm(Rs((()=>({as:e.as,type:t.type}))),o.buttonRef);return()=>{var r;let u={open:0===o.menuState.value},{id:c,...f}=e;return Ug({ourProps:{ref:o.buttonRef,id:c,type:a.value,"aria-haspopup":"menu","aria-controls":null==(r=Jg(o.itemsRef))?void 0:r.id,"aria-expanded":0===o.menuState.value,onKeydown:i,onKeyup:s,onClick:l},theirProps:f,slot:u,attrs:t,slots:n,name:"MenuButton"})}}}),Im=Lr({name:"MenuItems",props:{as:{type:[Object,String],default:"div"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},id:{type:String,default:()=>`headlessui-menu-items-${Wg()}`}},setup(e,{attrs:t,slots:n,expose:r}){let o=jm("MenuItems"),i=$t(null);function s(e){var t;switch(i.value&&clearTimeout(i.value),e.key){case Kg.Space:if(""!==o.searchQuery.value)return e.preventDefault(),e.stopPropagation(),o.search(e.key);case Kg.Enter:if(e.preventDefault(),e.stopPropagation(),null!==o.activeItemIndex.value){null==(t=Jg(o.items.value[o.activeItemIndex.value].dataRef.domRef))||t.click()}o.closeMenu(),hm(Jg(o.buttonRef));break;case Kg.ArrowDown:return e.preventDefault(),e.stopPropagation(),o.goToItem(Gg.Next);case Kg.ArrowUp:return e.preventDefault(),e.stopPropagation(),o.goToItem(Gg.Previous);case Kg.Home:case Kg.PageUp:return e.preventDefault(),e.stopPropagation(),o.goToItem(Gg.First);case Kg.End:case Kg.PageDown:return e.preventDefault(),e.stopPropagation(),o.goToItem(Gg.Last);case Kg.Escape:e.preventDefault(),e.stopPropagation(),o.closeMenu(),bn((()=>{var e;return null==(e=Jg(o.buttonRef))?void 0:e.focus({preventScroll:!0})}));break;case Kg.Tab:e.preventDefault(),e.stopPropagation(),o.closeMenu(),bn((()=>function(e,t){return bm(fm(),t,{relativeTo:e})}(Jg(o.buttonRef),e.shiftKey?am.Previous:am.Next)));break;default:1===e.key.length&&(o.search(e.key),i.value=setTimeout((()=>o.clearSearch()),350))}}function l(e){if(e.key===Kg.Space)e.preventDefault()}r({el:o.itemsRef,$el:o.itemsRef}),function({container:e,accept:t,walk:n,enabled:r}){ur((()=>{let o=e.value;if(!o||void 0!==r&&!r.value)return;let i=em(e);if(!i)return;let s=Object.assign((e=>t(e)),{acceptNode:t}),l=i.createTreeWalker(o,NodeFilter.SHOW_ELEMENT,s,!1);for(;l.nextNode();)n(l.currentNode)}))}({container:Rs((()=>Jg(o.itemsRef))),enabled:Rs((()=>0===o.menuState.value)),accept:e=>"menuitem"===e.getAttribute("role")?NodeFilter.FILTER_REJECT:e.hasAttribute("role")?NodeFilter.FILTER_SKIP:NodeFilter.FILTER_ACCEPT,walk(e){e.setAttribute("role","none")}});let a=rm(),u=Rs((()=>null!==a?(a.value&nm.Open)===nm.Open:0===o.menuState.value));return()=>{var r,i;let a={open:0===o.menuState.value},{id:c,...f}=e;return Ug({ourProps:{"aria-activedescendant":null===o.activeItemIndex.value||null==(r=o.items.value[o.activeItemIndex.value])?void 0:r.id,"aria-labelledby":null==(i=Jg(o.buttonRef))?void 0:i.id,id:c,onKeydown:s,onKeyup:l,role:"menu",tabIndex:0,ref:o.itemsRef},theirProps:f,slot:a,attrs:t,slots:n,features:Dg.RenderStrategy|Dg.Static,visible:u.value,name:"MenuItems"})}}}),Fm=Lr({name:"MenuItem",inheritAttrs:!1,props:{as:{type:[Object,String],default:"template"},disabled:{type:Boolean,default:!1},id:{type:String,default:()=>`headlessui-menu-item-${Wg()}`}},setup(e,{slots:t,attrs:n,expose:r}){let o=jm("MenuItem"),i=$t(null);r({el:i,$el:i});let s=Rs((()=>null!==o.activeItemIndex.value&&o.items.value[o.activeItemIndex.value].id===e.id)),l=Cm(i),a=Rs((()=>({disabled:e.disabled,get textValue(){return l()},domRef:i})));function u(t){if(e.disabled)return t.preventDefault();o.closeMenu(),hm(Jg(o.buttonRef))}function c(){if(e.disabled)return o.goToItem(Gg.Nothing);o.goToItem(Gg.Specific,e.id)}Jr((()=>o.registerItem(e.id,a))),eo((()=>o.unregisterItem(e.id))),ur((()=>{0===o.menuState.value&&s.value&&0!==o.activationTrigger.value&&bn((()=>{var e,t;return null==(t=null==(e=Jg(i))?void 0:e.scrollIntoView)?void 0:t.call(e,{block:"nearest"})}))}));let f=Om();function p(e){f.update(e)}function d(t){f.wasMoved(t)&&(e.disabled||s.value||o.goToItem(Gg.Specific,e.id,0))}function h(t){f.wasMoved(t)&&(e.disabled||s.value&&o.goToItem(Gg.Nothing))}return()=>{let{disabled:r}=e,l={active:s.value,disabled:r,close:o.closeMenu},{id:a,...f}=e;return Ug({ourProps:{id:a,ref:i,role:"menuitem",tabIndex:!0===r?void 0:-1,"aria-disabled":!0===r||void 0,disabled:void 0,onClick:u,onFocus:c,onPointerenter:p,onMouseenter:p,onPointermove:d,onMousemove:d,onPointerleave:h,onMouseleave:h},theirProps:{...n,...f},slot:l,attrs:n,slots:t,name:"MenuItem"})}}});function Nm(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[Ji("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6 18L18 6M6 6l12 12"})])}function Mm(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[Ji("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M10.5 19.5L3 12m0 0l7.5-7.5M3 12h18"})])}function Dm(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[Ji("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z"})])}function Bm(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[Ji("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0"})])}function Um(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[Ji("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M2.25 12.75V12A2.25 2.25 0 014.5 9.75h15A2.25 2.25 0 0121.75 12v.75m-8.69-6.44l-2.12-2.12a1.5 1.5 0 00-1.061-.44H4.5A2.25 2.25 0 002.25 6v12a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18V9a2.25 2.25 0 00-2.25-2.25h-5.379a1.5 1.5 0 01-1.06-.44z"})])}function $m(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[Ji("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.75 9.776c.112-.017.227-.026.344-.026h15.812c.117 0 .232.009.344.026m-16.5 0a2.25 2.25 0 00-1.883 2.542l.857 6a2.25 2.25 0 002.227 1.932H19.05a2.25 2.25 0 002.227-1.932l.857-6a2.25 2.25 0 00-1.883-2.542m-16.5 0V6A2.25 2.25 0 016 3.75h3.879a1.5 1.5 0 011.06.44l2.122 2.12a1.5 1.5 0 001.06.44H18A2.25 2.25 0 0120.25 9v.776"})])}function Vm(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[Ji("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.25 4.5l7.5 7.5-7.5 7.5"})])}function Hm(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[Ji("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 6.75a.75.75 0 110-1.5.75.75 0 010 1.5zM12 12.75a.75.75 0 110-1.5.75.75 0 010 1.5zM12 18.75a.75.75 0 110-1.5.75.75 0 010 1.5z"})])}function zm(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[Ji("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M20.25 6.375c0 2.278-3.694 4.125-8.25 4.125S3.75 8.653 3.75 6.375m16.5 0c0-2.278-3.694-4.125-8.25-4.125S3.75 4.097 3.75 6.375m16.5 0v11.25c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125V6.375m16.5 0v3.75m-16.5-3.75v3.75m16.5 0v3.75C20.25 16.153 16.556 18 12 18s-8.25-1.847-8.25-4.125v-3.75m16.5 0c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125"})])}function qm(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[Ji("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0l3.181 3.183a8.25 8.25 0 0013.803-3.7M4.031 9.865a8.25 8.25 0 0113.803-3.7l3.181 3.182m0-4.991v4.99"})])}var Wm=pd({id:"hosts",state:function(){return{selectedHostIdentifier:null}},getters:{supportsHosts:function(){return LogViewer.supports_hosts},hosts:function(){return LogViewer.hosts||[]},hasRemoteHosts:function(){return this.hosts.some((function(e){return e.is_remote}))},selectedHost:function(){var e=this;return this.hosts.find((function(t){return t.identifier===e.selectedHostIdentifier}))},localHost:function(){return this.hosts.find((function(e){return!e.is_remote}))},hostQueryParam:function(){return this.selectedHost&&this.selectedHost.is_remote?this.selectedHost.identifier:void 0}},actions:{selectHost:function(e){var t;this.supportsHosts||(e=null),"string"==typeof e&&(e=this.hosts.find((function(t){return t.identifier===e}))),e||(e=this.hosts.find((function(e){return!e.is_remote}))),this.selectedHostIdentifier=(null===(t=e)||void 0===t?void 0:t.identifier)||null}}});var Km;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;const Gm="undefined"!=typeof window,Ym=(Object.prototype.toString,e=>"function"==typeof e),Jm=e=>"string"==typeof e,Qm=()=>{};Gm&&(null==(Km=null==window?void 0:window.navigator)?void 0:Km.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function Zm(e){return"function"==typeof e?e():Wt(e)}function Xm(e,t){return function(...n){return new Promise(((r,o)=>{Promise.resolve(e((()=>t.apply(this,n)),{fn:t,thisArg:this,args:n})).then(r).catch(o)}))}}const ey=e=>e();function ty(e){return!!ge()&&(me(e),!0)}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var ny=Object.getOwnPropertySymbols,ry=Object.prototype.hasOwnProperty,oy=Object.prototype.propertyIsEnumerable,iy=(e,t)=>{var n={};for(var r in e)ry.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&ny)for(var r of ny(e))t.indexOf(r)<0&&oy.call(e,r)&&(n[r]=e[r]);return n};function sy(e,t,n={}){const r=n,{eventFilter:o=ey}=r,i=iy(r,["eventFilter"]);return dr(e,Xm(o,t),i)}Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var ly=Object.defineProperty,ay=Object.defineProperties,uy=Object.getOwnPropertyDescriptors,cy=Object.getOwnPropertySymbols,fy=Object.prototype.hasOwnProperty,py=Object.prototype.propertyIsEnumerable,dy=(e,t,n)=>t in e?ly(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,hy=(e,t)=>{for(var n in t||(t={}))fy.call(t,n)&&dy(e,n,t[n]);if(cy)for(var n of cy(t))py.call(t,n)&&dy(e,n,t[n]);return e},vy=(e,t)=>ay(e,uy(t)),gy=(e,t)=>{var n={};for(var r in e)fy.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&cy)for(var r of cy(e))t.indexOf(r)<0&&py.call(e,r)&&(n[r]=e[r]);return n};function my(e,t,n={}){const r=n,{eventFilter:o}=r,i=gy(r,["eventFilter"]),{eventFilter:s,pause:l,resume:a,isActive:u}=function(e=ey){const t=$t(!0);return{isActive:Ct(t),pause:function(){t.value=!1},resume:function(){t.value=!0},eventFilter:(...n)=>{t.value&&e(...n)}}}(o);return{stop:sy(e,t,vy(hy({},i),{eventFilter:s})),pause:l,resume:a,isActive:u}}Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;function yy(e){var t;const n=Zm(e);return null!=(t=null==n?void 0:n.$el)?t:n}const by=Gm?window:void 0;Gm&&window.document,Gm&&window.navigator,Gm&&window.location;function wy(...e){let t,n,r,o;if(Jm(e[0])||Array.isArray(e[0])?([n,r,o]=e,t=by):[t,n,r,o]=e,!t)return Qm;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const i=[],s=()=>{i.forEach((e=>e())),i.length=0},l=dr((()=>[yy(t),Zm(o)]),(([e,t])=>{s(),e&&i.push(...n.flatMap((n=>r.map((r=>((e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)))(e,n,r,t))))))}),{immediate:!0,flush:"post"}),a=()=>{l(),s()};return ty(a),a}Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;const _y="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},xy="__vueuse_ssr_handlers__";_y[xy]=_y[xy]||{};const Sy=_y[xy];function Oy(e,t){return Sy[e]||t}function ky(e){return null==e?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":"boolean"==typeof e?"boolean":"string"==typeof e?"string":"object"==typeof e?"object":Number.isNaN(e)?"any":"number"}var Ey=Object.defineProperty,Cy=Object.getOwnPropertySymbols,Py=Object.prototype.hasOwnProperty,Ty=Object.prototype.propertyIsEnumerable,Ay=(e,t,n)=>t in e?Ey(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,jy=(e,t)=>{for(var n in t||(t={}))Py.call(t,n)&&Ay(e,n,t[n]);if(Cy)for(var n of Cy(t))Ty.call(t,n)&&Ay(e,n,t[n]);return e};const Ry={boolean:{read:e=>"true"===e,write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Ly="vueuse-storage";function Iy(e,t,n,r={}){var o;const{flush:i="pre",deep:s=!0,listenToStorageChanges:l=!0,writeDefaults:a=!0,mergeDefaults:u=!1,shallow:c,window:f=by,eventFilter:p,onError:d=(e=>{})}=r,h=(c?Vt:$t)(t);if(!n)try{n=Oy("getDefaultStorage",(()=>{var e;return null==(e=by)?void 0:e.localStorage}))()}catch(e){d(e)}if(!n)return h;const v=Zm(t),g=ky(v),m=null!=(o=r.serializer)?o:Ry[g],{pause:y,resume:b}=my(h,(()=>function(t){try{if(null==t)n.removeItem(e);else{const r=m.write(t),o=n.getItem(e);o!==r&&(n.setItem(e,r),f&&f.dispatchEvent(new CustomEvent(Ly,{detail:{key:e,oldValue:o,newValue:r,storageArea:n}})))}}catch(e){d(e)}}(h.value)),{flush:i,deep:s,eventFilter:p});return f&&l&&(wy(f,"storage",w),wy(f,Ly,(function(e){w(e.detail)}))),w(),h;function w(t){if(!t||t.storageArea===n)if(t&&null==t.key)h.value=v;else if(!t||t.key===e){y();try{h.value=function(t){const r=t?t.newValue:n.getItem(e);if(null==r)return a&&null!==v&&n.setItem(e,m.write(v)),v;if(!t&&u){const e=m.read(r);return Ym(u)?u(e,v):"object"!==g||Array.isArray(e)?e:jy(jy({},v),e)}return"string"!=typeof r?r:m.read(r)}(t)}catch(e){d(e)}finally{t?bn(b):b()}}}}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;new Map;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;function Fy(e,t,n={}){const{window:r=by}=n;return Iy(e,t,null==r?void 0:r.localStorage,n)}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var Ny,My;(My=Ny||(Ny={})).UP="UP",My.RIGHT="RIGHT",My.DOWN="DOWN",My.LEFT="LEFT",My.NONE="NONE";Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var Dy=Object.defineProperty,By=Object.getOwnPropertySymbols,Uy=Object.prototype.hasOwnProperty,$y=Object.prototype.propertyIsEnumerable,Vy=(e,t,n)=>t in e?Dy(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;((e,t)=>{for(var n in t||(t={}))Uy.call(t,n)&&Vy(e,n,t[n]);if(By)for(var n of By(t))$y.call(t,n)&&Vy(e,n,t[n])})({linear:function(e){return e}},{easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]});var Hy=pd({id:"search",state:function(){return{query:"",searchMoreRoute:null,searching:!1,percentScanned:0,error:null}},getters:{hasQuery:function(e){return""!==String(e.query).trim()}},actions:{init:function(){this.checkSearchProgress()},setQuery:function(e){this.query=e},update:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this.query=e,this.error=t&&""!==t?t:null,this.searchMoreRoute=n,this.searching=r,this.percentScanned=o,this.searching&&this.checkSearchProgress()},checkSearchProgress:function(){var e=this,t=this.query;if(""!==t){var n="?"+new URLSearchParams({query:t});ov.get(this.searchMoreRoute+n).then((function(n){var r=n.data;if(e.query===t){var o=e.searching;e.searching=r.hasMoreResults,e.percentScanned=r.percentScanned,e.searching?e.checkSearchProgress():o&&!e.searching&&window.dispatchEvent(new CustomEvent("reload-results"))}}))}}}}),zy=pd({id:"pagination",state:function(){return{page:1,pagination:{}}},getters:{currentPage:function(e){return 1!==e.page?Number(e.page):null},links:function(e){var t;return((null===(t=e.pagination)||void 0===t?void 0:t.links)||[]).slice(1,-1)},linksShort:function(e){var t;return((null===(t=e.pagination)||void 0===t?void 0:t.links_short)||[]).slice(1,-1)},hasPages:function(e){var t;return(null===(t=e.pagination)||void 0===t?void 0:t.last_page)>1},hasMorePages:function(e){var t;return null!==(null===(t=e.pagination)||void 0===t?void 0:t.next_page_url)}},actions:{setPagination:function(e){var t,n;(this.pagination=e,(null===(t=this.pagination)||void 0===t?void 0:t.last_page)0}))},totalResults:function(){return this.levelsFound.reduce((function(e,t){return e+t.count}),0)},levelsSelected:function(){return this.levelsFound.filter((function(e){return e.selected}))},totalResultsSelected:function(){return this.levelsSelected.reduce((function(e,t){return e+t.count}),0)}},actions:{setLevelCounts:function(e){e.hasOwnProperty("length")?this.levelCounts=e:this.levelCounts=Object.values(e),this.allLevels=e.map((function(e){return e.level}))},selectAllLevels:function(){this.excludedLevels=[],this.levelCounts.forEach((function(e){return e.selected=!0}))},deselectAllLevels:function(){this.excludedLevels=this.allLevels,this.levelCounts.forEach((function(e){return e.selected=!1}))},toggleLevel:function(e){var t=this.levelCounts.find((function(t){return t.level===e}))||{};this.excludedLevels.includes(e)?(this.excludedLevels=this.excludedLevels.filter((function(t){return t!==e})),t.selected=!0):(this.excludedLevels.push(e),t.selected=!1)}}}),Wy=n(486),Ky={System:"System",Light:"Light",Dark:"Dark"},Gy=[{label:"Datetime",data_key:"datetime"},{label:"Severity",data_key:"level"},{label:"Message",data_key:"message"}],Yy=pd({id:"logViewer",state:function(){return{theme:Fy("logViewerTheme",Ky.System),shorterStackTraces:Fy("logViewerShorterStackTraces",!1),direction:Fy("logViewerDirection","desc"),resultsPerPage:Fy("logViewerResultsPerPage",25),helpSlideOverOpen:!1,loading:!1,error:null,logs:[],columns:Gy,levelCounts:[],performance:{},hasMoreResults:!1,percentScanned:100,abortController:null,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight,stacksOpen:[],stacksInView:[],stackTops:{},containerTop:0,showLevelsDropdown:!0}},getters:{selectedFile:function(){return nb().selectedFile},isOpen:function(e){return function(t){return e.stacksOpen.includes(t)}},isMobile:function(e){return e.viewportWidth<=1023},tableRowHeight:function(){return this.isMobile?29:36},headerHeight:function(){return this.isMobile?0:36},shouldBeSticky:function(e){var t=this;return function(n){return t.isOpen(n)&&e.stacksInView.includes(n)}},stickTopPosition:function(){var e=this;return function(t){var n=e.pixelsAboveFold(t);return n<0?Math.max(e.headerHeight-e.tableRowHeight,e.headerHeight+n)+"px":e.headerHeight+"px"}},pixelsAboveFold:function(e){var t=this;return function(n){var r=document.getElementById("tbody-"+n);if(!r)return!1;var o=r.getClientRects()[0];return o.top+o.height-t.tableRowHeight-t.headerHeight-e.containerTop}},isInViewport:function(){var e=this;return function(t){return e.pixelsAboveFold(t)>-e.tableRowHeight}}},actions:{setViewportDimensions:function(e,t){this.viewportWidth=e,this.viewportHeight=t;var n=document.querySelector(".log-item-container");n&&(this.containerTop=n.getBoundingClientRect().top)},toggleTheme:function(){switch(this.theme){case Ky.System:this.theme=Ky.Light;break;case Ky.Light:this.theme=Ky.Dark;break;default:this.theme=Ky.System}this.syncTheme()},syncTheme:function(){var e=this.theme;e===Ky.Dark||e===Ky.System&&window.matchMedia("(prefers-color-scheme: dark)").matches?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")},toggle:function(e){this.isOpen(e)?this.stacksOpen=this.stacksOpen.filter((function(t){return t!==e})):this.stacksOpen.push(e),this.onScroll()},onScroll:function(){var e=this;this.stacksOpen.forEach((function(t){e.isInViewport(t)?(e.stacksInView.includes(t)||e.stacksInView.push(t),e.stackTops[t]=e.stickTopPosition(t)):(e.stacksInView=e.stacksInView.filter((function(e){return e!==t})),delete e.stackTops[t])}))},reset:function(){this.stacksOpen=[],this.stacksInView=[],this.stackTops={};var e=document.querySelector(".log-item-container");e&&(this.containerTop=e.getBoundingClientRect().top,e.scrollTo(0,0))},loadLogs:(0,Wy.debounce)((function(){var e,t=this,n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).silently,r=void 0!==n&&n,o=Wm(),i=nb(),s=Hy(),l=zy(),a=qy();if(0!==i.folders.length&&(this.abortController&&this.abortController.abort(),this.selectedFile||s.hasQuery)){this.abortController=new AbortController;var u={host:o.hostQueryParam,file:null===(e=this.selectedFile)||void 0===e?void 0:e.identifier,direction:this.direction,query:s.query,page:l.currentPage,per_page:this.resultsPerPage,exclude_levels:It(a.excludedLevels.length>0?a.excludedLevels:""),exclude_file_types:It(i.fileTypesExcluded.length>0?i.fileTypesExcluded:""),shorter_stack_traces:this.shorterStackTraces};r||(this.loading=!0),ov.get("".concat(LogViewer.basePath,"/api/logs"),{params:u,signal:this.abortController.signal}).then((function(e){var n=e.data;t.logs=u.host?n.logs.map((function(e){var t={host:u.host,file:e.file_identifier,query:"log-index:".concat(e.index)};return e.url="".concat(window.location.host).concat(LogViewer.basePath,"?").concat(new URLSearchParams(t)),e})):n.logs,t.columns=n.columns||Gy,t.hasMoreResults=n.hasMoreResults,t.percentScanned=n.percentScanned,t.error=n.error||null,t.performance=n.performance||{},a.setLevelCounts(n.levelCounts),l.setPagination(n.pagination),t.loading=!1,r||bn((function(){t.reset(),n.expandAutomatically&&t.stacksOpen.push(0)})),t.hasMoreResults&&t.loadLogs({silently:!0})})).catch((function(e){var n;if("ERR_CANCELED"===e.code)return t.hasMoreResults=!1,void(t.percentScanned=100);t.loading=!1,t.error=e.message,null!==(n=e.response)&&void 0!==n&&null!==(n=n.data)&&void 0!==n&&n.message&&(t.error+=": "+e.response.data.message)}))}}),10)}});function Jy(e){return Jy="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Jy(e)}function Qy(e){return function(e){if(Array.isArray(e))return Zy(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Zy(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Zy(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Zy(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0}))},files:function(e){return e.folders.flatMap((function(e){return e.files}))},selectedFile:function(e){return e.files.find((function(t){return t.identifier===e.selectedFileIdentifier}))},foldersOpen:function(e){return e.openFolderIdentifiers.map((function(t){return e.folders.find((function(e){return e.identifier===t}))}))},isOpen:function(){var e=this;return function(t){return e.foldersOpen.map((function(e){return e.identifier})).includes(t.identifier)}},isChecked:function(e){return function(t){return e.filesChecked.includes("string"==typeof t?t:t.identifier)}},shouldBeSticky:function(e){var t=this;return function(n){return t.isOpen(n)&&e.foldersInView.map((function(e){return e.identifier})).includes(n.identifier)}},isInViewport:function(){var e=this;return function(t){return e.pixelsAboveFold(t)>-36}},pixelsAboveFold:function(e){return function(t){var n=document.getElementById("folder-"+t);if(!n)return!1;var r=n.getClientRects()[0];return r.top+r.height-e.containerTop}},hasFilesChecked:function(e){return e.filesChecked.length>0},fileTypesSelected:function(e){return e.fileTypesAvailable.filter((function(t){return e.selectedFileTypes.includes(t.identifier)}))},fileTypesExcluded:function(e){return e.fileTypesAvailable.filter((function(t){return!e.selectedFileTypes.includes(t.identifier)})).map((function(e){return e.identifier}))},selectedFileTypesString:function(){var e=this.fileTypesSelected.map((function(e){return e.name}));return 0===e.length?"Please select at least one file type":1===e.length?e[0]:2===e.length?e.join(" and "):3===e.length?e.slice(0,-1).join(", ")+" and "+e.slice(-1):e.slice(0,3).join(", ")+" and "+(e.length-3)+" more"}},actions:{setDirection:function(e){this.direction=e},selectFile:function(e){this.selectedFileIdentifier!==e&&(this.selectedFileIdentifier=e,this.openFolderForActiveFile(),this.sidebarOpen=!1)},openFolderForActiveFile:function(){var e=this;if(this.selectedFile){var t=this.folders.find((function(t){return t.files.some((function(t){return t.identifier===e.selectedFile.identifier}))}));t&&!this.isOpen(t)&&this.toggle(t)}},openRootFolderIfNoneOpen:function(){var e=this.folders.find((function(e){return e.is_root}));e&&0===this.openFolderIdentifiers.length&&this.openFolderIdentifiers.push(e.identifier)},loadFolders:function(){var e=this;return this.abortController&&this.abortController.abort(),this.selectedHost?(this.abortController=new AbortController,this.loading=!0,ov.get("".concat(LogViewer.basePath,"/api/folders"),{params:{host:this.hostQueryParam,direction:this.direction},signal:this.abortController.signal}).then((function(t){var n=t.data;e.folders=n,e.error=n.error||null,e.loading=!1,0===e.openFolderIdentifiers.length&&(e.openFolderForActiveFile(),e.openRootFolderIfNoneOpen()),e.setAvailableFileTypes(n),e.onScroll()})).catch((function(t){var n;"ERR_CANCELED"!==t.code&&(e.loading=!1,e.error=t.message,null!==(n=t.response)&&void 0!==n&&null!==(n=n.data)&&void 0!==n&&n.message&&(e.error+=": "+t.response.data.message))}))):(this.folders=[],this.error=null,void(this.loading=!1))},setAvailableFileTypes:function(e){var t=e.flatMap((function(e){return e.files.map((function(e){return e.type}))})),n=Qy(new Set(t.map((function(e){return e.value}))));this.fileTypesAvailable=n.map((function(e){return{identifier:e,name:t.find((function(t){return t.value===e})).name,count:t.filter((function(t){return t.value===e})).length}})),this.selectedFileTypes&&0!==this.selectedFileTypes.length||(this.selectedFileTypes=n)},toggle:function(e){this.isOpen(e)?this.openFolderIdentifiers=this.openFolderIdentifiers.filter((function(t){return t!==e.identifier})):this.openFolderIdentifiers.push(e.identifier),this.onScroll()},onScroll:function(){var e=this;this.foldersOpen.forEach((function(t){e.isInViewport(t)?e.foldersInView.includes(t)||e.foldersInView.push(t):e.foldersInView=e.foldersInView.filter((function(e){return e!==t}))}))},reset:function(){this.openFolderIdentifiers=[],this.foldersInView=[];var e=document.getElementById("file-list-container");e&&(this.containerTop=e.getBoundingClientRect().top,e.scrollTo(0,0))},toggleSidebar:function(){this.sidebarOpen=!this.sidebarOpen},checkBoxToggle:function(e){this.isChecked(e)?this.filesChecked=this.filesChecked.filter((function(t){return t!==e})):this.filesChecked.push(e)},toggleCheckboxVisibility:function(){this.checkBoxesVisibility=!this.checkBoxesVisibility},resetChecks:function(){this.filesChecked=[],this.checkBoxesVisibility=!1},clearCacheForFile:function(e){var t=this;return this.clearingCache[e.identifier]=!0,ov.post("".concat(LogViewer.basePath,"/api/files/").concat(e.identifier,"/clear-cache"),{},{params:{host:this.hostQueryParam}}).then((function(){e.identifier===t.selectedFileIdentifier&&Yy().loadLogs(),t.cacheRecentlyCleared[e.identifier]=!0,setTimeout((function(){return t.cacheRecentlyCleared[e.identifier]=!1}),2e3)})).catch((function(e){})).finally((function(){return t.clearingCache[e.identifier]=!1}))},deleteFile:function(e){var t=this;return ov.delete("".concat(LogViewer.basePath,"/api/files/").concat(e.identifier),{params:{host:this.hostQueryParam}}).then((function(){return t.loadFolders()}))},clearCacheForFolder:function(e){var t=this;return this.clearingCache[e.identifier]=!0,ov.post("".concat(LogViewer.basePath,"/api/folders/").concat(e.identifier,"/clear-cache"),{},{params:{host:this.hostQueryParam}}).then((function(){e.files.some((function(e){return e.identifier===t.selectedFileIdentifier}))&&Yy().loadLogs(),t.cacheRecentlyCleared[e.identifier]=!0,setTimeout((function(){return t.cacheRecentlyCleared[e.identifier]=!1}),2e3)})).catch((function(e){})).finally((function(){t.clearingCache[e.identifier]=!1}))},deleteFolder:function(e){var t=this;return this.deleting[e.identifier]=!0,ov.delete("".concat(LogViewer.basePath,"/api/folders/").concat(e.identifier),{params:{host:this.hostQueryParam}}).then((function(){return t.loadFolders()})).catch((function(e){})).finally((function(){t.deleting[e.identifier]=!1}))},deleteSelectedFiles:function(){return ov.post("".concat(LogViewer.basePath,"/api/delete-multiple-files"),{files:this.filesChecked},{params:{host:this.hostQueryParam}})},clearCacheForAllFiles:function(){var e=this;this.clearingCache["*"]=!0,ov.post("".concat(LogViewer.basePath,"/api/clear-cache-all"),{},{params:{host:this.hostQueryParam}}).then((function(){e.cacheRecentlyCleared["*"]=!0,setTimeout((function(){return e.cacheRecentlyCleared["*"]=!1}),2e3),Yy().loadLogs()})).catch((function(e){})).finally((function(){return e.clearingCache["*"]=!1}))}}}),rb=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(e=e||"",t)try{e=e.replace(new RegExp(t,"gi"),"$&")}catch(e){}return ob(e).replace(/<mark>/g,"").replace(/<\/mark>/g,"").replace(/<br\/>/g,"
")},ob=function(e){var t={"&":"&","<":"<",">":">",'"':""","'":"'"};return e.replace(/[&<>"']/g,(function(e){return t[e]}))},ib=function(e){var t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="absolute",t.style.left="-9999px",document.body.appendChild(t);var n=document.getSelection().rangeCount>0&&document.getSelection().getRangeAt(0);t.select(),document.execCommand("copy"),document.body.removeChild(t),n&&(document.getSelection().removeAllRanges(),document.getSelection().addRange(n))},sb=function(e,t,n){var r=e.currentRoute.value,o={host:r.query.host||void 0,file:r.query.file||void 0,query:r.query.query||void 0,page:r.query.page||void 0};"host"===t?(o.file=void 0,o.page=void 0):"file"===t&&void 0!==o.page&&(o.page=void 0),o[t]=n?String(n):void 0,e.push({name:"home",query:o})},lb=function(){var e=$t({});return{dropdownDirections:e,calculateDropdownDirection:function(t){e.value[t.dataset.toggleId]=function(e){window.innerWidth||document.documentElement.clientWidth;var t=window.innerHeight||document.documentElement.clientHeight;return e.getBoundingClientRect().bottom+190=0&&null===n[r].offsetParent;)r--;return n[r]?n[r]:null},yb=function(e,t){for(var n=Array.from(document.querySelectorAll(".".concat(t))),r=n.findIndex((function(t){return t===e}))+1;r0&&t[0].focus();else if(e.key===gb.Hosts){e.preventDefault();var r=document.getElementById("hosts-toggle-button");null==r||r.click()}else if(e.key===gb.Severity){e.preventDefault();var o=document.getElementById("severity-dropdown-toggle");null==o||o.click()}else if(e.key===gb.Settings){e.preventDefault();var i=document.querySelector("#desktop-site-settings .menu-button");null==i||i.click()}else if(e.key===gb.Search){e.preventDefault();var s=document.getElementById("query");null==s||s.focus()}else if(e.key===gb.Refresh){e.preventDefault();var l=document.getElementById("reload-logs-button");null==l||l.click()}},_b=function(e){if("ArrowLeft"===e.key)e.preventDefault(),function(){var e=document.querySelector(".file-item-container.active .file-item-info");if(e)e.nextElementSibling.focus();else{var t,n=document.querySelector(".file-item-container .file-item-info");null==n||null===(t=n.nextElementSibling)||void 0===t||t.focus()}}();else if("ArrowRight"===e.key){var t=bb(document.activeElement,hb),n=Array.from(document.querySelectorAll(".".concat(vb)));n.length>t&&(e.preventDefault(),n[t].focus())}else if("ArrowUp"===e.key){var r=mb(document.activeElement,hb);r&&(e.preventDefault(),r.focus())}else if("ArrowDown"===e.key){var o=yb(document.activeElement,hb);o&&(e.preventDefault(),o.focus())}},xb=function(e){if("ArrowLeft"===e.key){var t=bb(document.activeElement,vb),n=Array.from(document.querySelectorAll(".".concat(hb)));n.length>t&&(e.preventDefault(),n[t].focus())}else if("ArrowUp"===e.key){var r=mb(document.activeElement,vb);r&&(e.preventDefault(),r.focus())}else if("ArrowDown"===e.key){var o=yb(document.activeElement,vb);o&&(e.preventDefault(),o.focus())}else if("Enter"===e.key||" "===e.key){e.preventDefault();var i=document.activeElement;i.click(),i.focus()}},Sb=function(e){if("ArrowUp"===e.key){var t=mb(document.activeElement,db);t&&(e.preventDefault(),t.focus())}else if("ArrowDown"===e.key){var n=yb(document.activeElement,db);n&&(e.preventDefault(),n.focus())}else"ArrowRight"===e.key&&(e.preventDefault(),document.activeElement.nextElementSibling.focus())},Ob=function(e){if("ArrowLeft"===e.key)e.preventDefault(),document.activeElement.previousElementSibling.focus();else if("ArrowRight"===e.key){e.preventDefault();var t=Array.from(document.querySelectorAll(".".concat(hb)));t.length>0&&t[0].focus()}};function kb(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[Ji("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 9.75v6.75m0 0l-3-3m3 3l3-3m-8.25 6a4.5 4.5 0 01-1.41-8.775 5.25 5.25 0 0110.233-2.33 3 3 0 013.758 3.848A3.752 3.752 0 0118 19.5H6.75z"})])}const Eb={__name:"DownloadLink",props:["url"],setup:function(e){var t=e,n=function(){ov.get("".concat(t.url,"/request")).then((function(e){r(e.data.url)})).catch((function(e){e.response&&e.response.data&&alert("".concat(e.message,": ").concat(e.response.data.message,". Check developer console for more info."))}))},r=function(e){var t=document.createElement("a");t.href=e,t.setAttribute("download",""),document.body.appendChild(t),t.click(),document.body.removeChild(t)};return function(e,t){return Ni(),Vi("button",{onClick:n},[lo(e.$slots,"default",{},(function(){return[Qi(Wt(kb),{class:"w-4 h-4 mr-2"}),ts(" Download ")]}))])}}};function Cb(e){return Cb="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Cb(e)}function Pb(){Pb=function(){return t};var e,t={},n=Object.prototype,r=n.hasOwnProperty,o=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},s=i.iterator||"@@iterator",l=i.asyncIterator||"@@asyncIterator",a=i.toStringTag||"@@toStringTag";function u(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(e){u=function(e,t,n){return e[t]=n}}function c(e,t,n,r){var i=t&&t.prototype instanceof m?t:m,s=Object.create(i.prototype),l=new A(r||[]);return o(s,"_invoke",{value:E(e,n,l)}),s}function f(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=c;var p="suspendedStart",d="suspendedYield",h="executing",v="completed",g={};function m(){}function y(){}function b(){}var w={};u(w,s,(function(){return this}));var _=Object.getPrototypeOf,x=_&&_(_(j([])));x&&x!==n&&r.call(x,s)&&(w=x);var S=b.prototype=m.prototype=Object.create(w);function O(e){["next","throw","return"].forEach((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function k(e,t){function n(o,i,s,l){var a=f(e[o],e,i);if("throw"!==a.type){var u=a.arg,c=u.value;return c&&"object"==Cb(c)&&r.call(c,"__await")?t.resolve(c.__await).then((function(e){n("next",e,s,l)}),(function(e){n("throw",e,s,l)})):t.resolve(c).then((function(e){u.value=e,s(u)}),(function(e){return n("throw",e,s,l)}))}l(a.arg)}var i;o(this,"_invoke",{value:function(e,r){function o(){return new t((function(t,o){n(e,r,t,o)}))}return i=i?i.then(o,o):o()}})}function E(t,n,r){var o=p;return function(i,s){if(o===h)throw new Error("Generator is already running");if(o===v){if("throw"===i)throw s;return{value:e,done:!0}}for(r.method=i,r.arg=s;;){var l=r.delegate;if(l){var a=C(l,r);if(a){if(a===g)continue;return a}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(o===p)throw o=v,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);o=h;var u=f(t,n,r);if("normal"===u.type){if(o=r.done?v:d,u.arg===g)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(o=v,r.method="throw",r.arg=u.arg)}}}function C(t,n){var r=n.method,o=t.iterator[r];if(o===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,C(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),g;var i=f(o,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,g;var s=i.arg;return s?s.done?(n[t.resultName]=s.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,g):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function P(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function T(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function A(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(P,this),this.reset(!0)}function j(t){if(t||""===t){var n=t[s];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,i=function n(){for(;++o=0;--i){var s=this.tryEntries[i],l=s.completion;if("root"===s.tryLoc)return o("end");if(s.tryLoc<=this.prev){var a=r.call(s,"catchLoc"),u=r.call(s,"finallyLoc");if(a&&u){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),T(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;T(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:j(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),g}},t}function Tb(e,t,n,r,o,i,s){try{var l=e[i](s),a=l.value}catch(e){return void n(e)}l.done?t(a):Promise.resolve(a).then(r,o)}var Ab={class:"file-item group"},jb={key:0,class:"sr-only"},Rb={key:1,class:"sr-only"},Lb={key:2,class:"my-auto mr-2"},Ib=["onClick","checked","value"],Fb={class:"file-name"},Nb=Ji("span",{class:"sr-only"},"Name:",-1),Mb={class:"file-size"},Db=Ji("span",{class:"sr-only"},"Size:",-1),Bb={class:"py-2"},Ub={class:"text-brand-500"},$b=Ji("div",{class:"divider"},null,-1);const Vb={__name:"FileListItem",props:{logFile:{type:Object,required:!0},showSelectToggle:{type:Boolean,default:!1}},emits:["selectForDeletion"],setup:function(e,t){t.emit;var n=e,r=nb(),o=Fg(),i=lb(),s=i.dropdownDirections,l=i.calculateDropdownDirection,a=Rs((function(){return r.selectedFile&&r.selectedFile.identifier===n.logFile.identifier})),u=function(){var e,t=(e=Pb().mark((function e(){return Pb().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!confirm("Are you sure you want to delete the log file '".concat(n.logFile.name,"'? THIS ACTION CANNOT BE UNDONE."))){e.next=6;break}return e.next=3,r.deleteFile(n.logFile);case 3:return n.logFile.identifier===r.selectedFileIdentifier&&sb(o,"file",null),e.next=6,r.loadFolders();case 6:case"end":return e.stop()}}),e)})),function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function s(e){Tb(i,r,o,s,l,"next",e)}function l(e){Tb(i,r,o,s,l,"throw",e)}s(void 0)}))});return function(){return t.apply(this,arguments)}}(),c=function(){r.checkBoxToggle(n.logFile.identifier)},f=function(){r.toggleCheckboxVisibility(),c()};return function(t,n){return Ni(),Vi("div",{class:ee(["file-item-container",[a.value?"active":""]])},[Qi(Wt(Rm),null,{default:$n((function(){return[Ji("div",Ab,[Ji("button",{class:"file-item-info",onKeydown:n[0]||(n[0]=function(){return Wt(Sb)&&Wt(Sb).apply(void 0,arguments)})},[a.value?rs("",!0):(Ni(),Vi("span",jb,"Select log file")),a.value?(Ni(),Vi("span",Rb,"Deselect log file")):rs("",!0),e.logFile.can_delete?yr((Ni(),Vi("span",Lb,[Ji("input",{type:"checkbox",onClick:la(c,["stop"]),checked:Wt(r).isChecked(e.logFile),value:Wt(r).isChecked(e.logFile)},null,8,Ib)],512)),[[pl,Wt(r).checkBoxesVisibility]]):rs("",!0),Ji("span",Fb,[Nb,ts(ce(e.logFile.name),1)]),Ji("span",Mb,[Db,ts(ce(e.logFile.size_formatted),1)])],32),Qi(Wt(Lm),{as:"button",class:"file-dropdown-toggle group-hover:border-brand-600 group-hover:dark:border-brand-800","data-toggle-id":e.logFile.identifier,onKeydown:Wt(Ob),onClick:n[1]||(n[1]=la((function(e){return Wt(l)(e.target)}),["stop"]))},{default:$n((function(){return[Qi(Wt(Hm),{class:"w-4 h-4 pointer-events-none"})]})),_:1},8,["data-toggle-id","onKeydown"])]),Qi(Ys,{"leave-active-class":"transition ease-in duration-100","leave-from-class":"opacity-100 scale-100","leave-to-class":"opacity-0 scale-90","enter-active-class":"transition ease-out duration-100","enter-from-class":"opacity-0 scale-90","enter-to-class":"opacity-100 scale-100"},{default:$n((function(){return[Qi(Wt(Im),{as:"div",class:ee(["dropdown w-48",[Wt(s)[e.logFile.identifier]]])},{default:$n((function(){return[Ji("div",Bb,[Qi(Wt(Fm),{onClick:n[2]||(n[2]=la((function(t){return Wt(r).clearCacheForFile(e.logFile)}),["stop","prevent"]))},{default:$n((function(t){return[Ji("button",{class:ee([t.active?"active":""])},[yr(Qi(Wt(zm),{class:"h-4 w-4 mr-2"},null,512),[[pl,!Wt(r).clearingCache[e.logFile.identifier]]]),yr(Qi(pb,null,null,512),[[pl,Wt(r).clearingCache[e.logFile.identifier]]]),yr(Ji("span",null,"Clear index",512),[[pl,!Wt(r).cacheRecentlyCleared[e.logFile.identifier]&&!Wt(r).clearingCache[e.logFile.identifier]]]),yr(Ji("span",null,"Clearing...",512),[[pl,!Wt(r).cacheRecentlyCleared[e.logFile.identifier]&&Wt(r).clearingCache[e.logFile.identifier]]]),yr(Ji("span",Ub,"Index cleared",512),[[pl,Wt(r).cacheRecentlyCleared[e.logFile.identifier]]])],2)]})),_:1}),e.logFile.can_download?(Ni(),Hi(Wt(Fm),{key:0,onClick:n[3]||(n[3]=la((function(){}),["stop"]))},{default:$n((function(t){var n=t.active;return[Qi(Eb,{url:e.logFile.download_url,class:ee([n?"active":""])},null,8,["url","class"])]})),_:1})):rs("",!0),e.logFile.can_delete?(Ni(),Vi(Ai,{key:1},[$b,Qi(Wt(Fm),{onClick:la(u,["stop","prevent"])},{default:$n((function(e){return[Ji("button",{class:ee([e.active?"active":""])},[Qi(Wt(Bm),{class:"w-4 h-4 mr-2"}),ts(" Delete ")],2)]})),_:1},8,["onClick"]),Qi(Wt(Fm),{onClick:la(f,["stop"])},{default:$n((function(e){return[Ji("button",{class:ee([e.active?"active":""])},[Qi(Wt(Bm),{class:"w-4 h-4 mr-2"}),ts(" Delete Multiple ")],2)]})),_:1},8,["onClick"])],64)):rs("",!0)])]})),_:1},8,["class"])]})),_:1})]})),_:1})],2)}}},Hb=Vb;function zb(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[Ji("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M10.343 3.94c.09-.542.56-.94 1.11-.94h1.093c.55 0 1.02.398 1.11.94l.149.894c.07.424.384.764.78.93.398.164.855.142 1.205-.108l.737-.527a1.125 1.125 0 011.45.12l.773.774c.39.389.44 1.002.12 1.45l-.527.737c-.25.35-.272.806-.107 1.204.165.397.505.71.93.78l.893.15c.543.09.94.56.94 1.109v1.094c0 .55-.397 1.02-.94 1.11l-.893.149c-.425.07-.765.383-.93.78-.165.398-.143.854.107 1.204l.527.738c.32.447.269 1.06-.12 1.45l-.774.773a1.125 1.125 0 01-1.449.12l-.738-.527c-.35-.25-.806-.272-1.203-.107-.397.165-.71.505-.781.929l-.149.894c-.09.542-.56.94-1.11.94h-1.094c-.55 0-1.019-.398-1.11-.94l-.148-.894c-.071-.424-.384-.764-.781-.93-.398-.164-.854-.142-1.204.108l-.738.527c-.447.32-1.06.269-1.45-.12l-.773-.774a1.125 1.125 0 01-.12-1.45l.527-.737c.25-.35.273-.806.108-1.204-.165-.397-.505-.71-.93-.78l-.894-.15c-.542-.09-.94-.56-.94-1.109v-1.094c0-.55.398-1.02.94-1.11l.894-.149c.424-.07.765-.383.93-.78.165-.398.143-.854-.107-1.204l-.527-.738a1.125 1.125 0 01.12-1.45l.773-.773a1.125 1.125 0 011.45-.12l.737.527c.35.25.807.272 1.204.107.397-.165.71-.505.78-.929l.15-.894z"}),Ji("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})])}function qb(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[Ji("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M7.217 10.907a2.25 2.25 0 100 2.186m0-2.186c.18.324.283.696.283 1.093s-.103.77-.283 1.093m0-2.186l9.566-5.314m-9.566 7.5l9.566 5.314m0 0a2.25 2.25 0 103.935 2.186 2.25 2.25 0 00-3.935-2.186zm0-12.814a2.25 2.25 0 103.933-2.185 2.25 2.25 0 00-3.933 2.185z"})])}function Wb(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[Ji("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 17.25v1.007a3 3 0 01-.879 2.122L7.5 21h9l-.621-.621A3 3 0 0115 18.257V17.25m6-12V15a2.25 2.25 0 01-2.25 2.25H5.25A2.25 2.25 0 013 15V5.25m18 0A2.25 2.25 0 0018.75 3H5.25A2.25 2.25 0 003 5.25m18 0V12a2.25 2.25 0 01-2.25 2.25H5.25A2.25 2.25 0 013 12V5.25"})])}function Kb(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[Ji("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 3v2.25m6.364.386l-1.591 1.591M21 12h-2.25m-.386 6.364l-1.591-1.591M12 18.75V21m-4.773-4.227l-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0z"})])}function Gb(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[Ji("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z"})])}function Yb(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[Ji("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9 5.25h.008v.008H12v-.008z"})])}function Jb(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true"},[Ji("path",{"fill-rule":"evenodd",d:"M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z","clip-rule":"evenodd"})])}var Qb={class:"checkmark w-[18px] h-[18px] bg-gray-50 dark:bg-gray-800 rounded border dark:border-gray-600 inline-flex items-center justify-center"};const Zb={__name:"Checkmark",props:{checked:{type:Boolean,required:!0}},setup:function(e){return function(t,n){return Ni(),Vi("div",Qb,[e.checked?(Ni(),Hi(Wt(Jb),{key:0,width:"18",height:"18",class:"w-full h-full"})):rs("",!0)])}}};var Xb=Ji("span",{class:"sr-only"},"Settings dropdown",-1),ew={class:"py-2"},tw=Ji("div",{class:"label"},"Settings",-1),nw=Ji("span",{class:"ml-3"},"Shorter stack traces",-1),rw=Ji("div",{class:"divider"},null,-1),ow=Ji("div",{class:"label"},"Actions",-1),iw={class:"text-brand-500"},sw={class:"text-brand-500"},lw=Ji("div",{class:"divider"},null,-1),aw=["innerHTML"];const uw={__name:"SiteSettingsDropdown",setup:function(e){var t=Yy(),n=nb(),r=$t(!1),o=function(){ib(window.location.href),r.value=!0,setTimeout((function(){return r.value=!1}),2e3)};return dr((function(){return t.shorterStackTraces}),(function(){return t.loadLogs()})),function(e,i){return Ni(),Hi(Wt(Rm),{as:"div",class:"relative"},{default:$n((function(){return[Qi(Wt(Lm),{as:"button",class:"menu-button"},{default:$n((function(){return[Xb,Qi(Wt(zb),{class:"w-5 h-5"})]})),_:1}),Qi(Ys,{"leave-active-class":"transition ease-in duration-100","leave-from-class":"opacity-100 scale-100","leave-to-class":"opacity-0 scale-90","enter-active-class":"transition ease-out duration-100","enter-from-class":"opacity-0 scale-90","enter-to-class":"opacity-100 scale-100"},{default:$n((function(){return[Qi(Wt(Im),{as:"div",style:{"min-width":"250px"},class:"dropdown"},{default:$n((function(){return[Ji("div",ew,[tw,Qi(Wt(Fm),null,{default:$n((function(e){return[Ji("button",{class:ee([e.active?"active":""]),onClick:i[0]||(i[0]=la((function(e){return Wt(t).shorterStackTraces=!Wt(t).shorterStackTraces}),["stop","prevent"]))},[Qi(Zb,{checked:Wt(t).shorterStackTraces},null,8,["checked"]),nw],2)]})),_:1}),rw,ow,Qi(Wt(Fm),{onClick:la(Wt(n).clearCacheForAllFiles,["stop","prevent"])},{default:$n((function(e){return[Ji("button",{class:ee([e.active?"active":""])},[yr(Qi(Wt(zm),{class:"w-4 h-4 mr-1.5"},null,512),[[pl,!Wt(n).clearingCache["*"]]]),yr(Qi(pb,{class:"w-4 h-4 mr-1.5"},null,512),[[pl,Wt(n).clearingCache["*"]]]),yr(Ji("span",null,"Clear indices for all files",512),[[pl,!Wt(n).cacheRecentlyCleared["*"]&&!Wt(n).clearingCache["*"]]]),yr(Ji("span",null,"Please wait...",512),[[pl,!Wt(n).cacheRecentlyCleared["*"]&&Wt(n).clearingCache["*"]]]),yr(Ji("span",iw,"File indices cleared",512),[[pl,Wt(n).cacheRecentlyCleared["*"]]])],2)]})),_:1},8,["onClick"]),Qi(Wt(Fm),{onClick:la(o,["stop","prevent"])},{default:$n((function(e){return[Ji("button",{class:ee([e.active?"active":""])},[Qi(Wt(qb),{class:"w-4 h-4"}),yr(Ji("span",null,"Share this page",512),[[pl,!r.value]]),yr(Ji("span",sw,"Link copied!",512),[[pl,r.value]])],2)]})),_:1},8,["onClick"]),lw,Qi(Wt(Fm),{onClick:i[1]||(i[1]=la((function(e){return Wt(t).toggleTheme()}),["stop","prevent"]))},{default:$n((function(e){return[Ji("button",{class:ee([e.active?"active":""])},[yr(Qi(Wt(Wb),{class:"w-4 h-4"},null,512),[[pl,Wt(t).theme===Wt(Ky).System]]),yr(Qi(Wt(Kb),{class:"w-4 h-4"},null,512),[[pl,Wt(t).theme===Wt(Ky).Light]]),yr(Qi(Wt(Gb),{class:"w-4 h-4"},null,512),[[pl,Wt(t).theme===Wt(Ky).Dark]]),Ji("span",null,[ts("Theme: "),Ji("span",{innerHTML:Wt(t).theme,class:"font-semibold"},null,8,aw)])],2)]})),_:1}),Qi(Wt(Fm),null,{default:$n((function(e){var n=e.active;return[Ji("button",{onClick:i[2]||(i[2]=function(e){return Wt(t).helpSlideOverOpen=!0}),class:ee([n?"active":""])},[Qi(Wt(Yb),{class:"w-4 h-4"}),ts(" Keyboard Shortcuts ")],2)]})),_:1})])]})),_:1})]})),_:1})]})),_:1})}}};var cw=(e=>(e[e.None=1]="None",e[e.Focusable=2]="Focusable",e[e.Hidden=4]="Hidden",e))(cw||{});let fw=Lr({name:"Hidden",props:{as:{type:[Object,String],default:"div"},features:{type:Number,default:1}},setup:(e,{slots:t,attrs:n})=>()=>{let{features:r,...o}=e;return Ug({ourProps:{"aria-hidden":2==(2&r)||void 0,style:{position:"fixed",top:1,left:1,width:1,height:0,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0",...4==(4&r)&&2!=(2&r)&&{display:"none"}}},theirProps:o,slot:{},attrs:n,slots:t,name:"Hidden"})}});function pw(e={},t=null,n=[]){for(let[r,o]of Object.entries(e))hw(n,dw(t,r),o);return n}function dw(e,t){return e?e+"["+t+"]":t}function hw(e,t,n){if(Array.isArray(n))for(let[r,o]of n.entries())hw(e,dw(t,r.toString()),o);else n instanceof Date?e.push([t,n.toISOString()]):"boolean"==typeof n?e.push([t,n?"1":"0"]):"string"==typeof n?e.push([t,n]):"number"==typeof n?e.push([t,`${n}`]):null==n?e.push([t,""]):pw(n,t,e)}function vw(e,t){return e===t}var gw=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(gw||{}),mw=(e=>(e[e.Single=0]="Single",e[e.Multi=1]="Multi",e))(mw||{}),yw=(e=>(e[e.Pointer=0]="Pointer",e[e.Other=1]="Other",e))(yw||{});let bw=Symbol("ListboxContext");function ww(e){let t=Yo(bw,null);if(null===t){let t=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,ww),t}return t}let _w=Lr({name:"Listbox",emits:{"update:modelValue":e=>!0},props:{as:{type:[Object,String],default:"template"},disabled:{type:[Boolean],default:!1},by:{type:[String,Function],default:()=>vw},horizontal:{type:[Boolean],default:!1},modelValue:{type:[Object,String,Number,Boolean],default:void 0},defaultValue:{type:[Object,String,Number,Boolean],default:void 0},form:{type:String,optional:!0},name:{type:String,optional:!0},multiple:{type:[Boolean],default:!1}},inheritAttrs:!1,setup(e,{slots:t,attrs:n,emit:r}){let o=$t(1),i=$t(null),s=$t(null),l=$t(null),a=$t([]),u=$t(""),c=$t(null),f=$t(1);function p(e=(e=>e)){let t=null!==c.value?a.value[c.value]:null,n=ym(e(a.value.slice()),(e=>Jg(e.dataRef.domRef))),r=t?n.indexOf(t):null;return-1===r&&(r=null),{options:n,activeOptionIndex:r}}let d=Rs((()=>e.multiple?1:0)),[h,v]=function(e,t,n){let r=$t(null==n?void 0:n.value),o=Rs((()=>void 0!==e.value));return[Rs((()=>o.value?e.value:r.value)),function(e){return o.value||(r.value=e),null==t?void 0:t(e)}]}(Rs((()=>e.modelValue)),(e=>r("update:modelValue",e)),Rs((()=>e.defaultValue))),g=Rs((()=>void 0===h.value?Mg(d.value,{1:[],0:void 0}):h.value)),m={listboxState:o,value:g,mode:d,compare(t,n){if("string"==typeof e.by){let r=e.by;return(null==t?void 0:t[r])===(null==n?void 0:n[r])}return e.by(t,n)},orientation:Rs((()=>e.horizontal?"horizontal":"vertical")),labelRef:i,buttonRef:s,optionsRef:l,disabled:Rs((()=>e.disabled)),options:a,searchQuery:u,activeOptionIndex:c,activationTrigger:f,closeListbox(){e.disabled||1!==o.value&&(o.value=1,c.value=null)},openListbox(){e.disabled||0!==o.value&&(o.value=0)},goToOption(t,n,r){if(e.disabled||1===o.value)return;let i=p(),s=Yg(t===Gg.Specific?{focus:Gg.Specific,id:n}:{focus:t},{resolveItems:()=>i.options,resolveActiveIndex:()=>i.activeOptionIndex,resolveId:e=>e.id,resolveDisabled:e=>e.dataRef.disabled});u.value="",c.value=s,f.value=null!=r?r:1,a.value=i.options},search(t){if(e.disabled||1===o.value)return;let n=""!==u.value?0:1;u.value+=t.toLowerCase();let r=(null!==c.value?a.value.slice(c.value+n).concat(a.value.slice(0,c.value+n)):a.value).find((e=>e.dataRef.textValue.startsWith(u.value)&&!e.dataRef.disabled)),i=r?a.value.indexOf(r):-1;-1===i||i===c.value||(c.value=i,f.value=1)},clearSearch(){e.disabled||1!==o.value&&""!==u.value&&(u.value="")},registerOption(e,t){let n=p((n=>[...n,{id:e,dataRef:t}]));a.value=n.options,c.value=n.activeOptionIndex},unregisterOption(e){let t=p((t=>{let n=t.findIndex((t=>t.id===e));return-1!==n&&t.splice(n,1),t}));a.value=t.options,c.value=t.activeOptionIndex,f.value=1},theirOnChange(t){e.disabled||v(t)},select(t){e.disabled||v(Mg(d.value,{0:()=>t,1:()=>{let e=It(m.value.value).slice(),n=It(t),r=e.findIndex((e=>m.compare(n,It(e))));return-1===r?e.push(n):e.splice(r,1),e}}))}};xm([s,l],((e,t)=>{var n;m.closeListbox(),dm(t,pm.Loose)||(e.preventDefault(),null==(n=Jg(s))||n.focus())}),Rs((()=>0===o.value))),Go(bw,m),om(Rs((()=>Mg(o.value,{0:nm.Open,1:nm.Closed}))));let y=Rs((()=>{var e;return null==(e=Jg(s))?void 0:e.closest("form")}));return Jr((()=>{dr([y],(()=>{if(y.value&&void 0!==e.defaultValue)return y.value.addEventListener("reset",t),()=>{var e;null==(e=y.value)||e.removeEventListener("reset",t)};function t(){m.theirOnChange(e.defaultValue)}}),{immediate:!0})})),()=>{let{name:r,modelValue:i,disabled:s,form:l,...a}=e,u={open:0===o.value,disabled:s,value:g.value};return Ls(Ai,[...null!=r&&null!=g.value?pw({[r]:g.value}).map((([e,t])=>Ls(fw,function(e){let t=Object.assign({},e);for(let e in t)void 0===t[e]&&delete t[e];return t}({features:cw.Hidden,key:e,as:"input",type:"hidden",hidden:!0,readOnly:!0,form:l,name:e,value:t})))):[],Ug({ourProps:{},theirProps:{...n,...zg(a,["defaultValue","onUpdate:modelValue","horizontal","multiple","by"])},slot:u,slots:t,attrs:n,name:"Listbox"})])}}}),xw=Lr({name:"ListboxLabel",props:{as:{type:[Object,String],default:"label"},id:{type:String,default:()=>`headlessui-listbox-label-${Wg()}`}},setup(e,{attrs:t,slots:n}){let r=ww("ListboxLabel");function o(){var e;null==(e=Jg(r.buttonRef))||e.focus({preventScroll:!0})}return()=>{let i={open:0===r.listboxState.value,disabled:r.disabled.value},{id:s,...l}=e;return Ug({ourProps:{id:s,ref:r.labelRef,onClick:o},theirProps:l,slot:i,attrs:t,slots:n,name:"ListboxLabel"})}}}),Sw=Lr({name:"ListboxButton",props:{as:{type:[Object,String],default:"button"},id:{type:String,default:()=>`headlessui-listbox-button-${Wg()}`}},setup(e,{attrs:t,slots:n,expose:r}){let o=ww("ListboxButton");function i(e){switch(e.key){case Kg.Space:case Kg.Enter:case Kg.ArrowDown:e.preventDefault(),o.openListbox(),bn((()=>{var e;null==(e=Jg(o.optionsRef))||e.focus({preventScroll:!0}),o.value.value||o.goToOption(Gg.First)}));break;case Kg.ArrowUp:e.preventDefault(),o.openListbox(),bn((()=>{var e;null==(e=Jg(o.optionsRef))||e.focus({preventScroll:!0}),o.value.value||o.goToOption(Gg.Last)}))}}function s(e){if(e.key===Kg.Space)e.preventDefault()}function l(e){o.disabled.value||(0===o.listboxState.value?(o.closeListbox(),bn((()=>{var e;return null==(e=Jg(o.buttonRef))?void 0:e.focus({preventScroll:!0})}))):(e.preventDefault(),o.openListbox(),function(e){requestAnimationFrame((()=>requestAnimationFrame(e)))}((()=>{var e;return null==(e=Jg(o.optionsRef))?void 0:e.focus({preventScroll:!0})}))))}r({el:o.buttonRef,$el:o.buttonRef});let a=sm(Rs((()=>({as:e.as,type:t.type}))),o.buttonRef);return()=>{var r,u;let c={open:0===o.listboxState.value,disabled:o.disabled.value,value:o.value.value},{id:f,...p}=e;return Ug({ourProps:{ref:o.buttonRef,id:f,type:a.value,"aria-haspopup":"listbox","aria-controls":null==(r=Jg(o.optionsRef))?void 0:r.id,"aria-expanded":0===o.listboxState.value,"aria-labelledby":o.labelRef.value?[null==(u=Jg(o.labelRef))?void 0:u.id,f].join(" "):void 0,disabled:!0===o.disabled.value||void 0,onKeydown:i,onKeyup:s,onClick:l},theirProps:p,slot:c,attrs:t,slots:n,name:"ListboxButton"})}}}),Ow=Lr({name:"ListboxOptions",props:{as:{type:[Object,String],default:"ul"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},id:{type:String,default:()=>`headlessui-listbox-options-${Wg()}`}},setup(e,{attrs:t,slots:n,expose:r}){let o=ww("ListboxOptions"),i=$t(null);function s(e){switch(i.value&&clearTimeout(i.value),e.key){case Kg.Space:if(""!==o.searchQuery.value)return e.preventDefault(),e.stopPropagation(),o.search(e.key);case Kg.Enter:if(e.preventDefault(),e.stopPropagation(),null!==o.activeOptionIndex.value){let e=o.options.value[o.activeOptionIndex.value];o.select(e.dataRef.value)}0===o.mode.value&&(o.closeListbox(),bn((()=>{var e;return null==(e=Jg(o.buttonRef))?void 0:e.focus({preventScroll:!0})})));break;case Mg(o.orientation.value,{vertical:Kg.ArrowDown,horizontal:Kg.ArrowRight}):return e.preventDefault(),e.stopPropagation(),o.goToOption(Gg.Next);case Mg(o.orientation.value,{vertical:Kg.ArrowUp,horizontal:Kg.ArrowLeft}):return e.preventDefault(),e.stopPropagation(),o.goToOption(Gg.Previous);case Kg.Home:case Kg.PageUp:return e.preventDefault(),e.stopPropagation(),o.goToOption(Gg.First);case Kg.End:case Kg.PageDown:return e.preventDefault(),e.stopPropagation(),o.goToOption(Gg.Last);case Kg.Escape:e.preventDefault(),e.stopPropagation(),o.closeListbox(),bn((()=>{var e;return null==(e=Jg(o.buttonRef))?void 0:e.focus({preventScroll:!0})}));break;case Kg.Tab:e.preventDefault(),e.stopPropagation();break;default:1===e.key.length&&(o.search(e.key),i.value=setTimeout((()=>o.clearSearch()),350))}}r({el:o.optionsRef,$el:o.optionsRef});let l=rm(),a=Rs((()=>null!==l?(l.value&nm.Open)===nm.Open:0===o.listboxState.value));return()=>{var r,i,l,u;let c={open:0===o.listboxState.value},{id:f,...p}=e;return Ug({ourProps:{"aria-activedescendant":null===o.activeOptionIndex.value||null==(r=o.options.value[o.activeOptionIndex.value])?void 0:r.id,"aria-multiselectable":1===o.mode.value||void 0,"aria-labelledby":null!=(u=null==(i=Jg(o.labelRef))?void 0:i.id)?u:null==(l=Jg(o.buttonRef))?void 0:l.id,"aria-orientation":o.orientation.value,id:f,onKeydown:s,role:"listbox",tabIndex:0,ref:o.optionsRef},theirProps:p,slot:c,attrs:t,slots:n,features:Dg.RenderStrategy|Dg.Static,visible:a.value,name:"ListboxOptions"})}}}),kw=Lr({name:"ListboxOption",props:{as:{type:[Object,String],default:"li"},value:{type:[Object,String,Number,Boolean]},disabled:{type:Boolean,default:!1},id:{type:String,default:()=>`headlessui-listbox.option-${Wg()}`}},setup(e,{slots:t,attrs:n,expose:r}){let o=ww("ListboxOption"),i=$t(null);r({el:i,$el:i});let s=Rs((()=>null!==o.activeOptionIndex.value&&o.options.value[o.activeOptionIndex.value].id===e.id)),l=Rs((()=>Mg(o.mode.value,{0:()=>o.compare(It(o.value.value),It(e.value)),1:()=>It(o.value.value).some((t=>o.compare(It(t),It(e.value))))}))),a=Rs((()=>Mg(o.mode.value,{1:()=>{var t;let n=It(o.value.value);return(null==(t=o.options.value.find((e=>n.some((t=>o.compare(It(t),It(e.dataRef.value)))))))?void 0:t.id)===e.id},0:()=>l.value}))),u=Cm(i),c=Rs((()=>({disabled:e.disabled,value:e.value,get textValue(){return u()},domRef:i})));function f(t){if(e.disabled)return t.preventDefault();o.select(e.value),0===o.mode.value&&(o.closeListbox(),bn((()=>{var e;return null==(e=Jg(o.buttonRef))?void 0:e.focus({preventScroll:!0})})))}function p(){if(e.disabled)return o.goToOption(Gg.Nothing);o.goToOption(Gg.Specific,e.id)}Jr((()=>o.registerOption(e.id,c))),eo((()=>o.unregisterOption(e.id))),Jr((()=>{dr([o.listboxState,l],(()=>{0===o.listboxState.value&&l.value&&Mg(o.mode.value,{1:()=>{a.value&&o.goToOption(Gg.Specific,e.id)},0:()=>{o.goToOption(Gg.Specific,e.id)}})}),{immediate:!0})})),ur((()=>{0===o.listboxState.value&&s.value&&0!==o.activationTrigger.value&&bn((()=>{var e,t;return null==(t=null==(e=Jg(i))?void 0:e.scrollIntoView)?void 0:t.call(e,{block:"nearest"})}))}));let d=Om();function h(e){d.update(e)}function v(t){d.wasMoved(t)&&(e.disabled||s.value||o.goToOption(Gg.Specific,e.id,0))}function g(t){d.wasMoved(t)&&(e.disabled||s.value&&o.goToOption(Gg.Nothing))}return()=>{let{disabled:r}=e,o={active:s.value,selected:l.value,disabled:r},{id:a,value:u,disabled:c,...d}=e;return Ug({ourProps:{id:a,ref:i,role:"option",tabIndex:!0===r?void 0:-1,"aria-disabled":!0===r||void 0,"aria-selected":l.value,disabled:void 0,onClick:f,onFocus:p,onPointerenter:h,onMouseenter:h,onPointermove:v,onMousemove:v,onPointerleave:g,onMouseleave:g},theirProps:d,slot:o,attrs:n,slots:t,name:"ListboxOption"})}}});function Ew(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true"},[Ji("path",{"fill-rule":"evenodd",d:"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z","clip-rule":"evenodd"})])}var Cw={class:"relative mt-1"},Pw={class:"block truncate"},Tw={class:"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2"};const Aw={__name:"HostSelector",setup:function(e){var t=Fg(),n=Wm();return dr((function(){return n.selectedHost}),(function(e){sb(t,"host",null!=e&&e.is_remote?e.identifier:null)})),function(e,t){return Ni(),Hi(Wt(_w),{as:"div",modelValue:Wt(n).selectedHostIdentifier,"onUpdate:modelValue":t[0]||(t[0]=function(e){return Wt(n).selectedHostIdentifier=e})},{default:$n((function(){return[Qi(Wt(xw),{class:"ml-1 block text-sm text-gray-500 dark:text-gray-400"},{default:$n((function(){return[ts("Select host")]})),_:1}),Ji("div",Cw,[Qi(Wt(Sw),{id:"hosts-toggle-button",class:"cursor-pointer relative text-gray-800 dark:text-gray-200 w-full cursor-default rounded-md border border-gray-300 dark:border-gray-700 bg-white dark:bg-gray-800 py-2 pl-4 pr-10 text-left hover:border-brand-600 hover:dark:border-brand-800 focus:border-brand-500 focus:outline-none focus:ring-1 focus:ring-brand-500 text-sm"},{default:$n((function(){var e;return[Ji("span",Pw,ce((null===(e=Wt(n).selectedHost)||void 0===e?void 0:e.name)||"Please select a server"),1),Ji("span",Tw,[Qi(Wt(Ew),{class:"h-5 w-5 text-gray-400","aria-hidden":"true"})])]})),_:1}),Qi(Ys,{"leave-active-class":"transition ease-in duration-100","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:$n((function(){return[Qi(Wt(Ow),{class:"absolute z-20 mt-1 max-h-60 w-full overflow-auto rounded-md shadow-md bg-white dark:bg-gray-800 py-1 border border-gray-200 dark:border-gray-700 ring-1 ring-brand ring-opacity-5 focus:outline-none text-sm"},{default:$n((function(){return[(Ni(!0),Vi(Ai,null,io(Wt(n).hosts,(function(e){return Ni(),Hi(Wt(kw),{as:"template",key:e.identifier,value:e.identifier},{default:$n((function(t){var n=t.active,r=t.selected;return[Ji("li",{class:ee([n?"text-white bg-brand-600":"text-gray-900 dark:text-gray-300","relative cursor-default select-none py-2 pl-3 pr-9"])},[Ji("span",{class:ee([r?"font-semibold":"font-normal","block truncate"])},ce(e.name),3),r?(Ni(),Vi("span",{key:0,class:ee([n?"text-white":"text-brand-600","absolute inset-y-0 right-0 flex items-center pr-4"])},[Qi(Wt(Jb),{class:"h-5 w-5","aria-hidden":"true"})],2)):rs("",!0)],2)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1})])]})),_:1},8,["modelValue"])}}},jw=Aw;var Rw={class:"relative mt-1"},Lw={class:"block truncate"},Iw={class:"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2"};const Fw={__name:"FileTypeSelector",setup:function(e){Fg();var t=nb();return function(e,n){return Ni(),Hi(Wt(_w),{as:"div",modelValue:Wt(t).selectedFileTypes,"onUpdate:modelValue":n[0]||(n[0]=function(e){return Wt(t).selectedFileTypes=e}),multiple:""},{default:$n((function(){return[Qi(Wt(xw),{class:"ml-1 block text-sm text-gray-500 dark:text-gray-400"},{default:$n((function(){return[ts("Selected file types")]})),_:1}),Ji("div",Rw,[Qi(Wt(Sw),{id:"hosts-toggle-button",class:"cursor-pointer relative text-gray-800 dark:text-gray-200 w-full cursor-default rounded-md border border-gray-300 dark:border-gray-700 bg-white dark:bg-gray-800 py-2 pl-4 pr-10 text-left hover:border-brand-600 hover:dark:border-brand-800 focus:border-brand-500 focus:outline-none focus:ring-1 focus:ring-brand-500 text-sm"},{default:$n((function(){return[Ji("span",Lw,ce(Wt(t).selectedFileTypesString),1),Ji("span",Iw,[Qi(Wt(Ew),{class:"h-5 w-5 text-gray-400","aria-hidden":"true"})])]})),_:1}),Qi(Ys,{"leave-active-class":"transition ease-in duration-100","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:$n((function(){return[Qi(Wt(Ow),{class:"absolute z-20 mt-1 max-h-60 w-full overflow-auto rounded-md shadow-md bg-white dark:bg-gray-800 py-1 border border-gray-200 dark:border-gray-700 ring-1 ring-brand ring-opacity-5 focus:outline-none text-sm"},{default:$n((function(){return[(Ni(!0),Vi(Ai,null,io(Wt(t).fileTypesAvailable,(function(e){return Ni(),Hi(Wt(kw),{as:"template",key:e.identifier,value:e.identifier},{default:$n((function(t){var n=t.active,r=t.selected;return[Ji("li",{class:ee([n?"text-white bg-brand-600":"text-gray-900 dark:text-gray-300","relative cursor-default select-none py-2 pl-3 pr-9"])},[Ji("span",{class:ee([r?"font-semibold":"font-normal","block truncate"])},ce(e.name),3),r?(Ni(),Vi("span",{key:0,class:ee([n?"text-white":"text-brand-600","absolute inset-y-0 right-0 flex items-center pr-4"])},[Qi(Wt(Jb),{class:"h-5 w-5","aria-hidden":"true"})],2)):rs("",!0)],2)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1})])]})),_:1},8,["modelValue"])}}};function Nw(e){return Nw="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Nw(e)}function Mw(){Mw=function(){return t};var e,t={},n=Object.prototype,r=n.hasOwnProperty,o=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},s=i.iterator||"@@iterator",l=i.asyncIterator||"@@asyncIterator",a=i.toStringTag||"@@toStringTag";function u(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(e){u=function(e,t,n){return e[t]=n}}function c(e,t,n,r){var i=t&&t.prototype instanceof m?t:m,s=Object.create(i.prototype),l=new A(r||[]);return o(s,"_invoke",{value:E(e,n,l)}),s}function f(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=c;var p="suspendedStart",d="suspendedYield",h="executing",v="completed",g={};function m(){}function y(){}function b(){}var w={};u(w,s,(function(){return this}));var _=Object.getPrototypeOf,x=_&&_(_(j([])));x&&x!==n&&r.call(x,s)&&(w=x);var S=b.prototype=m.prototype=Object.create(w);function O(e){["next","throw","return"].forEach((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function k(e,t){function n(o,i,s,l){var a=f(e[o],e,i);if("throw"!==a.type){var u=a.arg,c=u.value;return c&&"object"==Nw(c)&&r.call(c,"__await")?t.resolve(c.__await).then((function(e){n("next",e,s,l)}),(function(e){n("throw",e,s,l)})):t.resolve(c).then((function(e){u.value=e,s(u)}),(function(e){return n("throw",e,s,l)}))}l(a.arg)}var i;o(this,"_invoke",{value:function(e,r){function o(){return new t((function(t,o){n(e,r,t,o)}))}return i=i?i.then(o,o):o()}})}function E(t,n,r){var o=p;return function(i,s){if(o===h)throw new Error("Generator is already running");if(o===v){if("throw"===i)throw s;return{value:e,done:!0}}for(r.method=i,r.arg=s;;){var l=r.delegate;if(l){var a=C(l,r);if(a){if(a===g)continue;return a}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(o===p)throw o=v,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);o=h;var u=f(t,n,r);if("normal"===u.type){if(o=r.done?v:d,u.arg===g)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(o=v,r.method="throw",r.arg=u.arg)}}}function C(t,n){var r=n.method,o=t.iterator[r];if(o===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,C(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),g;var i=f(o,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,g;var s=i.arg;return s?s.done?(n[t.resultName]=s.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,g):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function P(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function T(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function A(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(P,this),this.reset(!0)}function j(t){if(t||""===t){var n=t[s];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,i=function n(){for(;++o=0;--i){var s=this.tryEntries[i],l=s.completion;if("root"===s.tryLoc)return o("end");if(s.tryLoc<=this.prev){var a=r.call(s,"catchLoc"),u=r.call(s,"finallyLoc");if(a&&u){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),T(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;T(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:j(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),g}},t}function Dw(e,t,n,r,o,i,s){try{var l=e[i](s),a=l.value}catch(e){return void n(e)}l.done?t(a):Promise.resolve(a).then(r,o)}function Bw(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function s(e){Dw(i,r,o,s,l,"next",e)}function l(e){Dw(i,r,o,s,l,"throw",e)}s(void 0)}))}}var Uw={class:"flex flex-col h-full py-5"},$w={class:"mx-3 md:mx-0 mb-1"},Vw={class:"sm:flex sm:flex-col-reverse"},Hw={class:"font-semibold text-brand-700 dark:text-brand-600 text-2xl flex items-center"},zw={class:"md:hidden flex-1 flex justify-end"},qw={type:"button",class:"menu-button"},Ww={key:0},Kw=["href"],Gw={key:0,class:"bg-yellow-100 dark:bg-yellow-900 bg-opacity-75 dark:bg-opacity-40 border border-yellow-300 dark:border-yellow-800 rounded-md px-2 py-1 mt-2 text-xs leading-5 text-yellow-700 dark:text-yellow-400"},Yw=Ji("code",{class:"font-mono px-2 py-1 bg-gray-100 dark:bg-gray-900 rounded"},"php artisan log-viewer:publish",-1),Jw={key:3,class:"flex justify-between items-baseline mt-6"},Qw={class:"ml-1 block text-sm text-gray-500 dark:text-gray-400 truncate"},Zw={class:"text-sm text-gray-500 dark:text-gray-400"},Xw=Ji("label",{for:"file-sort-direction",class:"sr-only"},"Sort direction",-1),e_=[Ji("option",{value:"desc"},"Newest first",-1),Ji("option",{value:"asc"},"Oldest first",-1)],t_={key:4,class:"mx-1 mt-1 text-red-600 text-xs"},n_=Ji("p",{class:"text-sm text-gray-600 dark:text-gray-400"},"Please select files to delete and confirm or cancel deletion.",-1),r_=["onClick"],o_={id:"file-list-container",class:"relative h-full overflow-hidden"},i_=["id"],s_=["onClick"],l_={class:"file-item group"},a_={key:0,class:"sr-only"},u_={key:1,class:"sr-only"},c_={class:"file-icon group-hover:hidden group-focus:hidden"},f_={class:"file-icon hidden group-hover:inline-block group-focus:inline-block"},p_={class:"file-name"},d_={key:0},h_=Ji("span",{class:"text-gray-500 dark:text-gray-400"},"root",-1),v_={key:1},g_=Ji("span",{class:"sr-only"},"Open folder options",-1),m_={class:"py-2"},y_={class:"text-brand-500"},b_=Ji("div",{class:"divider"},null,-1),w_=["onClick","disabled"],__={class:"folder-files pl-3 ml-1 border-l border-gray-200 dark:border-gray-800"},x_={key:0,class:"text-center text-sm text-gray-600 dark:text-gray-400"},S_=Ji("p",{class:"mb-5"},"No log files were found.",-1),O_={class:"flex items-center justify-center px-1"},k_=Ji("div",{class:"pointer-events-none absolute z-10 bottom-0 h-4 w-full bg-gradient-to-t from-gray-100 dark:from-gray-900 to-transparent"},null,-1),E_={class:"absolute inset-y-0 left-3 right-7 lg:left-0 lg:right-0 z-10"},C_={class:"rounded-md bg-white text-gray-800 dark:bg-gray-700 dark:text-gray-200 opacity-90 w-full h-full flex items-center justify-center"};const P_={__name:"FileList",setup:function(e){var t=Fg(),n=Ng(),r=Wm(),o=nb(),i=lb(),s=i.dropdownDirections,l=i.calculateDropdownDirection,a=function(){var e=Bw(Mw().mark((function e(n){return Mw().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!confirm("Are you sure you want to delete the log folder '".concat(n.path,"'? THIS ACTION CANNOT BE UNDONE."))){e.next=4;break}return e.next=3,o.deleteFolder(n);case 3:n.files.some((function(e){return e.identifier===o.selectedFileIdentifier}))&&sb(t,"file",null);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),u=function(){var e=Bw(Mw().mark((function e(){return Mw().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!confirm("Are you sure you want to delete selected log files? THIS ACTION CANNOT BE UNDONE.")){e.next=7;break}return e.next=3,o.deleteSelectedFiles();case 3:return o.filesChecked.includes(o.selectedFileIdentifier)&&sb(t,"file",null),o.resetChecks(),e.next=7,o.loadFolders();case 7:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return Jr(Bw(Mw().mark((function e(){return Mw().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r.selectHost(n.query.host||null);case 1:case"end":return e.stop()}}),e)})))),dr((function(){return o.direction}),(function(){return o.loadFolders()})),function(e,i){var c,f;return Ni(),Vi("nav",Uw,[Ji("div",$w,[Ji("div",Vw,[Ji("h1",Hw,[ts(" Log Viewer "),Ji("span",zw,[Qi(uw,{class:"ml-2"}),Ji("button",qw,[Qi(Wt(Nm),{class:"w-5 h-5 ml-2",onClick:Wt(o).toggleSidebar},null,8,["onClick"])])])]),e.LogViewer.back_to_system_url?(Ni(),Vi("div",Ww,[Ji("a",{href:e.LogViewer.back_to_system_url,class:"rounded shrink inline-flex items-center text-sm text-gray-500 dark:text-gray-400 hover:text-brand-800 dark:hover:text-brand-600 focus:outline-none focus:ring-2 focus:ring-brand-500 dark:focus:ring-brand-700 mt-0"},[Qi(Wt(Mm),{class:"h-3 w-3 mr-1.5"}),ts(" "+ce(e.LogViewer.back_to_system_label||"Back to ".concat(e.LogViewer.app_name)),1)],8,Kw)])):rs("",!0)]),e.LogViewer.assets_outdated?(Ni(),Vi("div",Gw,[Qi(Wt(Dm),{class:"h-4 w-4 mr-1 inline"}),ts(" Front-end assets are outdated. To update, please run "),Yw])):rs("",!0),Wt(r).supportsHosts&&Wt(r).hasRemoteHosts?(Ni(),Hi(jw,{key:1,class:"mb-8 mt-6"})):rs("",!0),Wt(o).fileTypesAvailable&&Wt(o).fileTypesAvailable.length>1?(Ni(),Hi(Fw,{key:2,class:"mb-8 mt-6"})):rs("",!0),(null===(c=Wt(o).filteredFolders)||void 0===c?void 0:c.length)>0?(Ni(),Vi("div",Jw,[Ji("div",Qw,"Log files on "+ce(null===(f=Wt(o).selectedHost)||void 0===f?void 0:f.name),1),Ji("div",Zw,[Xw,yr(Ji("select",{id:"file-sort-direction",class:"select","onUpdate:modelValue":i[0]||(i[0]=function(e){return Wt(o).direction=e})},e_,512),[[Zl,Wt(o).direction]])])])):rs("",!0),Wt(o).error?(Ni(),Vi("p",t_,ce(Wt(o).error),1)):rs("",!0)]),yr(Ji("div",null,[n_,Ji("div",{class:ee(["grid grid-flow-col pr-4 mt-2",[Wt(o).hasFilesChecked?"justify-between":"justify-end"]])},[yr(Ji("button",{onClick:la(u,["stop"]),class:"button inline-flex"},[Qi(Wt(Bm),{class:"w-5 mr-1"}),ts(" Delete selected files ")],8,r_),[[pl,Wt(o).hasFilesChecked]]),Ji("button",{class:"button inline-flex",onClick:i[1]||(i[1]=la((function(e){return Wt(o).resetChecks()}),["stop"]))},[ts(" Cancel "),Qi(Wt(Nm),{class:"w-5 ml-1"})])],2)],512),[[pl,Wt(o).checkBoxesVisibility]]),Ji("div",o_,[Ji("div",{class:"file-list",onScroll:i[6]||(i[6]=function(e){return Wt(o).onScroll(e)})},[(Ni(!0),Vi(Ai,null,io(Wt(o).filteredFolders,(function(e){return Ni(),Vi("div",{key:e.identifier,id:"folder-".concat(e.identifier),class:"relative folder-container"},[Qi(Wt(Rm),null,{default:$n((function(t){var n=t.open;return[Ji("div",{class:ee(["folder-item-container",[Wt(o).isOpen(e)?"active-folder":"",Wt(o).shouldBeSticky(e)?"sticky "+(n?"z-20":"z-10"):""]]),onClick:function(t){return Wt(o).toggle(e)}},[Ji("div",l_,[Ji("button",{class:"file-item-info group",onKeydown:i[2]||(i[2]=function(){return Wt(Sb)&&Wt(Sb).apply(void 0,arguments)})},[Wt(o).isOpen(e)?rs("",!0):(Ni(),Vi("span",a_,"Open folder")),Wt(o).isOpen(e)?(Ni(),Vi("span",u_,"Close folder")):rs("",!0),Ji("span",c_,[yr(Qi(Wt(Um),{class:"w-5 h-5"},null,512),[[pl,!Wt(o).isOpen(e)]]),yr(Qi(Wt($m),{class:"w-5 h-5"},null,512),[[pl,Wt(o).isOpen(e)]])]),Ji("span",f_,[Qi(Wt(Vm),{class:ee([Wt(o).isOpen(e)?"rotate-90":"","transition duration-100"])},null,8,["class"])]),Ji("span",p_,[String(e.clean_path||"").startsWith("root")?(Ni(),Vi("span",d_,[h_,ts(ce(String(e.clean_path).substring(4)),1)])):(Ni(),Vi("span",v_,ce(e.clean_path),1))])],32),Qi(Wt(Lm),{as:"button",class:"file-dropdown-toggle group-hover:border-brand-600 group-hover:dark:border-brand-800","data-toggle-id":e.identifier,onKeydown:Wt(Ob),onClick:i[3]||(i[3]=la((function(e){return Wt(l)(e.target)}),["stop"]))},{default:$n((function(){return[g_,Qi(Wt(Hm),{class:"w-4 h-4 pointer-events-none"})]})),_:2},1032,["data-toggle-id","onKeydown"])]),Qi(Ys,{"leave-active-class":"transition ease-in duration-100","leave-from-class":"opacity-100 scale-100","leave-to-class":"opacity-0 scale-90","enter-active-class":"transition ease-out duration-100","enter-from-class":"opacity-0 scale-90","enter-to-class":"opacity-100 scale-100"},{default:$n((function(){return[yr(Qi(Wt(Im),{static:"",as:"div",class:ee(["dropdown w-48",[Wt(s)[e.identifier]]])},{default:$n((function(){return[Ji("div",m_,[Qi(Wt(Fm),{onClick:la((function(t){return Wt(o).clearCacheForFolder(e)}),["stop","prevent"])},{default:$n((function(t){return[Ji("button",{class:ee([t.active?"active":""])},[yr(Qi(Wt(zm),{class:"w-4 h-4 mr-2"},null,512),[[pl,!Wt(o).clearingCache[e.identifier]]]),yr(Qi(pb,{class:"w-4 h-4 mr-2"},null,512),[[pl,Wt(o).clearingCache[e.identifier]]]),yr(Ji("span",null,"Clear indices",512),[[pl,!Wt(o).cacheRecentlyCleared[e.identifier]&&!Wt(o).clearingCache[e.identifier]]]),yr(Ji("span",null,"Clearing...",512),[[pl,!Wt(o).cacheRecentlyCleared[e.identifier]&&Wt(o).clearingCache[e.identifier]]]),yr(Ji("span",y_,"Indices cleared",512),[[pl,Wt(o).cacheRecentlyCleared[e.identifier]]])],2)]})),_:2},1032,["onClick"]),e.can_download?(Ni(),Hi(Wt(Fm),{key:0},{default:$n((function(t){var n=t.active;return[Qi(Eb,{url:e.download_url,onClick:i[4]||(i[4]=la((function(){}),["stop"])),class:ee([n?"active":""])},null,8,["url","class"])]})),_:2},1024)):rs("",!0),e.can_delete?(Ni(),Vi(Ai,{key:1},[b_,Qi(Wt(Fm),null,{default:$n((function(t){var n=t.active;return[Ji("button",{onClick:la((function(t){return a(e)}),["stop"]),disabled:Wt(o).deleting[e.identifier],class:ee([n?"active":""])},[yr(Qi(Wt(Bm),{class:"w-4 h-4 mr-2"},null,512),[[pl,!Wt(o).deleting[e.identifier]]]),yr(Qi(pb,null,null,512),[[pl,Wt(o).deleting[e.identifier]]]),ts(" Delete ")],10,w_)]})),_:2},1024)],64)):rs("",!0)])]})),_:2},1032,["class"]),[[pl,n]])]})),_:2},1024)],10,s_)]})),_:2},1024),yr(Ji("div",__,[(Ni(!0),Vi(Ai,null,io(e.files||[],(function(e){return Ni(),Hi(Hb,{key:e.identifier,"log-file":e,onClick:function(r){return o=e.identifier,void(n.query.file&&n.query.file===o?sb(t,"file",null):sb(t,"file",o));var o}},null,8,["log-file","onClick"])})),128))],512),[[pl,Wt(o).isOpen(e)]])],8,i_)})),128)),0===Wt(o).folders.length?(Ni(),Vi("div",x_,[S_,Ji("div",O_,[Ji("button",{onClick:i[5]||(i[5]=la((function(e){return Wt(o).loadFolders()}),["prevent"])),class:"inline-flex items-center px-4 py-2 text-left text-sm bg-white hover:bg-gray-50 outline-brand-500 dark:outline-brand-800 text-gray-900 dark:text-gray-200 rounded-md dark:bg-gray-700 dark:hover:bg-gray-600"},[Qi(Wt(qm),{class:"w-4 h-4 mr-1.5"}),ts(" Refresh file list ")])])])):rs("",!0)],32),k_,yr(Ji("div",E_,[Ji("div",C_,[Qi(pb,{class:"w-14 h-14"})])],512),[[pl,Wt(o).loading]])])])}}},T_=P_;function A_(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[Ji("path",{"fill-rule":"evenodd",d:"M4.755 10.059a7.5 7.5 0 0112.548-3.364l1.903 1.903h-3.183a.75.75 0 100 1.5h4.992a.75.75 0 00.75-.75V4.356a.75.75 0 00-1.5 0v3.18l-1.9-1.9A9 9 0 003.306 9.67a.75.75 0 101.45.388zm15.408 3.352a.75.75 0 00-.919.53 7.5 7.5 0 01-12.548 3.364l-1.902-1.903h3.183a.75.75 0 000-1.5H2.984a.75.75 0 00-.75.75v4.992a.75.75 0 001.5 0v-3.18l1.9 1.9a9 9 0 0015.059-4.035.75.75 0 00-.53-.918z","clip-rule":"evenodd"})])}function j_(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[Ji("path",{"fill-rule":"evenodd",d:"M3 6.75A.75.75 0 013.75 6h16.5a.75.75 0 010 1.5H3.75A.75.75 0 013 6.75zM3 12a.75.75 0 01.75-.75h16.5a.75.75 0 010 1.5H3.75A.75.75 0 013 12zm0 5.25a.75.75 0 01.75-.75h16.5a.75.75 0 010 1.5H3.75a.75.75 0 01-.75-.75z","clip-rule":"evenodd"})])}function R_(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[Ji("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3"})])}var L_={class:"pagination"},I_={class:"previous"},F_=["disabled"],N_=Ji("span",{class:"sm:hidden"},"Previous page",-1),M_={class:"sm:hidden border-transparent text-gray-500 dark:text-gray-400 border-t-2 pt-3 px-4 inline-flex items-center text-sm font-medium"},D_={class:"pages"},B_={key:0,class:"border-brand-500 text-brand-600 dark:border-brand-600 dark:text-brand-500","aria-current":"page"},U_={key:1},$_=["onClick"],V_={class:"next"},H_=["disabled"],z_=Ji("span",{class:"sm:hidden"},"Next page",-1);const q_={__name:"Pagination",props:{loading:{type:Boolean,required:!0},short:{type:Boolean,default:!1}},setup:function(e){var t=zy(),n=Fg(),r=Ng(),o=(Rs((function(){return Number(r.query.page)||1})),function(e){e<1&&(e=1),t.pagination&&e>t.pagination.last_page&&(e=t.pagination.last_page),sb(n,"page",e>1?Number(e):null)}),i=function(){return o(t.page+1)},s=function(){return o(t.page-1)};return function(n,r){return Ni(),Vi("nav",L_,[Ji("div",I_,[1!==Wt(t).page?(Ni(),Vi("button",{key:0,onClick:s,disabled:e.loading,rel:"prev"},[Qi(Wt(Mm),{class:"h-5 w-5"}),N_],8,F_)):rs("",!0)]),Ji("div",M_,[Ji("span",null,ce(Wt(t).page),1)]),Ji("div",D_,[(Ni(!0),Vi(Ai,null,io(e.short?Wt(t).linksShort:Wt(t).links,(function(e){return Ni(),Vi(Ai,null,[e.active?(Ni(),Vi("button",B_,ce(Number(e.label).toLocaleString()),1)):"..."===e.label?(Ni(),Vi("span",U_,ce(e.label),1)):(Ni(),Vi("button",{key:2,onClick:function(t){return o(Number(e.label))},class:"border-transparent text-gray-500 dark:text-gray-400 hover:text-gray-700 hover:border-gray-300 dark:hover:text-gray-300 dark:hover:border-gray-400"},ce(Number(e.label).toLocaleString()),9,$_))],64)})),256))]),Ji("div",V_,[Wt(t).hasMorePages?(Ni(),Vi("button",{key:0,onClick:i,disabled:e.loading,rel:"next"},[z_,Qi(Wt(R_),{class:"h-5 w-5"})],8,H_)):rs("",!0)])])}}},W_=q_;function K_(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[Ji("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 8.25l-7.5 7.5-7.5-7.5"})])}var G_={class:"flex items-center"},Y_={class:"opacity-90 mr-1"},J_={class:"font-semibold"},Q_={class:"opacity-90 mr-1"},Z_={class:"font-semibold"},X_={key:2,class:"opacity-90"},ex={key:3,class:"opacity-90"},tx={class:"py-2"},nx={class:"label flex justify-between"},rx={key:0,class:"no-results"},ox={class:"flex-1 inline-flex justify-between"},ix={class:"log-count"};const sx={__name:"LevelButtons",setup:function(e){var t=Yy(),n=qy();return dr((function(){return n.excludedLevels}),(function(){return t.loadLogs()})),function(e,r){return Ni(),Vi("div",G_,[Qi(Wt(Rm),{as:"div",class:"mr-5 relative log-levels-selector"},{default:$n((function(){return[Qi(Wt(Lm),{as:"button",id:"severity-dropdown-toggle",class:ee(["dropdown-toggle badge none",Wt(n).levelsSelected.length>0?"active":""])},{default:$n((function(){return[Wt(n).levelsSelected.length>2?(Ni(),Vi(Ai,{key:0},[Ji("span",Y_,ce(Wt(n).totalResultsSelected.toLocaleString()+(Wt(t).hasMoreResults?"+":""))+" entries in",1),Ji("strong",J_,ce(Wt(n).levelsSelected[0].level_name)+" + "+ce(Wt(n).levelsSelected.length-1)+" more",1)],64)):Wt(n).levelsSelected.length>0?(Ni(),Vi(Ai,{key:1},[Ji("span",Q_,ce(Wt(n).totalResultsSelected.toLocaleString()+(Wt(t).hasMoreResults?"+":""))+" entries in",1),Ji("strong",Z_,ce(Wt(n).levelsSelected.map((function(e){return e.level_name})).join(", ")),1)],64)):Wt(n).levelsFound.length>0?(Ni(),Vi("span",X_,ce(Wt(n).totalResults.toLocaleString()+(Wt(t).hasMoreResults?"+":""))+" entries found. None selected",1)):(Ni(),Vi("span",ex,"No entries found")),Qi(Wt(K_),{class:"w-4 h-4"})]})),_:1},8,["class"]),Qi(Ys,{"leave-active-class":"transition ease-in duration-100","leave-from-class":"opacity-100 scale-100","leave-to-class":"opacity-0 scale-90","enter-active-class":"transition ease-out duration-100","enter-from-class":"opacity-0 scale-90","enter-to-class":"opacity-100 scale-100"},{default:$n((function(){return[Qi(Wt(Im),{as:"div",class:"dropdown down left min-w-[240px]"},{default:$n((function(){return[Ji("div",tx,[Ji("div",nx,[ts(" Severity "),Wt(n).levelsFound.length>0?(Ni(),Vi(Ai,{key:0},[Wt(n).levelsSelected.length===Wt(n).levelsFound.length?(Ni(),Hi(Wt(Fm),{key:0,onClick:la(Wt(n).deselectAllLevels,["stop"])},{default:$n((function(e){return[Ji("a",{class:ee(["inline-link px-2 -mr-2 py-1 -my-1 rounded-md cursor-pointer text-brand-700 dark:text-brand-500 font-normal",[e.active?"active":""]])}," Deselect all ",2)]})),_:1},8,["onClick"])):(Ni(),Hi(Wt(Fm),{key:1,onClick:la(Wt(n).selectAllLevels,["stop"])},{default:$n((function(e){return[Ji("a",{class:ee(["inline-link px-2 -mr-2 py-1 -my-1 rounded-md cursor-pointer text-brand-700 dark:text-brand-500 font-normal",[e.active?"active":""]])}," Select all ",2)]})),_:1},8,["onClick"]))],64)):rs("",!0)]),0===Wt(n).levelsFound.length?(Ni(),Vi("div",rx,"There are no severity filters to display because no entries have been found.")):(Ni(!0),Vi(Ai,{key:1},io(Wt(n).levelsFound,(function(e){return Ni(),Hi(Wt(Fm),{onClick:la((function(t){return Wt(n).toggleLevel(e.level)}),["stop","prevent"])},{default:$n((function(t){return[Ji("button",{class:ee([t.active?"active":""])},[Qi(Zb,{class:"checkmark mr-2.5",checked:e.selected},null,8,["checked"]),Ji("span",ox,[Ji("span",{class:ee(["log-level",e.level_class])},ce(e.level_name),3),Ji("span",ix,ce(Number(e.count).toLocaleString()),1)])],2)]})),_:2},1032,["onClick"])})),256))])]})),_:1})]})),_:1})]})),_:1})])}}};function lx(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[Ji("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z"})])}var ax={class:"flex-1"},ux={class:"prefix-icon"},cx=Ji("label",{for:"query",class:"sr-only"},"Search",-1),fx={class:"relative flex-1 m-1"},px=["onKeydown"],dx={class:"clear-search"},hx={class:"submit-search"},vx={key:0,disabled:"disabled"},gx={class:"hidden xl:inline ml-1"},mx={class:"hidden xl:inline ml-1"},yx={class:"relative h-0 w-full overflow-visible"},bx=["innerHTML"];const wx={__name:"SearchInput",setup:function(e){var t=Hy(),n=Yy(),r=Fg(),o=Ng(),i=Rs((function(){return n.selectedFile})),s=$t(o.query.query||""),l=function(){var e;sb(r,"query",""===s.value?null:s.value),null===(e=document.getElementById("query-submit"))||void 0===e||e.focus()},a=function(){s.value="",l()};return dr((function(){return o.query.query}),(function(e){return s.value=e||""})),function(e,r){return Ni(),Vi("div",ax,[Ji("div",{class:ee(["search",{"has-error":Wt(n).error}])},[Ji("div",ux,[cx,yr(Qi(Wt(lx),{class:"h-4 w-4"},null,512),[[pl,!Wt(n).hasMoreResults]]),yr(Qi(pb,{class:"w-4 h-4"},null,512),[[pl,Wt(n).hasMoreResults]])]),Ji("div",fx,[yr(Ji("input",{"onUpdate:modelValue":r[0]||(r[0]=function(e){return s.value=e}),name:"query",id:"query",type:"text",onKeydown:[ua(l,["enter"]),r[1]||(r[1]=ua((function(e){return e.target.blur()}),["esc"]))]},null,40,px),[[Gl,s.value]]),yr(Ji("div",dx,[Ji("button",{onClick:a},[Qi(Wt(Nm),{class:"h-4 w-4"})])],512),[[pl,Wt(t).hasQuery]])]),Ji("div",hx,[Wt(n).hasMoreResults?(Ni(),Vi("button",vx,[Ji("span",null,[ts("Searching"),Ji("span",gx,ce(i.value?i.value.name:"all files"),1),ts("...")])])):(Ni(),Vi("button",{key:1,onClick:l,id:"query-submit"},[Ji("span",null,[ts("Search"),Ji("span",mx,ce(i.value?'in "'+i.value.name+'"':"all files"),1)]),Qi(Wt(R_),{class:"h-4 w-4"})]))])],2),Ji("div",yx,[yr(Ji("div",{class:"search-progress-bar",style:Y({width:Wt(n).percentScanned+"%"})},null,4),[[pl,Wt(n).hasMoreResults]])]),yr(Ji("p",{class:"mt-1 text-red-600 text-xs",innerHTML:Wt(n).error},null,8,bx),[[pl,Wt(n).error]])])}}},_x=wx;function xx(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[Ji("path",{"fill-rule":"evenodd",d:"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z","clip-rule":"evenodd"})])}function Sx(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[Ji("path",{"fill-rule":"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z","clip-rule":"evenodd"})])}function Ox(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[Ji("path",{"fill-rule":"evenodd",d:"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zm13.36-1.814a.75.75 0 10-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 00-1.06 1.06l2.25 2.25a.75.75 0 001.14-.094l3.75-5.25z","clip-rule":"evenodd"})])}function kx(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[Ji("path",{"fill-rule":"evenodd",d:"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zm8.706-1.442c1.146-.573 2.437.463 2.126 1.706l-.709 2.836.042-.02a.75.75 0 01.67 1.34l-.04.022c-1.147.573-2.438-.463-2.127-1.706l.71-2.836-.042.02a.75.75 0 11-.671-1.34l.041-.022zM12 9a.75.75 0 100-1.5.75.75 0 000 1.5z","clip-rule":"evenodd"})])}function Ex(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[Ji("path",{"fill-rule":"evenodd",d:"M16.28 11.47a.75.75 0 010 1.06l-7.5 7.5a.75.75 0 01-1.06-1.06L14.69 12 7.72 5.03a.75.75 0 011.06-1.06l7.5 7.5z","clip-rule":"evenodd"})])}function Cx(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[Ji("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M13.19 8.688a4.5 4.5 0 011.242 7.244l-4.5 4.5a4.5 4.5 0 01-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 00-6.364-6.364l-4.5 4.5a4.5 4.5 0 001.242 7.244"})])}function Px(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[Ji("path",{d:"M7.493 18.75c-.425 0-.82-.236-.975-.632A7.48 7.48 0 016 15.375c0-1.75.599-3.358 1.602-4.634.151-.192.373-.309.6-.397.473-.183.89-.514 1.212-.924a9.042 9.042 0 012.861-2.4c.723-.384 1.35-.956 1.653-1.715a4.498 4.498 0 00.322-1.672V3a.75.75 0 01.75-.75 2.25 2.25 0 012.25 2.25c0 1.152-.26 2.243-.723 3.218-.266.558.107 1.282.725 1.282h3.126c1.026 0 1.945.694 2.054 1.715.045.422.068.85.068 1.285a11.95 11.95 0 01-2.649 7.521c-.388.482-.987.729-1.605.729H14.23c-.483 0-.964-.078-1.423-.23l-3.114-1.04a4.501 4.501 0 00-1.423-.23h-.777zM2.331 10.977a11.969 11.969 0 00-.831 4.398 12 12 0 00.52 3.507c.26.85 1.084 1.368 1.973 1.368H4.9c.445 0 .72-.498.523-.898a8.963 8.963 0 01-.924-3.977c0-1.708.476-3.305 1.302-4.666.245-.403-.028-.959-.5-.959H4.25c-.832 0-1.612.453-1.918 1.227z"})])}var Tx=["onClick"],Ax={class:"sr-only"},jx={class:"text-green-600 dark:text-green-500 hidden md:inline"};const Rx={__name:"LogCopyButton",props:{log:{type:Object,required:!0}},setup:function(e){var t=e,n=$t(!1),r=function(){ib(t.log.url),n.value=!0,setTimeout((function(){return n.value=!1}),1e3)};return function(t,o){return Ni(),Vi("button",{class:"log-link group",onClick:la(r,["stop"]),onKeydown:o[0]||(o[0]=function(){return Wt(xb)&&Wt(xb).apply(void 0,arguments)}),title:"Copy link to this log entry"},[Ji("span",Ax,"Log index "+ce(e.log.index)+". Click the button to copy link to this log entry.",1),yr(Ji("span",{class:"hidden md:inline group-hover:underline"},ce(Number(e.log.index).toLocaleString()),513),[[pl,!n.value]]),yr(Qi(Wt(Cx),{class:"md:opacity-75 group-hover:opacity-100"},null,512),[[pl,!n.value]]),yr(Qi(Wt(Px),{class:"text-green-600 dark:text-green-500 md:hidden"},null,512),[[pl,n.value]]),yr(Ji("span",jx,"Copied!",512),[[pl,n.value]])],40,Tx)}}};var Lx={key:0,class:"tabs-container"},Ix={class:"border-b border-gray-200 dark:border-gray-800"},Fx={class:"-mb-px flex space-x-6","aria-label":"Tabs"},Nx=["onClick","aria-current"];const Mx={__name:"TabContainer",props:{tabs:{type:Array,required:!0}},setup:function(e){var t=$t(e.tabs[0]);Go("currentTab",t);var n=function(e){return t.value&&t.value.value===e.value};return function(r,o){return Ni(),Vi("div",null,[e.tabs&&e.tabs.length>1?(Ni(),Vi("div",Lx,[Ji("div",Ix,[Ji("nav",Fx,[(Ni(!0),Vi(Ai,null,io(e.tabs,(function(e){return Ni(),Vi("a",{key:e.name,href:"#",onClick:la((function(n){return t.value=e}),["prevent"]),class:ee([n(e)?"border-brand-500 dark:border-brand-400 text-brand-600 dark:text-brand-500":"border-transparent text-gray-500 dark:text-gray-400 hover:border-gray-300 hover:text-gray-700 dark:hover:text-gray-200","whitespace-nowrap border-b-2 py-2 px-1 text-sm font-medium focus:outline-brand-500"]),"aria-current":n(e)?"page":void 0},ce(e.name),11,Nx)})),128))])])])):rs("",!0),lo(r.$slots,"default")])}}};var Dx={key:0};const Bx={__name:"TabContent",props:{tabValue:{type:String,required:!0}},setup:function(e){var t=e,n=Yo("currentTab"),r=Rs((function(){return n.value&&n.value.value===t.tabValue}));return function(e,t){return r.value?(Ni(),Vi("div",Dx,[lo(e.$slots,"default")])):rs("",!0)}}};function Ux(e,t){return Ni(),Vi("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true"},[Ji("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M18.375 12.739l-7.693 7.693a4.5 4.5 0 01-6.364-6.364l10.94-10.94A3 3 0 1119.5 7.372L8.552 18.32m.009-.01l-.01.01m5.699-9.941l-7.81 7.81a1.5 1.5 0 002.112 2.13"})])}var $x={class:"mail-preview-attributes"},Vx={key:0},Hx=Ji("td",{class:"font-semibold"},"From",-1),zx={key:1},qx=Ji("td",{class:"font-semibold"},"To",-1),Wx={key:2},Kx=Ji("td",{class:"font-semibold"},"Message ID",-1),Gx={key:3},Yx=Ji("td",{class:"font-semibold"},"Subject",-1),Jx={key:4},Qx=Ji("td",{class:"font-semibold"},"Attachments",-1),Zx={class:"flex items-center"},Xx={class:"opacity-60"},eS=["onClick"];const tS={__name:"MailPreviewAttributes",props:["mail"],setup:function(e){return function(t,n){return Ni(),Vi("div",$x,[Ji("table",null,[e.mail.from?(Ni(),Vi("tr",Vx,[Hx,Ji("td",null,ce(e.mail.from),1)])):rs("",!0),e.mail.to?(Ni(),Vi("tr",zx,[qx,Ji("td",null,ce(e.mail.to),1)])):rs("",!0),e.mail.id?(Ni(),Vi("tr",Wx,[Kx,Ji("td",null,ce(e.mail.id),1)])):rs("",!0),e.mail.subject?(Ni(),Vi("tr",Gx,[Yx,Ji("td",null,ce(e.mail.subject),1)])):rs("",!0),e.mail.attachments&&e.mail.attachments.length>0?(Ni(),Vi("tr",Jx,[Qx,Ji("td",null,[(Ni(!0),Vi(Ai,null,io(e.mail.attachments,(function(t,n){return Ni(),Vi("div",{key:"mail-".concat(e.mail.id,"-attachment-").concat(n),class:"mail-attachment-button"},[Ji("div",Zx,[Qi(Wt(Ux),{class:"h-4 w-4 text-gray-500 dark:text-gray-400 mr-1"}),Ji("span",null,[ts(ce(t.filename)+" ",1),Ji("span",Xx,"("+ce(t.size_formatted)+")",1)])]),Ji("div",null,[Ji("a",{href:"#",onClick:la((function(e){return function(e){for(var t=atob(e.content),n=new Array(t.length),r=0;re.length)&&(t=e.length);for(var n=0,r=new Array(t);n
diff --git a/resources/views/livewire/pages/profile.blade.php b/resources/views/livewire/pages/profile.blade.php new file mode 100644 index 00000000000..e6a06161004 --- /dev/null +++ b/resources/views/livewire/pages/profile.blade.php @@ -0,0 +1,20 @@ +
+ + + {{ __('lychee.PROFILE') }} + +
+
+ + @if($are_notification_active) +
+

+ {{ __('lychee.USER_EMAIL_INSTRUCTION') }} +

+
+ + @endif + +
+
+
\ No newline at end of file diff --git a/resources/views/livewire/pages/settings.blade.php b/resources/views/livewire/pages/settings.blade.php new file mode 100644 index 00000000000..ff0eb8aa76b --- /dev/null +++ b/resources/views/livewire/pages/settings.blade.php @@ -0,0 +1,70 @@ +
+ + + {{ __('lychee.SETTINGS') }} + +
+
+ + + + + + + + + + + + + + + + + + + + + +
+

{{ __('lychee.CSS_TEXT') }}

+ +
+ {{ __('lychee.CSS_TITLE') }} +
+
+ +
+

{{ __('lychee.JS_TEXT') }}

+ +
+ {{ __('lychee.JS_TITLE') }} +
+
+ +
+ {{ __('lychee.MORE') }} +
+
+
+
\ No newline at end of file diff --git a/resources/views/livewire/pages/sharing.blade.php b/resources/views/livewire/pages/sharing.blade.php new file mode 100644 index 00000000000..7444ed6af26 --- /dev/null +++ b/resources/views/livewire/pages/sharing.blade.php @@ -0,0 +1,58 @@ +
+ + + {{ __('lychee.SHARING') }} + +
+
+
+

+ This page gives an overview and edit the sharing rights associated with albums. +

+
+
+ +
+ +
+
+
+
+

+ {{ __('lychee.ALBUM_TITLE') }} + {{ __('lychee.USERNAME') }} + + + + + + + +

+
+ @forelse ($this->perms as $perm) + + @empty +

+ Sharing list is empty +

+ @endforelse +
+
+
+
diff --git a/resources/views/livewire/pages/users.blade.php b/resources/views/livewire/pages/users.blade.php new file mode 100644 index 00000000000..834661ceca9 --- /dev/null +++ b/resources/views/livewire/pages/users.blade.php @@ -0,0 +1,55 @@ +
+ + + {{ __('lychee.USERS') }} + +
+
+
+

+ This pages allows you to manage users. +

    +
  • + : When selected, the user can upload content.
  • +
  • + : When selected, the user can modify their profile (username, password).
  • +
+

+ +
+
+

+ {{ __('lychee.USERNAME') }} + {{ __('lychee.LOGIN_PASSWORD') }} + + + + + + +

+ +
+ @foreach ($this->users as $user) + + @endforeach + +
+

+ + + + +

+ {{ __('lychee.CREATE') }} +
+
+
+
diff --git a/resources/views/vendor/livewire/simple-tailwind.blade.php b/resources/views/vendor/livewire/simple-tailwind.blade.php new file mode 100644 index 00000000000..e4c0c63bcc5 --- /dev/null +++ b/resources/views/vendor/livewire/simple-tailwind.blade.php @@ -0,0 +1,45 @@ +
+ @if ($paginator->hasPages()) + + @endif +
diff --git a/resources/views/vendor/livewire/tailwind.blade.php b/resources/views/vendor/livewire/tailwind.blade.php new file mode 100644 index 00000000000..aa598629e5d --- /dev/null +++ b/resources/views/vendor/livewire/tailwind.blade.php @@ -0,0 +1,171 @@ +
+ @if ($paginator->hasPages()) + + @endif +
diff --git a/resources/views/vendor/pagination/tailwind.blade.php b/resources/views/vendor/pagination/tailwind.blade.php new file mode 100644 index 00000000000..5c2a15dbb9a --- /dev/null +++ b/resources/views/vendor/pagination/tailwind.blade.php @@ -0,0 +1,148 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/routes/web-livewire.php b/routes/web-livewire.php new file mode 100644 index 00000000000..ea72ab88997 --- /dev/null +++ b/routes/web-livewire.php @@ -0,0 +1,50 @@ +group(function () { + Route::prefix(config('app.livewire') === true ? '' : 'livewire') + ->group(function () { + Route::get('/landing', Landing::class)->name('landing'); + Route::get('/all-settings', AllSettings::class)->name('all-settings'); + Route::get('/settings', Settings::class)->name('settings'); + Route::get('/profile', Profile::class)->name('profile'); + Route::get('/users', Users::class)->name('users'); + Route::get('/sharing', Sharing::class)->name('sharing'); + Route::get('/jobs', Jobs::class)->name('jobs'); + Route::get('/diagnostics', Diagnostics::class)->name('diagnostics'); + Route::get('/map/{albumId?}', Map::class)->name('livewire-map'); + Route::get('/frame/{albumId?}', Frame::class)->name('livewire-frame'); + Route::get('/gallery', Albums::class)->name('livewire-gallery'); + Route::get('/search/{albumId?}', Search::class)->name('livewire-search'); + Route::get('/gallery/{albumId}/', Album::class)->name('livewire-gallery-album'); + Route::get('/gallery/{albumId}/{photoId}', Album::class)->name('livewire-gallery-photo'); + Route::get('/', function () { + return redirect(Configs::getValueAsBool('landing_page_enable') ? route('landing') : route('livewire-gallery')); + })->name('livewire-index'); + }); + }); + diff --git a/routes/web.php b/routes/web.php index b53327184e2..835fd570b1b 100644 --- a/routes/web.php +++ b/routes/web.php @@ -22,8 +22,14 @@ Route::feeds(); -Route::get('/', [IndexController::class, 'show'])->name('home')->middleware(['migration:complete']); -Route::get('/gallery', [IndexController::class, 'gallery'])->name('gallery')->middleware(['migration:complete']); +// If we are using Livewire by default, we no longer need those routes. +if (config('app.livewire') !== true) { + Route::get('/', [IndexController::class, 'show'])->name('home')->middleware(['migration:complete']); + Route::get('/gallery', [IndexController::class, 'gallery'])->name('gallery')->middleware(['migration:complete']); + Route::get('/view', [IndexController::class, 'view'])->name('view')->middleware(['redirect-legacy-id']); + Route::get('/frame', [IndexController::class, 'frame'])->name('frame')->middleware(['migration:complete']); +} + Route::match(['get', 'post'], '/migrate', [Administration\UpdateController::class, 'migrate']) ->name('migrate') ->middleware(['migration:incomplete']); @@ -38,8 +44,5 @@ Route::get('/r/{albumID}/{photoID}', [RedirectController::class, 'photo'])->middleware(['migration:complete']); Route::get('/r/{albumID}', [RedirectController::class, 'album'])->middleware(['migration:complete']); -Route::get('/view', [IndexController::class, 'view'])->name('view')->middleware(['redirect-legacy-id']); -Route::get('/frame', [IndexController::class, 'frame'])->name('frame')->middleware(['migration:complete']); - // This route must be defined last because it is a catch all. Route::match(['get', 'post'], '{path}', HoneyPotController::class)->where('path', '.*'); diff --git a/scripts/post-merge b/scripts/post-merge index 409b2c78f42..5bdd6fd140a 100755 --- a/scripts/post-merge +++ b/scripts/post-merge @@ -16,6 +16,15 @@ else printf "\n${ORANGE}Dev mode detected${NO_COLOR}\n" echo "composer install" composer install + if command -v npm > /dev/null; then + printf "\n${ORANGE}npm detected${NO_COLOR}\n" + if [ -f "package.json" ]; then + echo "npm install --no-audit --no-fund" + npm install --no-audit --no-fund + else + printf "${GREEN}no package.json found${NO_COLOR}\n" + fi + fi else printf "\n${ORANGE}--no-dev mode detected${NO_COLOR}\n" echo "composer install --no-dev --prefer-dist" diff --git a/scripts/pre-commit b/scripts/pre-commit index a04e928b9cd..53fbf69c06d 100755 --- a/scripts/pre-commit +++ b/scripts/pre-commit @@ -8,6 +8,8 @@ printf "\n${GREEN}pre commit hook start${NO_COLOR}\n" PHP_CS_FIXER="vendor/bin/php-cs-fixer" PHP_CS_FIXER_IGNORE_ENV=1 +NPM_FORMAT="node_modules/prettier" + if [ -x "$PHP_CS_FIXER" ]; then git status --porcelain | grep -e '^[AM]\(.*\).php$' | cut -c 3- | while read line; do ${PHP_CS_FIXER} fix --config=.php-cs-fixer.php ${line}; @@ -21,4 +23,17 @@ else echo "" fi +if [ -x "$NPM_FORMAT" ]; then + npm run format + git status --porcelain | grep -e '^[AM]\(.*\).js$' | cut -c 3- | while read line; do + git add "$line"; + done +else + echo "" + printf "${YELLOW}Please install prettier, e.g.:${NO_COLOR}" + echo "" + echo " npm run install" + echo "" +fi + printf "\n${GREEN}pre commit hook finish${NO_COLOR}\n" diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 00000000000..a8870f17656 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,183 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: [ + "./resources/**/*.blade.php", + "./resources/**/*.js", + "./resources/**/*.vue", + ], + theme: { + extend: { + backgroundImage: { + 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))', + 'noise': "url('../img/noise.png')" + }, + dropShadow: { + '3xl': '0 20px 20px rgba(0, 0, 0, 1)', + }, + fontSize: { + '3xs': ['0.55rem', '0.7rem'], + '2xs' : ['0.65rem', '0.8rem'], + }, + colors: { + primary: { + 200: 'var(--primary-200)', + 300: 'var(--primary-300)', + 400: 'var(--primary-400)', + 500: 'var(--primary-500)', + 600: 'var(--primary-600)', + 700: 'var(--primary-700)', + }, + 'text-main': { + 0: 'var(--text-main-0)', + 100: 'var(--text-main-100)', + 200: 'var(--text-main-200)', + 400: 'var(--text-main-400)', + }, + 'text-hover': 'var(--text-hover)', + bg: { + 50: 'var(--bg-50)', + 100: 'var(--bg-100)', + 200: 'var(--bg-200)', + 300: 'var(--bg-300)', + 400: 'var(--bg-400)', + 500: 'var(--bg-500)', + 600: 'var(--bg-600)', + 700: 'var(--bg-700)', + 800: 'var(--bg-800)', + 900: 'var(--bg-900)', + 950: 'var(--bg-950)', + }, + danger: { + 600: 'var(--danger)', + 700: 'var(--danger-dark)', + 800: 'var(--danger-darker)', + }, + warning: { + 600: 'var(--warning)', + 700: 'var(--warning-dark)', + }, + create: { + 600: 'var(--create)', + 700: 'var(--create-dark)', + } + }, + flexShrink: { + 2: '2' + }, + transitionProperty: { + width: ['width'], + }, + keyframes: { + fadeIn: { + '0%': { 'opacity': '0' }, + '100%': { 'opacity': '1' } + }, + fadeOut: { + '0%': { 'opacity': '1' }, + '100%': { 'opacity': '0' } + }, + moveBackground: { + '0%': { 'background-position-x': '0px' }, + '100%': { 'background-position-x': '-100px' } + }, + moveUp: { + '0%': {'transform': 'translateY(80px)'}, + '100%': {'transform': 'translateY(0)'} + }, + zoomIn: { + '0%': { + 'opacity': '0', + 'transform': 'scale(0.8)' + }, + '100%': { + 'opacity': '1', + 'transform': 'scale(1)' + } + }, + zoomOut: { + '0%': { + 'opacity': '1', + 'transform': 'scale(1)' + }, + '100%': { + 'opacity': '0', + 'transform': 'scale(0.8)' + } + }, + popIn: { + '0%': { + 'opacity': '0', + 'transform': 'scale(1.1)' + }, + '100%': { + 'opacity': '1', + 'transform': 'scale(1)' + } + }, + scaleIn: { + '0%': { + 'transform': 'scale(0)' + }, + '100%': { + 'transform': 'scale(1)' + } + }, + scaleOut: { + '0%': { + 'transform': 'scale(1)' + }, + '100%': { + 'transform': 'scale(0)' + } + }, + animateDown: { + '0%': { + 'opacity': '0', + 'transform': 'translateY(-300px)' + }, + '100%': { + 'opacity': '1', + 'transform': 'translateY(0px)' + } + }, + animateUp: { + '0%': { + 'opacity': '0', + 'transform': 'translateY(300px)' + }, + '100%': { + 'opacity': '1', + 'transform': 'translateY(0px)' + } + } + + + }, + animation: { + 'fadeIn': 'fadeIn 0.3s forwards cubic-bezier(0.51, 0.92, 0.24, 1)', + 'fadeOut': 'fadeOut 0.3s forwards cubic-bezier(0.51, 0.92, 0.24, 1)', + 'zoomIn': 'zoomIn 0.2s forwards cubic-bezier(0.51, 0.92, 0.24, 1)', + 'zoomOut': 'zoomOut 0.2s forwards cubic-bezier(0.51, 0.92, 0.24, 1)', + 'moveUp': 'moveUp 0.3s forwards cubic-bezier(0.51, 0.92, 0.24, 1)', + 'scaleIn': 'scaleIn 0.3s forwards cubic-bezier(0.51,0.92,0.24,1.2)', + 'scaleOut': 'scaleOut 0.3s forwards cubic-bezier(0.51,0.92,0.24,1.2)', + + 'slowFadeIn': 'fadeIn 2s forwards cubic-bezier(0.51, 0.92, 0.24, 1)', + 'slowFadeOut': 'fadeOut 2s forwards cubic-bezier(0.51, 0.92, 0.24, 1)', + 'slowZoomIn': 'zoomIn 2s forwards cubic-bezier(0.51, 0.92, 0.24, 1)', + 'slowZoomOut': 'zoomOut 2s forwards cubic-bezier(0.51, 0.92, 0.24, 1)', + + 'slowMoveUp': 'moveUp 2s forwards cubic-bezier(0.51, 0.92, 0.24, 1)', + 'slowPopIn': 'popIn 2s forwards cubic-bezier(0.51, 0.92, 0.24, 1)', + + 'landingIntroPopIn': 'popIn 2s forwards ease-in-out', + 'landingIntroFadeOut': 'fadeOut 2s 2s forwards ease-in-out', // delayed by 2s + 'landingSlidesPopIn': 'popIn 2s 3s forwards ease-in-out', // delayed by 2s + 'ladningAnimateDown': 'animateDown 1s 3.1s forwards ease-in-out', + 'ladningAnimateUp': 'animateUp 1s 3.1s forwards ease-in-out', + 'delayedFadeOut': 'fadeOut 2s 2s forwards ease-in-out' + } + }, + }, + plugins: [], +} \ No newline at end of file diff --git a/tests/AbstractTestCase.php b/tests/AbstractTestCase.php index 177d2b140c7..474fb3fa075 100644 --- a/tests/AbstractTestCase.php +++ b/tests/AbstractTestCase.php @@ -116,4 +116,17 @@ protected static function getRecentPhotoIDs(): BaseCollection return Photo::query()->select('id')->where($recentFilter)->pluck('id'); } + + /** + * Because we are now using hard coded urls for the images size_variants instead of relative. + * We need to drop that prefix in order to access them from public_path(). + * + * @param string $url + * + * @return string prefix removed + */ + protected function dropUrlPrefix(string $url): string + { + return str_replace(config('app.url'), '', $url); + } } diff --git a/tests/Feature/BasePhotosAddHandler.php b/tests/Feature/BasePhotosAddHandler.php index 44cc05796a1..2cb5b2cd3f4 100644 --- a/tests/Feature/BasePhotosAddHandler.php +++ b/tests/Feature/BasePhotosAddHandler.php @@ -489,7 +489,7 @@ public function testUploadMultibyteTitle(): void 'title' => 'fin de journée', 'description' => null, 'tags' => [], - 'license' => 'None', + 'license' => 'none', 'is_public' => false, 'is_starred' => false, 'iso' => '400', diff --git a/tests/Feature/CommandFixPermissionsTest.php b/tests/Feature/CommandFixPermissionsTest.php index 9c15b6b8128..4f879127008 100644 --- a/tests/Feature/CommandFixPermissionsTest.php +++ b/tests/Feature/CommandFixPermissionsTest.php @@ -27,7 +27,7 @@ class CommandFixPermissionsTest extends Base\BasePhotoTest */ public function testFixPermissions(): void { - if (config('filesystems.images.visibility', 'public') !== 'public') { + if (config('filesystems.disks.images.visibility', 'public') !== 'public') { static::markTestSkipped('Wrong setting in .env file or configuration'); } @@ -38,7 +38,7 @@ public function testFixPermissions(): void static::createUploadedFile(TestConstants::SAMPLE_FILE_MONGOLIA_IMAGE) )); - $filePath = public_path($photo->size_variants->original->url); + $filePath = public_path($this->dropUrlPrefix($photo->size_variants->original->url)); $dirPath = pathinfo($filePath, PATHINFO_DIRNAME); static::skipIfNotFileOwner($filePath); diff --git a/tests/Feature/CommandGenerateThumbsTest.php b/tests/Feature/CommandGenerateThumbsTest.php index 4692d73df31..3931a918b1d 100644 --- a/tests/Feature/CommandGenerateThumbsTest.php +++ b/tests/Feature/CommandGenerateThumbsTest.php @@ -51,7 +51,7 @@ public function testThumbRecreation(): void )); // Remove the size variant "small" from disk and from DB - unlink(public_path($photo1->size_variants->small->url)); + unlink(public_path($this->dropUrlPrefix($photo1->size_variants->small->url))); DB::table('size_variants') ->where('photo_id', '=', $photo1->id) ->where('type', '=', SizeVariantType::SMALL) @@ -67,6 +67,6 @@ public function testThumbRecreation(): void $this->assertNotNull($photo2->size_variants->small); $this->assertEquals($photo1->size_variants->small->width, $photo2->size_variants->small->width); $this->assertEquals($photo1->size_variants->small->height, $photo2->size_variants->small->height); - $this->assertFileExists(public_path($photo2->size_variants->small->url)); + $this->assertFileExists(public_path($this->dropUrlPrefix($photo2->size_variants->small->url))); } } diff --git a/tests/Feature/CommandGhostbusterTest.php b/tests/Feature/CommandGhostbusterTest.php index 82633171ac0..65a66097d72 100644 --- a/tests/Feature/CommandGhostbusterTest.php +++ b/tests/Feature/CommandGhostbusterTest.php @@ -30,13 +30,13 @@ public function testRemoveOrphanedFiles(): void // and thumb, because these size variants must be generated at least // otherwise we have nothing to test. $fileURLs = array_diff([ - $photo->size_variants->original->url, - $photo->size_variants->medium2x?->url, - $photo->size_variants->medium?->url, - $photo->size_variants->small2x?->url, - $photo->size_variants->small?->url, - $photo->size_variants->thumb2x?->url, - $photo->size_variants->thumb->url, + $this->dropUrlPrefix($photo->size_variants->original->url), + $this->dropUrlPrefix($photo->size_variants->medium2x?->url), + $this->dropUrlPrefix($photo->size_variants->medium?->url), + $this->dropUrlPrefix($photo->size_variants->small2x?->url), + $this->dropUrlPrefix($photo->size_variants->small?->url), + $this->dropUrlPrefix($photo->size_variants->thumb2x?->url), + $this->dropUrlPrefix($photo->size_variants->thumb->url), ], [null]); $this->assertNotEmpty($fileURLs); @@ -79,18 +79,18 @@ public function testRemoveZombiePhotos(): void // otherwise we have nothing to test. $originalFileURL = $photo->size_variants->original->url; $fileURLs = array_diff([ - $originalFileURL, - $photo->size_variants->medium2x?->url, - $photo->size_variants->medium?->url, - $photo->size_variants->small2x?->url, - $photo->size_variants->small?->url, - $photo->size_variants->thumb2x?->url, - $photo->size_variants->thumb->url, + $this->dropUrlPrefix($originalFileURL), + $this->dropUrlPrefix($photo->size_variants->medium2x?->url), + $this->dropUrlPrefix($photo->size_variants->medium?->url), + $this->dropUrlPrefix($photo->size_variants->small2x?->url), + $this->dropUrlPrefix($photo->size_variants->small?->url), + $this->dropUrlPrefix($photo->size_variants->thumb2x?->url), + $this->dropUrlPrefix($photo->size_variants->thumb->url), ], [null]); $this->assertNotEmpty($fileURLs); // Remove original file - \Safe\unlink(public_path($originalFileURL)); + \Safe\unlink(public_path($this->dropUrlPrefix($originalFileURL))); // Ghostbuster, ... $this->artisan(self::COMMAND, [ diff --git a/tests/Feature/CommandTakeDateTest.php b/tests/Feature/CommandTakeDateTest.php index 88a8a10d11a..402fa7a5a01 100644 --- a/tests/Feature/CommandTakeDateTest.php +++ b/tests/Feature/CommandTakeDateTest.php @@ -47,7 +47,7 @@ public function testSetUploadTimeFromFileTime(): void /** @var \App\Models\Photo */ $photo = static::convertJsonToObject($this->photos_tests->get($id)); - $file_time = \Safe\filemtime(public_path($photo->size_variants->original->url)); + $file_time = \Safe\filemtime(public_path($this->dropUrlPrefix($photo->size_variants->original->url))); $carbon = new Carbon($photo->created_at); $this->assertEquals($file_time, $carbon->getTimestamp()); diff --git a/tests/Feature/CommandVideoDataTest.php b/tests/Feature/CommandVideoDataTest.php index a71232a9c0a..741de6c4fef 100644 --- a/tests/Feature/CommandVideoDataTest.php +++ b/tests/Feature/CommandVideoDataTest.php @@ -31,7 +31,7 @@ public function testThumbRecreation(): void )); // Remove the size variant "thumb" from disk and from DB - \Safe\unlink(public_path($photo1->size_variants->thumb->url)); + \Safe\unlink(public_path($this->dropUrlPrefix($photo1->size_variants->thumb->url))); DB::table('size_variants') ->where('photo_id', '=', $photo1->id) ->where('type', '=', SizeVariantType::THUMB) @@ -47,6 +47,6 @@ public function testThumbRecreation(): void $this->assertNotNull($photo2->size_variants->thumb); $this->assertEquals($photo1->size_variants->thumb->width, $photo2->size_variants->thumb->width); $this->assertEquals($photo1->size_variants->thumb->height, $photo2->size_variants->thumb->height); - $this->assertFileExists(public_path($photo2->size_variants->thumb->url)); + $this->assertFileExists(public_path($this->dropUrlPrefix($photo2->size_variants->thumb->url))); } } diff --git a/tests/Feature/PhotosAddMethodsTest.php b/tests/Feature/PhotosAddMethodsTest.php index 3fb9d9b2d27..949d8a6d5aa 100644 --- a/tests/Feature/PhotosAddMethodsTest.php +++ b/tests/Feature/PhotosAddMethodsTest.php @@ -35,7 +35,12 @@ public function testImportViaMove(): void { // import the photo copy(base_path(TestConstants::SAMPLE_FILE_NIGHT_IMAGE), static::importPath('night.jpg')); - $this->photos_tests->importFromServer(static::importPath(), null, true, false, false); + $this->photos_tests->importFromServer( + path: static::importPath(), + album_id: null, + delete_imported: true, + skip_duplicates: false, + import_via_symlink: false); // check if the file has been moved $this->assertEquals(false, file_exists(static::importPath('night.jpg'))); @@ -45,7 +50,12 @@ public function testImportViaCopy(): void { // import the photo copy(base_path(TestConstants::SAMPLE_FILE_NIGHT_IMAGE), static::importPath('night.jpg')); - $this->photos_tests->importFromServer(static::importPath(), null, false, false, false); + $this->photos_tests->importFromServer( + path: static::importPath(), + album_id: null, + delete_imported: false, + skip_duplicates: false, + import_via_symlink: false); // check if the file is still there $this->assertEquals(true, file_exists(static::importPath('night.jpg'))); @@ -67,7 +77,7 @@ public function testImportViaSymlink(): void $photo_id = $ids_after->diff($ids_before)->first(); /** @var \App\Models\Photo $photo */ $photo = static::convertJsonToObject($this->photos_tests->get($photo_id)); - $symlink_path = public_path($photo->size_variants->original->url); + $symlink_path = public_path($this->dropUrlPrefix($photo->size_variants->original->url)); $this->assertEquals(true, is_link($symlink_path)); } @@ -190,8 +200,8 @@ public function testAppleLivePhotoImportViaSymlink(): void $this->assertEquals(pathinfo($photo->live_photo_url, PATHINFO_FILENAME), pathinfo($photo->size_variants->original->url, PATHINFO_FILENAME)); // get the paths of the original size variant and the live photo and check whether they are truly symbolic links - $symlink_path1 = public_path($photo->size_variants->original->url); - $symlink_path2 = public_path($photo->live_photo_url); + $symlink_path1 = public_path($this->dropUrlPrefix($photo->size_variants->original->url)); + $symlink_path2 = public_path($this->dropUrlPrefix($photo->live_photo_url)); $this->assertEquals(true, is_link($symlink_path1)); $this->assertEquals(true, is_link($symlink_path2)); } diff --git a/tests/Feature/PhotosOperationsTest.php b/tests/Feature/PhotosOperationsTest.php index cde528dfa33..07737df9a0a 100644 --- a/tests/Feature/PhotosOperationsTest.php +++ b/tests/Feature/PhotosOperationsTest.php @@ -150,7 +150,7 @@ public function testManyFunctionsAtOnce(): void 'album_id' => null, 'id' => $id, 'created_at' => $updated_taken_at->setTimezone('UTC')->format('Y-m-d\TH:i:sP'), - 'license' => 'All Rights Reserved', + 'license' => 'reserved', 'is_public' => true, 'is_starred' => true, 'tags' => ['night', 'trees'], @@ -190,7 +190,7 @@ public function testManyFunctionsAtOnce(): void 'focal' => '16 mm', 'iso' => '1250', 'lens' => 'EF16-35mm f/2.8L USM', - 'license' => 'All Rights Reserved', + 'license' => 'reserved', 'make' => 'Canon', 'model' => 'Canon EOS R', 'is_public' => true, diff --git a/tests/Feature/Traits/RequiresEmptyUsers.php b/tests/Feature/Traits/RequiresEmptyUsers.php index adf7c18f3e0..2af5ae6989c 100644 --- a/tests/Feature/Traits/RequiresEmptyUsers.php +++ b/tests/Feature/Traits/RequiresEmptyUsers.php @@ -24,7 +24,7 @@ protected function setUpRequiresEmptyUsers(): void static::assertEquals( 0, DB::table('users') - ->where('may_administrate', '=', false) + ->where('id', '>', 1) ->count() ); } @@ -32,6 +32,6 @@ protected function setUpRequiresEmptyUsers(): void protected function tearDownRequiresEmptyUsers(): void { // Clean up remaining stuff from tests - DB::table('users')->where('may_administrate', '=', false)->delete(); + DB::table('users')->where('id', '>', 1)->delete(); } } diff --git a/tests/Livewire/Base/BaseLivewireTest.php b/tests/Livewire/Base/BaseLivewireTest.php new file mode 100644 index 00000000000..c06fd63296a --- /dev/null +++ b/tests/Livewire/Base/BaseLivewireTest.php @@ -0,0 +1,94 @@ +setUpRequiresEmptyUsers(); + $this->setUpRequiresEmptyAlbums(); + $this->setUpRequiresEmptyPhotos(); + + $this->admin = User::factory()->may_administrate()->create(); + $this->userMayUpload1 = User::factory()->may_upload()->create(); + $this->userMayUpload2 = User::factory()->may_upload()->create(); + $this->userNoUpload = User::factory()->create(); + $this->userLocked = User::factory()->locked()->create(); + + $this->album1 = Album::factory()->as_root()->owned_by($this->userMayUpload1)->create(); + $this->photo1 = Photo::factory()->owned_by($this->userMayUpload1)->with_GPS_coordinates()->in($this->album1)->create(); + $this->photo1b = Photo::factory()->owned_by($this->userMayUpload1)->with_subGPS_coordinates()->in($this->album1)->create(); + + $this->subAlbum1 = Album::factory()->children_of($this->album1)->owned_by($this->userMayUpload1)->create(); + $this->subPhoto1 = Photo::factory()->owned_by($this->userMayUpload1)->with_GPS_coordinates()->in($this->subAlbum1)->create(); + + $this->album2 = Album::factory()->as_root()->owned_by($this->userMayUpload1)->create(); + $this->photo2 = Photo::factory()->owned_by($this->userMayUpload1)->with_GPS_coordinates()->in($this->album2)->create(); + + $this->subAlbum2 = Album::factory()->children_of($this->album2)->owned_by($this->userMayUpload1)->create(); + $this->subPhoto2 = Photo::factory()->owned_by($this->userMayUpload1)->with_GPS_coordinates()->in($this->subAlbum2)->create(); + + $this->photoUnsorted = Photo::factory()->owned_by($this->userMayUpload1)->with_GPS_coordinates()->create(); + + $this->withoutVite(); + } + + public function tearDown(): void + { + $this->tearDownRequiresEmptyPhotos(); + $this->tearDownRequiresEmptyAlbums(); + $this->tearDownRequiresEmptyUsers(); + + parent::tearDown(); + } + + final public static function notifySuccess(): array + { + return ['msg' => __('lychee.CHANGE_SUCCESS'), 'type' => NotificationType::SUCCESS->value]; + } +} \ No newline at end of file diff --git a/tests/Livewire/Forms/Album/CreateTagTest.php b/tests/Livewire/Forms/Album/CreateTagTest.php new file mode 100644 index 00000000000..ec055463625 --- /dev/null +++ b/tests/Livewire/Forms/Album/CreateTagTest.php @@ -0,0 +1,49 @@ +assertForbidden(); + } + + public function testCreateLoggedNoRights(): void + { + Livewire::actingAs($this->userNoUpload)->test(CreateTag::class) + ->assertForbidden(); + } + + public function testCreateLoggedIn(): void + { + Livewire::actingAs($this->userMayUpload1)->test(CreateTag::class) + ->assertOk() + ->assertViewIs('livewire.forms.add.create-tag') + ->call('close') + ->assertDispatched('closeModal'); + + Livewire::actingAs($this->userMayUpload1)->test(CreateTag::class) + ->assertOk() + ->assertViewIs('livewire.forms.add.create-tag') + ->set('title', fake()->country() . ' ' . fake()->year()) + ->set('tag', 'something') + ->call('submit') + ->assertRedirect(); + } +} diff --git a/tests/Livewire/Forms/Album/CreateTest.php b/tests/Livewire/Forms/Album/CreateTest.php new file mode 100644 index 00000000000..93927d0f292 --- /dev/null +++ b/tests/Livewire/Forms/Album/CreateTest.php @@ -0,0 +1,60 @@ + [Params::PARENT_ID => null]]) + ->assertForbidden(); + + Livewire::test(Create::class, ['params' => [Params::PARENT_ID => $this->album1->id]]) + ->assertForbidden(); + } + + public function testCreateLoggedNoRights(): void + { + Livewire::actingAs($this->userNoUpload)->test(Create::class, ['params' => [Params::PARENT_ID => null]]) + ->assertForbidden(); + + Livewire::actingAs($this->userNoUpload)->test(Create::class, ['params' => [Params::PARENT_ID => $this->album1->id]]) + ->assertForbidden(); + + Livewire::actingAs($this->userMayUpload2)->test(Create::class, ['params' => [Params::PARENT_ID => $this->album1->id]]) + ->assertForbidden(); + } + + public function testCreateLoggedIn(): void + { + Livewire::actingAs($this->userMayUpload1)->test(Create::class, ['params' => [Params::PARENT_ID => $this->album1->id]]) + ->assertOk() + ->assertViewIs('livewire.forms.add.create') + ->call('close') + ->assertDispatched('closeModal'); + + Livewire::actingAs($this->userMayUpload1)->test(Create::class, ['params' => [Params::PARENT_ID => $this->album1->id]]) + ->assertOk() + ->assertViewIs('livewire.forms.add.create') + ->set('title', fake()->country() . ' ' . fake()->year()) + ->call('submit') + ->assertRedirect(); + + $this->assertCount(2, $this->album1->fresh()->load('children')->children); + } +} diff --git a/tests/Livewire/Forms/Album/DeletePanelTest.php b/tests/Livewire/Forms/Album/DeletePanelTest.php new file mode 100644 index 00000000000..41ba8d46b2b --- /dev/null +++ b/tests/Livewire/Forms/Album/DeletePanelTest.php @@ -0,0 +1,52 @@ + $this->album1]) + ->assertForbidden(); + } + + public function testDeletePanelLoggedNoRights(): void + { + Livewire::actingAs($this->userNoUpload)->test(DeletePanel::class, ['album' => $this->album1]) + ->assertForbidden(); + + Livewire::actingAs($this->userMayUpload2)->test(DeletePanel::class, ['album' => $this->album1]) + ->assertForbidden(); + } + + public function testDeletePanelLoggedIn(): void + { + Livewire::actingAs($this->userMayUpload1)->test(DeletePanel::class, ['album' => $this->subAlbum1]) + ->assertOk() + ->assertViewIs('livewire.forms.album.delete-panel') + ->call('delete') + ->assertRedirect(route('livewire-gallery-album', ['albumId' => $this->album1->id])); + + $this->assertCount(0, $this->album1->fresh()->load('children')->children); + + Livewire::actingAs($this->userMayUpload1)->test(DeletePanel::class, ['album' => $this->album1]) + ->assertOk() + ->assertViewIs('livewire.forms.album.delete-panel') + ->call('delete') + ->assertRedirect(route('livewire-gallery')); + } +} diff --git a/tests/Livewire/Forms/Album/DeleteTest.php b/tests/Livewire/Forms/Album/DeleteTest.php new file mode 100644 index 00000000000..7127acc9882 --- /dev/null +++ b/tests/Livewire/Forms/Album/DeleteTest.php @@ -0,0 +1,58 @@ + [Params::PARENT_ID => null, Params::ALBUM_ID => $this->album1->id]]) + ->assertForbidden(); + + Livewire::test(Delete::class, ['params' => [Params::PARENT_ID => $this->album1->id, Params::ALBUM_ID => $this->subAlbum1->id]]) + ->assertForbidden(); + } + + public function testDeleteLoggedNoRights(): void + { + Livewire::actingAs($this->userNoUpload)->test(Delete::class, ['params' => [Params::PARENT_ID => null, Params::ALBUM_ID => $this->album1->id]]) + ->assertForbidden(); + + Livewire::actingAs($this->userNoUpload)->test(Delete::class, ['params' => [Params::PARENT_ID => $this->album1->id, Params::ALBUM_ID => $this->subAlbum1->id]]) + ->assertForbidden(); + + Livewire::actingAs($this->userMayUpload2)->test(Delete::class, ['params' => [Params::PARENT_ID => $this->album1->id, Params::ALBUM_ID => $this->subAlbum1->id]]) + ->assertForbidden(); + } + + public function testDeleteLoggedIn(): void + { + Livewire::actingAs($this->userMayUpload1)->test(Delete::class, ['params' => [Params::PARENT_ID => $this->album1->id, Params::ALBUM_ID => $this->subAlbum1->id]]) + ->assertOk() + ->assertViewIs('livewire.forms.album.delete') + ->call('close'); + + Livewire::actingAs($this->userMayUpload1)->test(Delete::class, ['params' => [Params::PARENT_ID => $this->album1->id, Params::ALBUM_ID => $this->subAlbum1->id]]) + ->assertOk() + ->assertViewIs('livewire.forms.album.delete') + ->call('delete') + ->assertRedirect(route('livewire-gallery-album', ['albumId' => $this->album1->id])); + + $this->assertCount(0, $this->album1->fresh()->load('children')->children); + } +} diff --git a/tests/Livewire/Forms/Album/MergeMoveTest.php b/tests/Livewire/Forms/Album/MergeMoveTest.php new file mode 100644 index 00000000000..339319f99db --- /dev/null +++ b/tests/Livewire/Forms/Album/MergeMoveTest.php @@ -0,0 +1,132 @@ + [Params::PARENT_ID => null, Params::ALBUM_ID => $this->album1->id]]) + ->assertForbidden(); + + Livewire::test(Merge::class, ['params' => [Params::PARENT_ID => $this->album1->id, Params::ALBUM_ID => $this->subAlbum1->id]]) + ->assertForbidden(); + + Livewire::test(Merge::class, ['params' => [Params::PARENT_ID => null, Params::ALBUM_IDS => [$this->album1->id, $this->subAlbum1->id]]]) + ->assertForbidden(); + } + + public function testMoveLoggedOut(): void + { + Livewire::test(Move::class, ['params' => [Params::PARENT_ID => null, Params::ALBUM_ID => $this->album1->id]]) + ->assertForbidden(); + + Livewire::test(Move::class, ['params' => [Params::PARENT_ID => $this->album1->id, Params::ALBUM_ID => $this->subAlbum1->id]]) + ->assertForbidden(); + } + + public function testMergeLoggedNoRights(): void + { + Livewire::actingAs($this->userNoUpload)->test(Merge::class, ['params' => [Params::PARENT_ID => null, Params::ALBUM_ID => $this->album1->id]]) + ->assertForbidden(); + + Livewire::actingAs($this->userNoUpload)->test(Merge::class, ['params' => [Params::PARENT_ID => $this->album1->id, Params::ALBUM_ID => $this->subAlbum1->id]]) + ->assertForbidden(); + + Livewire::actingAs($this->userMayUpload2)->test(Merge::class, ['params' => [Params::PARENT_ID => $this->album1->id, Params::ALBUM_ID => $this->subAlbum1->id]]) + ->assertForbidden(); + } + + public function testMoveLoggedNoRights(): void + { + Livewire::actingAs($this->userNoUpload)->test(Move::class, ['params' => [Params::PARENT_ID => null, Params::ALBUM_ID => $this->album1->id]]) + ->assertForbidden(); + + Livewire::actingAs($this->userNoUpload)->test(Move::class, ['params' => [Params::PARENT_ID => $this->album1->id, Params::ALBUM_ID => $this->subAlbum1->id]]) + ->assertForbidden(); + + Livewire::actingAs($this->userMayUpload2)->test(Move::class, ['params' => [Params::PARENT_ID => $this->album1->id, Params::ALBUM_ID => $this->subAlbum1->id]]) + ->assertForbidden(); + } + + public function testMergeLoggedIn(): void + { + Livewire::actingAs($this->userMayUpload1)->test(Merge::class, ['params' => [Params::PARENT_ID => $this->album1->id, Params::ALBUM_ID => $this->subAlbum1->id]]) + ->assertOk() + ->assertViewIs('livewire.forms.album.merge') + ->call('close'); + + Livewire::actingAs($this->userMayUpload1)->test(Merge::class, ['params' => [Params::PARENT_ID => $this->album1->id, Params::ALBUM_ID => $this->subAlbum1->id]]) + ->assertOk() + ->assertViewIs('livewire.forms.album.merge') + ->call('setAlbum', $this->album1->id, $this->album1->title) + ->assertSet('albumID', $this->album1->id) + ->assertSet('title', $this->album1->title) + ->assertOk() + ->call('submit') + ->assertRedirect(route('livewire-gallery-album', ['albumId' => $this->album1->id])); + + $this->assertCount(0, $this->album1->fresh()->load('children')->children); + + Livewire::actingAs($this->userMayUpload1)->test(Merge::class, ['params' => [Params::PARENT_ID => null, Params::ALBUM_ID => $this->album1->id]]) + ->assertOk() + ->assertViewIs('livewire.forms.album.merge') + ->call('setAlbum', $this->album2->id, $this->album2->title) + ->assertSet('albumID', $this->album2->id) + ->assertSet('title', $this->album2->title) + ->assertOk() + ->call('submit') + ->assertRedirect(route('livewire-gallery')); + + $this->assertCount(1, $this->album2->fresh()->load('children')->children); + } + + public function testMoveLoggedIn(): void + { + Livewire::actingAs($this->userMayUpload1)->test(Move::class, ['params' => [Params::PARENT_ID => $this->album1->id, Params::ALBUM_ID => $this->subAlbum1->id]]) + ->assertOk() + ->assertViewIs('livewire.forms.album.move') + ->call('close'); + + Livewire::actingAs($this->userMayUpload1)->test(Move::class, ['params' => [Params::PARENT_ID => $this->album1->id, Params::ALBUM_ID => $this->subAlbum1->id]]) + ->assertOk() + ->assertViewIs('livewire.forms.album.move') + ->call('setAlbum', $this->album2->id, $this->album2->title) + ->assertSet('albumID', $this->album2->id) + ->assertSet('title', $this->album2->title) + ->assertOk() + ->call('submit') + ->assertRedirect(route('livewire-gallery-album', ['albumId' => $this->album1->id])); + + $this->assertCount(0, $this->album1->fresh()->load('children')->children); + $this->assertCount(2, $this->album2->fresh()->load('children')->children); + + Livewire::actingAs($this->userMayUpload1)->test(Move::class, ['params' => [Params::PARENT_ID => null, Params::ALBUM_ID => $this->album1->id]]) + ->assertOk() + ->assertViewIs('livewire.forms.album.move') + ->call('setAlbum', $this->album2->id, $this->album2->title) + ->assertSet('albumID', $this->album2->id) + ->assertSet('title', $this->album2->title) + ->assertOk() + ->call('submit') + ->assertRedirect(route('livewire-gallery')); + + $this->assertCount(3, $this->album2->fresh()->load('children')->children); + } +} diff --git a/tests/Livewire/Forms/Album/MovePanelTest.php b/tests/Livewire/Forms/Album/MovePanelTest.php new file mode 100644 index 00000000000..a42cfc24a6c --- /dev/null +++ b/tests/Livewire/Forms/Album/MovePanelTest.php @@ -0,0 +1,66 @@ + $this->subAlbum1]) + ->assertForbidden(); + + Livewire::test(MovePanel::class, ['album' => $this->subAlbum1]) + ->assertForbidden(); + } + + public function testMoveLoggedNoRights(): void + { + Livewire::actingAs($this->userNoUpload)->test(MovePanel::class, ['album' => $this->subAlbum1]) + ->assertForbidden(); + + Livewire::actingAs($this->userMayUpload2)->test(MovePanel::class, ['album' => $this->subAlbum1]) + ->assertForbidden(); + } + + public function testMoveLoggedIn(): void + { + Livewire::actingAs($this->userMayUpload1)->test(MovePanel::class, ['album' => $this->subAlbum1]) + ->assertOk() + ->assertViewIs('livewire.forms.album.move-panel') + ->call('setAlbum', $this->album2->id, $this->album2->title) + ->assertSet('albumID', $this->album2->id) + ->assertSet('title', $this->album2->title) + ->assertOk() + ->call('move') + ->assertRedirect(route('livewire-gallery-album', ['albumId' => $this->album1->id])); + + $this->assertCount(0, $this->album1->fresh()->load('children')->children); + $this->assertCount(2, $this->album2->fresh()->load('children')->children); + + Livewire::actingAs($this->userMayUpload1)->test(MovePanel::class, ['album' => $this->album1]) + ->assertOk() + ->assertViewIs('livewire.forms.album.move-panel') + ->call('setAlbum', $this->album2->id, $this->album2->title) + ->assertSet('albumID', $this->album2->id) + ->assertSet('title', $this->album2->title) + ->assertOk() + ->call('move') + ->assertRedirect(route('livewire-gallery')); + + $this->assertCount(3, $this->album2->fresh()->load('children')->children); + } +} diff --git a/tests/Livewire/Forms/Album/PropertiesTest.php b/tests/Livewire/Forms/Album/PropertiesTest.php new file mode 100644 index 00000000000..9bfb7c3ae08 --- /dev/null +++ b/tests/Livewire/Forms/Album/PropertiesTest.php @@ -0,0 +1,43 @@ + $this->album1])->assertForbidden(); + } + + public function testPropertiesLoggedIn(): void + { + Livewire::actingAs($this->admin)->test(Properties::class, ['album' => $this->album1]) + ->assertOk() + ->assertViewIs('livewire.forms.album.properties') + ->call('submit') + ->assertOk() + ->assertDispatched('notify', self::notifySuccess()); + + Livewire::actingAs($this->admin)->test(Properties::class, ['album' => $this->album1]) + ->assertOk() + ->assertViewIs('livewire.forms.album.properties') + ->set('license', 'WTFPL') + ->call('submit') + ->assertOk() + ->assertNotDispatched('notify', self::notifySuccess()); + } +} diff --git a/tests/Livewire/Forms/Album/RenameTest.php b/tests/Livewire/Forms/Album/RenameTest.php new file mode 100644 index 00000000000..7834a4f2e31 --- /dev/null +++ b/tests/Livewire/Forms/Album/RenameTest.php @@ -0,0 +1,61 @@ + [Params::PARENT_ID => null, Params::ALBUM_ID => $this->album1->id]]) + ->assertForbidden(); + + Livewire::test(Rename::class, ['params' => [Params::PARENT_ID => $this->album1->id, Params::ALBUM_ID => $this->subAlbum1->id]]) + ->assertForbidden(); + } + + public function testRenameLoggedNoRights(): void + { + Livewire::actingAs($this->userNoUpload)->test(Rename::class, ['params' => [Params::PARENT_ID => null, Params::ALBUM_ID => $this->album1->id]]) + ->assertForbidden(); + + Livewire::actingAs($this->userNoUpload)->test(Rename::class, ['params' => [Params::PARENT_ID => $this->album1->id, Params::ALBUM_ID => $this->subAlbum1->id]]) + ->assertForbidden(); + + Livewire::actingAs($this->userMayUpload2)->test(Rename::class, ['params' => [Params::PARENT_ID => null, Params::ALBUM_ID => $this->album1->id]]) + ->assertForbidden(); + + Livewire::actingAs($this->userMayUpload2)->test(Rename::class, ['params' => [Params::PARENT_ID => $this->album1->id, Params::ALBUM_ID => $this->subAlbum1->id]]) + ->assertForbidden(); + } + + public function testRenameLoggedIn(): void + { + Livewire::actingAs($this->userMayUpload1)->test(Rename::class, ['params' => [Params::PARENT_ID => $this->album1->id, Params::ALBUM_ID => $this->subAlbum1->id]]) + ->assertOk() + ->assertViewIs('livewire.forms.album.rename') + ->call('close'); + + Livewire::actingAs($this->userMayUpload1)->test(Rename::class, ['params' => [Params::PARENT_ID => $this->album1->id, Params::ALBUM_ID => $this->subAlbum1->id]]) + ->assertOk() + ->assertViewIs('livewire.forms.album.rename') + ->set('title', $this->album1->title) + ->assertOk() + ->call('submit') + ->assertDispatched('reloadPage'); + } +} diff --git a/tests/Livewire/Forms/Album/SearchAlbumTest.php b/tests/Livewire/Forms/Album/SearchAlbumTest.php new file mode 100644 index 00000000000..3274ac8a6b8 --- /dev/null +++ b/tests/Livewire/Forms/Album/SearchAlbumTest.php @@ -0,0 +1,137 @@ +album2->title = 'vzreckosowoigygagvarcknkxubsbmrczvkmwqayhsemhpwidplztkifahdywtuaghlyighdcrzxjlzzdcuj'; + $this->album2->save(); + } + + public function testSearchAlbumLoggedOut(): void + { + Livewire::test(SearchAlbum::class, ['parent_id' => null, 'lft' => null, 'rgt' => null]) + ->assertOk() + ->assertCount('albumListSaved', 0) + ->assertSet('albumListSaved', []); + + Livewire::test(SearchAlbum::class, ['parent_id' => $this->album1->id, 'lft' => $this->album1->_lft, 'rgt' => $this->album1->_rgt]) + ->assertOk() + ->assertCount('albumListSaved', 1) + ->assertSet('albumListSaved', [ + [ + 'id' => null, + 'title' => __('lychee.ROOT'), + 'original' => __('lychee.ROOT'), + 'short_title' => __('lychee.ROOT'), + 'thumb' => 'img/no_images.svg', + ], + ]); + } + + public function testSearchAlbumLoggedInAsNotOwner(): void + { + Livewire::actingAs($this->userMayUpload2)->test(SearchAlbum::class, ['parent_id' => null, 'lft' => null, 'rgt' => null]) + ->assertOk() + ->assertCount('albumListSaved', 0) + ->assertSet('albumListSaved', []); + + Livewire::actingAs($this->userMayUpload2)->test(SearchAlbum::class, ['parent_id' => $this->album1->id, 'lft' => $this->album1->_lft, 'rgt' => $this->album1->_rgt]) + ->assertOk() + ->assertCount('albumListSaved', 1) + ->assertSet('albumListSaved', [ + [ + 'id' => null, + 'title' => __('lychee.ROOT'), + 'original' => __('lychee.ROOT'), + 'short_title' => __('lychee.ROOT'), + 'thumb' => 'img/no_images.svg', + ], + ]); + } + + public function testSearchAlbumLoggedInAsOwner(): void + { + $shorten1 = substr($this->album1->title, 0, 3); + $shorten2 = substr($this->album2->title, 0, 3); + $shorten2b = substr($this->subAlbum2->title, 0, 3); + + $count = 2; + + // This is because names are randomly generated and we might get a colision + if ($shorten2 === $shorten1) { + $count += 2; + } elseif ($shorten2b === $shorten1) { + $count++; + } + + Livewire::actingAs($this->userMayUpload1)->test(SearchAlbum::class, ['parent_id' => null, 'lft' => null, 'rgt' => null]) + ->assertOk() + ->assertCount('albumListSaved', 4) + ->assertCount('albumList', 4) + ->set('search', $shorten1) + ->assertOk() + ->assertCount('albumList', $count); + + if ($shorten2b === $shorten2) { + $count = 2; + } else { + $count = 1; + } + + Livewire::actingAs($this->userMayUpload1)->test(SearchAlbum::class, ['parent_id' => $this->album1->id, 'lft' => $this->album1->_lft, 'rgt' => $this->album1->_rgt]) + ->assertOk() + ->assertCount('albumListSaved', 3) + ->assertCount('albumList', 3) + ->set('search', $shorten2b) + ->assertCount('albumList', $count); + } + + // public function testSearchAlbumLoggedNoRights(): void + // { + // Livewire::actingAs($this->userNoUpload)->test(SearchAlbum::class, ['params' => [Params::PARENT_ID => null, Params::ALBUM_ID => $this->album1->id]]) + // ->assertForbidden(); + + // Livewire::actingAs($this->userNoUpload)->test(SearchAlbum::class, ['params' => [Params::PARENT_ID => $this->album1->id, Params::ALBUM_ID => $this->subAlbum1->id]]) + // ->assertForbidden(); + + // Livewire::actingAs($this->userMayUpload2)->test(SearchAlbum::class, ['params' => [Params::PARENT_ID => null, Params::ALBUM_ID => $this->album1->id]]) + // ->assertForbidden(); + + // Livewire::actingAs($this->userMayUpload2)->test(SearchAlbum::class, ['params' => [Params::PARENT_ID => $this->album1->id, Params::ALBUM_ID => $this->subAlbum1->id]]) + // ->assertForbidden(); + // } + + // public function testSearchAlbumLoggedIn(): void + // { + // Livewire::actingAs($this->userMayUpload1)->test(SearchAlbum::class, ['params' => [Params::PARENT_ID => $this->album1->id, Params::ALBUM_ID => $this->subAlbum1->id]]) + // ->assertOk() + // ->assertViewIs('livewire.forms.album.SearchAlbum') + // ->call('close'); + + // Livewire::actingAs($this->userMayUpload1)->test(SearchAlbum::class, ['params' => [Params::PARENT_ID => $this->album1->id, Params::ALBUM_ID => $this->subAlbum1->id]]) + // ->assertOk() + // ->assertViewIs('livewire.forms.album.SearchAlbum') + // ->set('title', $this->album1->title) + // ->assertOk() + // ->call('submit') + // ->assertDispatched('reloadPage'); + // } +} diff --git a/tests/Livewire/Forms/Album/ShareWithTest.php b/tests/Livewire/Forms/Album/ShareWithTest.php new file mode 100644 index 00000000000..886e0f7afd5 --- /dev/null +++ b/tests/Livewire/Forms/Album/ShareWithTest.php @@ -0,0 +1,105 @@ + $this->album1])->assertForbidden(); + } + + public function testShareWithLoggedIn(): void + { + Livewire::actingAs($this->userMayUpload1)->test(ShareWith::class, ['album' => $this->album1]) + ->assertOk() + ->assertViewIs('livewire.forms.album.share-with') + ->set('search', 'a') + ->assertOk() + ->set('search', 'u') + ->call('select', $this->userMayUpload2->id, $this->userMayUpload2->username) + ->assertSet('userID', $this->userMayUpload2->id) + ->assertSet('username', $this->userMayUpload2->username) + ->call('clearUsername') + ->assertSet('userID', null) + ->assertSet('username', null) + ->call('select', $this->userMayUpload2->id, $this->userMayUpload2->username) + ->set('grants_full_photo_access', true) + ->set('grants_download', true) + ->set('grants_upload', true) + ->set('grants_edit', true) + ->set('grants_delete', true) + ->call('add') + ->assertOk(); + + $this->album1->fresh(); + $this->album1->base_class->load('access_permissions'); + + // we do have one permission + $this->assertEquals(1, $this->album1->access_permissions->count()); + /** @var AccessPermission $perm */ + $perm = $this->album1->access_permissions->first(); + + $this->assertEquals($this->userMayUpload2->id, $perm->user_id); + $this->assertTrue($perm->grants_full_photo_access); + $this->assertTrue($perm->grants_download); + $this->assertTrue($perm->grants_upload); + $this->assertTrue($perm->grants_edit); + $this->assertTrue($perm->grants_delete); + $this->assertNotNull($perm->album); + + Livewire::actingAs($this->userMayUpload2)->test(ShareWithLine::class, ['perm' => $perm]) + ->assertForbidden(); + + Livewire::actingAs($this->userMayUpload1)->test(ShareWithLine::class, ['perm' => $perm]) + ->assertOk() + ->set('grants_full_photo_access', false) + ->set('grants_download', false) + ->set('grants_upload', false) + ->set('grants_edit', false) + ->set('grants_delete', false) + ->assertDispatched('notify', self::notifySuccess()) + ->assertSet('grants_full_photo_access', false) + ->assertSet('grants_download', false) + ->assertSet('grants_upload', false) + ->assertSet('grants_edit', false) + ->assertSet('grants_delete', false); + + $perm = $perm->fresh(); + $this->assertFalse($perm->grants_full_photo_access); + $this->assertFalse($perm->grants_download); + $this->assertFalse($perm->grants_upload); + $this->assertFalse($perm->grants_edit); + $this->assertFalse($perm->grants_delete); + + Livewire::actingAs($this->userNoUpload)->test(Sharing::class) + ->assertForbidden(); + + Livewire::actingAs($this->userMayUpload2)->test(Sharing::class) + ->assertOk() + ->call('delete', $perm->id) + ->assertForbidden(); + + Livewire::actingAs($this->userMayUpload1)->test(ShareWith::class, ['album' => $this->album1]) + ->assertOk() + ->call('delete', $perm->id) + ->assertOk(); + } +} diff --git a/tests/Livewire/Forms/Album/TransferTest.php b/tests/Livewire/Forms/Album/TransferTest.php new file mode 100644 index 00000000000..4145d3c7ad9 --- /dev/null +++ b/tests/Livewire/Forms/Album/TransferTest.php @@ -0,0 +1,70 @@ + $this->album1]) + ->assertForbidden(); + } + + public function testTransferLoggedNoRights(): void + { + Livewire::actingAs($this->userNoUpload)->test(Transfer::class, ['album' => $this->album1]) + ->assertForbidden(); + + Livewire::actingAs($this->userMayUpload2)->test(Transfer::class, ['album' => $this->album1]) + ->assertForbidden(); + } + + public function testTransferLoggedIn(): void + { + Livewire::actingAs($this->userMayUpload1)->test(Transfer::class, ['album' => $this->album1]) + ->assertOk() + ->assertViewIs('livewire.forms.album.transfer') + ->set('username', $this->userMayUpload2->username) + ->assertOk() + ->call('transfer') + ->assertRedirect(route('livewire-gallery')); + + // user 2 has access + Livewire::actingAs($this->userMayUpload2)->test(Album::class, ['albumId' => $this->album1->id]) + ->assertViewIs('livewire.pages.gallery.album') + ->assertSee($this->album1->id) + ->assertOk() + ->assertSet('flags.is_accessible', true); + + // User 1 no longer have access. + Livewire::actingAs($this->userMayUpload1)->test(Album::class, ['albumId' => $this->album1->id]) + ->assertRedirect(route('livewire-gallery')); + } + + public function testTransferAsAdmin(): void + { + Livewire::actingAs($this->admin)->test(Transfer::class, ['album' => $this->album1]) + ->assertOk() + ->assertViewIs('livewire.forms.album.transfer') + ->set('username', $this->userMayUpload2->username) + ->assertOk() + ->call('transfer') + ->assertDispatched('notify', ['msg' => 'Transfer successful!', 'type' => NotificationType::SUCCESS->value]); + } +} diff --git a/tests/Livewire/Forms/Album/VisibilityTest.php b/tests/Livewire/Forms/Album/VisibilityTest.php new file mode 100644 index 00000000000..722dab0e338 --- /dev/null +++ b/tests/Livewire/Forms/Album/VisibilityTest.php @@ -0,0 +1,123 @@ + $this->album1])->assertForbidden(); + } + + public function testVisibilityLoggedIn(): void + { + Livewire::actingAs($this->userMayUpload1)->test(Visibility::class, ['album' => $this->album1]) + ->assertOk() + ->assertViewIs('livewire.forms.album.visibility') + ->toggle('is_public') + ->assertDispatched('notify', self::notifySuccess()); + + $this->album1->fresh(); + $this->album1->base_class->load('access_permissions'); + $this->assertNotNull($this->album1->public_permissions()); + + Livewire::actingAs($this->userMayUpload1)->test(Visibility::class, ['album' => $this->album1]) + ->assertOk() + ->assertViewIs('livewire.forms.album.visibility') + ->set('grants_full_photo_access', true) + ->assertDispatched('notify', self::notifySuccess()) + ->set('is_link_required', true) + ->assertDispatched('notify', self::notifySuccess()) + ->set('grants_download', true) + ->assertDispatched('notify', self::notifySuccess()) + ->set('is_nsfw', true) + ->assertDispatched('notify', self::notifySuccess()) + ->set('is_password_required', true) + ->assertDispatched('notify', self::notifySuccess()) + ->set('password', 'password') + ->assertDispatched('notify', self::notifySuccess()); + + $this->album1 = $this->album1->fresh(); + $this->album1->base_class->load('access_permissions'); + + Livewire::actingAs($this->userMayUpload1)->test(Visibility::class, ['album' => $this->album1]) + ->assertOk() + ->assertSet('is_public', true) + ->assertSet('grants_full_photo_access', true) + ->assertSet('is_link_required', true) + ->assertSet('grants_download', true) + ->assertSet('is_nsfw', true) + ->assertSet('is_password_required', true) + ->toggle('is_public') + ->assertDispatched('notify', self::notifySuccess()) + ->assertSet('grants_full_photo_access', false) + ->assertSet('is_link_required', false) + ->assertSet('grants_download', false) + ->assertSet('is_nsfw', true) + ->assertSet('is_password_required', false); + } + + public function testUnlocking(): void + { + Livewire::actingAs($this->userMayUpload1)->test(Visibility::class, ['album' => $this->album1]) + ->assertOk() + ->assertViewIs('livewire.forms.album.visibility') + ->toggle('is_public') + ->assertDispatched('notify', self::notifySuccess()) + ->assertSet('is_public', true) + ->set('grants_full_photo_access', true) + ->assertDispatched('notify', self::notifySuccess()) + ->set('is_link_required', true) + ->assertDispatched('notify', self::notifySuccess()) + ->set('grants_download', true) + ->assertDispatched('notify', self::notifySuccess()) + ->set('is_nsfw', true) + ->assertDispatched('notify', self::notifySuccess()) + ->set('is_password_required', true) + ->assertDispatched('notify', self::notifySuccess()) + ->set('password', 'password') + ->assertDispatched('notify', self::notifySuccess()); + + $this->album1 = $this->album1->fresh(); + $this->album1->base_class->load('access_permissions'); + + Livewire::actingAs($this->userMayUpload2)->test(UnlockAlbum::class, ['albumID' => $this->album1->id]) + ->set('password', 'wrongPassword') + ->call('submit') + ->assertForbidden(); + + Livewire::actingAs($this->userMayUpload2)->test(UnlockAlbum::class, ['albumID' => $this->album1->id]) + ->set('password', '') + ->call('submit') + ->assertDispatched('notify'); + + Livewire::actingAs($this->userMayUpload2)->test(UnlockAlbum::class, ['albumID' => $this->album1->id]) + ->set('password', 'password') + ->call('submit') + ->assertOk() + ->assertRedirect(route('livewire-gallery-album', ['albumId' => $this->album1->id])); + } + + public function testUnlockingUnlockedAlbum(): void + { + Livewire::actingAs($this->userMayUpload2)->test(UnlockAlbum::class, ['albumID' => $this->album1->id]) + ->set('password', 'password') + ->call('submit') + ->assertForbidden(); + } +} diff --git a/tests/Livewire/Forms/ConfirmTest.php b/tests/Livewire/Forms/ConfirmTest.php new file mode 100644 index 00000000000..04fab9364b2 --- /dev/null +++ b/tests/Livewire/Forms/ConfirmTest.php @@ -0,0 +1,42 @@ +assertForbidden(); + } + + public function testConfirmLoggedIn(): void + { + Livewire::actingAs($this->admin)->test(SaveAll::class) + ->assertOk() + ->assertViewIs('livewire.forms.confirms.save-all') + ->call('confirm') + ->assertDispatched('saveAll') + ->assertDispatched('closeModal'); + + Livewire::actingAs($this->admin)->test(SaveAll::class) + ->assertOk() + ->assertViewIs('livewire.forms.confirms.save-all') + ->call('close') + ->assertNotDispatched('saveAll') + ->assertDispatched('closeModal'); + } +} diff --git a/tests/Livewire/Forms/FormsProfileTest.php b/tests/Livewire/Forms/FormsProfileTest.php new file mode 100644 index 00000000000..27145d392e5 --- /dev/null +++ b/tests/Livewire/Forms/FormsProfileTest.php @@ -0,0 +1,198 @@ +setUpRequiresEmptyWebAuthnCredentials(); + + $this->credential = $this->userMayUpload1->makeWebAuthnCredential([ + 'id' => '_Xlz-khgFhDdkvOWyy_YqC54ExkYyp1o6HAQiybqLST-9RGBndpgI06TQygIYI7ZL2dayCMYm6J1-bXyl72obA', + + 'user_id' => '27117450ff81461d80331fb79c655f39', + 'alias' => null, + + 'counter' => 0, + 'rp_id' => 'https://localhost', + 'origin' => 'https://localhost', + 'transports' => null, + 'aaguid' => '00000000-0000-0000-0000-000000000000', + + 'public_key' => "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEF25MWDQwaeFqZJ2Gy/7HEdZkWaW+\nQCbWjLiplbklmqIq6MSSRhLqJLoegR5PqG2JOqhSLcQDAmf/tzdAvO5MmQ==\n-----END PUBLIC KEY-----\n", + 'attestation_format' => 'none', + ]); + $this->credential->save(); + } + + public function tearDown(): void + { + $this->tearDownRequiresEmptyWebAuthnCredentials(); + parent::tearDown(); + } + + public function testSecondFactorLoggedOut(): void + { + Livewire::test(SecondFactor::class)->assertForbidden(); + } + + public function testSecondFactorLoggedIn(): void + { + $this->assertEquals(1, $this->userMayUpload1->webAuthnCredentials()->count()); + Livewire::actingAs($this->userMayUpload1)->test(SecondFactor::class) + ->assertViewIs('livewire.modules.profile.second-factor') + ->assertSeeLivewire(ManageSecondFactor::class) + ->dispatch('reload-component') // called when a WebAuthn is create + ->call('delete', '_Xlz-khgFhDdkvOWyy_YqC54ExkYyp1o6HAQiybqLST-9RGBndpgI06TQygIYI7ZL2dayCMYm6J1-bXyl72obA') + ->assertDontSeeLivewire(ManageSecondFactor::class); + + $this->assertEquals(0, $this->userMayUpload1->webAuthnCredentials()->count()); + } + + public function testSecondFactorLoggedInCrossInteraction(): void + { + $this->assertEquals(1, $this->userMayUpload1->webAuthnCredentials()->count()); + $this->assertEquals(0, $this->userNoUpload->webAuthnCredentials()->count()); + Livewire::actingAs($this->userNoUpload)->test(SecondFactor::class) + ->assertViewIs('livewire.modules.profile.second-factor') + ->assertDontSeeLivewire(ManageSecondFactor::class) + ->dispatch('reload-component') // called when a WebAuthn is create + ->call('delete', '_Xlz-khgFhDdkvOWyy_YqC54ExkYyp1o6HAQiybqLST-9RGBndpgI06TQygIYI7ZL2dayCMYm6J1-bXyl72obA') + ->assertDontSeeLivewire(ManageSecondFactor::class); + + $this->assertEquals(1, $this->userMayUpload1->webAuthnCredentials()->count()); + } + + public function testManageSecondFactorLogout(): void + { + Livewire::test(ManageSecondFactor::class)->assertForbidden(); + } + + public function testManageSecondFactorLoginCrossInteraction(): void + { + Livewire::actingAs($this->userNoUpload)->test(ManageSecondFactor::class, ['credential' => $this->credential]) + ->assertForbidden(); + } + + public function testManageSecondFactorLogin(): void + { + Livewire::actingAs($this->userMayUpload1)->test(ManageSecondFactor::class, ['credential' => $this->credential]) + ->assertViewIs('livewire.forms.profile.manage-second-factor') + ->assertSet('alias', '_Xlz-khgFhDdkvOWyy_YqC54ExkYyp') + ->set('alias', '123') + ->assertSet('alias', '123') + ->assertDispatched('notify'); + + // reload model + $this->credential->fresh(); + + Livewire::actingAs($this->userMayUpload1)->test(ManageSecondFactor::class, ['credential' => $this->credential]) + ->assertViewIs('livewire.forms.profile.manage-second-factor') + ->assertSet('alias', '_Xlz-khgFhDdkvOWyy_YqC54ExkYyp') + ->set('alias', '12345') + ->assertSet('alias', '12345') + ->assertDispatched('notify'); + + $this->assertEquals('12345', $this->credential->fresh()->alias); + } + + public function testGetApiTokenLogout(): void + { + Livewire::test(GetApiToken::class) + ->assertUnauthorized(); + } + + public function testSetEmailLogout(): void + { + Livewire::test(SetEmail::class) + ->assertForbidden(); + } + + public function testSetLoginLogout(): void + { + Livewire::test(SetLogin::class) + ->assertForbidden(); + } + + public function testGetApiTokenLogin(): void + { + Livewire::actingAs($this->userMayUpload1)->test(GetApiToken::class) + ->assertViewIs('livewire.forms.profile.get-api-token') + ->assertSet('token', __('lychee.DISABLED_TOKEN_STATUS_MSG')) + ->call('resetToken') + ->assertNotSet('token', __('lychee.DISABLED_TOKEN_STATUS_MSG')) + ->call('close') + ->assertDispatched('closeModal'); + + Livewire::actingAs($this->userMayUpload1)->test(GetApiToken::class) + ->assertViewIs('livewire.forms.profile.get-api-token') + ->assertSet('token', __('lychee.TOKEN_NOT_AVAILABLE')) + ->call('disableToken') + ->assertSet('token', __('lychee.DISABLED_TOKEN_STATUS_MSG')); + + $this->assertNull($this->userMayUpload1->fresh()->token); + } + + public function testSetEmailLogin(): void + { + Livewire::actingAs($this->userMayUpload1)->test(SetEmail::class) + ->assertViewIs('livewire.forms.settings.input') + ->set('value', 'user@lychee.org') + ->call('save') + ->assertOk(); + + $this->assertEquals('user@lychee.org', $this->userMayUpload1->fresh()->email); + } + + public function testSetLoginLogin(): void + { + Livewire::actingAs($this->userMayUpload1)->test(SetLogin::class) + ->assertViewIs('livewire.forms.profile.set-login') + ->call('openApiTokenModal') + ->assertDispatched('openModal', 'forms.profile.get-api-token') + ->set('oldPassword', '') + ->set('password', '') + ->set('password_confirmation', '') + ->set('username', '') + ->call('submit') + ->assertHasErrors('oldPassword') + ->set('oldPassword', 'password') + ->call('submit') + ->assertHasErrors('password') + ->set('username', 'userNoUpload') + ->set('password', 'password') + ->call('submit') + ->assertHasErrors('password') + ->set('password_confirmation', 'password') + ->call('submit') + ->assertHasNoErrors('password'); + + $this->assertEquals('userNoUpload', $this->userMayUpload1->fresh()->username()); + } +} diff --git a/tests/Livewire/Forms/ImportFromServerTest.php b/tests/Livewire/Forms/ImportFromServerTest.php new file mode 100644 index 00000000000..3a994e5ce24 --- /dev/null +++ b/tests/Livewire/Forms/ImportFromServerTest.php @@ -0,0 +1,90 @@ +assertForbidden(); + } + + public function testLoggedInNoRights(): void + { + Livewire::actingAs($this->userNoUpload)->test(ImportFromServer::class) + ->assertForbidden(); + + Livewire::actingAs($this->userMayUpload1)->test(ImportFromServer::class) + ->assertForbidden(); + } + + public function testLoggedInAndError(): void + { + Livewire::actingAs($this->admin)->test(ImportFromServer::class) + ->assertViewIs('livewire.forms.add.import-from-server') + ->assertOk() + ->set('form.path', '') + ->call('submit') + ->assertOk() + ->assertHasErrors('form.paths.0'); + } + + // public function testLoggedInWithDeleteImported() : void { + // copy(base_path(TestConstants::SAMPLE_FILE_NIGHT_IMAGE), static::importPath('night.jpg')); + + // Livewire::actingAs($this->admin)->test(ImportFromServer::class) + // ->assertViewIs('livewire.forms.add.import-from-server') + // ->assertOk() + // ->set('form.path', static::importPath()) + // ->assertSet('form.delete_imported', false) + // ->call('submit') + // ->assertOk() + // ->assertHasNoErrors('form.paths.0'); + + // $this->assertEquals(true, file_exists(static::importPath('night.jpg'))); + // } + + // public function testLoggedInWithoutDeleteImported() : void { + // copy(base_path(TestConstants::SAMPLE_FILE_NIGHT_IMAGE), static::importPath('night.jpg')); + + // Livewire::actingAs($this->admin)->test(ImportFromServer::class) + // ->assertViewIs('livewire.forms.add.import-from-server') + // ->assertOk() + // ->set('form.path', static::importPath()) + // ->set('form.delete_imported', true) + // ->assertSet('form.delete_imported', true) + // ->call('submit') + // ->assertOk() + // ->assertHasNoErrors('form.paths.0'); + + // $this->assertEquals(false, file_exists(static::importPath('night.jpg'))); + // } + + public function testLoggedInClose(): void + { + Livewire::actingAs($this->admin)->test(ImportFromServer::class) + ->assertViewIs('livewire.forms.add.import-from-server') + ->assertOk() + ->call('close') + ->assertDispatched('closeModal'); + } +} \ No newline at end of file diff --git a/tests/Livewire/Forms/ImportFromUrlTest.php b/tests/Livewire/Forms/ImportFromUrlTest.php new file mode 100644 index 00000000000..7912c10501f --- /dev/null +++ b/tests/Livewire/Forms/ImportFromUrlTest.php @@ -0,0 +1,57 @@ +assertForbidden(); + } + + public function testLoggedInNoUpload(): void + { + Livewire::actingAs($this->userNoUpload)->test(ImportFromUrl::class) + ->assertForbidden(); + } + + public function testLoggedIn(): void + { + Livewire::actingAs($this->userMayUpload1)->test(ImportFromUrl::class) + ->assertViewIs('livewire.forms.add.import-from-url') + ->assertOk() + ->set('form.url', TestConstants::SAMPLE_DOWNLOAD_JPG) + ->call('submit') + ->assertOk() + ->assertDispatched('reloadPage') + ->assertDispatched('closeModal'); + } + + public function testLoggedInClose(): void + { + Livewire::actingAs($this->userMayUpload1)->test(ImportFromUrl::class) + ->assertViewIs('livewire.forms.add.import-from-url') + ->assertOk() + ->call('close') + ->assertDispatched('closeModal'); + } +} \ No newline at end of file diff --git a/tests/Livewire/Forms/Photo/CopyToTest.php b/tests/Livewire/Forms/Photo/CopyToTest.php new file mode 100644 index 00000000000..e234235e7f0 --- /dev/null +++ b/tests/Livewire/Forms/Photo/CopyToTest.php @@ -0,0 +1,68 @@ + [Params::ALBUM_ID => null, Params::PHOTO_ID => $this->photo1->id]]) + ->assertForbidden(); + + Livewire::test(CopyTo::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->subPhoto1->id]]) + ->assertForbidden(); + } + + public function testMoveLoggedNoRights(): void + { + Livewire::actingAs($this->userNoUpload)->test(CopyTo::class, ['params' => [Params::ALBUM_ID => null, Params::PHOTO_ID => $this->photo1->id]]) + ->assertForbidden(); + + Livewire::actingAs($this->userNoUpload)->test(CopyTo::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->subPhoto1->id]]) + ->assertForbidden(); + + Livewire::actingAs($this->userMayUpload2)->test(CopyTo::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->subPhoto1->id]]) + ->assertForbidden(); + } + + public function testMoveLoggedIn(): void + { + Livewire::actingAs($this->userMayUpload1)->test(CopyTo::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->subPhoto1->id]]) + ->assertOk() + ->assertViewIs('livewire.forms.photo.copyTo') + ->call('close'); + + Livewire::actingAs($this->userMayUpload1)->test(CopyTo::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_IDS => [$this->photo1->id, $this->photo1b->id]]]) + ->assertOk() + ->assertViewIs('livewire.forms.photo.copyTo') + ->call('setAlbum', $this->album2->id, $this->album2->title) + ->assertRedirect(route('livewire-gallery-album', ['albumId' => $this->album1->id])); + + $this->assertCount(2, $this->album1->fresh()->load('photos')->photos); + $this->assertCount(3, $this->album2->fresh()->load('photos')->photos); // 2 added + 1 old + + Livewire::actingAs($this->userMayUpload1)->test(CopyTo::class, ['params' => [Params::ALBUM_ID => null, Params::PHOTO_ID => $this->photoUnsorted->id]]) + ->assertOk() + ->assertViewIs('livewire.forms.photo.copyTo') + ->call('setAlbum', $this->album2->id, $this->album2->title) + ->assertRedirect(route('livewire-gallery-album', ['albumId' => SmartAlbumType::UNSORTED->value])); + + $this->assertCount(4, $this->album2->fresh()->load('photos')->photos); // 1 added + 3 old (from above) + } +} diff --git a/tests/Livewire/Forms/Photo/DeleteTest.php b/tests/Livewire/Forms/Photo/DeleteTest.php new file mode 100644 index 00000000000..9dad74dc5f9 --- /dev/null +++ b/tests/Livewire/Forms/Photo/DeleteTest.php @@ -0,0 +1,58 @@ + [Params::ALBUM_ID => null, Params::PHOTO_ID => $this->photo1->id]]) + ->assertForbidden(); + + Livewire::test(Delete::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->subPhoto1->id]]) + ->assertForbidden(); + } + + public function testDeleteLoggedNoRights(): void + { + Livewire::actingAs($this->userNoUpload)->test(Delete::class, ['params' => [Params::ALBUM_ID => null, Params::PHOTO_ID => $this->photo1->id]]) + ->assertForbidden(); + + Livewire::actingAs($this->userNoUpload)->test(Delete::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->subPhoto1->id]]) + ->assertForbidden(); + + Livewire::actingAs($this->userMayUpload2)->test(Delete::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->subPhoto1->id]]) + ->assertForbidden(); + } + + public function testDeleteLoggedIn(): void + { + Livewire::actingAs($this->userMayUpload1)->test(Delete::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->photo1->id]]) + ->assertOk() + ->assertViewIs('livewire.forms.photo.delete') + ->call('close'); + + Livewire::actingAs($this->userMayUpload1)->test(Delete::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_IDS => [$this->photo1->id, $this->photo1b->id]]]) + ->assertOk() + ->assertViewIs('livewire.forms.photo.delete') + ->call('submit') + ->assertRedirect(route('livewire-gallery-album', ['albumId' => $this->album1->id])); + + $this->assertCount(0, $this->album1->fresh()->load('photos')->photos); + } +} diff --git a/tests/Livewire/Forms/Photo/DownloadTest.php b/tests/Livewire/Forms/Photo/DownloadTest.php new file mode 100644 index 00000000000..91dcaedea1f --- /dev/null +++ b/tests/Livewire/Forms/Photo/DownloadTest.php @@ -0,0 +1,53 @@ + [Params::ALBUM_ID => null, Params::PHOTO_ID => $this->photo1->id]]) + ->assertForbidden(); + + Livewire::test(Download::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_IDS => [$this->subPhoto1->id]]]) + ->assertForbidden(); + } + + public function testDeleteLoggedNoRights(): void + { + Livewire::actingAs($this->userNoUpload)->test(Download::class, ['params' => [Params::ALBUM_ID => null, Params::PHOTO_ID => $this->photo1->id]]) + ->assertForbidden(); + + Livewire::actingAs($this->userNoUpload)->test(Download::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->subPhoto1->id]]) + ->assertForbidden(); + + Livewire::actingAs($this->userMayUpload2)->test(Download::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->subPhoto1->id]]) + ->assertForbidden(); + } + + public function testDeleteLoggedIn(): void + { + Livewire::actingAs($this->userMayUpload1)->test(Download::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->photo1->id]]) + ->assertOk() + ->assertViewIs('livewire.forms.photo.download') + ->call('close'); + + Livewire::actingAs($this->userMayUpload1)->test(Download::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_IDS => [$this->photo1->id, $this->photo1b->id]]]) + ->assertRedirect(); + } +} diff --git a/tests/Livewire/Forms/Photo/MoveTest.php b/tests/Livewire/Forms/Photo/MoveTest.php new file mode 100644 index 00000000000..eee6a681c82 --- /dev/null +++ b/tests/Livewire/Forms/Photo/MoveTest.php @@ -0,0 +1,68 @@ + [Params::ALBUM_ID => null, Params::PHOTO_ID => $this->photo1->id]]) + ->assertForbidden(); + + Livewire::test(Move::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->subPhoto1->id]]) + ->assertForbidden(); + } + + public function testMoveLoggedNoRights(): void + { + Livewire::actingAs($this->userNoUpload)->test(Move::class, ['params' => [Params::ALBUM_ID => null, Params::PHOTO_ID => $this->photo1->id]]) + ->assertForbidden(); + + Livewire::actingAs($this->userNoUpload)->test(Move::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->subPhoto1->id]]) + ->assertForbidden(); + + Livewire::actingAs($this->userMayUpload2)->test(Move::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->subPhoto1->id]]) + ->assertForbidden(); + } + + public function testMoveLoggedIn(): void + { + Livewire::actingAs($this->userMayUpload1)->test(Move::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->subPhoto1->id]]) + ->assertOk() + ->assertViewIs('livewire.forms.photo.move') + ->call('close'); + + Livewire::actingAs($this->userMayUpload1)->test(Move::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_IDS => [$this->photo1->id, $this->photo1b->id]]]) + ->assertOk() + ->assertViewIs('livewire.forms.photo.move') + ->call('setAlbum', $this->album2->id, $this->album2->title) + ->assertRedirect(route('livewire-gallery-album', ['albumId' => $this->album1->id])); + + $this->assertCount(0, $this->album1->fresh()->load('photos')->photos); + $this->assertCount(3, $this->album2->fresh()->load('photos')->photos); // 2 added + 1 old + + Livewire::actingAs($this->userMayUpload1)->test(Move::class, ['params' => [Params::ALBUM_ID => null, Params::PHOTO_ID => $this->photoUnsorted->id]]) + ->assertOk() + ->assertViewIs('livewire.forms.photo.move') + ->call('setAlbum', $this->album2->id, $this->album2->title) + ->assertRedirect(route('livewire-gallery-album', ['albumId' => SmartAlbumType::UNSORTED->value])); + + $this->assertCount(4, $this->album2->fresh()->load('photos')->photos); // 1 added + 3 old (from above) + } +} diff --git a/tests/Livewire/Forms/Photo/RenameTest.php b/tests/Livewire/Forms/Photo/RenameTest.php new file mode 100644 index 00000000000..716e89d7b19 --- /dev/null +++ b/tests/Livewire/Forms/Photo/RenameTest.php @@ -0,0 +1,61 @@ + [Params::ALBUM_ID => null, Params::PHOTO_ID => $this->photo1->id]]) + ->assertForbidden(); + + Livewire::test(Rename::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->subPhoto1->id]]) + ->assertForbidden(); + } + + public function testRenameLoggedNoRights(): void + { + Livewire::actingAs($this->userNoUpload)->test(Rename::class, ['params' => [Params::ALBUM_ID => null, Params::PHOTO_ID => $this->photo1->id]]) + ->assertForbidden(); + + Livewire::actingAs($this->userNoUpload)->test(Rename::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->subPhoto1->id]]) + ->assertForbidden(); + + Livewire::actingAs($this->userMayUpload2)->test(Rename::class, ['params' => [Params::ALBUM_ID => null, Params::PHOTO_ID => $this->photo1->id]]) + ->assertForbidden(); + + Livewire::actingAs($this->userMayUpload2)->test(Rename::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->subPhoto1->id]]) + ->assertForbidden(); + } + + public function testRenameLoggedIn(): void + { + Livewire::actingAs($this->userMayUpload1)->test(Rename::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->subPhoto1->id]]) + ->assertOk() + ->assertViewIs('livewire.forms.photo.rename') + ->call('close'); + + Livewire::actingAs($this->userMayUpload1)->test(Rename::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->subPhoto1->id]]) + ->assertOk() + ->assertViewIs('livewire.forms.photo.rename') + ->set('title', $this->album1->title) + ->assertOk() + ->call('submit') + ->assertDispatched('reloadPage'); + } +} diff --git a/tests/Livewire/Forms/Photo/TagTest.php b/tests/Livewire/Forms/Photo/TagTest.php new file mode 100644 index 00000000000..6f6fe19f2db --- /dev/null +++ b/tests/Livewire/Forms/Photo/TagTest.php @@ -0,0 +1,70 @@ + [Params::ALBUM_ID => null, Params::PHOTO_ID => $this->photo1->id]]) + ->assertForbidden(); + + Livewire::test(Tag::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->subPhoto1->id]]) + ->assertForbidden(); + } + + public function testTagLoggedNoRights(): void + { + Livewire::actingAs($this->userNoUpload)->test(Tag::class, ['params' => [Params::ALBUM_ID => null, Params::PHOTO_ID => $this->photo1->id]]) + ->assertForbidden(); + + Livewire::actingAs($this->userNoUpload)->test(Tag::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->subPhoto1->id]]) + ->assertForbidden(); + + Livewire::actingAs($this->userMayUpload2)->test(Tag::class, ['params' => [Params::ALBUM_ID => null, Params::PHOTO_ID => $this->photo1->id]]) + ->assertForbidden(); + + Livewire::actingAs($this->userMayUpload2)->test(Tag::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->subPhoto1->id]]) + ->assertForbidden(); + } + + public function testTagLoggedIn(): void + { + Livewire::actingAs($this->userMayUpload1)->test(Tag::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->subPhoto1->id]]) + ->assertOk() + ->assertViewIs('livewire.forms.photo.tag') + ->call('close'); + + Livewire::actingAs($this->userMayUpload1)->test(Tag::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->subPhoto1->id]]) + ->assertOk() + ->assertViewIs('livewire.forms.photo.tag') + ->set('tag', $this->album1->title) + ->assertOk() + ->call('submit') + ->assertDispatched('reloadPage'); + + Livewire::actingAs($this->userMayUpload1)->test(Tag::class, ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->subPhoto1->id]]) + ->assertOk() + ->assertViewIs('livewire.forms.photo.tag') + ->set('tag', $this->album2->title) + ->set('shall_override', true) + ->assertOk() + ->call('submit') + ->assertDispatched('reloadPage'); + } +} diff --git a/tests/Livewire/Forms/SettingsTest.php b/tests/Livewire/Forms/SettingsTest.php new file mode 100644 index 00000000000..45d64d3fc94 --- /dev/null +++ b/tests/Livewire/Forms/SettingsTest.php @@ -0,0 +1,89 @@ +admin)->test(SetAlbumDecorationOrientationSetting::class) + ->assertOk() + ->assertViewIs('livewire.forms.settings.drop-down') + ->set('value', 'column') + ->assertDispatched('notify', self::notifySuccess()); + + Livewire::actingAs($this->admin)->test(SetAlbumDecorationOrientationSetting::class) + ->assertOk() + ->assertViewIs('livewire.forms.settings.drop-down') + ->set('value', 'something') + ->assertNotDispatched('notify', self::notifySuccess()); + } + + public function testDoubleDropdown(): void + { + Livewire::actingAs($this->admin)->test(SetAlbumSortingSetting::class) + ->assertOk() + ->assertViewIs('livewire.forms.settings.double-drop-down') + ->set('value1', 'title') + ->assertDispatched('notify', self::notifySuccess()) + ->set('value2', 'DESC') + ->assertDispatched('notify', self::notifySuccess()); + + Livewire::actingAs($this->admin)->test(SetAlbumSortingSetting::class) + ->assertOk() + ->assertViewIs('livewire.forms.settings.double-drop-down') + ->set('value1', 'something') + ->assertNotDispatched('notify', self::notifySuccess()) + ->set('value1', 'title') + ->set('value2', 'OTHER') + ->assertNotDispatched('notify', self::notifySuccess()); + } + + public function testBoolean(): void + { + Configs::set('search_public', false); + + Livewire::actingAs($this->admin)->test(BooleanSetting::class, + ['description' => 'PUBLIC_SEARCH_TEXT', 'name' => 'search_public']) + ->assertOk() + ->assertViewIs('livewire.forms.settings.toggle') + ->assertSet('flag', false) + ->set('flag', true) + ->assertDispatched('notify', self::notifySuccess()); + } + + public function testString(): void + { + $dropbox = Configs::getValueAsString('dropbox_key'); + Livewire::actingAs($this->admin)->test(StringSetting::class, [ + 'description' => 'DROPBOX_TEXT', + 'placeholder' => 'SETTINGS_DROPBOX_KEY', + 'action' => 'DROPBOX_TITLE', + 'name' => 'dropbox_key', + ]) + ->assertOk() + ->assertViewIs('livewire.forms.settings.input') + ->assertSet('value', $dropbox) + ->set('value', 'api') + ->call('save') + ->assertDispatched('notify', self::notifySuccess()); + } +} diff --git a/tests/Livewire/Forms/UploadTest.php b/tests/Livewire/Forms/UploadTest.php new file mode 100644 index 00000000000..1c6f5d1c09f --- /dev/null +++ b/tests/Livewire/Forms/UploadTest.php @@ -0,0 +1,90 @@ +upload_chunk_size = Configs::getValueAsInt('upload_chunk_size'); + $this->upload_processing_limit = Configs::getValueAsInt('upload_processing_limit'); + Configs::set('upload_processing_limit', 57); + Configs::set('upload_chunk_size', 12345); + } + + public function tearDown(): void + { + Configs::set('upload_processing_limit', $this->upload_processing_limit); + Configs::set('upload_chunk_size', $this->upload_chunk_size); + parent::tearDown(); + } + + public function testConfirmLoggedOut(): void + { + Livewire::test(Upload::class)->assertForbidden(); + } + + public function testLoggedInNoRights(): void + { + Livewire::actingAs($this->userNoUpload)->test(Upload::class) + ->assertForbidden(); + } + + public function testConfirmLoggedIn(): void + { + Livewire::actingAs($this->userMayUpload1)->test(Upload::class) + ->assertOk() + ->assertViewIs('livewire.forms.add.upload') + ->assertSet('chunkSize', 12345) + ->assertSet('parallelism', 57) + ->call('close') + ->assertDispatched('closeModal'); + + // Reset + Configs::set('upload_chunk_size', 0); + + $tmpFilename = tempnam(sys_get_temp_dir(), 'lychee'); + copy(base_path(TestConstants::SAMPLE_FILE_NIGHT_IMAGE), $tmpFilename); + $uploadedFile = UploadedFile::fake()->createWithContent('night.jpg', file_get_contents($tmpFilename)); + $name = TestConstants::SAMPLE_FILE_NIGHT_IMAGE; + $size = filesize($tmpFilename); + + Livewire::actingAs($this->userMayUpload1)->test(Upload::class) + ->assertOk() + ->assertViewIs('livewire.forms.add.upload') + ->set([ + 'uploads.0.fileName' => $name, + 'uploads.0.fileSize' => $size, + 'uploads.0.lastModified' => 0, + 'uploads.0.stage' => 'uploading', + 'uploads.0.progress' => 0, + ]) + ->set('uploads.0.fileChunk', $uploadedFile) + ->assertOk(); + } +} diff --git a/tests/Livewire/Menus/AlbumAddTest.php b/tests/Livewire/Menus/AlbumAddTest.php new file mode 100644 index 00000000000..1c6f75f62c0 --- /dev/null +++ b/tests/Livewire/Menus/AlbumAddTest.php @@ -0,0 +1,67 @@ + ['parentID' => null]]) + ->assertViewIs('livewire.context-menus.album-add') + ->assertStatus(200); + } + + public function testOpenAlbumCreateModalModal(): void + { + Livewire::test(AlbumAdd::class, ['params' => ['parentID' => null]]) + ->call('openAlbumCreateModal') + ->assertDispatched('closeContextMenu') + ->assertDispatched('openModal', 'forms.album.create'); + } + + public function testOpenTagAlbumCreateModal(): void + { + Livewire::test(AlbumAdd::class, ['params' => ['parentID' => null]]) + ->call('openTagAlbumCreateModal') + ->assertDispatched('closeContextMenu') + ->assertDispatched('openModal', 'forms.album.create-tag'); + } + + public function testOpenImportFromServerModal(): void + { + Livewire::test(AlbumAdd::class, ['params' => ['parentID' => null]]) + ->call('openImportFromServerModal') + ->assertDispatched('closeContextMenu') + ->assertDispatched('openModal', 'forms.add.import-from-server'); + } + + public function testOpenImportFromUrlModal(): void + { + Livewire::test(AlbumAdd::class, ['params' => ['parentID' => null]]) + ->call('openImportFromUrlModal') + ->assertDispatched('closeContextMenu') + ->assertDispatched('openModal', 'forms.add.import-from-url'); + } + + public function testOpenUploadModal(): void + { + Livewire::test(AlbumAdd::class, ['params' => ['parentID' => null]]) + ->call('openUploadModal') + ->assertDispatched('closeContextMenu') + ->assertDispatched('openModal', 'forms.add.upload'); + } +} diff --git a/tests/Livewire/Menus/AlbumDropdownTest.php b/tests/Livewire/Menus/AlbumDropdownTest.php new file mode 100644 index 00000000000..72f6d30416a --- /dev/null +++ b/tests/Livewire/Menus/AlbumDropdownTest.php @@ -0,0 +1,85 @@ + ['parentID' => null, 'albumID' => $this->album1->id]] + ) + ->assertViewIs('livewire.context-menus.album-dropdown') + ->assertStatus(200); + } + + public function testRename(): void + { + Livewire::test( + AlbumDropdown::class, + ['params' => ['parentID' => null, 'albumID' => $this->album1->id]] + ) + ->call('rename') + ->assertDispatched('closeContextMenu') + ->assertDispatched('openModal', 'forms.album.rename'); + } + + public function testMerge(): void + { + Livewire::test( + AlbumDropdown::class, + ['params' => ['parentID' => null, 'albumID' => $this->album1->id]] + ) + ->call('merge') + ->assertDispatched('closeContextMenu') + ->assertDispatched('openModal', 'forms.album.merge'); + } + + public function testDelete(): void + { + Livewire::test( + AlbumDropdown::class, + ['params' => ['parentID' => null, 'albumID' => $this->album1->id]] + ) + ->call('delete') + ->assertDispatched('closeContextMenu') + ->assertDispatched('openModal', 'forms.album.delete'); + } + + public function testMove(): void + { + Livewire::test( + AlbumDropdown::class, + ['params' => ['parentID' => null, 'albumID' => $this->album1->id]] + ) + ->call('move') + ->assertDispatched('closeContextMenu') + ->assertDispatched('openModal', 'forms.album.move'); + } + + public function testDownload(): void + { + Livewire::test( + AlbumDropdown::class, + ['params' => ['parentID' => null, 'albumID' => $this->album1->id]] + ) + ->call('download') + ->assertDispatched('closeContextMenu') + ->assertRedirect(route('download', ['albumIDs' => $this->album1->id])); + } +} diff --git a/tests/Livewire/Menus/AlbumsDropdownTest.php b/tests/Livewire/Menus/AlbumsDropdownTest.php new file mode 100644 index 00000000000..9def5567151 --- /dev/null +++ b/tests/Livewire/Menus/AlbumsDropdownTest.php @@ -0,0 +1,86 @@ + [Params::PARENT_ID => null, Params::ALBUM_IDS => [$this->album1->id, $this->album2->id]]] + ) + ->assertViewIs('livewire.context-menus.albums-dropdown') + ->assertStatus(200); + } + + public function testRename(): void + { + Livewire::test( + AlbumsDropdown::class, + ['params' => [Params::PARENT_ID => null, Params::ALBUM_IDS => [$this->album1->id, $this->album2->id]]] + ) + ->call('renameAll') + ->assertDispatched('closeContextMenu') + ->assertDispatched('openModal', 'forms.album.rename'); + } + + public function testMerge(): void + { + Livewire::test( + AlbumsDropdown::class, + ['params' => [Params::PARENT_ID => null, Params::ALBUM_IDS => [$this->album1->id, $this->album2->id]]] + ) + ->call('mergeAll') + ->assertDispatched('closeContextMenu') + ->assertDispatched('openModal', 'forms.album.merge'); + } + + public function testDelete(): void + { + Livewire::test( + AlbumsDropdown::class, + ['params' => [Params::PARENT_ID => null, Params::ALBUM_IDS => [$this->album1->id, $this->album2->id]]] + ) + ->call('deleteAll') + ->assertDispatched('closeContextMenu') + ->assertDispatched('openModal', 'forms.album.delete'); + } + + public function testMove(): void + { + Livewire::test( + AlbumsDropdown::class, + ['params' => [Params::PARENT_ID => null, Params::ALBUM_IDS => [$this->album1->id, $this->album2->id]]] + ) + ->call('moveAll') + ->assertDispatched('closeContextMenu') + ->assertDispatched('openModal', 'forms.album.move'); + } + + public function testDownload(): void + { + Livewire::test( + AlbumsDropdown::class, + ['params' => [Params::PARENT_ID => null, Params::ALBUM_IDS => [$this->album1->id, $this->album2->id]]] + ) + ->call('downloadAll') + ->assertDispatched('closeContextMenu') + ->assertRedirect(route('download') . '?albumIDs=' . $this->album1->id . ',' . $this->album2->id); + } +} diff --git a/tests/Livewire/Menus/ContextMenuTest.php b/tests/Livewire/Menus/ContextMenuTest.php new file mode 100644 index 00000000000..370eca24665 --- /dev/null +++ b/tests/Livewire/Menus/ContextMenuTest.php @@ -0,0 +1,43 @@ +assertSet('isOpen', false) + ->dispatch('openContextMenu', 'menus.AlbumAdd', [Params::PARENT_ID => null], 'right: 30px; top: 30px; transform-origin: top right;') + ->assertSet('isOpen', true) + ->assertSet('type', 'menus.AlbumAdd') + ->dispatch('closeContextMenu') + ->assertSet('isOpen', false); + } + + public function testMenu2(): void + { + Livewire::test(ContextMenu::class) + ->assertSet('isOpen', false) + ->call('openContextMenu', 'menus.AlbumAdd', [Params::PARENT_ID => null], 'right: 30px; top: 30px; transform-origin: top right;') + ->assertSet('isOpen', true) + ->assertSet('type', 'menus.AlbumAdd') + ->dispatch('closeContextMenu') + ->assertSet('isOpen', false); + } +} diff --git a/tests/Livewire/Menus/LeftMenuTest.php b/tests/Livewire/Menus/LeftMenuTest.php new file mode 100644 index 00000000000..88d05972007 --- /dev/null +++ b/tests/Livewire/Menus/LeftMenuTest.php @@ -0,0 +1,37 @@ +admin)->test(LeftMenu::class) + ->assertViewIs('livewire.components.left-menu') + ->assertSet('isOpen', false) + ->dispatch('openLeftMenu') + ->assertSet('isOpen', true) + ->dispatch('closeLeftMenu') + ->assertSet('isOpen', false) + ->dispatch('toggleLeftMenu') + ->assertSet('isOpen', true) + ->call('openAboutModal') + ->assertDispatched('openModal', 'modals.about') + ->call('logout') + ->assertRedirect(route('livewire-gallery')); + } +} diff --git a/tests/Livewire/Menus/PhotoDropdownTest.php b/tests/Livewire/Menus/PhotoDropdownTest.php new file mode 100644 index 00000000000..76e92041cba --- /dev/null +++ b/tests/Livewire/Menus/PhotoDropdownTest.php @@ -0,0 +1,136 @@ + [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->photo1->id]]) + ->assertViewIs('livewire.context-menus.photo-dropdown') + ->assertStatus(200); + } + + public function testRename(): void + { + Livewire::test(PhotoDropdown::class, + ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->photo1->id]]) + ->call('rename') + ->assertDispatched('closeContextMenu') + ->assertDispatched('openModal', 'forms.photo.rename'); + } + + public function testStarGuest(): void + { + Livewire::test(PhotoDropdown::class, + ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->photo1->id]]) + ->call('star') + ->assertStatus(403); + } + + public function testStar(): void + { + Livewire::actingAs($this->admin)->test(PhotoDropdown::class, + ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->photo1->id]]) + ->call('star') + ->assertDispatched('closeContextMenu') + ->assertDispatched('reloadPage'); + } + + public function testUnstarGuest(): void + { + Livewire::test(PhotoDropdown::class, + ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->photo1->id]]) + ->call('unstar') + ->assertStatus(403); + } + + public function testUnstar(): void + { + Livewire::actingAs($this->admin)->test(PhotoDropdown::class, + ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->photo1->id]]) + ->call('unstar') + ->assertDispatched('closeContextMenu') + ->assertDispatched('reloadPage'); + } + + public function testSetAsCoverGuest(): void + { + Livewire::test(PhotoDropdown::class, + ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->photo1->id]]) + ->call('setAsCover') + ->assertStatus(403); + } + + public function testSetAsCover(): void + { + Livewire::actingAs($this->admin)->test(PhotoDropdown::class, + ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->photo1->id]]) + ->call('setAsCover') + ->assertDispatched('closeContextMenu') + ->assertDispatched('reloadPage'); + } + + public function testTag(): void + { + Livewire::test(PhotoDropdown::class, + ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->photo1->id]]) + ->call('tag') + ->assertDispatched('closeContextMenu') + ->assertDispatched('openModal', 'forms.photo.tag'); + } + + public function testDelete(): void + { + Livewire::test(PhotoDropdown::class, + ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->photo1->id]]) + ->call('delete') + ->assertDispatched('closeContextMenu') + ->assertDispatched('openModal', 'forms.photo.delete'); + } + + public function testMove(): void + { + Livewire::test(PhotoDropdown::class, + ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->photo1->id]]) + ->call('move') + ->assertDispatched('closeContextMenu') + ->assertDispatched('openModal', 'forms.photo.move'); + } + + public function testCopyTo(): void + { + Livewire::test(PhotoDropdown::class, + ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->photo1->id]]) + ->call('copyTo') + ->assertDispatched('closeContextMenu') + ->assertDispatched('openModal', 'forms.photo.copy-to'); + } + + public function testDownload(): void + { + Livewire::test(PhotoDropdown::class, + ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_ID => $this->photo1->id]]) + ->call('download') + ->assertDispatched('closeContextMenu') + ->assertDispatched('openModal', 'forms.photo.download'); + // ->assertRedirect(route('photo_download', ['kind' => DownloadVariantType::ORIGINAL->value, 'photoIDs' => $this->photo->id])); + } +} diff --git a/tests/Livewire/Menus/PhotosDropdownTest.php b/tests/Livewire/Menus/PhotosDropdownTest.php new file mode 100644 index 00000000000..913bccfe664 --- /dev/null +++ b/tests/Livewire/Menus/PhotosDropdownTest.php @@ -0,0 +1,119 @@ + [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_IDS => [$this->photo1->id, $this->photo1b->id]]]) + ->assertViewIs('livewire.context-menus.photos-dropdown') + ->assertStatus(200); + } + + public function testRename(): void + { + Livewire::test(PhotosDropdown::class, + ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_IDS => [$this->photo1->id, $this->photo1b->id]]]) + ->call('renameAll') + ->assertDispatched('closeContextMenu') + ->assertDispatched('openModal', 'forms.photo.rename'); + } + + public function testStarGuest(): void + { + Livewire::test(PhotosDropdown::class, + ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_IDS => [$this->photo1->id, $this->photo1b->id]]]) + ->call('starAll') + ->assertStatus(403); + } + + public function testStar(): void + { + Livewire::actingAs($this->admin)->test(PhotosDropdown::class, + ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_IDS => [$this->photo1->id, $this->photo1b->id]]]) + ->call('starAll') + ->assertDispatched('closeContextMenu') + ->assertDispatched('reloadPage'); + } + + public function testUnstarGuest(): void + { + Livewire::test(PhotosDropdown::class, + ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_IDS => [$this->photo1->id, $this->photo1b->id]]]) + ->call('unstarAll') + ->assertStatus(403); + } + + public function testUnstar(): void + { + Livewire::actingAs($this->admin)->test(PhotosDropdown::class, + ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_IDS => [$this->photo1->id, $this->photo1b->id]]]) + ->call('unstarAll') + ->assertDispatched('closeContextMenu') + ->assertDispatched('reloadPage'); + } + + public function testTag(): void + { + Livewire::test(PhotosDropdown::class, + ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_IDS => [$this->photo1->id, $this->photo1b->id]]]) + ->call('tagAll') + ->assertDispatched('closeContextMenu') + ->assertDispatched('openModal', 'forms.photo.tag'); + } + + public function testDelete(): void + { + Livewire::test(PhotosDropdown::class, + ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_IDS => [$this->photo1->id, $this->photo1b->id]]]) + ->call('deleteAll') + ->assertDispatched('closeContextMenu') + ->assertDispatched('openModal', 'forms.photo.delete'); + } + + public function testMove(): void + { + Livewire::test(PhotosDropdown::class, + ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_IDS => [$this->photo1->id, $this->photo1b->id]]]) + ->call('moveAll') + ->assertDispatched('closeContextMenu') + ->assertDispatched('openModal', 'forms.photo.move'); + } + + public function testCopyTo(): void + { + Livewire::test(PhotosDropdown::class, + ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_IDS => [$this->photo1->id, $this->photo1b->id]]]) + ->call('copyAllTo') + ->assertDispatched('closeContextMenu') + ->assertDispatched('openModal', 'forms.photo.copy-to'); + } + + public function testDownload(): void + { + Livewire::test(PhotosDropdown::class, + ['params' => [Params::ALBUM_ID => $this->album1->id, Params::PHOTO_IDS => [$this->photo1->id, $this->photo1b->id]]]) + ->call('downloadAll') + ->assertDispatched('closeContextMenu') + ->assertDispatched('openModal', 'forms.photo.download'); + // ->assertRedirect(route('photo_download', ['kind' => DownloadVariantType::ORIGINAL->value, Params::PHOTO_IDS => $this->photo->id])); + } +} diff --git a/tests/Livewire/Modals/AboutTest.php b/tests/Livewire/Modals/AboutTest.php new file mode 100644 index 00000000000..ce361b48443 --- /dev/null +++ b/tests/Livewire/Modals/AboutTest.php @@ -0,0 +1,30 @@ +assertViewIs('livewire.modals.about') + ->assertSet('is_new_release_available', false) + ->assertSet('is_git_update_available', false) + ->assertSet('version', resolve(InstalledVersion::class)->getVersion()->toString()); + } +} diff --git a/tests/Livewire/Modals/LoginTest.php b/tests/Livewire/Modals/LoginTest.php new file mode 100644 index 00000000000..63e992b4164 --- /dev/null +++ b/tests/Livewire/Modals/LoginTest.php @@ -0,0 +1,39 @@ +assertViewIs('livewire.modals.login') + ->call('submit') + ->assertHasErrors('password', ['required']) + ->assertHasErrors('username', ['required']) + ->set('username', 'admin') + ->call('submit') + ->assertHasErrors('password', ['required']) + ->set('password', '123456') + ->call('submit') + ->assertHasErrors('wrongLogin') + ->set('password', 'password') + ->call('submit') + ->assertDispatched('login-close') + ->assertDispatched('reloadPage'); + } +} diff --git a/tests/Livewire/Modals/ModalTest.php b/tests/Livewire/Modals/ModalTest.php new file mode 100644 index 00000000000..a4566077223 --- /dev/null +++ b/tests/Livewire/Modals/ModalTest.php @@ -0,0 +1,46 @@ +assertSet('isOpen', false) + ->dispatch('openModal', 'modals.about', __('lychee.CLOSE')) + ->assertSet('isOpen', true) + ->assertSet('type', 'modals.about') + ->assertSet('close_text', __('lychee.CLOSE')) + ->assertViewIs('livewire.components.modal') + ->dispatch('closeModal') + ->assertSet('isOpen', false); + } + + public function testOpenClose2(): void + { + Livewire::test(Modal::class) + ->assertSet('isOpen', false) + ->call('openModal', 'modals.about', __('lychee.CLOSE')) + ->assertSet('isOpen', true) + ->assertSet('type', 'modals.about') + ->assertSet('close_text', __('lychee.CLOSE')) + ->assertViewIs('livewire.components.modal') + ->dispatch('closeModal') + ->assertSet('isOpen', false); + } +} diff --git a/tests/Livewire/Modules/ErrorsTest.php b/tests/Livewire/Modules/ErrorsTest.php new file mode 100644 index 00000000000..c98bad6130c --- /dev/null +++ b/tests/Livewire/Modules/ErrorsTest.php @@ -0,0 +1,47 @@ +component) + ->assertViewIs('livewire.modules.diagnostics.pre-colored') + ->assertOk(); + } + + public function testLoggedIn(): void + { + Livewire::actingAs($this->admin)->test($this->component, ['lazy' => false]) + ->assertViewIs('livewire.modules.diagnostics.pre-colored') + ->assertOk() + ->call('getDataProperty'); + } +} diff --git a/tests/Livewire/Modules/SpaceTest.php b/tests/Livewire/Modules/SpaceTest.php new file mode 100644 index 00000000000..4f278e2d35e --- /dev/null +++ b/tests/Livewire/Modules/SpaceTest.php @@ -0,0 +1,51 @@ +component) + ->assertViewIs('livewire.modules.diagnostics.with-action-call') + ->assertSee('Error: You must have administrator rights to see this.') + ->assertOk(); + } + + public function testLoggedIn(): void + { + Livewire::actingAs($this->admin)->test($this->component) + ->assertViewIs('livewire.modules.diagnostics.with-action-call') + ->assertDontSee('Error: You must have administrator rights to see this.') + ->assertOk() + ->call('do') + ->assertOk() + ->assertDontSee('Error: You must have administrator rights to see this.'); + } +} diff --git a/tests/Livewire/Modules/UserLineTest.php b/tests/Livewire/Modules/UserLineTest.php new file mode 100644 index 00000000000..409d1897d19 --- /dev/null +++ b/tests/Livewire/Modules/UserLineTest.php @@ -0,0 +1,69 @@ +create(); + Livewire::test($this->component, ['user' => $user]) + ->assertForbidden(); + } + + public function testLoggedIn(): void + { + /** @var User $user */ + $user = User::factory()->create(); + + Livewire::actingAs($this->admin)->test($this->component, ['user' => $user]) + ->assertViewIs('livewire.modules.users.user-line') + ->assertSet('username', $user->username) + ->assertSet('password', '') + ->assertSet('may_upload', false) + ->assertSet('may_edit_own_settings', true) + ->assertSet('id', $user->id); + } + + public function testEdit(): void + { + $user = User::factory()->create(); + + Livewire::actingAs($this->admin)->test($this->component, ['user' => $user]) + ->assertViewIs('livewire.modules.users.user-line') + ->set('username', 'user1') + ->set('may_upload', true) + ->set('may_edit_own_settings', false) + ->call('save') + ->assertSet('username', 'user1') + ->assertSet('may_upload', true) + ->assertSet('may_edit_own_settings', false); + + Livewire::actingAs($this->admin)->test($this->component, ['user' => $user]) + ->set('username', '') + ->call('save') + ->assertDispatched('notify'); // notify only on failure. + + Livewire::actingAs($this->admin)->test($this->component, ['user' => $user]) + ->set('username', 'admin') // cannot use an existing name. + ->call('save') + ->assertStatus(409); + } +} diff --git a/tests/Livewire/Pages/AlbumTest.php b/tests/Livewire/Pages/AlbumTest.php new file mode 100644 index 00000000000..fe03ea201f2 --- /dev/null +++ b/tests/Livewire/Pages/AlbumTest.php @@ -0,0 +1,134 @@ +get(route('livewire-gallery-album', ['albumId' => $this->album1->id])); + $this->assertOk($response); + + $response = $this->get(route('livewire-gallery-album', ['albumId' => '1234567890'])); + $this->assertNotFound($response); + } + + public function testPageLogout(): void + { + Livewire::test(Album::class, ['albumId' => $this->album1->id]) + ->assertViewIs('livewire.pages.gallery.album') + ->assertSee($this->album1->id) + ->assertOk() + ->assertSet('flags.is_accessible', false) + ->dispatch('reloadPage'); + } + + public function testPageUserNoAccess(): void + { + Livewire::actingAs($this->userMayUpload2)->test(Album::class, ['albumId' => $this->album1->id]) + ->assertRedirect(route('livewire-gallery')); + + Livewire::actingAs($this->userNoUpload)->test(Album::class, ['albumId' => $this->album1->id]) + ->assertRedirect(route('livewire-gallery')); + } + + public function testPageLoginAndBack(): void + { + Livewire::actingAs($this->userMayUpload1)->test(Album::class, ['albumId' => $this->album1->id]) + ->assertViewIs('livewire.pages.gallery.album') + ->assertSee($this->album1->id) + ->assertOk() + ->assertSet('flags.is_accessible', true) + ->call('silentUpdate') + ->assertOk() + ->assertSet('back', route('livewire-gallery')); + } + + public function testPageLoginAndBackFromSubAlbum(): void + { + Livewire::actingAs($this->userMayUpload1)->test(Album::class, ['albumId' => $this->subAlbum1->id]) + ->assertViewIs('livewire.pages.gallery.album') + ->assertSee($this->subAlbum1->id) + ->assertOk() + ->assertSet('flags.is_accessible', true) + ->call('silentUpdate') + ->assertOk() + ->assertSet('back', route('livewire-gallery-album', ['albumId' => $this->album1->id])); + } + + public function testMenus(): void + { + Livewire::actingAs($this->userMayUpload1)->test(Album::class, ['albumId' => $this->album1->id]) + ->assertViewIs('livewire.pages.gallery.album') + ->assertSee($this->album1->id) + ->assertSee($this->subAlbum1->id) + ->assertSee($this->photo1->id) + ->assertSee($this->subPhoto1->size_variants->getThumb()->url) + ->assertOk() + ->call('openContextMenu') + ->assertOk() + ->call('openAlbumDropdown', 0, 0, $this->subAlbum1->id) + ->assertOk() + ->call('openAlbumsDropdown', 0, 0, [$this->subAlbum1->id]) + ->assertOk() + ->call('openPhotoDropdown', 0, 0, $this->photo1->id) + ->assertOk() + ->call('openPhotosDropdown', 0, 0, [$this->photo1->id]) + ->assertOk(); + } + + public function testActions(): void + { + Livewire::actingAs($this->userMayUpload1)->test(Album::class, ['albumId' => $this->album1->id]) + ->assertViewIs('livewire.pages.gallery.album') + ->assertSee($this->album1->id) + ->assertSee($this->subAlbum1->id) + ->assertSee($this->photo1->id) + ->assertSee($this->subPhoto1->size_variants->getThumb()->url) + ->assertOk() + ->call('setStar', [$this->photo1->id]) + ->assertOk() + ->call('unsetStar', [$this->photo1->id]) + ->assertOk() + ->call('setCover', $this->photo1->id) + ->assertDispatched('notify', self::notifySuccess()) + ->assertOk(); + } + + public function testActionsUnsorted(): void + { + Configs::set('layout', PhotoLayoutType::SQUARE); + + Livewire::actingAs($this->userMayUpload1)->test(Album::class, ['albumId' => SmartAlbumType::UNSORTED->value]) + ->assertViewIs('livewire.pages.gallery.album') + ->assertSee($this->photoUnsorted->id) + ->assertOk() + ->call('setStar', [$this->photoUnsorted->id]) + ->assertOk() + ->call('unsetStar', [$this->photoUnsorted->id]) + ->assertOk() + ->call('setCover', $this->photoUnsorted->id) + ->assertNotDispatched('notify') + ->assertOk(); + + Configs::set('layout', PhotoLayoutType::JUSTIFIED); + } +} diff --git a/tests/Livewire/Pages/AllSettingsTest.php b/tests/Livewire/Pages/AllSettingsTest.php new file mode 100644 index 00000000000..54542e16312 --- /dev/null +++ b/tests/Livewire/Pages/AllSettingsTest.php @@ -0,0 +1,59 @@ +component) + ->assertForbidden(); + } + + public function testLoggedIn(): void + { + Livewire::actingAs($this->admin)->test($this->component) + ->assertViewIs('livewire.pages.all-settings') + ->call('openConfirmSave') + ->assertDispatched('openModal'); + + Livewire::actingAs($this->admin)->test($this->component) + ->dispatch('saveAll') + ->assertStatus(200); + + Livewire::actingAs($this->admin)->test($this->component) + ->call('back') + ->assertDispatched('closeLeftMenu') + ->assertRedirect(route('settings')); + } + + public function testLoggedInWithErrors(): void + { + $comp = Livewire::actingAs($this->admin)->test($this->component); + /** @var array $configs */ + $configs = $comp->viewData('form')->configs; + $idx = collect($configs)->search(fn (Configs $conf) => $conf->key === 'check_for_updates'); + $comp->set('form.values.' . $idx, '2') + ->dispatch('saveAll') + ->assertHasErrors('form.values.' . $idx); + + $this->assertNotEquals(2, Configs::getValueAsInt('check_for_updates')); + } +} diff --git a/tests/Livewire/Pages/DiagnosticsTest.php b/tests/Livewire/Pages/DiagnosticsTest.php new file mode 100644 index 00000000000..67c6924c114 --- /dev/null +++ b/tests/Livewire/Pages/DiagnosticsTest.php @@ -0,0 +1,56 @@ +assertViewIs('livewire.pages.diagnostics') + ->assertSeeLivewire(Configurations::class) + ->assertSeeLivewire(Space::class) + ->assertSeeLivewire(Infos::class) + ->assertSeeInOrder([ + 'Error: You must have administrator rights to see this.', + 'Error: You must have administrator rights to see this.', + 'Error: You must have administrator rights to see this.']); + } + + public function testDiagnosticsLogged(): void + { + $diagnostics = Livewire::actingAs($this->admin)->test(Diagnostics::class, ['lazy' => false]) + ->assertViewIs('livewire.pages.diagnostics') + ->assertSeeLivewire(Configurations::class) + ->assertSeeLivewire(Errors::class) + ->assertSeeLivewire(Space::class) + ->assertSeeLivewire(Infos::class) + ->assertDontSee('Error: You must have administrator rights to see this.'); + + $diagnostics->dispatch('reloadPage') + ->assertStatus(200); + + Livewire::actingAs($this->admin)->test(Diagnostics::class) + ->call('back') + ->assertDispatched('closeLeftMenu') + ->assertRedirect(route('livewire-gallery')); + } +} diff --git a/tests/Livewire/Pages/FrameTest.php b/tests/Livewire/Pages/FrameTest.php new file mode 100644 index 00000000000..4bdaf268d39 --- /dev/null +++ b/tests/Livewire/Pages/FrameTest.php @@ -0,0 +1,104 @@ +assertForbidden(); + } + + public function testFrameLoggedInDisabled(): void + { + Configs::set('mod_frame_enabled', false); + Livewire::actingAs($this->userMayUpload1)->test(Frame::class) + ->assertForbidden(); + } + + public function testFrameLoggedOutEnabled(): void + { + // Set up visibiltiy + Livewire::actingAs($this->userMayUpload1)->test(Visibility::class, ['album' => $this->album1]) + ->assertOk() + ->assertViewIs('livewire.forms.album.visibility') + ->toggle('is_public') + ->assertDispatched('notify', self::notifySuccess()); + + $this->album1->fresh(); + $this->album1->base_class->load('access_permissions'); + $this->assertNotNull($this->album1->public_permissions()); + + // Check guest can access + Livewire::test(Album::class, ['albumId' => $this->album1->id]) + ->assertStatus(200); + + // By default we are showing starred. + Configs::set('mod_frame_enabled', true); + Livewire::test(Frame::class) + ->assertStatus(500); + + // Show all pictures + Configs::set('random_album_id', ''); + Configs::set('mod_frame_enabled', true); + Livewire::test(Frame::class) + ->assertOk() + ->assertViewIs('livewire.pages.gallery.frame'); + + // Check frame on album + Livewire::test(Frame::class, ['albumId' => $this->album1->id]) + ->assertOk() + ->assertViewIs('livewire.pages.gallery.frame'); + + Configs::set('mod_frame_enabled', false); + Configs::set('random_album_id', 'starred'); + } + + public function testFrameLoggedInEnabled(): void + { + Configs::set('mod_frame_enabled', true); + Configs::set('random_album_id', ''); + Livewire::actingAs($this->userMayUpload1)->test(Frame::class) + ->assertOk() + ->assertViewIs('livewire.pages.gallery.frame'); + + Configs::set('mod_frame_enabled', false); + Configs::set('random_album_id', 'starred'); + } + + public function testFrameLoggedOutAlbum(): void + { + Configs::set('mod_frame_enabled', false); + Livewire::test(Frame::class, ['albumId' => $this->album1->id]) + ->assertForbidden(); + } + + public function testFrameLoggedInAlbum(): void + { + Configs::set('mod_frame_enabled', true); + Livewire::actingAs($this->userMayUpload1)->test(Frame::class, ['albumId' => $this->album1->id]) + ->assertOk() + ->assertViewIs('livewire.pages.gallery.frame'); + + Configs::set('mod_frame_enabled', false); + } +} diff --git a/tests/Livewire/Pages/GalleryTest.php b/tests/Livewire/Pages/GalleryTest.php new file mode 100644 index 00000000000..ef03a73e7d4 --- /dev/null +++ b/tests/Livewire/Pages/GalleryTest.php @@ -0,0 +1,34 @@ +assertViewIs('livewire.pages.gallery.albums') + ->assertSee($title) + ->dispatch('reloadPage') + ->assertStatus(200) + ->call('silentUpdate') + ->assertStatus(200); + } +} diff --git a/tests/Livewire/Pages/IndexTest.php b/tests/Livewire/Pages/IndexTest.php new file mode 100644 index 00000000000..590dd688a03 --- /dev/null +++ b/tests/Livewire/Pages/IndexTest.php @@ -0,0 +1,69 @@ +get(route('livewire-index')); + $this->assertRedirect($response); + } + + public function testLandingPage(): void + { + $landing_on_off = Configs::getValue('landing_page_enable'); + Configs::set('landing_page_enable', 1); + + $response = $this->get(route('livewire-index')); + $this->assertRedirect($response); + $response->assertRedirect(route('landing')); + + $response = $this->get(route('landing')); + $this->assertOk($response); + + $response = $this->get(route('livewire-gallery')); + $this->assertOk($response); + + Configs::set('landing_page_enable', $landing_on_off); + } + + public function testGalleryPage(): void + { + $landing_on_off = Configs::getValue('landing_page_enable'); + Configs::set('landing_page_enable', 0); + + $response = $this->get(route('livewire-index')); + $this->assertRedirect($response); + $response->assertRedirect(route('livewire-gallery')); + + $response = $this->get(route('livewire-gallery')); + $this->assertOk($response); + + $response = $this->get(route('landing')); + $this->assertRedirect($response); + + Configs::set('landing_page_enable', $landing_on_off); + } +} diff --git a/tests/Livewire/Pages/JobsTest.php b/tests/Livewire/Pages/JobsTest.php new file mode 100644 index 00000000000..18863d54c30 --- /dev/null +++ b/tests/Livewire/Pages/JobsTest.php @@ -0,0 +1,39 @@ +component) + ->assertForbidden(); + } + + public function testLoggedIn(): void + { + Livewire::actingAs($this->admin)->test($this->component) + ->assertViewIs('livewire.pages.jobs'); + + Livewire::actingAs($this->admin)->test($this->component) + ->call('back') + ->assertDispatched('closeLeftMenu') + ->assertRedirect(route('livewire-gallery')); + } +} diff --git a/tests/Livewire/Pages/LandingTest.php b/tests/Livewire/Pages/LandingTest.php new file mode 100644 index 00000000000..2371ee23d05 --- /dev/null +++ b/tests/Livewire/Pages/LandingTest.php @@ -0,0 +1,48 @@ +landing_on_off = Configs::getValueAsBool('landing_page_enable'); + Configs::set('landing_page_enable', 1); + } + + protected function tearDown(): void + { + Configs::set('landing_page_enable', $this->landing_on_off); + parent::tearDown(); + } + + public function testLandingPage(): void + { + $title = Configs::getValueAsString('landing_title'); + $subtitle = Configs::getValueAsString('landing_subtitle'); + $background = Configs::getValueAsString('landing_background'); + Livewire::test(Landing::class) + ->assertViewIs('livewire.pages.landing') + ->assertSee($title) + ->assertSee($subtitle) + ->assertSee($background); + } +} diff --git a/tests/Livewire/Pages/MapTest.php b/tests/Livewire/Pages/MapTest.php new file mode 100644 index 00000000000..e3d8344218a --- /dev/null +++ b/tests/Livewire/Pages/MapTest.php @@ -0,0 +1,85 @@ +assertForbidden(); + } + + public function testMapLoggedInDisabled(): void + { + Livewire::actingAs($this->userMayUpload1)->test(Map::class) + ->assertForbidden(); + } + + public function testMapLoggedInEnabled(): void + { + Configs::set('map_display', true); + Livewire::actingAs($this->userMayUpload1)->test(Map::class) + ->assertOk() + ->assertViewIs('livewire.pages.gallery.map'); + + Configs::set('map_display', false); + } + + public function testMapLoggedOutEnabled(): void + { + Configs::set('map_display', true); + Configs::set('map_display_public', true); + + Livewire::test(Map::class) + ->assertOk() + ->assertViewIs('livewire.pages.gallery.map'); + + Configs::set('map_display', false); + Configs::set('map_display_public', false); + } + + public function testMapLoggedOutAlbum(): void + { + Livewire::test(Map::class, ['albumId' => $this->album1->id]) + ->assertForbidden(); + + Configs::set('map_display', true); + Livewire::test(Map::class, ['albumId' => $this->album1->id]) + ->assertForbidden(); + + Configs::set('map_display_public', true); + Livewire::test(Map::class, ['albumId' => $this->album1->id]) + ->assertForbidden(); + + Configs::set('map_display', false); + Configs::set('map_display_public', false); + } + + public function testMapLoggedInAlbum(): void + { + Livewire::actingAs($this->userMayUpload1)->test(Map::class) + ->assertForbidden(); + + Configs::set('map_display', true); + Livewire::actingAs($this->userMayUpload1)->test(Map::class) + ->assertOk() + ->assertViewIs('livewire.pages.gallery.map'); + Configs::set('map_display', false); + } +} diff --git a/tests/Livewire/Pages/ProfileTest.php b/tests/Livewire/Pages/ProfileTest.php new file mode 100644 index 00000000000..2712d985da3 --- /dev/null +++ b/tests/Livewire/Pages/ProfileTest.php @@ -0,0 +1,45 @@ +component) + ->assertForbidden(); + } + + public function testLoggedIn(): void + { + Livewire::actingAs($this->userMayUpload1)->test($this->component) + ->assertViewIs('livewire.pages.profile'); + + Livewire::actingAs($this->userMayUpload1)->test($this->component) + ->call('back') + ->assertDispatched('closeLeftMenu') + ->assertRedirect(route('livewire-gallery')); + } + + public function testLoggedInPowerless(): void + { + Livewire::actingAs($this->userLocked)->test($this->component) + ->assertForbidden(); + } +} diff --git a/tests/Livewire/Pages/SettingsTest.php b/tests/Livewire/Pages/SettingsTest.php new file mode 100644 index 00000000000..6530a411a4b --- /dev/null +++ b/tests/Livewire/Pages/SettingsTest.php @@ -0,0 +1,48 @@ +component) + ->assertForbidden(); + } + + public function testLoggedIn(): void + { + Livewire::actingAs($this->userMayUpload1)->test($this->component) + ->assertForbidden(); + } + + public function testLoggedInAdmin(): void + { + Livewire::actingAs($this->admin)->test($this->component) + ->assertViewIs('livewire.pages.settings'); + + Livewire::actingAs($this->admin)->test($this->component) + ->call('back') + ->assertDispatched('closeLeftMenu') + ->assertRedirect(route('livewire-gallery')); + } +} diff --git a/tests/Livewire/Pages/SharingTest.php b/tests/Livewire/Pages/SharingTest.php new file mode 100644 index 00000000000..f7acd15d16e --- /dev/null +++ b/tests/Livewire/Pages/SharingTest.php @@ -0,0 +1,56 @@ +component) + ->assertForbidden(); + } + + public function testLoggedInUserNoRights(): void + { + Livewire::actingAs($this->userNoUpload)->test($this->component) + ->assertForbidden(); + } + + public function testLoggedInUser(): void + { + Livewire::actingAs($this->userMayUpload1)->test($this->component) + ->assertViewIs('livewire.pages.sharing'); + + Livewire::actingAs($this->userMayUpload1)->test($this->component) + ->call('back') + ->assertDispatched('closeLeftMenu') + ->assertRedirect(route('livewire-gallery')); + } + + public function testLoggedInAdmin(): void + { + Livewire::actingAs($this->admin)->test($this->component) + ->assertViewIs('livewire.pages.sharing'); + + Livewire::actingAs($this->admin)->test($this->component) + ->call('back') + ->assertDispatched('closeLeftMenu') + ->assertRedirect(route('livewire-gallery')); + } +} diff --git a/tests/Livewire/Pages/UsersTest.php b/tests/Livewire/Pages/UsersTest.php new file mode 100644 index 00000000000..41e8a491e63 --- /dev/null +++ b/tests/Livewire/Pages/UsersTest.php @@ -0,0 +1,94 @@ +admin = User::findOrFail(1); + + $this->setUpRequiresEmptyUsers(); + $this->withoutVite(); + } + + public function tearDown(): void + { + $this->tearDownRequiresEmptyUsers(); + parent::tearDown(); + } + + public function testLoggedOut(): void + { + Livewire::test($this->component) + ->assertForbidden(); + } + + public function testLoggedIn(): void + { + Livewire::actingAs($this->admin)->test($this->component) + ->assertViewIs('livewire.pages.users') + ->assertCount('users', 1); + + Livewire::actingAs($this->admin)->test($this->component) + ->call('back') + ->assertDispatched('closeLeftMenu') + ->assertRedirect(route('livewire-gallery')); + } + + public function testCreate(): void + { + User::where('username', '=', 'user1')->delete(); + + $this->assertEquals(1, User::count()); + $this->assertEquals(0, User::where('username', '=', 'user1')->count()); + + Livewire::actingAs($this->admin)->test(Users::class) + ->set('username', 'user1') + ->set('password', 'password') + ->call('create') + ->assertCount('users', 2); + + $this->assertEquals(2, User::count()); + } + + public function testDelete(): void + { + /** @var User $user */ + $user = User::factory()->create(); + + Livewire::actingAs($this->admin)->test(Users::class) + ->call('delete', $user->id) + ->assertCount('users', 1); + } + + public function testForbiddenDelete(): void + { + Livewire::actingAs($this->admin)->test(Users::class) + ->call('delete', $this->admin->id) + ->assertStatus(403); + } +} diff --git a/tests/Livewire/WireableTest.php b/tests/Livewire/WireableTest.php new file mode 100644 index 00000000000..9d49959b967 --- /dev/null +++ b/tests/Livewire/WireableTest.php @@ -0,0 +1,45 @@ +num = new class() {}; + } + }; + + $this->assertThrows(fn () => $trait->toLivewire(), LycheeLogicException::class); + } + + public function testWirableHydrate(): void + { + $trait = new class() implements Wireable { + use UseWireable; + }; + + $this->assertThrows(fn () => $trait::fromLivewire(''), LycheeLogicException::class); + } +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000000..d12fe33b990 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,112 @@ +{ + "include": ["resources/js/**/*", "resources/css/**/*"], + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es6", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + "lib": ["ES6", "DOM"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "CommonJS", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + "paths": { + "@/*": ["./resources/js/*"] + }, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + // "skipLibCheck": true, /* Skip type checking all .d.ts files. */ + } +} diff --git a/version.md b/version.md index 01b73abe550..28cbf7c0aae 100644 --- a/version.md +++ b/version.md @@ -1 +1 @@ -4.13.0 \ No newline at end of file +5.0.0 \ No newline at end of file diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 00000000000..5b22a143aa7 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,33 @@ +import { defineConfig } from 'vite'; +import laravel from 'laravel-vite-plugin'; +import commonjs from 'vite-plugin-commonjs' +import checker from 'vite-plugin-checker' + +export default defineConfig({ + plugins: [ + commonjs(/* options */), + + laravel({ + input: ['resources/css/app.css', 'resources/js/app.ts'], + refresh: true, + }), + + checker({ + // e.g. use TypeScript check + typescript: true, + }), + ], + server: { + watch: { + ignored: [ + "**/.*/**", + "**/database/**", + "**/node_modules/**", + "**/public/**", + "**/storage/**", + "**/tests/**", + "vendor/**", + ], + }, + } +}); From 2bc5da1ac6722ca3324060f31fd58447e74cbbe0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Mon, 25 Dec 2023 08:27:41 +0100 Subject: [PATCH 069/209] update README (#2077) --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a24d88bb2fe..2e3c2a57bbb 100644 --- a/README.md +++ b/README.md @@ -36,9 +36,11 @@ To run Lychee, everything you need is a web-server with PHP 8.2 or later and a d 1. Clone this repo to your server and set the web root to `lychee/public` 2. Run `composer install --no-dev` to install dependencies -3. Copy `.env.example` as `.env` and edit it to match your parameters -4. Generate your secret key with `php artisan key:generate` -5. Migrate your database with `php artisan migrate` to create a new database or migrate an existing Lychee installation to the latest framework. +3. Run `npm install` to install node dependencies +4. Run `npm run build` to build the front-end +5. Copy `.env.example` as `.env` and edit it to match your parameters +6. Generate your secret key with `php artisan key:generate` +7. Migrate your database with `php artisan migrate` to create a new database or migrate an existing Lychee installation to the latest framework. See detailed instructions on the [Installation](https://lycheeorg.github.io/docs/installation.html) page of our documentation. From b9909ad0b5daff24101e69012bee21b838cd02b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Mon, 25 Dec 2023 12:48:24 +0100 Subject: [PATCH 070/209] Diagnostics: Info are displayed in blue (#2078) --- app/Livewire/Components/Modules/Diagnostics/Errors.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/Livewire/Components/Modules/Diagnostics/Errors.php b/app/Livewire/Components/Modules/Diagnostics/Errors.php index e1ea04ea885..44ddf51a968 100644 --- a/app/Livewire/Components/Modules/Diagnostics/Errors.php +++ b/app/Livewire/Components/Modules/Diagnostics/Errors.php @@ -39,6 +39,12 @@ public function getDataProperty(): array $arr['line'] = Str::substr($line, 9); } + if (Str::startsWith($line, 'Info: ')) { + $arr['color'] = 'text-primary-400'; + $arr['type'] = 'Info:'; + $arr['line'] = Str::substr($line, 6); + } + if (Str::startsWith($line, 'Error: ')) { // @codeCoverageIgnoreStart $arr['color'] = 'text-danger-600'; From f3be74fa2f28ab54bf51ad3c53fc83de03af80e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Mon, 25 Dec 2023 13:52:19 +0100 Subject: [PATCH 071/209] Add option for thumbs overlay: none|hidden|always (#2079) --- app/Enum/ThumbOverlayVisibilityType.php | 15 +++++++++ .../Components/Gallery/Album/Thumbs/Album.php | 10 ++++++ .../Components/Gallery/Album/Thumbs/Photo.php | 10 ++++++ ...5454_add_setting_display_thumb_overlay.php | 31 +++++++++++++++++++ .../gallery/album/thumbs/album.blade.php | 5 +-- .../gallery/album/thumbs/photo.blade.php | 4 +-- tailwind.config.js | 8 +++++ 7 files changed, 79 insertions(+), 4 deletions(-) create mode 100644 app/Enum/ThumbOverlayVisibilityType.php create mode 100644 database/migrations/2023_12_25_115454_add_setting_display_thumb_overlay.php diff --git a/app/Enum/ThumbOverlayVisibilityType.php b/app/Enum/ThumbOverlayVisibilityType.php new file mode 100644 index 00000000000..cd71b124a25 --- /dev/null +++ b/app/Enum/ThumbOverlayVisibilityType.php @@ -0,0 +1,15 @@ +subType = Configs::getValueAsEnum('album_subtitle_type', ThumbAlbumSubtitleType::class)->value; $this->id = $data->id; @@ -54,6 +58,12 @@ public function __construct(AbstractAlbum $data) $policy = AlbumProtectionPolicy::ofBaseAlbum($data); } + $this->css_overlay = match ($displayOverlay) { + ThumbOverlayVisibilityType::NEVER => 'hidden', + ThumbOverlayVisibilityType::HOVER => 'opacity-0 group-hover:opacity-100 transition-all ease-out', + default => '', + }; + $this->is_nsfw = $policy->is_nsfw; $this->is_nsfw_blurred = $this->is_nsfw && Configs::getValueAsBool('nsfw_blur'); $this->is_public = $policy->is_public; diff --git a/app/View/Components/Gallery/Album/Thumbs/Photo.php b/app/View/Components/Gallery/Album/Thumbs/Photo.php index 549bc318d41..c22690e0d78 100644 --- a/app/View/Components/Gallery/Album/Thumbs/Photo.php +++ b/app/View/Components/Gallery/Album/Thumbs/Photo.php @@ -3,6 +3,7 @@ namespace App\View\Components\Gallery\Album\Thumbs; use App\Enum\SizeVariantType; +use App\Enum\ThumbOverlayVisibilityType; use App\Exceptions\ConfigurationKeyMissingException; use App\Exceptions\Internal\InvalidSizeVariantException; use App\Models\Configs; @@ -28,6 +29,8 @@ class Photo extends Component public string $created_at; public bool $is_cover_id = false; + public string $css_overlay; + public string $src = ''; public string $srcset = ''; public string $srcset2x = ''; @@ -46,6 +49,7 @@ public function __construct(ModelsPhoto $data, string $albumId, int $idx) { $this->idx = $idx; $date_format = Configs::getValueAsString('date_format_photo_thumb'); + $displayOverlay = Configs::getValueAsEnum('display_thumb_photo_overlay', ThumbOverlayVisibilityType::class); $this->album_id = $albumId; $this->photo_id = $data->id; @@ -57,6 +61,12 @@ public function __construct(ModelsPhoto $data, string $albumId, int $idx) $this->is_livephoto = $data->live_photo_url !== null; $this->is_cover_id = $data->album?->cover_id === $data->id; + $this->css_overlay = match ($displayOverlay) { + ThumbOverlayVisibilityType::NEVER => 'hidden', + ThumbOverlayVisibilityType::HOVER => 'opacity-0 group-hover:opacity-100 transition-all ease-out', + default => '', + }; + $thumb = $data->size_variants->getSizeVariant(SizeVariantType::THUMB); $thumb2x = $data->size_variants->getSizeVariant(SizeVariantType::THUMB2X); diff --git a/database/migrations/2023_12_25_115454_add_setting_display_thumb_overlay.php b/database/migrations/2023_12_25_115454_add_setting_display_thumb_overlay.php new file mode 100644 index 00000000000..8faecdf1dbf --- /dev/null +++ b/database/migrations/2023_12_25_115454_add_setting_display_thumb_overlay.php @@ -0,0 +1,31 @@ + 'display_thumb_album_overlay', + 'value' => 'always', + 'confidentiality' => '0', + 'cat' => self::GALLERY, + 'type_range' => 'always|hover|never', + 'description' => 'Display the title and metadata on album thumbs (always|hover|never)', + ], + [ + 'key' => 'display_thumb_photo_overlay', + 'value' => 'hover', + 'confidentiality' => '0', + 'cat' => self::GALLERY, + 'type_range' => 'always|hover|never', + 'description' => 'Display the title and metadata on album thumbs (always|hover|never)', + ], + ]; + } +}; diff --git a/resources/views/components/gallery/album/thumbs/album.blade.php b/resources/views/components/gallery/album/thumbs/album.blade.php index df7b6d5a54c..a4b8a232739 100644 --- a/resources/views/components/gallery/album/thumbs/album.blade.php +++ b/resources/views/components/gallery/album/thumbs/album.blade.php @@ -25,8 +25,9 @@ type="{{ $thumb?->type ?? '' }}" thumb="{{ $thumb?->thumbUrl ?? '' }}" thumb2x="{{ $thumb?->thumb2xUrl ?? '' }}" /> -
-

{{ $title }}

+
+

{{ $title }}

@switch($subType) @case('description') diff --git a/resources/views/components/gallery/album/thumbs/photo.blade.php b/resources/views/components/gallery/album/thumbs/photo.blade.php index 2525ea218b8..6a973c305ba 100644 --- a/resources/views/components/gallery/album/thumbs/photo.blade.php +++ b/resources/views/components/gallery/album/thumbs/photo.blade.php @@ -20,8 +20,8 @@ class="h-full w-full border-none object-cover object-center {{ $is_lazyload ? 'l draggable='false' /> -
+

{{ $title }}

@if($taken_at !== "") diff --git a/tailwind.config.js b/tailwind.config.js index a8870f17656..f657934a98f 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -1,5 +1,13 @@ /** @type {import('tailwindcss').Config} */ module.exports = { + safelist: [ + 'opacity-0', + 'group-hover:opacity-100', + 'transition-all', + 'ease-out', + 'hidden', + + ], content: [ "./resources/**/*.blade.php", "./resources/**/*.js", From 1a83b91dfa8a82342c3d5726d1b247313845e5f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Mon, 25 Dec 2023 19:35:50 +0100 Subject: [PATCH 072/209] Add back blurred property (#2090) --- resources/css/app.css | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/resources/css/app.css b/resources/css/app.css index 93a48529984..e19ac2f7cc6 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -120,4 +120,14 @@ .drop-shadow-black { --tw-drop-shadow: drop-shadow(0 0 1px rgba(0, 0, 0, 0.3)) drop-shadow(0 0 10px rgba(0, 0, 0, 0.3)); } + + .blurred span { + overflow: hidden; + } + + .blurred img { + /* Safari 6.0 - 9.0 */ + -webkit-filter: blur(5px); + filter: blur(5px); + } } From 97b5e966158d05a386482ff8c38a8d22e99cd63a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Mon, 25 Dec 2023 19:36:00 +0100 Subject: [PATCH 073/209] Forgotten attribute of the canEdit function (#2091) --- app/Livewire/DTO/AlbumsFlags.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Livewire/DTO/AlbumsFlags.php b/app/Livewire/DTO/AlbumsFlags.php index 567f17b7df8..cf75bbc9971 100644 --- a/app/Livewire/DTO/AlbumsFlags.php +++ b/app/Livewire/DTO/AlbumsFlags.php @@ -28,7 +28,7 @@ public function __construct( $this->is_map_accessible = $this->is_map_accessible && (Auth::check() || Configs::getValueAsBool('map_display_public')); $this->is_mod_frame_enabled = Configs::getValueAsBool('mod_frame_enabled'); $this->can_use_2fa = !Auth::check() && (WebAuthnCredential::query()->whereNull('disabled_at')->count() > 0); - $this->can_edit = Gate::check(AlbumPolicy::CAN_EDIT, [AbstractAlbum::class]); + $this->can_edit = Gate::check(AlbumPolicy::CAN_EDIT, [AbstractAlbum::class, null]); $this->is_search_accessible = Auth::check() || Configs::getValueAsBool('search_public'); } } \ No newline at end of file From bd3da85ae36eee040ffdb82bfa643aeaff071bfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Tue, 26 Dec 2023 19:00:59 +0100 Subject: [PATCH 074/209] Fix 2095 : redirection not functioning on album creation. (#2101) --- app/Livewire/Components/Forms/Album/Create.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Livewire/Components/Forms/Album/Create.php b/app/Livewire/Components/Forms/Album/Create.php index 6c355a81e83..163ace07eaf 100644 --- a/app/Livewire/Components/Forms/Album/Create.php +++ b/app/Livewire/Components/Forms/Album/Create.php @@ -87,7 +87,7 @@ public function submit(): void $create = new AlbumCreate($ownerId); $new_album = $create->create($this->title, $parentAlbum); - $this->redirect(route('livewire-gallery-album', ['albumId' => $new_album->id]), true); + $this->redirect(route('livewire-gallery-album', ['albumId' => $new_album->id]), false); } /** From a4cf55b934d1d37235a8fc6809bb45c1fb193704 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Tue, 26 Dec 2023 19:38:36 +0100 Subject: [PATCH 075/209] Better diagnostics for APP_URL and LYCHEE_UPLOAD_URL (#2105) --- .../Pipes/Checks/AppUrlMatchCheck.php | 20 +++++++++++++++++-- .../Pipes/Infos/InstallTypeInfo.php | 1 + 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/app/Actions/Diagnostics/Pipes/Checks/AppUrlMatchCheck.php b/app/Actions/Diagnostics/Pipes/Checks/AppUrlMatchCheck.php index a3b02a41c52..d6af3b02e11 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/AppUrlMatchCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/AppUrlMatchCheck.php @@ -7,6 +7,11 @@ class AppUrlMatchCheck implements DiagnosticPipe { /** + * We check: + * 1. that APP_URL correctly match the url of the request. + * 2. That APP_URL correctly match the url of the request. + * 3. That LYCHEE_UPLOADS_URL is not provided by null + * 4. that if APP_URL is default, that the config is also using localhost. (Additional Error in the diagnostics). * {@inheritDoc} */ public function handle(array &$data, \Closure $next): array @@ -15,8 +20,19 @@ public function handle(array &$data, \Closure $next): array // https:// is 8 characters. if (strpos($config_url, '/', 8) !== false) { $data[] = 'Warning: APP_URL contains a sub-path. This may impact your WebAuthn authentication.'; - } elseif ($config_url !== request()->httpHost() && $config_url !== request()->schemeAndHttpHost()) { - $data[] = 'Error: APP_URL does not match the current url. This will break WebAuthn authentication. Please update APP_URL to reflect this change.'; + } + + if ($config_url !== request()->httpHost() && $config_url !== request()->schemeAndHttpHost()) { + $data[] = 'Error: APP_URL does not match the current url. This will break WebAuthn authentication.'; + } + + $config_url_imgage = config('filesystems.disks.images.url'); + if ($config_url_imgage === '') { + $data[] = 'Error: LYCHEE_UPLOADS_URL is set and empty. This will prevent images to be displayed. Remove the line from your .env'; + } + + if (($config_url . '/uploads/') === $config_url_imgage && $config_url !== request()->schemeAndHttpHost() && $config_url !== request()->httpHost()) { + $data[] = 'Error: APP_URL does not match the current url. This will prevent images to be properly displayed.'; } return $next($data); diff --git a/app/Actions/Diagnostics/Pipes/Infos/InstallTypeInfo.php b/app/Actions/Diagnostics/Pipes/Infos/InstallTypeInfo.php index 24ea30184a6..3e71f204ea8 100644 --- a/app/Actions/Diagnostics/Pipes/Infos/InstallTypeInfo.php +++ b/app/Actions/Diagnostics/Pipes/Infos/InstallTypeInfo.php @@ -28,6 +28,7 @@ public function handle(array &$data, \Closure $next): array $data[] = Diagnostics::line('composer install:', $this->installedVersion->isDev() ? 'dev' : '--no-dev'); $data[] = Diagnostics::line('APP_ENV:', Config::get('app.env')); // check if production $data[] = Diagnostics::line('APP_DEBUG:', Config::get('app.debug') === true ? 'true' : 'false'); // check if debug is on (will help in case of error 500) + $data[] = Diagnostics::line('APP_URL:', Config::get('app.url') !== 'http://localhost' ? 'set' : 'default'); // Some people leave that value by default... It is now breaking their visual. $data[] = ''; return $next($data); From 1a376550fea119bdd594fb03817d262d62090712 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Wed, 27 Dec 2023 10:15:03 +0100 Subject: [PATCH 076/209] Fix unlock album component wrongly selected. (#2108) --- resources/views/livewire/pages/gallery/album.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/livewire/pages/gallery/album.blade.php b/resources/views/livewire/pages/gallery/album.blade.php index 7710dcbbaf0..f5bc26b4c78 100644 --- a/resources/views/livewire/pages/gallery/album.blade.php +++ b/resources/views/livewire/pages/gallery/album.blade.php @@ -24,7 +24,7 @@ @endif @if ($flags->is_password_protected) - + @elseif(!$flags->is_accessible) @else From ea3dfb4cba70b20996620260467d13cd5c1e3ce8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Wed, 27 Dec 2023 10:15:23 +0100 Subject: [PATCH 077/209] Fix #2096 - Remove U2F from left menu when user is not allowed to modify their account. (#2107) --- resources/views/livewire/components/left-menu.blade.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/resources/views/livewire/components/left-menu.blade.php b/resources/views/livewire/components/left-menu.blade.php index f559f2a9bbf..fdb64445af1 100644 --- a/resources/views/livewire/components/left-menu.blade.php +++ b/resources/views/livewire/components/left-menu.blade.php @@ -20,9 +20,11 @@ class="z-40 w-0 h-screen transition-width duration-500" aria-label="Sidebar"> {{ __('lychee.USERS') }} @endcan + @can(UserPolicy::CAN_EDIT, [App\Models\User::class]) {{ __('lychee.U2F') }} + @endcan @can(AlbumPolicy::CAN_SHARE_WITH_USERS, [App\Contracts\Models\AbstractAlbum::class, null]) {{ __('lychee.SHARING') }} From f5187106a74ff834f4fc2f7e1e454cc94240fa10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Wed, 27 Dec 2023 10:57:02 +0100 Subject: [PATCH 078/209] force https at the boot level instead of in the route files (#2110) --- app/Providers/AppServiceProvider.php | 8 ++++++++ routes/api.php | 5 ----- routes/web-admin.php | 6 ------ routes/web-install.php | 6 ------ routes/web-livewire.php | 6 ------ routes/web.php | 5 ----- 6 files changed, 8 insertions(+), 28 deletions(-) diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 1268e71f478..423f51624f5 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -34,6 +34,7 @@ use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Gate; use Illuminate\Support\Facades\Log; +use Illuminate\Support\Facades\URL; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Str; use Livewire\Livewire; @@ -104,6 +105,13 @@ public function boot() */ JsonResource::withoutWrapping(); + /** + * We force URL to HTTPS if requested in .env via APP_FORCE_HTTPS. + */ + if (config('app.force_https') === true) { + URL::forceScheme('https'); + } + if (config('database.db_log_sql', false) === true) { DB::listen(fn ($q) => $this->logSQL($q)); } diff --git a/routes/api.php b/routes/api.php index fb3f92b5876..39aac349521 100644 --- a/routes/api.php +++ b/routes/api.php @@ -3,7 +3,6 @@ namespace App\Http\Controllers; use Illuminate\Support\Facades\Route; -use Illuminate\Support\Facades\URL; /* |-------------------------------------------------------------------------- @@ -16,10 +15,6 @@ | */ -if (config('app.force_https')) { - URL::forceScheme('https'); -} - /** * ALBUMS. */ diff --git a/routes/web-admin.php b/routes/web-admin.php index 7093dcdbed2..838ce00a537 100644 --- a/routes/web-admin.php +++ b/routes/web-admin.php @@ -4,7 +4,6 @@ use App\Http\Controllers\IndexController; use Illuminate\Support\Facades\Route; -use Illuminate\Support\Facades\URL; /* |-------------------------------------------------------------------------- @@ -16,11 +15,6 @@ | contains the "admin" middleware group. Now create something great! | */ - -if (config('app.force_https')) { - URL::forceScheme('https'); -} - Route::get('/phpinfo', [IndexController::class, 'phpinfo']); Route::get('/Jobs', [JobController::class, 'view']); diff --git a/routes/web-install.php b/routes/web-install.php index 4d7c52ed313..211c717f2f4 100644 --- a/routes/web-install.php +++ b/routes/web-install.php @@ -3,7 +3,6 @@ namespace App\Http\Controllers\Install; use Illuminate\Support\Facades\Route; -use Illuminate\Support\Facades\URL; /* |-------------------------------------------------------------------------- @@ -15,11 +14,6 @@ | contains the "install" middleware group. Now create something great! | */ - -if (config('app.force_https')) { - URL::forceScheme('https'); -} - Route::get('install/', [WelcomeController::class, 'view'])->name('install-welcome'); Route::get('install/req', [RequirementsController::class, 'view'])->name('install-req'); Route::get('install/perm', [PermissionsController::class, 'view'])->name('install-perm'); diff --git a/routes/web-livewire.php b/routes/web-livewire.php index ea72ab88997..c470b0f2112 100644 --- a/routes/web-livewire.php +++ b/routes/web-livewire.php @@ -7,7 +7,6 @@ use App\Livewire\Components\Pages\Gallery\Search; use App\Models\Configs; use Illuminate\Support\Facades\Route; -use Illuminate\Support\Facades\URL; /* |-------------------------------------------------------------------------- @@ -19,11 +18,6 @@ | contains the "web" middleware group. Now create something great! | */ - -if (config('app.force_https')) { - URL::forceScheme('https'); -} - Route::middleware(['installation:complete', 'migration:complete']) ->group(function () { Route::prefix(config('app.livewire') === true ? '' : 'livewire') diff --git a/routes/web.php b/routes/web.php index 835fd570b1b..bff08b239b2 100644 --- a/routes/web.php +++ b/routes/web.php @@ -15,11 +15,6 @@ | contains the "web" middleware group. Now create something great! | */ - -if (config('app.force_https')) { - URL::forceScheme('https'); -} - Route::feeds(); // If we are using Livewire by default, we no longer need those routes. From 736a6cbc53650d5dd47785079d3d4a801b5a1aed Mon Sep 17 00:00:00 2001 From: Manuel Schmid <9307310+mashb1t@users.noreply.github.com> Date: Wed, 27 Dec 2023 14:43:19 +0100 Subject: [PATCH 079/209] Remove path from query string via middleware (#2112) Co-authored-by: ildyria --- app/Http/Kernel.php | 1 + app/Http/Middleware/QueryStringFixer.php | 42 ++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 app/Http/Middleware/QueryStringFixer.php diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index a562195e0a3..4f5c55c327d 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -43,6 +43,7 @@ class Kernel extends HttpKernel \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, \App\Http\Middleware\DisableCSP::class, + \App\Http\Middleware\QueryStringFixer::class, ], 'web-admin' => [ diff --git a/app/Http/Middleware/QueryStringFixer.php b/app/Http/Middleware/QueryStringFixer.php new file mode 100644 index 00000000000..f7d7fc448d1 --- /dev/null +++ b/app/Http/Middleware/QueryStringFixer.php @@ -0,0 +1,42 @@ +server->set('QUERY_STRING', $_SERVER['QUERY_STRING']); + } + + return $next($request); + } +} From 18659bffe6e0ee42c95b92a6460ba291bc319c71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Wed, 27 Dec 2023 15:20:52 +0100 Subject: [PATCH 080/209] More checks for potential upload bugs (#2111) --- .../Pipes/Checks/IniSettingsCheck.php | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/app/Actions/Diagnostics/Pipes/Checks/IniSettingsCheck.php b/app/Actions/Diagnostics/Pipes/Checks/IniSettingsCheck.php index 63989890fd6..a53d3b9835f 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/IniSettingsCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/IniSettingsCheck.php @@ -69,8 +69,8 @@ public function handle(array &$data, \Closure $next): array if (extension_loaded('xdebug')) { // @codeCoverageIgnoreStart $msg = config('app.debug') !== true - ? 'Errror: xdebug is enabled although Lychee is not in debug mode. Outside of debugging, xdebug may generate significant slowdown on your application.' - : 'Warning: xdebug is enabled. This may generate significant slowdown on your application.'; + ? 'Errror: xdebug is enabled although Lychee is not in debug mode. Outside of debugging, xdebug will generate significant slowdown on your application.' + : 'Warning: xdebug is enabled. This will generate significant slowdown on your application.'; $data[] = $msg; // @codeCoverageIgnoreEnd } @@ -91,6 +91,26 @@ public function handle(array &$data, \Closure $next): array $data[] = 'Warning: zend.assertions is disabled although Lychee is in debug mode. For easier debugging code generation for assertions should be enabled.'; } + $disabledFunctions = explode(',', ini_get('disable_functions')); + $tmpfileExists = function_exists('tmpfile') && !in_array('tmpfile', $disabledFunctions, true); + if ($tmpfileExists !== true) { + // @codeCoverageIgnoreStart + $data[] = 'Error: tmpfile() is disabled, this will prevent you from uploading pictures.'; + // @codeCoverageIgnoreEnd + } + + $path = sys_get_temp_dir(); + if (!is_writable($path)) { + // @codeCoverageIgnoreStart + $data[] = 'Error: sys_get_temp_dir() is not writable, this will prevent you from uploading pictures.'; + // @codeCoverageIgnoreEnd + } + if (!is_readable($path)) { + // @codeCoverageIgnoreStart + $data[] = 'Error: sys_get_temp_dir() is not readable, this will prevent you from uploading pictures.'; + // @codeCoverageIgnoreEnd + } + return $next($data); } } From 80453fdf73ccd6f08175275ffe2c1298dcdb4844 Mon Sep 17 00:00:00 2001 From: Thomas Dalichow <179595+TwizzyDizzy@users.noreply.github.com> Date: Wed, 27 Dec 2023 15:21:12 +0100 Subject: [PATCH 081/209] Modify post-merge script to reflect 5.0.0 build changes (#2109) * Modify post-merge script to reflect 5.0.0 build changes * package is always here + add error message if npm is not found --------- Co-authored-by: TwizzyDizzy Co-authored-by: ildyria --- scripts/post-merge | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/scripts/post-merge b/scripts/post-merge index 5bdd6fd140a..45a8e9020e2 100755 --- a/scripts/post-merge +++ b/scripts/post-merge @@ -1,5 +1,6 @@ #!/bin/sh NO_COLOR="\033[0m" +RED="\033[38;5;009m" GREEN="\033[38;5;010m" ORANGE="\033[38;5;214m" @@ -18,17 +19,24 @@ else composer install if command -v npm > /dev/null; then printf "\n${ORANGE}npm detected${NO_COLOR}\n" - if [ -f "package.json" ]; then - echo "npm install --no-audit --no-fund" - npm install --no-audit --no-fund - else - printf "${GREEN}no package.json found${NO_COLOR}\n" - fi + echo "npm install --no-audit --no-fund" + npm install --no-audit --no-fund + else + printf "\n${RED}npm not found. Development will likely not be possible${NO_COLOR}\n" fi else printf "\n${ORANGE}--no-dev mode detected${NO_COLOR}\n" echo "composer install --no-dev --prefer-dist" composer install --no-dev --prefer-dist + if command -v npm > /dev/null; then + printf "\n${ORANGE}npm detected${NO_COLOR}\n" + echo "npm install --no-audit --no-fund" + npm install --no-audit --no-fund + echo "npm run build" + npm run build + else + printf "\n${RED}npm not found, front-end coul not be built.${NO_COLOR}\n" + fi fi if [ -f ".env" ]; then echo "php artisan optimize --clever --dont-confirm=assume-no" From 549c20fc5defba16f2ca3372690cbb3547472f24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Wed, 27 Dec 2023 22:31:08 +0100 Subject: [PATCH 082/209] version 5.0.1 (#2115) --- .../2023_12_27_163004_bump_version050001.php | 26 +++++++++++++++++++ version.md | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 database/migrations/2023_12_27_163004_bump_version050001.php diff --git a/database/migrations/2023_12_27_163004_bump_version050001.php b/database/migrations/2023_12_27_163004_bump_version050001.php new file mode 100644 index 00000000000..6e21393494c --- /dev/null +++ b/database/migrations/2023_12_27_163004_bump_version050001.php @@ -0,0 +1,26 @@ +where('key', 'version')->update(['value' => '050001']); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down(): void + { + DB::table('configs')->where('key', 'version')->update(['value' => '050000']); + } +}; diff --git a/version.md b/version.md index 28cbf7c0aae..32f3eaad0d9 100644 --- a/version.md +++ b/version.md @@ -1 +1 @@ -5.0.0 \ No newline at end of file +5.0.1 \ No newline at end of file From c97bd94edfc6b3b06dae9fd405d53bf43dc99d57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Thu, 28 Dec 2023 11:02:54 +0100 Subject: [PATCH 083/209] Fixes hover (left-right) preventing clicks on volume etc buttons + fix frame button (#2116) * reduce hover trigger area as it was taking space over the volume etc buttons of video players * fix #2098 * fixes nsfw warning --- .../Components/Pages/Gallery/Album.php | 5 +++++ .../Components/Pages/Gallery/Albums.php | 21 +++++++++++++++++++ .../gallery/photo/next-previous.blade.php | 7 +------ .../gallery/sensitive-warning.blade.php | 3 ++- 4 files changed, 29 insertions(+), 7 deletions(-) diff --git a/app/Livewire/Components/Pages/Gallery/Album.php b/app/Livewire/Components/Pages/Gallery/Album.php index 22343893656..4ae68703775 100644 --- a/app/Livewire/Components/Pages/Gallery/Album.php +++ b/app/Livewire/Components/Pages/Gallery/Album.php @@ -77,6 +77,11 @@ final public function render(): View $this->num_albums = $this->album instanceof ModelsAlbum ? $this->album->children->count() : 0; $this->num_photos = $this->album->photos->count(); + // No photos, no frame + if ($this->num_photos === 0) { + $this->flags->is_mod_frame_enabled = false; + } + $is_latitude_longitude_found = false; if ($this->album instanceof ModelsAlbum) { $is_latitude_longitude_found = $this->album->all_photos()->whereNotNull('latitude')->whereNotNull('longitude')->count() > 0; diff --git a/app/Livewire/Components/Pages/Gallery/Albums.php b/app/Livewire/Components/Pages/Gallery/Albums.php index 18ac64b26a4..1d382373b28 100644 --- a/app/Livewire/Components/Pages/Gallery/Albums.php +++ b/app/Livewire/Components/Pages/Gallery/Albums.php @@ -6,6 +6,7 @@ use App\Contracts\Livewire\Reloadable; use App\Contracts\Models\AbstractAlbum; use App\Enum\SmartAlbumType; +use App\Factories\AlbumFactory; use App\Http\Resources\Collections\TopAlbumsResource; use App\Livewire\DTO\AlbumRights; use App\Livewire\DTO\AlbumsFlags; @@ -13,8 +14,10 @@ use App\Livewire\Traits\AlbumsPhotosContextMenus; use App\Livewire\Traits\SilentUpdate; use App\Models\Configs; +use App\Policies\AlbumPolicy; use Illuminate\Contracts\Container\BindingResolutionException; use Illuminate\Support\Collection; +use Illuminate\Support\Facades\Gate; use Illuminate\View\View; use Livewire\Attributes\Locked; use Livewire\Attributes\On; @@ -51,6 +54,7 @@ public function render(): View $this->flags = new AlbumsFlags(); $this->rights = AlbumRights::make(null); $this->albumIDs = $this->topAlbums->albums->map(fn ($v, $k) => $v->id)->all(); + $this->checkFrameAccess(); return view('livewire.pages.gallery.albums'); } @@ -90,4 +94,21 @@ public function getSharedAlbumsProperty(): Collection { return $this->topAlbums->shared_albums; } + + private function checkFrameAccess(): void + { + if ($this->flags->is_mod_frame_enabled !== true) { + return; + } + + $randomAlbumId = Configs::getValueAsString('random_album_id'); + $album = resolve(AlbumFactory::class)->findAbstractAlbumOrFail($randomAlbumId); + if (Gate::check(AlbumPolicy::CAN_ACCESS, [AbstractAlbum::class, $album]) !== true) { + $this->flags->is_mod_frame_enabled = false; + + return; + } + + $this->flags->is_mod_frame_enabled = $album->photos->count() > 0; + } } diff --git a/resources/views/components/gallery/photo/next-previous.blade.php b/resources/views/components/gallery/photo/next-previous.blade.php index 9e3667b16ce..f0b2f5ff322 100644 --- a/resources/views/components/gallery/photo/next-previous.blade.php +++ b/resources/views/components/gallery/photo/next-previous.blade.php @@ -1,10 +1,5 @@ @props(['is_next']) -
$is_next, - 'left-0' => !$is_next, -]) -x-cloak > +
@if($text === '')
From dd255b192bb6d66cd6aa4ad7d61e7edaef05660a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AF=9B=E7=BA=BF?= <13816653+maoxian-1@users.noreply.github.com> Date: Thu, 28 Dec 2023 21:34:40 +0800 Subject: [PATCH 084/209] Fix #2118 - Fix drag upload bug (#2119) --- resources/views/livewire/forms/add/upload.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/livewire/forms/add/upload.blade.php b/resources/views/livewire/forms/add/upload.blade.php index 3aad200583a..07b965d6ca3 100644 --- a/resources/views/livewire/forms/add/upload.blade.php +++ b/resources/views/livewire/forms/add/upload.blade.php @@ -2,7 +2,7 @@
userList as $result)
  • + wire:click="select('{{ $result['id'] }}',@js($result['username']))"> last) @keydown.tab="isSearchUserOpen = false" @endif> - {{ $result['username'] }} + {{ ($result['username']) }}
  • @endforeach diff --git a/version.md b/version.md index 32f3eaad0d9..3e827a3a100 100644 --- a/version.md +++ b/version.md @@ -1 +1 @@ -5.0.1 \ No newline at end of file +5.0.2 \ No newline at end of file From ef48181730fec670e369a0a8ab08ee05ea98698d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Fri, 29 Dec 2023 14:49:53 +0100 Subject: [PATCH 086/209] fix #2126 (#2127) --- .../Components/Menus/AlbumDropdown.php | 7 +++++++ .../Components/Pages/Gallery/Album.php | 19 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/app/Livewire/Components/Menus/AlbumDropdown.php b/app/Livewire/Components/Menus/AlbumDropdown.php index a944619cdad..3e7333ec57e 100644 --- a/app/Livewire/Components/Menus/AlbumDropdown.php +++ b/app/Livewire/Components/Menus/AlbumDropdown.php @@ -3,6 +3,7 @@ namespace App\Livewire\Components\Menus; use App\Contracts\Livewire\Params; +use App\Livewire\Components\Pages\Gallery\Album; use App\Livewire\Traits\InteractWithContextMenu; use App\Livewire\Traits\InteractWithModal; use Illuminate\Contracts\View\View; @@ -58,4 +59,10 @@ public function download(): void $this->closeContextMenu(); $this->redirect(route('download', ['albumIDs' => $this->params[Params::ALBUM_ID]])); } + + public function setAsCover(): void + { + $this->closeContextMenu(); + $this->dispatch('setAsCover', $this->params[Params::ALBUM_ID])->to(Album::class); + } } diff --git a/app/Livewire/Components/Pages/Gallery/Album.php b/app/Livewire/Components/Pages/Gallery/Album.php index 4ae68703775..452b25431c5 100644 --- a/app/Livewire/Components/Pages/Gallery/Album.php +++ b/app/Livewire/Components/Pages/Gallery/Album.php @@ -212,6 +212,25 @@ public function setCover(?string $photoID): void $this->notify(__('lychee.CHANGE_SUCCESS')); } + #[Renderless] + #[On('setAsCover')] + public function setAsCover(string $albumID): void + { + if (!$this->album instanceof ModelsAlbum) { + return; + } + + Gate::authorize(AlbumPolicy::CAN_EDIT_ID, [AbstractAlbum::class, $this->album]); + // We are freezing this cover to the album and to the child. + + /** @var ModelsAlbum $child */ + $child = $this->albumFactory->findAbstractAlbumOrFail($albumID); + + $this->album->cover_id = ($this->album->cover_id === $child->thumb->id) ? null : $child->thumb->id; + $this->album->save(); + $this->notify(__('lychee.CHANGE_SUCCESS')); + } + public function getAlbumFormattedProperty(): AlbumFormatted { return new AlbumFormatted($this->album, $this->fetchHeaderUrl()?->url); From 98e6010deb207da9af74bb47a322ede77a829da2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sat, 30 Dec 2023 21:58:09 +0100 Subject: [PATCH 087/209] Avoid more issues because people can't read release notes... (#2124) --- .../views/components/layouts/app.blade.php | 48 ++++++++++--------- .../warning-misconfiguration.blade.php | 28 +++++++++++ 2 files changed, 54 insertions(+), 22 deletions(-) create mode 100644 resources/views/components/warning-misconfiguration.blade.php diff --git a/resources/views/components/layouts/app.blade.php b/resources/views/components/layouts/app.blade.php index 292bbd70e15..26ef86ef5f0 100644 --- a/resources/views/components/layouts/app.blade.php +++ b/resources/views/components/layouts/app.blade.php @@ -1,29 +1,33 @@ - - - - {{-- @include('components.meta.index') --}} - {{-- --}} - {{-- --}} - {{-- --}} - {{-- --}} - {{-- --}} + + + + {{-- @include('components.meta.index') --}} - {{-- @livewireStyles(['nonce' => csp_nonce('script')]) --}} - {{-- @livewireScripts(['nonce' => csp_nonce('script')]) --}} - @vite(['resources/css/app.css','resources/js/app.ts']) - - - @include('includes.svg') - - @persist('left-menu') - + {{-- --}} + {{-- --}} + {{-- --}} + {{-- --}} + {{-- --}} + + {{-- @livewireStyles(['nonce' => csp_nonce('script')]) --}} + {{-- @livewireScripts(['nonce' => csp_nonce('script')]) --}} + @vite(['resources/css/app.css','resources/js/app.ts']) + + + + + @include('includes.svg') + + @persist('left-menu') + @endpersist('left-menu') {{ $slot }} - - - - + + + + + diff --git a/resources/views/components/warning-misconfiguration.blade.php b/resources/views/components/warning-misconfiguration.blade.php new file mode 100644 index 00000000000..0cf766125e9 --- /dev/null +++ b/resources/views/components/warning-misconfiguration.blade.php @@ -0,0 +1,28 @@ + \ No newline at end of file From 0d1f8c3c364c7748dc641a3ce1db2da9189bbcfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sun, 31 Dec 2023 11:02:12 +0100 Subject: [PATCH 088/209] Description should be desc for overlay (#2135) --- resources/js/lycheeOrg/backend.d.ts | 2 +- resources/js/lycheeOrg/flags/photoFlags.ts | 4 ++-- resources/views/components/gallery/photo/overlay.blade.php | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/js/lycheeOrg/backend.d.ts b/resources/js/lycheeOrg/backend.d.ts index 948b9962c8c..8dcafadec16 100644 --- a/resources/js/lycheeOrg/backend.d.ts +++ b/resources/js/lycheeOrg/backend.d.ts @@ -13,7 +13,7 @@ export type Version = { patch: number; }; -export type OverlayTypes = "none" | "exif" | "date" | "description"; +export type OverlayTypes = "none" | "exif" | "date" | "desc"; export type PhotoLayoutType = "square" | "justified" | "unjustified" | "masonry" | "grid"; diff --git a/resources/js/lycheeOrg/flags/photoFlags.ts b/resources/js/lycheeOrg/flags/photoFlags.ts index a2ca3dc5d2e..7263688bae0 100644 --- a/resources/js/lycheeOrg/flags/photoFlags.ts +++ b/resources/js/lycheeOrg/flags/photoFlags.ts @@ -21,12 +21,12 @@ export default class PhotoFlags { break; case "date": if (photo.description !== "") { - this.overlayType = "description"; + this.overlayType = "desc"; } else { this.overlayType = "none"; } break; - case "description": + case "desc": this.overlayType = "none"; break; default: diff --git a/resources/views/components/gallery/photo/overlay.blade.php b/resources/views/components/gallery/photo/overlay.blade.php index ed0b042f9bd..4fa9320c561 100644 --- a/resources/views/components/gallery/photo/overlay.blade.php +++ b/resources/views/components/gallery/photo/overlay.blade.php @@ -1,7 +1,7 @@

    -

    +

    From d3b778ac17725846bd110b871d213bfbef036cd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sun, 31 Dec 2023 11:39:08 +0100 Subject: [PATCH 089/209] Provide the ability to change the sorting of sub album per album (Livewire only). (#2128) * rename sorting into photo_sorting * support sorting per album. Not that it does not impact the thumb image * Update lang/de/lychee.php --------- Co-authored-by: qwerty287 <80460567+qwerty287@users.noreply.github.com> --- .../Http/Requests/RequestAttribute.php | 4 ++ app/Enum/ColumnSortingAlbumType.php | 4 +- app/Http/Controllers/AlbumController.php | 2 +- .../Requests/Album/SetAlbumSortingRequest.php | 4 +- app/Http/Resources/Models/AlbumResource.php | 2 +- .../RuleSets/Album/SetAlbumSortingRuleSet.php | 8 +-- .../Album/SetAlbumSortingRuleSetLegacy.php | 28 ++++++++++ .../RuleSets/Album/SetPhotoSortingRuleSet.php | 28 ++++++++++ .../Components/Forms/Album/Properties.php | 53 ++++++++++++++----- .../Components/Pages/Gallery/Album.php | 5 +- app/Models/Album.php | 23 ++++++++ app/Models/BaseAlbumImpl.php | 6 +-- app/Models/Extensions/BaseAlbum.php | 6 +-- app/Models/TagAlbum.php | 2 +- app/Relations/BaseHasManyPhotos.php | 2 +- app/Relations/HasManyChildAlbums.php | 2 +- app/Relations/HasManyChildPhotos.php | 4 +- app/Relations/HasManyPhotosByTag.php | 2 +- app/Relations/HasManyPhotosRecursively.php | 2 +- ..._165358_add_subalbum_sorting_per_album.php | 37 +++++++++++++ lang/cz/lychee.php | 2 + lang/de/lychee.php | 2 + lang/el/lychee.php | 2 + lang/en/lychee.php | 2 + lang/es/lychee.php | 2 + lang/fr/lychee.php | 2 + lang/hu/lychee.php | 2 + lang/it/lychee.php | 2 + lang/nl/lychee.php | 2 + lang/no/lychee.php | 2 + lang/pl/lychee.php | 2 + lang/pt/lychee.php | 2 + lang/ru/lychee.php | 2 + lang/sk/lychee.php | 2 + lang/sv/lychee.php | 2 + lang/vi/lychee.php | 2 + lang/zh_CN/lychee.php | 2 + lang/zh_TW/lychee.php | 2 + .../livewire/forms/album/properties.blade.php | 13 +++-- tests/Feature/NotificationTest.php | 2 +- 40 files changed, 233 insertions(+), 42 deletions(-) create mode 100644 app/Http/RuleSets/Album/SetAlbumSortingRuleSetLegacy.php create mode 100644 app/Http/RuleSets/Album/SetPhotoSortingRuleSet.php create mode 100644 database/migrations/2023_12_28_165358_add_subalbum_sorting_per_album.php diff --git a/app/Contracts/Http/Requests/RequestAttribute.php b/app/Contracts/Http/Requests/RequestAttribute.php index 26b11f92a16..980665d827c 100644 --- a/app/Contracts/Http/Requests/RequestAttribute.php +++ b/app/Contracts/Http/Requests/RequestAttribute.php @@ -33,6 +33,10 @@ class RequestAttribute public const SORTING_COLUMN_ATTRIBUTE = 'sorting_column'; public const SORTING_ORDER_ATTRIBUTE = 'sorting_order'; + public const PHOTO_SORTING_COLUMN_ATTRIBUTE = 'photo_sorting_column'; + public const PHOTO_SORTING_ORDER_ATTRIBUTE = 'photo_sorting_order'; + public const ALBUM_SORTING_COLUMN_ATTRIBUTE = 'album_sorting_column'; + public const ALBUM_SORTING_ORDER_ATTRIBUTE = 'album_sorting_order'; public const IS_NSFW_ATTRIBUTE = 'is_nsfw'; public const IS_PUBLIC_ATTRIBUTE = 'is_public'; diff --git a/app/Enum/ColumnSortingAlbumType.php b/app/Enum/ColumnSortingAlbumType.php index f863ae8ee71..4d6cc30b809 100644 --- a/app/Enum/ColumnSortingAlbumType.php +++ b/app/Enum/ColumnSortingAlbumType.php @@ -39,8 +39,8 @@ public static function localized(): array self::CREATED_AT->value => __('lychee.SORT_ALBUM_SELECT_1'), self::TITLE->value => __('lychee.SORT_ALBUM_SELECT_2'), self::DESCRIPTION->value => __('lychee.SORT_ALBUM_SELECT_3'), - self::MIN_TAKEN_AT->value => __('lychee.SORT_ALBUM_SELECT_5'), - self::MAX_TAKEN_AT->value => __('lychee.SORT_ALBUM_SELECT_6'), + self::MIN_TAKEN_AT->value => __('lychee.SORT_ALBUM_SELECT_6'), + self::MAX_TAKEN_AT->value => __('lychee.SORT_ALBUM_SELECT_5'), ]; } } diff --git a/app/Http/Controllers/AlbumController.php b/app/Http/Controllers/AlbumController.php index 29da915d354..81bd7e5d019 100644 --- a/app/Http/Controllers/AlbumController.php +++ b/app/Http/Controllers/AlbumController.php @@ -335,7 +335,7 @@ public function setNSFW(SetAlbumNSFWRequest $request): void */ public function setSorting(SetAlbumSortingRequest $request): void { - $request->album()->sorting = $request->sortingCriterion(); + $request->album()->photo_sorting = $request->sortingCriterion(); $request->album()->save(); } diff --git a/app/Http/Requests/Album/SetAlbumSortingRequest.php b/app/Http/Requests/Album/SetAlbumSortingRequest.php index 86a5c58d494..e5d87197139 100644 --- a/app/Http/Requests/Album/SetAlbumSortingRequest.php +++ b/app/Http/Requests/Album/SetAlbumSortingRequest.php @@ -12,7 +12,7 @@ use App\Http\Requests\Traits\Authorize\AuthorizeCanEditAlbumTrait; use App\Http\Requests\Traits\HasBaseAlbumTrait; use App\Http\Requests\Traits\HasSortingCriterionTrait; -use App\Http\RuleSets\Album\SetAlbumSortingRuleSet; +use App\Http\RuleSets\Album\SetAlbumSortingRuleSetLegacy; class SetAlbumSortingRequest extends BaseApiRequest implements HasBaseAlbum, HasSortingCriterion { @@ -25,7 +25,7 @@ class SetAlbumSortingRequest extends BaseApiRequest implements HasBaseAlbum, Has */ public function rules(): array { - return SetAlbumSortingRuleSet::rules(); + return SetAlbumSortingRuleSetLegacy::rules(); } /** diff --git a/app/Http/Resources/Models/AlbumResource.php b/app/Http/Resources/Models/AlbumResource.php index c93938cd4a9..dab76fb030a 100644 --- a/app/Http/Resources/Models/AlbumResource.php +++ b/app/Http/Resources/Models/AlbumResource.php @@ -42,7 +42,7 @@ public function toArray($request) 'description' => $this->resource->description, 'track_url' => $this->resource->track_url, 'license' => $this->resource->license->localization(), - 'sorting' => $this->resource->sorting, + 'sorting' => $this->resource->photo_sorting, // children 'parent_id' => $this->resource->parent_id, diff --git a/app/Http/RuleSets/Album/SetAlbumSortingRuleSet.php b/app/Http/RuleSets/Album/SetAlbumSortingRuleSet.php index 394fdfb5375..026aff54664 100644 --- a/app/Http/RuleSets/Album/SetAlbumSortingRuleSet.php +++ b/app/Http/RuleSets/Album/SetAlbumSortingRuleSet.php @@ -4,7 +4,7 @@ use App\Contracts\Http\Requests\RequestAttribute; use App\Contracts\Http\RuleSet; -use App\Enum\ColumnSortingPhotoType; +use App\Enum\ColumnSortingAlbumType; use App\Enum\OrderSortingType; use App\Rules\RandomIDRule; use Illuminate\Validation\Rules\Enum; @@ -18,9 +18,9 @@ public static function rules(): array { return [ RequestAttribute::ALBUM_ID_ATTRIBUTE => ['required', new RandomIDRule(false)], - RequestAttribute::SORTING_COLUMN_ATTRIBUTE => ['present', 'nullable', new Enum(ColumnSortingPhotoType::class)], - RequestAttribute::SORTING_ORDER_ATTRIBUTE => [ - 'required_with:' . RequestAttribute::SORTING_COLUMN_ATTRIBUTE, + RequestAttribute::ALBUM_SORTING_COLUMN_ATTRIBUTE => ['present', 'nullable', new Enum(ColumnSortingAlbumType::class)], + RequestAttribute::ALBUM_SORTING_ORDER_ATTRIBUTE => [ + 'required_with:' . RequestAttribute::ALBUM_SORTING_COLUMN_ATTRIBUTE, 'nullable', new Enum(OrderSortingType::class), ], ]; diff --git a/app/Http/RuleSets/Album/SetAlbumSortingRuleSetLegacy.php b/app/Http/RuleSets/Album/SetAlbumSortingRuleSetLegacy.php new file mode 100644 index 00000000000..ecafade3cd5 --- /dev/null +++ b/app/Http/RuleSets/Album/SetAlbumSortingRuleSetLegacy.php @@ -0,0 +1,28 @@ + ['required', new RandomIDRule(false)], + RequestAttribute::SORTING_COLUMN_ATTRIBUTE => ['present', 'nullable', new Enum(ColumnSortingPhotoType::class)], + RequestAttribute::SORTING_ORDER_ATTRIBUTE => [ + 'required_with:' . RequestAttribute::SORTING_COLUMN_ATTRIBUTE, + 'nullable', new Enum(OrderSortingType::class), + ], + ]; + } +} diff --git a/app/Http/RuleSets/Album/SetPhotoSortingRuleSet.php b/app/Http/RuleSets/Album/SetPhotoSortingRuleSet.php new file mode 100644 index 00000000000..4ffc0094b12 --- /dev/null +++ b/app/Http/RuleSets/Album/SetPhotoSortingRuleSet.php @@ -0,0 +1,28 @@ + ['required', new RandomIDRule(false)], + RequestAttribute::PHOTO_SORTING_COLUMN_ATTRIBUTE => ['present', 'nullable', new Enum(ColumnSortingPhotoType::class)], + RequestAttribute::PHOTO_SORTING_ORDER_ATTRIBUTE => [ + 'required_with:' . RequestAttribute::PHOTO_SORTING_COLUMN_ATTRIBUTE, + 'nullable', new Enum(OrderSortingType::class), + ], + ]; + } +} diff --git a/app/Livewire/Components/Forms/Album/Properties.php b/app/Livewire/Components/Forms/Album/Properties.php index 108544ea0db..a498791d4e7 100644 --- a/app/Livewire/Components/Forms/Album/Properties.php +++ b/app/Livewire/Components/Forms/Album/Properties.php @@ -4,13 +4,16 @@ use App\Contracts\Http\Requests\RequestAttribute; use App\Contracts\Models\AbstractAlbum; +use App\DTO\AlbumSortingCriterion; use App\DTO\PhotoSortingCriterion; +use App\Enum\ColumnSortingAlbumType; use App\Enum\ColumnSortingPhotoType; use App\Enum\LicenseType; use App\Enum\OrderSortingType; use App\Factories\AlbumFactory; use App\Http\RuleSets\Album\SetAlbumDescriptionRuleSet; use App\Http\RuleSets\Album\SetAlbumSortingRuleSet; +use App\Http\RuleSets\Album\SetPhotoSortingRuleSet; use App\Livewire\Traits\Notify; use App\Livewire\Traits\UseValidator; use App\Models\Album as ModelsAlbum; @@ -31,15 +34,15 @@ class Properties extends Component use Notify; #[Locked] public string $albumID; + #[Locked] public bool $is_model_album; public string $title; // ! wired public string $description; // ! wired - public string $sorting_column = ''; // ! wired - public string $sorting_order = ''; // ! wired + public string $photo_sorting_column = ''; // ! wired + public string $photo_sorting_order = ''; // ! wired + public string $album_sorting_column = ''; // ! wired + public string $album_sorting_order = ''; // ! wired public string $license = 'none'; - public array $sorting_columns; - public array $sorting_orders; - /** * This is the equivalent of the constructor for Livewire Components. * @@ -51,13 +54,18 @@ public function mount(BaseAlbum $album): void { Gate::authorize(AlbumPolicy::CAN_EDIT, [AbstractAlbum::class, $album]); + $this->is_model_album = $album instanceof ModelsAlbum; + $this->albumID = $album->id; $this->title = $album->title; $this->description = $album->description ?? ''; - $this->sorting_column = $album->sorting?->column->value ?? ''; - $this->sorting_order = $album->sorting?->order->value ?? ''; - if ($album instanceof ModelsAlbum) { + $this->photo_sorting_column = $album->photo_sorting?->column->value ?? ''; + $this->photo_sorting_order = $album->photo_sorting?->order->value ?? ''; + if ($this->is_model_album) { + /** @var ModelsAlbum $album */ $this->license = $album->license->value; + $this->album_sorting_column = $album->album_sorting?->column->value ?? ''; + $this->album_sorting_order = $album->album_sorting?->order->value ?? ''; } } @@ -80,6 +88,7 @@ public function submit(AlbumFactory $albumFactory): void RequestAttribute::TITLE_ATTRIBUTE => ['required', new TitleRule()], RequestAttribute::LICENSE_ATTRIBUTE => ['required', new Enum(LicenseType::class)], ...SetAlbumDescriptionRuleSet::rules(), + ...SetPhotoSortingRuleSet::rules(), ...SetAlbumSortingRuleSet::rules(), ]; @@ -94,14 +103,19 @@ public function submit(AlbumFactory $albumFactory): void $baseAlbum->description = $this->description; // Not super pretty but whatever. - $column = ColumnSortingPhotoType::tryFrom($this->sorting_column); - $order = OrderSortingType::tryFrom($this->sorting_order); - $sortingCriterion = $column === null ? null : new PhotoSortingCriterion($column->toColumnSortingType(), $order); + $column = ColumnSortingPhotoType::tryFrom($this->photo_sorting_column); + $order = OrderSortingType::tryFrom($this->photo_sorting_order); + $photoSortingCriterion = $column === null ? null : new PhotoSortingCriterion($column->toColumnSortingType(), $order); + $baseAlbum->photo_sorting = $photoSortingCriterion; - $baseAlbum->sorting = $sortingCriterion; - - if ($baseAlbum instanceof ModelsAlbum) { + if ($this->is_model_album) { + /** @var ModelsAlbum $baseAlbum */ $baseAlbum->license = LicenseType::from($this->license); + + $column = ColumnSortingAlbumType::tryFrom($this->album_sorting_column); + $order = OrderSortingType::tryFrom($this->album_sorting_order); + $albumSortingCriterion = $column === null ? null : new AlbumSortingCriterion($column->toColumnSortingType(), $order); + $baseAlbum->album_sorting = $albumSortingCriterion; } $this->notify(__('lychee.CHANGE_SUCCESS')); @@ -119,6 +133,17 @@ final public function getPhotoSortingColumnsProperty(): array return ['' => '-', ...ColumnSortingPhotoType::localized()]; } + /** + * Return computed property so that it does not stay in memory. + * + * @return array column sorting + */ + final public function getAlbumSortingColumnsProperty(): array + { + // ? Dark magic: The ... will expand the array. + return ['' => '-', ...ColumnSortingAlbumType::localized()]; + } + /** * Return computed property so that it does not stay in memory. * diff --git a/app/Livewire/Components/Pages/Gallery/Album.php b/app/Livewire/Components/Pages/Gallery/Album.php index 452b25431c5..ab6b959b564 100644 --- a/app/Livewire/Components/Pages/Gallery/Album.php +++ b/app/Livewire/Components/Pages/Gallery/Album.php @@ -140,7 +140,10 @@ public function getPhotosProperty(): Collection public function getAlbumsProperty(): Collection|null { if ($this->album instanceof ModelsAlbum) { - return $this->album->children; + /** @var Collection $res */ + $res = $this->album->children()->getResults(); + + return $res; } return null; diff --git a/app/Models/Album.php b/app/Models/Album.php index bcd030ebcdb..b76f28f7b10 100644 --- a/app/Models/Album.php +++ b/app/Models/Album.php @@ -3,7 +3,10 @@ namespace App\Models; use App\Actions\Album\Delete; +use App\DTO\AlbumSortingCriterion; +use App\Enum\ColumnSortingType; use App\Enum\LicenseType; +use App\Enum\OrderSortingType; use App\Exceptions\ConfigurationKeyMissingException; use App\Exceptions\Internal\QueryBuilderException; use App\Exceptions\MediaFileOperationException; @@ -141,6 +144,8 @@ class Album extends BaseAlbum implements Node 'cover_id' => null, '_lft' => null, '_rgt' => null, + 'album_sorting_col' => null, + 'album_sorting_order' => null, ]; /** @@ -392,4 +397,22 @@ public function deleteTrack(): void $this->track_short_path = null; $this->save(); } + + protected function getAlbumSortingAttribute(): ?AlbumSortingCriterion + { + $sortingColumn = $this->attributes['album_sorting_col']; + $sortingOrder = $this->attributes['album_sorting_order']; + + return ($sortingColumn === null || $sortingOrder === null) ? + null : + new AlbumSortingCriterion( + ColumnSortingType::from($sortingColumn), + OrderSortingType::from($sortingOrder)); + } + + protected function setAlbumSortingAttribute(?AlbumSortingCriterion $sorting): void + { + $this->attributes['album_sorting_col'] = $sorting?->column->value; + $this->attributes['album_sorting_order'] = $sorting?->order->value; + } } diff --git a/app/Models/BaseAlbumImpl.php b/app/Models/BaseAlbumImpl.php index 2896d473423..85802373dde 100644 --- a/app/Models/BaseAlbumImpl.php +++ b/app/Models/BaseAlbumImpl.php @@ -99,7 +99,7 @@ * @property bool $is_nsfw * @property Collection $shared_with * @property int|null $shared_with_count - * @property PhotoSortingCriterion|null $sorting + * @property PhotoSortingCriterion|null $photo_sorting * @property string|null $sorting_col * @property string|null $sorting_order * @property Collection $access_permissions @@ -265,7 +265,7 @@ public function public_permissions(): AccessPermission|null return $this->access_permissions->first(fn (AccessPermission $p) => $p->user_id === null); } - protected function getSortingAttribute(): ?PhotoSortingCriterion + protected function getPhotoSortingAttribute(): ?PhotoSortingCriterion { $sortingColumn = $this->attributes['sorting_col']; $sortingOrder = $this->attributes['sorting_order']; @@ -277,7 +277,7 @@ protected function getSortingAttribute(): ?PhotoSortingCriterion OrderSortingType::from($sortingOrder)); } - protected function setSortingAttribute(?PhotoSortingCriterion $sorting): void + protected function setPhotoSortingAttribute(?PhotoSortingCriterion $sorting): void { $this->attributes['sorting_col'] = $sorting?->column->value; $this->attributes['sorting_order'] = $sorting?->order->value; diff --git a/app/Models/Extensions/BaseAlbum.php b/app/Models/Extensions/BaseAlbum.php index 819bd831ce8..bda00620f19 100644 --- a/app/Models/Extensions/BaseAlbum.php +++ b/app/Models/Extensions/BaseAlbum.php @@ -34,7 +34,7 @@ * @property Collection $access_permissions * @property Carbon|null $min_taken_at * @property Carbon|null $max_taken_at - * @property PhotoSortingCriterion|null $sorting + * @property PhotoSortingCriterion|null $photo_sorting * @property BaseAlbumImpl $base_class */ abstract class BaseAlbum extends Model implements AbstractAlbum, HasRandomID @@ -122,8 +122,8 @@ abstract public function photos(): Relation; * * @return PhotoSortingCriterion the attribute acc. to which **photos** inside the album shall be sorted */ - public function getEffectiveSorting(): PhotoSortingCriterion + public function getEffectivePhotoSorting(): PhotoSortingCriterion { - return $this->sorting ?? PhotoSortingCriterion::createDefault(); + return $this->photo_sorting ?? PhotoSortingCriterion::createDefault(); } } diff --git a/app/Models/TagAlbum.php b/app/Models/TagAlbum.php index 7cab4c2569a..24a75c15229 100644 --- a/app/Models/TagAlbum.php +++ b/app/Models/TagAlbum.php @@ -136,7 +136,7 @@ protected function getThumbAttribute(): ?Thumb // user return Thumb::createFromQueryable( $this->photos(), - $this->getEffectiveSorting() + $this->getEffectivePhotoSorting() ); } diff --git a/app/Relations/BaseHasManyPhotos.php b/app/Relations/BaseHasManyPhotos.php index 847bd279103..0e8bb112810 100644 --- a/app/Relations/BaseHasManyPhotos.php +++ b/app/Relations/BaseHasManyPhotos.php @@ -126,7 +126,7 @@ public function getResults(): Collection /** @var BaseAlbum */ $parent = $this->parent; /** @var SortingCriterion $sorting */ - $sorting = $parent->getEffectiveSorting(); + $sorting = $parent->getEffectivePhotoSorting(); return (new SortingDecorator($this->getRelationQuery())) ->orderPhotosBy($sorting->column, $sorting->order) diff --git a/app/Relations/HasManyChildAlbums.php b/app/Relations/HasManyChildAlbums.php index b794974e8a7..5b103625d9e 100644 --- a/app/Relations/HasManyChildAlbums.php +++ b/app/Relations/HasManyChildAlbums.php @@ -25,7 +25,7 @@ public function __construct(Album $owningAlbum) // The parent constructor calls `addConstraints` and thus our own // attributes must be initialized by then $this->albumQueryPolicy = resolve(AlbumQueryPolicy::class); - $this->sorting = AlbumSortingCriterion::createDefault(); + $this->sorting = $owningAlbum->album_sorting ?? AlbumSortingCriterion::createDefault(); parent::__construct( $owningAlbum->newQuery(), $owningAlbum, diff --git a/app/Relations/HasManyChildPhotos.php b/app/Relations/HasManyChildPhotos.php index 9604141a56f..264456ea478 100644 --- a/app/Relations/HasManyChildPhotos.php +++ b/app/Relations/HasManyChildPhotos.php @@ -90,7 +90,7 @@ public function getResults(): Collection return $this->related->newCollection(); } - $albumSorting = $this->getParent()->getEffectiveSorting(); + $albumSorting = $this->getParent()->getEffectivePhotoSorting(); return (new SortingDecorator($this->query)) ->orderPhotosBy( @@ -124,7 +124,7 @@ public function match(array $models, Collection $results, $relation): array if (isset($dictionary[$key = $this->getDictionaryKey($model->getAttribute($this->localKey))])) { /** @var Collection $childrenOfModel */ $childrenOfModel = $this->getRelationValue($dictionary, $key, 'many'); - $sorting = $model->getEffectiveSorting(); + $sorting = $model->getEffectivePhotoSorting(); $childrenOfModel = $childrenOfModel ->sortBy( $sorting->column->value, diff --git a/app/Relations/HasManyPhotosByTag.php b/app/Relations/HasManyPhotosByTag.php index d4d88c4b4aa..c60985a1c6a 100644 --- a/app/Relations/HasManyPhotosByTag.php +++ b/app/Relations/HasManyPhotosByTag.php @@ -88,7 +88,7 @@ public function match(array $albums, Collection $photos, $relation): array } /** @var TagAlbum $album */ $album = $albums[0]; - $sorting = $album->getEffectiveSorting(); + $sorting = $album->getEffectivePhotoSorting(); $photos = $photos->sortBy( $sorting->column->value, diff --git a/app/Relations/HasManyPhotosRecursively.php b/app/Relations/HasManyPhotosRecursively.php index d98c8631486..cfdb5330940 100644 --- a/app/Relations/HasManyPhotosRecursively.php +++ b/app/Relations/HasManyPhotosRecursively.php @@ -114,7 +114,7 @@ public function match(array $albums, Collection $photos, $relation): array if (!Gate::check(AlbumPolicy::CAN_ACCESS, $album)) { $album->setRelation($relation, $this->related->newCollection()); } else { - $sorting = $album->getEffectiveSorting(); + $sorting = $album->getEffectivePhotoSorting(); $photos = $photos->sortBy( $sorting->column->value, in_array($sorting->column, SortingDecorator::POSTPONE_COLUMNS, true) ? SORT_NATURAL | SORT_FLAG_CASE : SORT_REGULAR, diff --git a/database/migrations/2023_12_28_165358_add_subalbum_sorting_per_album.php b/database/migrations/2023_12_28_165358_add_subalbum_sorting_per_album.php new file mode 100644 index 00000000000..f3acadcdff4 --- /dev/null +++ b/database/migrations/2023_12_28_165358_add_subalbum_sorting_per_album.php @@ -0,0 +1,37 @@ +string(self::SORT_COLUMN_NAME, 30)->nullable()->default(null)->after('license'); + }); + Schema::table(self::ALBUM, function ($table) { + $table->string(self::SORT_COLUMN_ORDER, 10)->nullable()->default(null)->after(self::SORT_COLUMN_NAME); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table(self::ALBUM, function (Blueprint $table) { + $table->dropColumn(self::SORT_COLUMN_NAME); + }); + Schema::table(self::ALBUM, function (Blueprint $table) { + $table->dropColumn(self::SORT_COLUMN_ORDER); + }); + } +}; diff --git a/lang/cz/lychee.php b/lang/cz/lychee.php index fd81a2c0254..3638127ded3 100644 --- a/lang/cz/lychee.php +++ b/lang/cz/lychee.php @@ -206,6 +206,8 @@ 'ALBUM_RESERVED' => 'Všechna práva vyhrazena', 'ALBUM_SET_ORDER' => 'Set Order', 'ALBUM_ORDERING' => 'Order by', + 'ALBUM_PHOTO_ORDERING' => 'Order photos by', + 'ALBUM_CHILDREN_ORDERING' => 'Order albums by', 'ALBUM_OWNER' => 'Owner', 'PHOTO_ABOUT' => 'O fotografii', diff --git a/lang/de/lychee.php b/lang/de/lychee.php index 056a06a5ee6..ceeb1d54503 100644 --- a/lang/de/lychee.php +++ b/lang/de/lychee.php @@ -206,6 +206,8 @@ 'ALBUM_RESERVED' => 'Alle Rechte vorbehalten', 'ALBUM_SET_ORDER' => 'Reihenfolge festlegen', 'ALBUM_ORDERING' => 'Sortieren nach', + 'ALBUM_PHOTO_ORDERING' => 'Fotos sortieren nach', + 'ALBUM_CHILDREN_ORDERING' => 'Alben sortieren nach', 'ALBUM_OWNER' => 'Besitzer', 'PHOTO_ABOUT' => 'Über', diff --git a/lang/el/lychee.php b/lang/el/lychee.php index f76cb8461af..ca01b816b24 100644 --- a/lang/el/lychee.php +++ b/lang/el/lychee.php @@ -206,6 +206,8 @@ 'ALBUM_RESERVED' => 'Με επιφύλαξη παντός δικαιώματος', 'ALBUM_SET_ORDER' => 'Set Order', 'ALBUM_ORDERING' => 'Order by', + 'ALBUM_PHOTO_ORDERING' => 'Order photos by', + 'ALBUM_CHILDREN_ORDERING' => 'Order albums by', 'ALBUM_OWNER' => 'Owner', 'PHOTO_ABOUT' => 'Περί', diff --git a/lang/en/lychee.php b/lang/en/lychee.php index fd6a1c8eb08..3b93d278f05 100644 --- a/lang/en/lychee.php +++ b/lang/en/lychee.php @@ -206,6 +206,8 @@ 'ALBUM_RESERVED' => 'All Rights Reserved', 'ALBUM_SET_ORDER' => 'Set Order', 'ALBUM_ORDERING' => 'Order by', + 'ALBUM_PHOTO_ORDERING' => 'Order photos by', + 'ALBUM_CHILDREN_ORDERING' => 'Order albums by', 'ALBUM_OWNER' => 'Owner', 'PHOTO_ABOUT' => 'About', diff --git a/lang/es/lychee.php b/lang/es/lychee.php index beb23e413c6..18ea4c14381 100644 --- a/lang/es/lychee.php +++ b/lang/es/lychee.php @@ -206,6 +206,8 @@ 'ALBUM_RESERVED' => 'Todos los derechos reservados', 'ALBUM_SET_ORDER' => 'Establecer orden', 'ALBUM_ORDERING' => 'Ordenar por', + 'ALBUM_PHOTO_ORDERING' => 'Order photos by', + 'ALBUM_CHILDREN_ORDERING' => 'Order albums by', 'ALBUM_OWNER' => 'Dueño', 'PHOTO_ABOUT' => 'Acerca de', diff --git a/lang/fr/lychee.php b/lang/fr/lychee.php index bddd4ada718..051e11f51c8 100644 --- a/lang/fr/lychee.php +++ b/lang/fr/lychee.php @@ -206,6 +206,8 @@ 'ALBUM_RESERVED' => 'Tous droits réservés', 'ALBUM_SET_ORDER' => 'Changer l’ordre', 'ALBUM_ORDERING' => 'Trier par', + 'ALBUM_PHOTO_ORDERING' => 'Order photos by', + 'ALBUM_CHILDREN_ORDERING' => 'Order albums by', 'ALBUM_OWNER' => 'Propriétaire', 'PHOTO_ABOUT' => 'À propos', diff --git a/lang/hu/lychee.php b/lang/hu/lychee.php index ddf620e165d..caed71aeb61 100644 --- a/lang/hu/lychee.php +++ b/lang/hu/lychee.php @@ -204,6 +204,8 @@ 'ALBUM_RESERVED' => 'Minden jog fenntartva', 'ALBUM_SET_ORDER' => 'Sorrend beállítása', 'ALBUM_ORDERING' => 'Sorrend:', + 'ALBUM_PHOTO_ORDERING' => 'Order photos by', + 'ALBUM_CHILDREN_ORDERING' => 'Order albums by', 'ALBUM_OWNER' => 'Tulajdonos', 'PHOTO_ABOUT' => 'Névjegy', diff --git a/lang/it/lychee.php b/lang/it/lychee.php index e10c01c55dc..ca4604bdf59 100644 --- a/lang/it/lychee.php +++ b/lang/it/lychee.php @@ -206,6 +206,8 @@ 'ALBUM_RESERVED' => 'Tutti i Diritti Riservati', 'ALBUM_SET_ORDER' => 'Set Order', 'ALBUM_ORDERING' => 'Order by', + 'ALBUM_PHOTO_ORDERING' => 'Order photos by', + 'ALBUM_CHILDREN_ORDERING' => 'Order albums by', 'ALBUM_OWNER' => 'Owner', 'PHOTO_ABOUT' => 'Informazioni', diff --git a/lang/nl/lychee.php b/lang/nl/lychee.php index 7fa9de15753..bd7c2320519 100644 --- a/lang/nl/lychee.php +++ b/lang/nl/lychee.php @@ -206,6 +206,8 @@ 'ALBUM_RESERVED' => 'All Rights Reserved', 'ALBUM_SET_ORDER' => 'Set Order', 'ALBUM_ORDERING' => 'Order by', + 'ALBUM_PHOTO_ORDERING' => 'Order photos by', + 'ALBUM_CHILDREN_ORDERING' => 'Order albums by', 'ALBUM_OWNER' => 'Owner', 'PHOTO_ABOUT' => 'Over', diff --git a/lang/no/lychee.php b/lang/no/lychee.php index f56dc79e777..34183b2993f 100644 --- a/lang/no/lychee.php +++ b/lang/no/lychee.php @@ -206,6 +206,8 @@ 'ALBUM_RESERVED' => 'Alle Rettigheter Forbeholdt', 'ALBUM_SET_ORDER' => 'Set Order', 'ALBUM_ORDERING' => 'Order by', + 'ALBUM_PHOTO_ORDERING' => 'Order photos by', + 'ALBUM_CHILDREN_ORDERING' => 'Order albums by', 'ALBUM_OWNER' => 'Owner', 'PHOTO_ABOUT' => 'Om', diff --git a/lang/pl/lychee.php b/lang/pl/lychee.php index 44da0b566a8..7ca287efb32 100644 --- a/lang/pl/lychee.php +++ b/lang/pl/lychee.php @@ -206,6 +206,8 @@ 'ALBUM_RESERVED' => 'Wszelkie prawa zastrzeżone', 'ALBUM_SET_ORDER' => 'Zapisz', 'ALBUM_ORDERING' => 'Sortowanie', + 'ALBUM_PHOTO_ORDERING' => 'Order photos by', + 'ALBUM_CHILDREN_ORDERING' => 'Order albums by', 'ALBUM_OWNER' => 'Owner', 'PHOTO_ABOUT' => 'Informacje o zdjęciu', diff --git a/lang/pt/lychee.php b/lang/pt/lychee.php index c1b56ff5c97..e4c3d3dd3a8 100644 --- a/lang/pt/lychee.php +++ b/lang/pt/lychee.php @@ -206,6 +206,8 @@ 'ALBUM_RESERVED' => 'Todos os Direitos Reservados', 'ALBUM_SET_ORDER' => 'Escolher Ordem', 'ALBUM_ORDERING' => 'Ordenar por', + 'ALBUM_PHOTO_ORDERING' => 'Order photos by', + 'ALBUM_CHILDREN_ORDERING' => 'Order albums by', 'ALBUM_OWNER' => 'Owner', 'PHOTO_ABOUT' => 'Acerca de', diff --git a/lang/ru/lychee.php b/lang/ru/lychee.php index f74e5f52844..eae6e38c783 100644 --- a/lang/ru/lychee.php +++ b/lang/ru/lychee.php @@ -206,6 +206,8 @@ 'ALBUM_RESERVED' => 'Все права защищены', 'ALBUM_SET_ORDER' => 'Set Order', 'ALBUM_ORDERING' => 'Order by', + 'ALBUM_PHOTO_ORDERING' => 'Order photos by', + 'ALBUM_CHILDREN_ORDERING' => 'Order albums by', 'ALBUM_OWNER' => 'Owner', 'PHOTO_ABOUT' => 'Описание', diff --git a/lang/sk/lychee.php b/lang/sk/lychee.php index 76b1d638875..24fac0f94d8 100644 --- a/lang/sk/lychee.php +++ b/lang/sk/lychee.php @@ -206,6 +206,8 @@ 'ALBUM_RESERVED' => 'Všetky práva vyhradené', 'ALBUM_SET_ORDER' => 'Set Order', 'ALBUM_ORDERING' => 'Order by', + 'ALBUM_PHOTO_ORDERING' => 'Order photos by', + 'ALBUM_CHILDREN_ORDERING' => 'Order albums by', 'ALBUM_OWNER' => 'Owner', 'PHOTO_ABOUT' => 'O obrázku', diff --git a/lang/sv/lychee.php b/lang/sv/lychee.php index 65301e9864f..0e50b614ddb 100644 --- a/lang/sv/lychee.php +++ b/lang/sv/lychee.php @@ -206,6 +206,8 @@ 'ALBUM_RESERVED' => 'All Rights Reserved', 'ALBUM_SET_ORDER' => 'Set Order', 'ALBUM_ORDERING' => 'Order by', + 'ALBUM_PHOTO_ORDERING' => 'Order photos by', + 'ALBUM_CHILDREN_ORDERING' => 'Order albums by', 'ALBUM_OWNER' => 'Owner', 'PHOTO_ABOUT' => 'Om', diff --git a/lang/vi/lychee.php b/lang/vi/lychee.php index 6eaf3a2edbe..ad6a7e4f5a2 100644 --- a/lang/vi/lychee.php +++ b/lang/vi/lychee.php @@ -206,6 +206,8 @@ 'ALBUM_RESERVED' => 'Toàn Quyền Bảo Lưu', 'ALBUM_SET_ORDER' => 'Chỉnh thứ tự', 'ALBUM_ORDERING' => 'Sắp xếp thứ tự hình ảnh', + 'ALBUM_PHOTO_ORDERING' => 'Order photos by', + 'ALBUM_CHILDREN_ORDERING' => 'Order albums by', 'ALBUM_OWNER' => 'Chủ sở hữu', 'PHOTO_ABOUT' => 'Giới thiệu', diff --git a/lang/zh_CN/lychee.php b/lang/zh_CN/lychee.php index 49ab68198e0..a765472e5c5 100644 --- a/lang/zh_CN/lychee.php +++ b/lang/zh_CN/lychee.php @@ -206,6 +206,8 @@ 'ALBUM_RESERVED' => '所有权利保留', 'ALBUM_SET_ORDER' => '设置排序', 'ALBUM_ORDERING' => '排序依据', + 'ALBUM_PHOTO_ORDERING' => 'Order photos by', + 'ALBUM_CHILDREN_ORDERING' => 'Order albums by', 'ALBUM_OWNER' => 'Owner', 'PHOTO_ABOUT' => '关于', diff --git a/lang/zh_TW/lychee.php b/lang/zh_TW/lychee.php index ee199722719..1911ce03037 100644 --- a/lang/zh_TW/lychee.php +++ b/lang/zh_TW/lychee.php @@ -206,6 +206,8 @@ 'ALBUM_RESERVED' => '版權所有', 'ALBUM_SET_ORDER' => '設定排序方式', 'ALBUM_ORDERING' => '排序方式', + 'ALBUM_PHOTO_ORDERING' => 'Order photos by', + 'ALBUM_CHILDREN_ORDERING' => 'Order albums by', 'ALBUM_OWNER' => 'Owner', 'PHOTO_ABOUT' => '關於', diff --git a/resources/views/livewire/forms/album/properties.blade.php b/resources/views/livewire/forms/album/properties.blade.php index 36c48f62eb8..8d960afbc10 100644 --- a/resources/views/livewire/forms/album/properties.blade.php +++ b/resources/views/livewire/forms/album/properties.blade.php @@ -11,14 +11,21 @@

    - {{ __('lychee.ALBUM_ORDERING') }} - - + {{ __('lychee.ALBUM_PHOTO_ORDERING') }} + + +
    + @if($is_model_album) +
    + {{ __('lychee.ALBUM_CHILDREN_ORDERING') }} + +
    {{ __('lychee.ALBUM_SET_LICENSE') }}
    + @endif {{ __('lychee.SAVE') }} diff --git a/tests/Feature/NotificationTest.php b/tests/Feature/NotificationTest.php index d538201ec9a..aa3a66783ba 100644 --- a/tests/Feature/NotificationTest.php +++ b/tests/Feature/NotificationTest.php @@ -81,7 +81,7 @@ public function testSetupUserEmail(): void { // add email to admin Auth::loginUsingId(1); - $this->users_tests->update_email('test@test.com'); + $this->users_tests->update_email('test@gmail.com'); Auth::logout(); Session::flush(); From 6c36ef9d808e9aef47fd7aad615b8ee30c69b844 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Mon, 1 Jan 2024 17:09:16 +0100 Subject: [PATCH 090/209] better diagnostics (#2142) --- .../Pipes/Checks/AppUrlMatchCheck.php | 115 ++++++++++++++++-- 1 file changed, 108 insertions(+), 7 deletions(-) diff --git a/app/Actions/Diagnostics/Pipes/Checks/AppUrlMatchCheck.php b/app/Actions/Diagnostics/Pipes/Checks/AppUrlMatchCheck.php index d6af3b02e11..8566a616e16 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/AppUrlMatchCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/AppUrlMatchCheck.php @@ -3,11 +3,14 @@ namespace App\Actions\Diagnostics\Pipes\Checks; use App\Contracts\DiagnosticPipe; +use Safe\Exceptions\PcreException; +use function Safe\preg_match; class AppUrlMatchCheck implements DiagnosticPipe { /** * We check: + * 1. if APP_URL is even set. * 1. that APP_URL correctly match the url of the request. * 2. That APP_URL correctly match the url of the request. * 3. That LYCHEE_UPLOADS_URL is not provided by null @@ -17,13 +20,29 @@ class AppUrlMatchCheck implements DiagnosticPipe public function handle(array &$data, \Closure $next): array { $config_url = config('app.url'); - // https:// is 8 characters. - if (strpos($config_url, '/', 8) !== false) { - $data[] = 'Warning: APP_URL contains a sub-path. This may impact your WebAuthn authentication.'; + if (config('app.url') === 'http://localhost') { + $data[] = 'Warning: APP_URL is still set to default, this will break access to all your images and assets if you are using Lychee behind a sub-domain.'; } - if ($config_url !== request()->httpHost() && $config_url !== request()->schemeAndHttpHost()) { - $data[] = 'Error: APP_URL does not match the current url. This will break WebAuthn authentication.'; + $bad = $this->splitUrl($config_url)[3]; + + $censored_bad = $this->censor($bad); + $censored_app_url = $this->getCensorAppUrl(); + $censored_current = $this->getCensorCurrentUrl(); + + if ($bad !== '') { + $data[] = sprintf( + 'Warning: APP_URL (%s) contains a sub-path (%s). This may impact your WebAuthn authentication.', + $censored_app_url, + $censored_bad); + } + + if (!$this->checkUrlMatchCurrentHost()) { + $data[] = sprintf( + 'Error: APP_URL (%s) does not match the current url (%s). This will break WebAuthn authentication.', + $censored_app_url, + $censored_current, + ); } $config_url_imgage = config('filesystems.disks.images.url'); @@ -31,10 +50,92 @@ public function handle(array &$data, \Closure $next): array $data[] = 'Error: LYCHEE_UPLOADS_URL is set and empty. This will prevent images to be displayed. Remove the line from your .env'; } - if (($config_url . '/uploads/') === $config_url_imgage && $config_url !== request()->schemeAndHttpHost() && $config_url !== request()->httpHost()) { - $data[] = 'Error: APP_URL does not match the current url. This will prevent images to be properly displayed.'; + if (($config_url . '/uploads/') === $config_url_imgage && !$this->checkUrlMatchCurrentHost()) { + $data[] = sprintf( + 'Error: APP_URL (%s) does not match the current url (%s). This will prevent images to be properly displayed.', + $censored_app_url, + $censored_current); } return $next($data); } + + /** + * Censore a word by replacing half of its character by stars. + * + * @param string $string + * + * @return string + */ + private function censor(string $string): string + { + $strLength = strlen($string); + if ($strLength === 0) { + return ''; + } + + $length = $strLength - (int) floor($strLength / 2); + $start = (int) floor($length / 2); + $replacement = str_repeat('*', $length); + + return substr_replace($string, $replacement, $start, $length); + } + + /** + * Split url into 3 parts: http(s), host, path. + * + * @param string $url + * + * @return array + * + * @throws PcreException + */ + private function splitUrl(string $url): array + { + // https://regex101.com/r/u2YAsS/1 + $pattern = '/((?:http|https)\:\/\/)?([^\/]*)(.*)?/'; + $matches = []; + preg_match($pattern, $url, $matches); + + return $matches; + } + + /** + * Get the censored version of the current URL. + * + * @return string + */ + private function getCensorCurrentUrl(): string + { + $current_url = request()->schemeAndHttpHost(); + [$full, $prefix, $good, $bad] = $this->splitUrl($current_url); + + return $prefix . $this->censor($good) . $this->censor($bad); + } + + /** + * Retrieve censored version of app.url (APP_URL). + * + * @return string + */ + private function getCensorAppUrl(): string + { + $config_url = config('app.url'); + [$full, $prefix, $good, $bad] = $this->splitUrl($config_url); + + return $prefix . $this->censor($good) . $this->censor($bad); + } + + /** + * Check if current Url matches APP_URL. + * We need to check against httpHost and with scheme as APP_URL does not necessarily contain the scheme. + * + * @return bool true if Match + */ + private function checkUrlMatchCurrentHost(): bool + { + $config_url = config('app.url'); + + return in_array($config_url, [request()->httpHost(), request()->schemeAndHttpHost()], true); + } } From f29efc53c4aaf7eb7933d0fdacc5b7ebcdb6860c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Mon, 1 Jan 2024 17:30:45 +0100 Subject: [PATCH 091/209] fix (#2143) --- lang/ru/lychee.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lang/ru/lychee.php b/lang/ru/lychee.php index eae6e38c783..50b736f9319 100644 --- a/lang/ru/lychee.php +++ b/lang/ru/lychee.php @@ -474,7 +474,7 @@ 'UPLOAD_IMPORT_CANCELLED' => 'Import cancelled', 'ABOUT_SUBTITLE' => 'Self-hosted photo-management done right', - 'ABOUT_DESCRIPTION' => "Lychee - это бесплатный фотоменеджер для Вашего сервера или хостинга. Установка занимает считанные секунды. Загружайте, редактируйте и делитесь фотографиями как в любимом приложении! Lychee обеспечит Вас всем необходимым, включая безопасность хранения Ваших фотографий! На русский язык перевёл Евгений Лебедев. Пожалуйста, дайте мне знать, если заметите неточности.", + 'ABOUT_DESCRIPTION' => "Lychee - это бесплатный фотоменеджер для Вашего сервера или хостинга. Установка занимает считанные секунды. Загружайте, редактируйте и делитесь фотографиями как в любимом приложении! Lychee обеспечит Вас всем необходимым, включая безопасность хранения Ваших фотографий! На русский язык перевёл Евгений Лебедев.", 'FOOTER_COPYRIGHT' => 'All images on this website are subject to copyright by %1$s © %2$s', 'HOSTED_WITH_LYCHEE' => 'Hosted with Lychee', From 4cc2b4aeacc9811bcaa2f29fbf99baadc64494ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Thu, 4 Jan 2024 09:55:46 +0100 Subject: [PATCH 092/209] Fix Russian again (#2157) --- lang/ru/lychee.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lang/ru/lychee.php b/lang/ru/lychee.php index 50b736f9319..09a3c9cacd6 100644 --- a/lang/ru/lychee.php +++ b/lang/ru/lychee.php @@ -474,7 +474,7 @@ 'UPLOAD_IMPORT_CANCELLED' => 'Import cancelled', 'ABOUT_SUBTITLE' => 'Self-hosted photo-management done right', - 'ABOUT_DESCRIPTION' => "Lychee - это бесплатный фотоменеджер для Вашего сервера или хостинга. Установка занимает считанные секунды. Загружайте, редактируйте и делитесь фотографиями как в любимом приложении! Lychee обеспечит Вас всем необходимым, включая безопасность хранения Ваших фотографий! На русский язык перевёл Евгений Лебедев.", + 'ABOUT_DESCRIPTION' => "Lychee - это бесплатный фотоменеджер для Вашего сервера или хостинга. Установка занимает считанные секунды. Загружайте, редактируйте и делитесь фотографиями как в любимом приложении! Lychee обеспечит Вас всем необходимым, включая безопасность хранения Ваших фотографий! На русский язык перевёл Евгений Лебедев.", 'FOOTER_COPYRIGHT' => 'All images on this website are subject to copyright by %1$s © %2$s', 'HOSTED_WITH_LYCHEE' => 'Hosted with Lychee', From a9683522e8aa2bdccab9813a8c2e1059d757d616 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Thu, 4 Jan 2024 09:55:56 +0100 Subject: [PATCH 093/209] Fix symbolic urls (#2159) --- config/filesystems.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/filesystems.php b/config/filesystems.php index b857a508b6b..3e2dfb87d0f 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -96,7 +96,7 @@ 'symbolic' => [ 'driver' => 'local', 'root' => env('LYCHEE_SYM', public_path('sym')), - 'url' => env('LYCHEE_SYM_URL', 'sym'), + 'url' => rtrim(env('LYCHEE_SYM_URL', rtrim(env('APP_URL', 'http://localhost'), '/') . '/sym'), '/'), 'visibility' => 'public', ], From 0385d98d0035f3e92feadca9bb71b79a3da9479d Mon Sep 17 00:00:00 2001 From: Tino Hager Date: Thu, 4 Jan 2024 09:57:25 +0100 Subject: [PATCH 094/209] Update Readme, add theme repository, optimize ImageMagick (#2161) --- README.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2e3c2a57bbb..55a17ac89b1 100644 --- a/README.md +++ b/README.md @@ -76,14 +76,20 @@ In order to use the Dropbox import from your server, you need a valid drop-ins a Lychee supports [Twitter Cards](https://developer.twitter.com/en/docs/twitter-for-websites/cards/overview/abouts-cards) and [Open Graph](http://opengraphprotocol.org) for shared images (not albums). In order to use Twitter Cards you need to request an approval for your domain. Simply share an image with Lychee, copy its link and paste it in [Twitter's Card Validator](https://cards-dev.twitter.com/validator). -### Imagick +### ImageMagick -Lychee uses [Imagick](https://www.imagemagick.org) when installed on your server. In this case you will benefit from a faster processing of your uploads, better looking thumbnails and intermediate sized images for small screen devices. You can disable the usage of [Imagick](https://www.imagemagick.org) in the [settings][1]. +Lychee uses [ImageMagick](https://www.imagemagick.org) when installed on your server. In this case you will benefit from a faster processing of your uploads, better looking thumbnails and intermediate sized images for small screen devices. You can disable the usage of [ImageMagick](https://www.imagemagick.org) in the [settings][1]. ### New Photos Email Notification In order to use the new photos email notification you will need to have configured the **MAIL_** variables in your .env to your mail provider & [setup cron](https://laravel.com/docs/scheduling#running-the-scheduler). Once that is complete you then toggle **Send new photos notification emails** in the [settings][1]. Your users will be able to opt-in to the email notifications by entering their email address in the **Notifications** setting in the sidebar. Photo notifications will be grouped and sent out once a week to the site admin, album owner & anyone who the album is shared with, if their email has been added. The admin or user who added the photo to an album, will not receive a email notification for the photos they added. +## Customizing + +You can customize lychee with your own css code. Here you can find a list of available themes. + +- [lychee-flat-white-theme](https://github.com/Renset/lychee-flat-white-theme) + ## Troubleshooting Take a look at the [Documentation](https://lycheeorg.github.io/docs/), particularly the [FAQ](https://lycheeorg.github.io/docs/faq_troubleshooting.html) if you have problems. Discovered a bug? Please create an issue [here](https://github.com/LycheeOrg/Lychee/issues) on GitHub! You can also contact us directly on [gitter (login with your github account). »](https://gitter.im/LycheeOrg/Lobby) From c6669270e2a72e7d0f04f045baf5f3358b57fcbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Fri, 5 Jan 2024 13:41:48 +0100 Subject: [PATCH 095/209] Fix custom.js not being loaded (#2170) --- resources/views/components/layouts/app.blade.php | 7 ------- resources/views/components/meta.blade.php | 1 + 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/resources/views/components/layouts/app.blade.php b/resources/views/components/layouts/app.blade.php index 26ef86ef5f0..040d6e5ea6b 100644 --- a/resources/views/components/layouts/app.blade.php +++ b/resources/views/components/layouts/app.blade.php @@ -5,13 +5,6 @@ {{-- @include('components.meta.index') --}} - - {{-- --}} - {{-- --}} - {{-- --}} - {{-- --}} - {{-- --}} - {{-- @livewireStyles(['nonce' => csp_nonce('script')]) --}} {{-- @livewireScripts(['nonce' => csp_nonce('script')]) --}} @vite(['resources/css/app.css','resources/js/app.ts']) diff --git a/resources/views/components/meta.blade.php b/resources/views/components/meta.blade.php index e700181018f..f67fba91d3f 100644 --- a/resources/views/components/meta.blade.php +++ b/resources/views/components/meta.blade.php @@ -1,4 +1,5 @@ + From 96c785a7bf0890f46541db999df1b5b65fafe0c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Fri, 5 Jan 2024 13:45:18 +0100 Subject: [PATCH 096/209] Fix uploading large number of images fails with 429 (#2169) --- config/livewire.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/config/livewire.php b/config/livewire.php index dc056de88f7..be049beb49b 100644 --- a/config/livewire.php +++ b/config/livewire.php @@ -63,16 +63,16 @@ */ 'temporary_file_upload' => [ - 'disk' => null, // Example: 'local', 's3' | Default: 'default' - 'rules' => null, // Example: ['file', 'mimes:png,jpg'] | Default: ['required', 'file', 'max:12288'] (12MB) - 'directory' => null, // Example: 'tmp' | Default: 'livewire-tmp' - 'middleware' => null, // Example: 'throttle:5,1' | Default: 'throttle:60,1' - 'preview_mimes' => [ // Supported file types for temporary pre-signed file URLs... + 'disk' => null, // Example: 'local', 's3' | Default: 'default' + 'rules' => null, // Example: ['file', 'mimes:png,jpg'] | Default: ['required', 'file', 'max:12288'] (12MB) + 'directory' => null, // Example: 'tmp' | Default: 'livewire-tmp' + 'middleware' => 'throttle:10000,1', // Example: 'throttle:5,1' | Default: 'throttle:60,1' + 'preview_mimes' => [ // Supported file types for temporary pre-signed file URLs... 'png', 'gif', 'bmp', 'svg', 'wav', 'mp4', 'mov', 'avi', 'wmv', 'mp3', 'm4a', 'jpg', 'jpeg', 'mpga', 'webp', 'wma', ], - 'max_upload_time' => 5, // Max duration (in minutes) before an upload is invalidated... + 'max_upload_time' => 60, // Max duration (in minutes) before an upload is invalidated... ], /* From ee5221e9288a0d997ad6da5ecb66c6774752b244 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sun, 7 Jan 2024 11:34:02 +0100 Subject: [PATCH 097/209] Remove text-neutral for easier configuration of themes (#2171) --- lang/en/lychee.php | 2 +- resources/css/app.css | 8 +++-- .../views/components/forms/dropdown.blade.php | 2 +- .../gallery/album/details.blade.php | 8 ++--- .../components/gallery/album/hero.blade.php | 4 +-- .../gallery/album/menu/menu.blade.php | 2 +- .../gallery/album/thumbs/album.blade.php | 2 +- .../gallery/album/thumbs/photo.blade.php | 2 +- .../gallery/photo/properties.blade.php | 4 +-- .../livewire/forms/add/create-tag.blade.php | 2 +- .../views/livewire/forms/add/create.blade.php | 2 +- .../forms/add/import-from-server.blade.php | 4 +-- .../add/import-from-server.old.blade.php | 10 +++--- .../forms/add/import-from-url.blade.php | 2 +- .../forms/album/delete-panel.blade.php | 2 +- .../livewire/forms/album/move-panel.blade.php | 2 +- .../livewire/forms/album/properties.blade.php | 2 +- .../livewire/forms/album/rename.blade.php | 2 +- .../livewire/forms/album/share-with.blade.php | 34 +++++++++---------- .../livewire/forms/album/transfer.blade.php | 2 +- .../livewire/forms/album/visibility.blade.php | 10 +++--- .../views/livewire/forms/default.blade.php | 2 +- .../livewire/forms/photo/rename.blade.php | 2 +- .../views/livewire/forms/photo/tag.blade.php | 4 +-- .../forms/profile/get-api-token.blade.php | 2 +- .../views/livewire/modals/about.blade.php | 2 +- .../views/livewire/modals/login.blade.php | 2 +- .../views/livewire/pages/settings.blade.php | 2 +- .../views/livewire/pages/sharing.blade.php | 14 ++++---- tailwind.config.js | 2 ++ 30 files changed, 72 insertions(+), 68 deletions(-) diff --git a/lang/en/lychee.php b/lang/en/lychee.php index 3b93d278f05..79c59c8986d 100644 --- a/lang/en/lychee.php +++ b/lang/en/lychee.php @@ -358,7 +358,7 @@ 'SORT_CHANGE' => 'Change Sorting', 'DROPBOX_TITLE' => 'Set Dropbox Key', - 'DROPBOX_TEXT' => "In order to import photos from your Dropbox, you need a valid drop-ins app key from their website. Generate yourself a personal key and enter it below:", + 'DROPBOX_TEXT' => "In order to import photos from your Dropbox, you need a valid drop-ins app key from their website. Generate yourself a personal key and enter it below:", 'LANG_TEXT' => 'Change Lychee language for:', 'LANG_TITLE' => 'Change Language', diff --git a/resources/css/app.css b/resources/css/app.css index e19ac2f7cc6..cc7616aeec6 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -16,9 +16,11 @@ --primary-700: #0369a1; --text-main-0: #ffffff; - --text-main-100: #d9d9d9; - --text-main-200: #c0c0c0; - --text-main-400: #a0a0a0; + --text-main-100: #e5e5e5; + --text-main-200: #d4d4d4; + --text-main-300: #c0c0c0; + --text-main-400: #a3a3a3; + --text-main-800: #262626; --text-hover: #ffffff; --bg-50: #e0e0e0; diff --git a/resources/views/components/forms/dropdown.blade.php b/resources/views/components/forms/dropdown.blade.php index 49e9488111d..e808657e851 100644 --- a/resources/views/components/forms/dropdown.blade.php +++ b/resources/views/components/forms/dropdown.blade.php @@ -4,7 +4,7 @@ after:pointer-events-none {{ $class }}">
    diff --git a/resources/views/livewire/modals/about.blade.php b/resources/views/livewire/modals/about.blade.php index ba35095b23c..6b9a4d7ef29 100644 --- a/resources/views/livewire/modals/about.blade.php +++ b/resources/views/livewire/modals/about.blade.php @@ -1,4 +1,4 @@ -
    +

    Lychee {{ $version }} diff --git a/resources/views/livewire/modals/login.blade.php b/resources/views/livewire/modals/login.blade.php index c679d55a23f..4efd26e7159 100644 --- a/resources/views/livewire/modals/login.blade.php +++ b/resources/views/livewire/modals/login.blade.php @@ -18,7 +18,7 @@ />

    -

    +

    Lychee @if($version !== null) {{ $version }} @endif @if($is_new_release_available) diff --git a/resources/views/livewire/pages/settings.blade.php b/resources/views/livewire/pages/settings.blade.php index ff0eb8aa76b..89324f71c1a 100644 --- a/resources/views/livewire/pages/settings.blade.php +++ b/resources/views/livewire/pages/settings.blade.php @@ -12,7 +12,7 @@

    - +
    @@ -33,7 +33,7 @@ class="mt-1 p-4 peer-hover:block hidden top-4 right-4 absolute border-neutral-60
    -

    +

    {{ __('lychee.ALBUM_TITLE') }} {{ __('lychee.USERNAME') }} diff --git a/tailwind.config.js b/tailwind.config.js index f657934a98f..cb1ec2e3b8c 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -39,7 +39,9 @@ module.exports = { 0: 'var(--text-main-0)', 100: 'var(--text-main-100)', 200: 'var(--text-main-200)', + 300: 'var(--text-main-300)', 400: 'var(--text-main-400)', + 800: 'var(--text-main-800)', }, 'text-hover': 'var(--text-hover)', bg: { From e27d690f986652d4237192add41b8d4b4912c012 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sun, 7 Jan 2024 13:28:24 +0100 Subject: [PATCH 098/209] Add compact view for albums (#2153) * add compact view for albums * Fix fuck_up... * mistakes were made --- .../Components/Pages/Gallery/Album.php | 4 ++++ app/Models/Configs.php | 3 +++ ...2023_12_18_191723_config_public_search.php | 2 +- ..._232500_config_pagination_search_limit.php | 2 +- ...3_12_19_115547_search_characters_limit.php | 2 +- ...80854_add_setting_height_width_gallery.php | 2 +- ...5454_add_setting_display_thumb_overlay.php | 2 +- ..._03_154055_add_album_no_header_setting.php | 22 +++++++++++++++++++ 8 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 database/migrations/2024_01_03_154055_add_album_no_header_setting.php diff --git a/app/Livewire/Components/Pages/Gallery/Album.php b/app/Livewire/Components/Pages/Gallery/Album.php index ab6b959b564..bb732d737e0 100644 --- a/app/Livewire/Components/Pages/Gallery/Album.php +++ b/app/Livewire/Components/Pages/Gallery/Album.php @@ -170,6 +170,10 @@ public function getAlbumIDsProperty(): array */ private function fetchHeaderUrl(): SizeVariant|null { + if (Configs::getValueAsBool('use_album_compact_header')) { + return null; + } + if ($this->album->photos->isEmpty()) { return null; } diff --git a/app/Models/Configs.php b/app/Models/Configs.php index 9cb21219038..83b8f6de2ba 100644 --- a/app/Models/Configs.php +++ b/app/Models/Configs.php @@ -60,6 +60,7 @@ class Configs extends Model protected const STRING = 'string'; protected const STRING_REQ = 'string_required'; protected const BOOL = '0|1'; + protected const BOOL_STRING = 'bool'; protected const TERNARY = '0|1|2'; protected const DISABLED = ''; protected const LICENSE = 'license'; @@ -106,6 +107,7 @@ public function sanity(?string $candidateValue, ?string $message_template = null { $message = ''; $val_range = [ + self::BOOL_STRING => ['0', '1'], self::BOOL => explode('|', self::BOOL), self::TERNARY => explode('|', self::TERNARY), ]; @@ -131,6 +133,7 @@ public function sanity(?string $candidateValue, ?string $message_template = null $message = sprintf($message_template, 'strictly positive integer'); } break; + case self::BOOL_STRING: case self::BOOL: case self::TERNARY: if (!in_array($candidateValue, $val_range[$this->type_range], true)) { // BOOL or TERNARY diff --git a/database/migrations/2023_12_18_191723_config_public_search.php b/database/migrations/2023_12_18_191723_config_public_search.php index 0961ea4083e..fa690d2425c 100644 --- a/database/migrations/2023_12_18_191723_config_public_search.php +++ b/database/migrations/2023_12_18_191723_config_public_search.php @@ -5,7 +5,7 @@ return new class() extends Migration { public const MOD_SEARCH = 'Mod Search'; - public const BOOL = 'bool'; + public const BOOL = '0|1'; /** * Run the migrations. diff --git a/database/migrations/2023_12_18_232500_config_pagination_search_limit.php b/database/migrations/2023_12_18_232500_config_pagination_search_limit.php index f1605ef86ea..ac146cd4d83 100644 --- a/database/migrations/2023_12_18_232500_config_pagination_search_limit.php +++ b/database/migrations/2023_12_18_232500_config_pagination_search_limit.php @@ -5,7 +5,7 @@ return new class() extends BaseConfigMigration { public const MOD_SEARCH = 'Mod Search'; public const POSITIVE = 'positive'; - public const BOOL = 'bool'; + public const BOOL = '0|1'; public function getConfigs(): array { diff --git a/database/migrations/2023_12_19_115547_search_characters_limit.php b/database/migrations/2023_12_19_115547_search_characters_limit.php index f0ecc93d301..db683a065a3 100644 --- a/database/migrations/2023_12_19_115547_search_characters_limit.php +++ b/database/migrations/2023_12_19_115547_search_characters_limit.php @@ -5,7 +5,7 @@ return new class() extends BaseConfigMigration { public const MOD_SEARCH = 'Mod Search'; public const POSITIVE = 'positive'; - public const BOOL = 'bool'; + public const BOOL = '0|1'; public function getConfigs(): array { diff --git a/database/migrations/2023_12_20_180854_add_setting_height_width_gallery.php b/database/migrations/2023_12_20_180854_add_setting_height_width_gallery.php index 749499fc437..425133e2259 100644 --- a/database/migrations/2023_12_20_180854_add_setting_height_width_gallery.php +++ b/database/migrations/2023_12_20_180854_add_setting_height_width_gallery.php @@ -5,7 +5,7 @@ return new class() extends BaseConfigMigration { public const GALLERY = 'Gallery'; public const POSITIVE = 'positive'; - public const BOOL = 'bool'; + public const BOOL = '0|1'; public function getConfigs(): array { diff --git a/database/migrations/2023_12_25_115454_add_setting_display_thumb_overlay.php b/database/migrations/2023_12_25_115454_add_setting_display_thumb_overlay.php index 8faecdf1dbf..fc521a13541 100644 --- a/database/migrations/2023_12_25_115454_add_setting_display_thumb_overlay.php +++ b/database/migrations/2023_12_25_115454_add_setting_display_thumb_overlay.php @@ -5,7 +5,7 @@ return new class() extends BaseConfigMigration { public const GALLERY = 'Gallery'; public const POSITIVE = 'positive'; - public const BOOL = 'bool'; + public const BOOL = '0|1'; public function getConfigs(): array { diff --git a/database/migrations/2024_01_03_154055_add_album_no_header_setting.php b/database/migrations/2024_01_03_154055_add_album_no_header_setting.php new file mode 100644 index 00000000000..9935c99dc35 --- /dev/null +++ b/database/migrations/2024_01_03_154055_add_album_no_header_setting.php @@ -0,0 +1,22 @@ + 'use_album_compact_header', + 'value' => '0', + 'confidentiality' => '0', + 'cat' => self::GALLERY, + 'type_range' => self::BOOL, + 'description' => 'Disable the header image in albums (0|1)', + ], + ]; + } +}; From 5b2625c2ac26a81fcc830a3da8222c9c07a72179 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sun, 7 Jan 2024 16:13:11 +0100 Subject: [PATCH 099/209] Fix WebAuthn not working (#2155) Co-authored-by: qwerty287 <80460567+qwerty287@users.noreply.github.com> --- app/Livewire/Components/Modals/Login.php | 4 +++ lang/cz/lychee.php | 1 + lang/de/lychee.php | 1 + lang/el/lychee.php | 1 + lang/en/lychee.php | 1 + lang/es/lychee.php | 1 + lang/fr/lychee.php | 1 + lang/hu/lychee.php | 1 + lang/it/lychee.php | 1 + lang/nl/lychee.php | 1 + lang/no/lychee.php | 1 + lang/pl/lychee.php | 1 + lang/pt/lychee.php | 1 + lang/ru/lychee.php | 1 + lang/sk/lychee.php | 1 + lang/sv/lychee.php | 1 + lang/vi/lychee.php | 1 + lang/zh_CN/lychee.php | 1 + lang/zh_TW/lychee.php | 1 + resources/js/data/views/albumView.ts | 2 +- resources/js/data/webauthn/loginWebAuthn.ts | 28 +++++++++++++++++-- resources/js/vendor/webauthn/webauthn.ts | 3 +- .../views/components/webauthn/login.blade.php | 4 +-- .../views/livewire/modals/login.blade.php | 3 ++ 24 files changed, 55 insertions(+), 7 deletions(-) diff --git a/app/Livewire/Components/Modals/Login.php b/app/Livewire/Components/Modals/Login.php index bbafa5e6ee7..baf9b878018 100644 --- a/app/Livewire/Components/Modals/Login.php +++ b/app/Livewire/Components/Modals/Login.php @@ -13,6 +13,7 @@ use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Log; use Illuminate\Validation\ValidationException; +use Laragear\WebAuthn\Models\WebAuthnCredential; use Livewire\Attributes\Locked; use Livewire\Component; @@ -21,6 +22,7 @@ */ class Login extends Component { + #[Locked] public bool $can_use_2fa = false; #[Locked] public bool $is_new_release_available = false; #[Locked] public bool $is_git_update_available = false; #[Locked] public ?string $version = null; @@ -44,6 +46,8 @@ public function render(): View */ public function mount(): void { + $this->can_use_2fa = WebAuthnCredential::query()->whereNull('disabled_at')->count() > 0; + if (!Configs::getValueAsBool('hide_version_number')) { $this->version = resolve(InstalledVersion::class)->getVersion()->toString(); } diff --git a/lang/cz/lychee.php b/lang/cz/lychee.php index 3638127ded3..b927845c205 100644 --- a/lang/cz/lychee.php +++ b/lang/cz/lychee.php @@ -315,6 +315,7 @@ 'U2F_AUTHENTIFICATION_SUCCESS' => 'Authentication successful!', 'U2F_CREDENTIALS' => 'Credentials', 'U2F_CREDENTIALS_DELETED' => 'Credentials deleted!', + 'U2F_LOGIN' => 'Log in with WebAuthn', 'NEW_PHOTOS_NOTIFICATION' => 'Send new photos notification emails.', 'SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION' => 'New photos notification updated', diff --git a/lang/de/lychee.php b/lang/de/lychee.php index ceeb1d54503..8d6536643ec 100644 --- a/lang/de/lychee.php +++ b/lang/de/lychee.php @@ -315,6 +315,7 @@ 'U2F_AUTHENTIFICATION_SUCCESS' => 'Authentifizierung erfolgreich!', 'U2F_CREDENTIALS' => 'Anmeldedaten', 'U2F_CREDENTIALS_DELETED' => 'Anmeldedaten gelöscht!', + 'U2F_LOGIN' => 'Mit WebAuthn anmelden', 'NEW_PHOTOS_NOTIFICATION' => 'E-Mails für neue Fotos senden', 'SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION' => 'Benachrichtigung für neue Fotos aktualisiert', diff --git a/lang/el/lychee.php b/lang/el/lychee.php index ca01b816b24..3df76bee30f 100644 --- a/lang/el/lychee.php +++ b/lang/el/lychee.php @@ -315,6 +315,7 @@ 'U2F_AUTHENTIFICATION_SUCCESS' => 'Authentication successful!', 'U2F_CREDENTIALS' => 'Credentials', 'U2F_CREDENTIALS_DELETED' => 'Credentials deleted!', + 'U2F_LOGIN' => 'Log in with WebAuthn', 'NEW_PHOTOS_NOTIFICATION' => 'Send new photos notification emails.', 'SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION' => 'New photos notification updated', diff --git a/lang/en/lychee.php b/lang/en/lychee.php index 79c59c8986d..b9bbbb09050 100644 --- a/lang/en/lychee.php +++ b/lang/en/lychee.php @@ -315,6 +315,7 @@ 'U2F_AUTHENTIFICATION_SUCCESS' => 'Authentication successful!', 'U2F_CREDENTIALS' => 'Credentials', 'U2F_CREDENTIALS_DELETED' => 'Credentials deleted!', + 'U2F_LOGIN' => 'Log in with WebAuthn', 'NEW_PHOTOS_NOTIFICATION' => 'Send new photos notification emails.', 'SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION' => 'New photos notification updated', diff --git a/lang/es/lychee.php b/lang/es/lychee.php index 18ea4c14381..4f5fca236a1 100644 --- a/lang/es/lychee.php +++ b/lang/es/lychee.php @@ -315,6 +315,7 @@ 'U2F_AUTHENTIFICATION_SUCCESS' => '¡Autenticación correcta!', 'U2F_CREDENTIALS' => 'Credenciales', 'U2F_CREDENTIALS_DELETED' => '¡Credenciales eliminadas!', + 'U2F_LOGIN' => 'Log in with WebAuthn', 'NEW_PHOTOS_NOTIFICATION' => 'Enviar correos electrónicos de notificación de nuevas fotos.', 'SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION' => 'Notificación de nuevas fotos actualizada', diff --git a/lang/fr/lychee.php b/lang/fr/lychee.php index 051e11f51c8..1c571543af6 100644 --- a/lang/fr/lychee.php +++ b/lang/fr/lychee.php @@ -315,6 +315,7 @@ 'U2F_AUTHENTIFICATION_SUCCESS' => 'Authentification réussie !', 'U2F_CREDENTIALS' => 'Clés', 'U2F_CREDENTIALS_DELETED' => 'Clé supprimée !', + 'U2F_LOGIN' => 'Connexion avec WebAuthn', 'NEW_PHOTOS_NOTIFICATION' => 'Envoyer les notifications de nouvelles photos par emails.', 'SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION' => 'Notification de nouvelles photos mise à jour', diff --git a/lang/hu/lychee.php b/lang/hu/lychee.php index caed71aeb61..ca9ef0c2b33 100644 --- a/lang/hu/lychee.php +++ b/lang/hu/lychee.php @@ -313,6 +313,7 @@ 'U2F_AUTHENTIFICATION_SUCCESS' => 'Sikeres hitelesítés!', 'U2F_CREDENTIALS' => 'Hitelesítő adatok', 'U2F_CREDENTIALS_DELETED' => 'Hitelesítő adatok törölve!', + 'U2F_LOGIN' => 'Log in with WebAuthn', 'NEW_PHOTOS_NOTIFICATION' => 'Küldjön értesítést az új fényképekről e-mailben.', 'SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION' => 'Az új fényképek értesítése frissítve', diff --git a/lang/it/lychee.php b/lang/it/lychee.php index ca4604bdf59..5e5cd67b3b2 100644 --- a/lang/it/lychee.php +++ b/lang/it/lychee.php @@ -315,6 +315,7 @@ 'U2F_AUTHENTIFICATION_SUCCESS' => 'Authentication successful!', 'U2F_CREDENTIALS' => 'Credentials', 'U2F_CREDENTIALS_DELETED' => 'Credentials deleted!', + 'U2F_LOGIN' => 'Log in with WebAuthn', 'NEW_PHOTOS_NOTIFICATION' => 'Send new photos notification emails.', 'SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION' => 'New photos notification updated', diff --git a/lang/nl/lychee.php b/lang/nl/lychee.php index bd7c2320519..b423244e5e7 100644 --- a/lang/nl/lychee.php +++ b/lang/nl/lychee.php @@ -315,6 +315,7 @@ 'U2F_AUTHENTIFICATION_SUCCESS' => 'Authentication successful!', 'U2F_CREDENTIALS' => 'Credentials', 'U2F_CREDENTIALS_DELETED' => 'Credentials deleted!', + 'U2F_LOGIN' => 'Log in with WebAuthn', 'NEW_PHOTOS_NOTIFICATION' => 'Send new photos notification emails.', 'SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION' => 'New photos notification updated', diff --git a/lang/no/lychee.php b/lang/no/lychee.php index 34183b2993f..3d8c51abfe9 100644 --- a/lang/no/lychee.php +++ b/lang/no/lychee.php @@ -315,6 +315,7 @@ 'U2F_AUTHENTIFICATION_SUCCESS' => 'Authentication successful!', 'U2F_CREDENTIALS' => 'Credentials', 'U2F_CREDENTIALS_DELETED' => 'Credentials deleted!', + 'U2F_LOGIN' => 'Log in with WebAuthn', 'NEW_PHOTOS_NOTIFICATION' => 'Send new photos notification emails.', 'SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION' => 'New photos notification updated', diff --git a/lang/pl/lychee.php b/lang/pl/lychee.php index 7ca287efb32..8c9e35a008b 100644 --- a/lang/pl/lychee.php +++ b/lang/pl/lychee.php @@ -315,6 +315,7 @@ 'U2F_AUTHENTIFICATION_SUCCESS' => 'Autoryzacja pomyślna!', 'U2F_CREDENTIALS' => 'Dane uwierzytelniające', 'U2F_CREDENTIALS_DELETED' => 'Usunięto dane uwierzytelniające!', + 'U2F_LOGIN' => 'Log in with WebAuthn', 'NEW_PHOTOS_NOTIFICATION' => 'Send new photos notification emails.', 'SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION' => 'New photos notification updated', diff --git a/lang/pt/lychee.php b/lang/pt/lychee.php index e4c3d3dd3a8..f4e3d05a2d5 100644 --- a/lang/pt/lychee.php +++ b/lang/pt/lychee.php @@ -315,6 +315,7 @@ 'U2F_AUTHENTIFICATION_SUCCESS' => 'Authenticação bem-sucedida!', 'U2F_CREDENTIALS' => 'Credenciais', 'U2F_CREDENTIALS_DELETED' => 'Credenciais eliminadas!', + 'U2F_LOGIN' => 'Log in with WebAuthn', 'NEW_PHOTOS_NOTIFICATION' => 'Send new photos notification emails.', 'SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION' => 'New photos notification updated', diff --git a/lang/ru/lychee.php b/lang/ru/lychee.php index 09a3c9cacd6..17aaee3ddaa 100644 --- a/lang/ru/lychee.php +++ b/lang/ru/lychee.php @@ -315,6 +315,7 @@ 'U2F_AUTHENTIFICATION_SUCCESS' => 'Authentication successful!', 'U2F_CREDENTIALS' => 'Credentials', 'U2F_CREDENTIALS_DELETED' => 'Credentials deleted!', + 'U2F_LOGIN' => 'Log in with WebAuthn', 'NEW_PHOTOS_NOTIFICATION' => 'Send new photos notification emails.', 'SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION' => 'New photos notification updated', diff --git a/lang/sk/lychee.php b/lang/sk/lychee.php index 24fac0f94d8..5390e8fe6b1 100644 --- a/lang/sk/lychee.php +++ b/lang/sk/lychee.php @@ -315,6 +315,7 @@ 'U2F_AUTHENTIFICATION_SUCCESS' => 'Authentication successful!', 'U2F_CREDENTIALS' => 'Credentials', 'U2F_CREDENTIALS_DELETED' => 'Credentials deleted!', + 'U2F_LOGIN' => 'Log in with WebAuthn', 'NEW_PHOTOS_NOTIFICATION' => 'Send new photos notification emails.', 'SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION' => 'New photos notification updated', diff --git a/lang/sv/lychee.php b/lang/sv/lychee.php index 0e50b614ddb..1e6146c2421 100644 --- a/lang/sv/lychee.php +++ b/lang/sv/lychee.php @@ -315,6 +315,7 @@ 'U2F_AUTHENTIFICATION_SUCCESS' => 'Authentication successful!', 'U2F_CREDENTIALS' => 'Credentials', 'U2F_CREDENTIALS_DELETED' => 'Credentials deleted!', + 'U2F_LOGIN' => 'Log in with WebAuthn', 'NEW_PHOTOS_NOTIFICATION' => 'Send new photos notification emails.', 'SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION' => 'New photos notification updated', diff --git a/lang/vi/lychee.php b/lang/vi/lychee.php index ad6a7e4f5a2..7bdd57971f2 100644 --- a/lang/vi/lychee.php +++ b/lang/vi/lychee.php @@ -315,6 +315,7 @@ 'U2F_AUTHENTIFICATION_SUCCESS' => 'Xác minh thành công!', 'U2F_CREDENTIALS' => 'Tên và Mật mã', 'U2F_CREDENTIALS_DELETED' => 'Tên và mật mã đã được xóa!', + 'U2F_LOGIN' => 'Log in with WebAuthn', 'NEW_PHOTOS_NOTIFICATION' => 'Gửi email thông báo đăng hình ảnh mới.', 'SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION' => 'Thông báo đăng hình mới được cập nhật', diff --git a/lang/zh_CN/lychee.php b/lang/zh_CN/lychee.php index a765472e5c5..71f266a91f0 100644 --- a/lang/zh_CN/lychee.php +++ b/lang/zh_CN/lychee.php @@ -315,6 +315,7 @@ 'U2F_AUTHENTIFICATION_SUCCESS' => '认证成功!', 'U2F_CREDENTIALS' => '认证信息', 'U2F_CREDENTIALS_DELETED' => '认证信息已删除!', + 'U2F_LOGIN' => 'Log in with WebAuthn', 'NEW_PHOTOS_NOTIFICATION' => 'Send new photos notification emails.', 'SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION' => 'New photos notification updated', diff --git a/lang/zh_TW/lychee.php b/lang/zh_TW/lychee.php index 1911ce03037..c41a86c47d4 100644 --- a/lang/zh_TW/lychee.php +++ b/lang/zh_TW/lychee.php @@ -315,6 +315,7 @@ 'U2F_AUTHENTIFICATION_SUCCESS' => 'Authentication successful!', 'U2F_CREDENTIALS' => 'Credentials', 'U2F_CREDENTIALS_DELETED' => 'Credentials deleted!', + 'U2F_LOGIN' => 'Log in with WebAuthn', 'NEW_PHOTOS_NOTIFICATION' => 'Send new photos notification emails.', 'SETTINGS_SUCCESS_NEW_PHOTOS_NOTIFICATION' => 'New photos notification updated', diff --git a/resources/js/data/views/albumView.ts b/resources/js/data/views/albumView.ts index 148aef6b5e9..643d03d9685 100644 --- a/resources/js/data/views/albumView.ts +++ b/resources/js/data/views/albumView.ts @@ -119,7 +119,7 @@ export const albumView = (Alpine: Alpine) => // [h] hide // [f] fullscreen // [l] login - // [k] keybinds + // [?] keybinds // [esc] back if (this.keybinds.handleGlobalKeydown(event, this)) { return; diff --git a/resources/js/data/webauthn/loginWebAuthn.ts b/resources/js/data/webauthn/loginWebAuthn.ts index 2ced5cc7c9c..c936016a1ca 100644 --- a/resources/js/data/webauthn/loginWebAuthn.ts +++ b/resources/js/data/webauthn/loginWebAuthn.ts @@ -14,6 +14,7 @@ type LoginWebAuthn = AlpineComponent<{ userId: number | null; isWebAuthnUnavailable: () => boolean; login: () => void; + handleKeyUp: (event: KeyboardEvent) => void; }>; export const loginWebAuthn = (Alpine: Alpine) => @@ -27,11 +28,11 @@ export const loginWebAuthn = (Alpine: Alpine) => username: null, userId: 1, - isWebAuthnUnavailable() { + isWebAuthnUnavailable(): boolean { return !window.isSecureContext && window.location.hostname !== "localhost" && window.location.hostname !== "127.0.0.1"; }, - login() { + login(): void { // work around because this does not refer to alpine anymore when inside WebAuthn then context. const alpine = this; const params: LoginParam = {}; @@ -48,5 +49,28 @@ export const loginWebAuthn = (Alpine: Alpine) => }) .catch(() => alpine.$dispatch("notify", [{ type: "error", msg: this.error_msg }])); }, + + handleKeyUp(event: KeyboardEvent): void { + const skipped = ["TEXTAREA", "INPUT", "SELECT"]; + + if (document.activeElement !== null && skipped.includes(document.activeElement.nodeName)) { + return; + } + + if (event.key === "Escape") { + this.webAuthnOpen = false; + return; + } + + if (event.key === "k") { + this.webAuthnOpen = true; + return; + } + + if (event.key === "Enter" && this.webAuthnOpen === true) { + this.login(); + return; + } + }, }), ); diff --git a/resources/js/vendor/webauthn/webauthn.ts b/resources/js/vendor/webauthn/webauthn.ts index 38c84577bdf..22b72821730 100644 --- a/resources/js/vendor/webauthn/webauthn.ts +++ b/resources/js/vendor/webauthn/webauthn.ts @@ -153,7 +153,7 @@ export default class WebAuthn { // When we send back the value to the server as part of an AJAX request, // Laravel expects an unpadded value. // Hence, we must remove the `%3D`. - return cookie ? cookie.split("=")[1].trim().replace("/%3D/g", "") : null; + return cookie ? cookie.split("=")[1].trim().replace(/%3D/g, "") : null; } /** @@ -161,7 +161,6 @@ export default class WebAuthn { */ #fetch(data: object, route: string, headers: {} = {}): Promise { const url = new URL(route, window.location.origin).href; - return fetch(url, { method: "POST", credentials: this.#includeCredentials ? "include" : "same-origin", diff --git a/resources/views/components/webauthn/login.blade.php b/resources/views/components/webauthn/login.blade.php index 5b66e514c7b..e2ae81a1300 100644 --- a/resources/views/components/webauthn/login.blade.php +++ b/resources/views/components/webauthn/login.blade.php @@ -2,8 +2,8 @@ bg-black/80 z-5 fixed flex items-center justify-center w-full h-full top-0 left-0 box-border opacity-100" data-closable="true" x-data="loginWebAuthn('{{ __("lychee.U2F_AUTHENTIFICATION_SUCCESS") }}', '{{ __("lychee.ERROR_TEXT") }}')" - @keydown.window="if (event.key === 'k') { webAuthnOpen = true }" - @keydown.escape.window="webAuthnOpen = false" + @keyup.window="handleKeyUp(event)" + x-on:webauthn-open.document="webAuthnOpen = true" x-cloak x-show="webAuthnOpen">

    + @if($can_use_2fa) + {{ __('lychee.U2F_LOGIN') }} + @endif
    From 0fc1f43b71555aba8aa0f6c5cecc61518a69f052 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sun, 7 Jan 2024 19:02:27 +0100 Subject: [PATCH 100/209] fix QR code (#2177) --- app/View/Components/Gallery/Album/SharingLinks.php | 2 +- .../views/components/gallery/album/sharing-links.blade.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/View/Components/Gallery/Album/SharingLinks.php b/app/View/Components/Gallery/Album/SharingLinks.php index 065e5f8a740..ae075e92320 100644 --- a/app/View/Components/Gallery/Album/SharingLinks.php +++ b/app/View/Components/Gallery/Album/SharingLinks.php @@ -21,7 +21,7 @@ public function __construct(AbstractAlbum $album) $raw_title = rawurlencode($album->title); $this->twitter_link = 'https://twitter.com/share?url=' . $this->rawUrl; $this->facebook_link = 'https://www.facebook.com/sharer.php?u=' . $this->rawUrl . '?t=' . $raw_title; - $this->mailTo_link = 'mailto:?subject=' . $raw_title . '&' . $this->rawUrl; + $this->mailTo_link = 'mailto:?subject=' . $raw_title . '&body=' . $this->rawUrl; } public function render(): View diff --git a/resources/views/components/gallery/album/sharing-links.blade.php b/resources/views/components/gallery/album/sharing-links.blade.php index 07bd313b11d..9cd025c2663 100644 --- a/resources/views/components/gallery/album/sharing-links.blade.php +++ b/resources/views/components/gallery/album/sharing-links.blade.php @@ -20,7 +20,7 @@ " > - +
    From 4b51b23d1c33c532533c23035fcf5b01dabdcbdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Viguier?= Date: Sun, 7 Jan 2024 21:18:52 +0100 Subject: [PATCH 101/209] Fix livewire not working on directory folders (#2150) --- .env.example | 10 +- .php-cs-fixer.php | 3 +- .../Pipes/Checks/AppUrlMatchCheck.php | 65 ++-- .../Pipes/Checks/UpdatableCheck.php | 2 +- .../Pipes/Infos/InstallTypeInfo.php | 10 +- app/Assets/Helpers.php | 26 ++ app/Facades/Helpers.php | 1 + app/Http/Middleware/DisableCSP.php | 7 +- app/Livewire/Components/Menus/LeftMenu.php | 2 + .../Diagnostics/AbstractPreSection.php | 19 +- .../Modules/Diagnostics/Configurations.php | 12 +- .../Components/Modules/Diagnostics/Errors.php | 14 +- .../Components/Modules/Diagnostics/Infos.php | 12 +- .../Modules/Diagnostics/Optimize.php | 12 +- .../Components/Modules/Diagnostics/Space.php | 12 +- app/Providers/AppServiceProvider.php | 11 + config/app.php | 24 +- config/auth.php | 2 +- config/broadcasting.php | 2 +- config/database.php | 3 +- config/filesystems.php | 36 ++- config/honeypot.php | 2 +- config/log-viewer.php | 23 +- config/markdown.php | 280 +++++++++--------- config/view.php | 2 +- phpstan.neon | 7 + .../leftbar/disabled-leftbar-item.blade.php | 10 + .../components/leftbar/leftbar-item.blade.php | 2 +- .../livewire/components/left-menu.blade.php | 8 +- .../modules/diagnostics/pre-colored.blade.php | 18 +- .../modules/diagnostics/pre.blade.php | 18 +- .../diagnostics/with-action-call.blade.php | 9 +- .../livewire/pages/diagnostics.blade.php | 18 +- tests/Livewire/Modules/SpaceTest.php | 7 +- tests/Livewire/Pages/DiagnosticsTest.php | 17 +- 35 files changed, 441 insertions(+), 265 deletions(-) create mode 100644 resources/views/components/leftbar/disabled-leftbar-item.blade.php diff --git a/.env.example b/.env.example index fe8f76839ca..108e324240f 100644 --- a/.env.example +++ b/.env.example @@ -2,9 +2,17 @@ APP_NAME=Lychee APP_ENV=production APP_KEY= APP_DEBUG=false +# This MUST contain the host name up to the Top Level Domain (tld) e.g. .com, .org etc. APP_URL=http://localhost APP_FORCE_HTTPS=false +# If using Lychee in a sub folder, specify the path after the tld here. +# For example for https://lychee.test/path/to/lychee +# Set APP_URL=https://lychee.test +# and APP_DIR=/path/to/lychee +# We (LycheeOrg) do not recommend the use of APP_DIR. +# APP_DIR= + # enable or disable debug bar. By default it is disabled. # Do note that this disable CSP!! DEBUGBAR_ENABLED=false @@ -37,7 +45,7 @@ DB_LOG_SQL=false DB_LOG_SQL_EXPLAIN=false #only for MySQL # List foreign keys in diagnostic page -DB_LIST_FOREIGN_KEYS=true +DB_LIST_FOREIGN_KEYS=false # Application timezone. If not specified, the server's default timezone is used. # Requires a named timezone identifier. diff --git a/.php-cs-fixer.php b/.php-cs-fixer.php index 04e42082272..06656b298b5 100644 --- a/.php-cs-fixer.php +++ b/.php-cs-fixer.php @@ -5,6 +5,7 @@ __DIR__ . '/app/', __DIR__ . '/database/', __DIR__ . '/lang/', + __DIR__ . '/config/', __DIR__ . '/resources/', __DIR__ . '/routes/', __DIR__ . '/tests/', @@ -41,7 +42,7 @@ function (PhpCsFixer\Finder $finder, $dir) { ], 'operator_linebreak' => [ 'only_booleans' => true, - 'position' => 'end' + 'position' => 'end', ], ]; $config = new PhpCsFixer\Config(); diff --git a/app/Actions/Diagnostics/Pipes/Checks/AppUrlMatchCheck.php b/app/Actions/Diagnostics/Pipes/Checks/AppUrlMatchCheck.php index 8566a616e16..0cf68859306 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/AppUrlMatchCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/AppUrlMatchCheck.php @@ -3,11 +3,15 @@ namespace App\Actions\Diagnostics\Pipes\Checks; use App\Contracts\DiagnosticPipe; +use App\Facades\Helpers; use Safe\Exceptions\PcreException; use function Safe\preg_match; class AppUrlMatchCheck implements DiagnosticPipe { + public const INVISIBLE_ERROR = ' '; + public const INVISIBLE_WARNING = ' '; + /** * We check: * 1. if APP_URL is even set. @@ -20,29 +24,47 @@ class AppUrlMatchCheck implements DiagnosticPipe public function handle(array &$data, \Closure $next): array { $config_url = config('app.url'); + $dir_url = config('app.dir_url'); if (config('app.url') === 'http://localhost') { - $data[] = 'Warning: APP_URL is still set to default, this will break access to all your images and assets if you are using Lychee behind a sub-domain.'; + $data[] = 'Warning: APP_URL is still set to default, this will break access to all your images'; + $data[] = self::INVISIBLE_WARNING . 'and assets if you are using Lychee behind a sub-domain.'; } $bad = $this->splitUrl($config_url)[3]; - $censored_bad = $this->censor($bad); + $censored_bad = Helpers::censor($bad); $censored_app_url = $this->getCensorAppUrl(); $censored_current = $this->getCensorCurrentUrl(); if ($bad !== '') { $data[] = sprintf( - 'Warning: APP_URL (%s) contains a sub-path (%s). This may impact your WebAuthn authentication.', + 'Error: APP_URL (%s) contains a sub-path (%s).', + $censored_app_url, + $censored_bad, + ); + $data[] = sprintf( + self::INVISIBLE_ERROR . 'Instead set APP_DIR to (%s) and APP_URL to (%s) in your .env', + $censored_bad, + $censored_current, + ); + } + + if ($bad !== '') { + $data[] = sprintf( + 'Warning: APP_URL (%s) contains a sub-path (%s).', $censored_app_url, - $censored_bad); + $censored_bad + ); + $data[] = self::INVISIBLE_WARNING . 'This may impact your WebAuthn authentication.'; } if (!$this->checkUrlMatchCurrentHost()) { $data[] = sprintf( - 'Error: APP_URL (%s) does not match the current url (%s). This will break WebAuthn authentication.', + 'Error: APP_URL (%s) does not match the current url (%s).', $censored_app_url, $censored_current, ); + $data[] = self::INVISIBLE_ERROR . 'This will break WebAuthn authentication.'; } $config_url_imgage = config('filesystems.disks.images.url'); @@ -50,37 +72,18 @@ public function handle(array &$data, \Closure $next): array $data[] = 'Error: LYCHEE_UPLOADS_URL is set and empty. This will prevent images to be displayed. Remove the line from your .env'; } - if (($config_url . '/uploads/') === $config_url_imgage && !$this->checkUrlMatchCurrentHost()) { + if (($config_url . $dir_url . '/uploads/') === $config_url_imgage && !$this->checkUrlMatchCurrentHost()) { $data[] = sprintf( - 'Error: APP_URL (%s) does not match the current url (%s). This will prevent images to be properly displayed.', + 'Error: APP_URL (%s) does not match the current url (%s).', $censored_app_url, - $censored_current); + $censored_current + ); + $data[] = self::INVISIBLE_ERROR . 'This will prevent images from being properly displayed.'; } return $next($data); } - /** - * Censore a word by replacing half of its character by stars. - * - * @param string $string - * - * @return string - */ - private function censor(string $string): string - { - $strLength = strlen($string); - if ($strLength === 0) { - return ''; - } - - $length = $strLength - (int) floor($strLength / 2); - $start = (int) floor($length / 2); - $replacement = str_repeat('*', $length); - - return substr_replace($string, $replacement, $start, $length); - } - /** * Split url into 3 parts: http(s), host, path. * @@ -110,7 +113,7 @@ private function getCensorCurrentUrl(): string $current_url = request()->schemeAndHttpHost(); [$full, $prefix, $good, $bad] = $this->splitUrl($current_url); - return $prefix . $this->censor($good) . $this->censor($bad); + return $prefix . Helpers::censor($good) . Helpers::censor($bad); } /** @@ -123,7 +126,7 @@ private function getCensorAppUrl(): string $config_url = config('app.url'); [$full, $prefix, $good, $bad] = $this->splitUrl($config_url); - return $prefix . $this->censor($good) . $this->censor($bad); + return $prefix . Helpers::censor($good) . Helpers::censor($bad); } /** diff --git a/app/Actions/Diagnostics/Pipes/Checks/UpdatableCheck.php b/app/Actions/Diagnostics/Pipes/Checks/UpdatableCheck.php index 4ef6189280f..f8bbf827f05 100644 --- a/app/Actions/Diagnostics/Pipes/Checks/UpdatableCheck.php +++ b/app/Actions/Diagnostics/Pipes/Checks/UpdatableCheck.php @@ -85,7 +85,7 @@ public static function assertUpdatability(): void if (!$gitHubFunctions->hasPermissions()) { // @codeCoverageIgnoreStart - throw new InsufficientFilesystemPermissions(base_path('.git') . ' (and subdirectories) are not executable, check the permissions'); + throw new InsufficientFilesystemPermissions(Helpers::censor(base_path('.git'), 1 / 4) . ' (and subdirectories) are not executable, check the permissions'); // @codeCoverageIgnoreEnd } } diff --git a/app/Actions/Diagnostics/Pipes/Infos/InstallTypeInfo.php b/app/Actions/Diagnostics/Pipes/Infos/InstallTypeInfo.php index 3e71f204ea8..4973b97c21b 100644 --- a/app/Actions/Diagnostics/Pipes/Infos/InstallTypeInfo.php +++ b/app/Actions/Diagnostics/Pipes/Infos/InstallTypeInfo.php @@ -5,7 +5,6 @@ use App\Actions\Diagnostics\Diagnostics; use App\Contracts\DiagnosticPipe; use App\Metadata\Versions\InstalledVersion; -use Illuminate\Support\Facades\Config; /** * What kind of Lychee install we are looking at? @@ -26,9 +25,12 @@ public function __construct(InstalledVersion $installedVersion) public function handle(array &$data, \Closure $next): array { $data[] = Diagnostics::line('composer install:', $this->installedVersion->isDev() ? 'dev' : '--no-dev'); - $data[] = Diagnostics::line('APP_ENV:', Config::get('app.env')); // check if production - $data[] = Diagnostics::line('APP_DEBUG:', Config::get('app.debug') === true ? 'true' : 'false'); // check if debug is on (will help in case of error 500) - $data[] = Diagnostics::line('APP_URL:', Config::get('app.url') !== 'http://localhost' ? 'set' : 'default'); // Some people leave that value by default... It is now breaking their visual. + $data[] = Diagnostics::line('APP_ENV:', config('app.env')); // check if production + $data[] = Diagnostics::line('APP_DEBUG:', config('app.debug') === true ? 'true' : 'false'); // check if debug is on (will help in case of error 500) + $data[] = Diagnostics::line('APP_URL:', config('app.url') !== 'http://localhost' ? 'set' : 'default'); // Some people leave that value by default... It is now breaking their visual. + $data[] = Diagnostics::line('APP_DIR:', config('app.dir_url') !== '' ? 'set' : 'default'); // Some people leave that value by default... It is now breaking their visual. + $data[] = Diagnostics::line('LOG_VIEWER_ENABLED:', config('log-viewer.enabled', true) === true ? 'true' : 'false'); + $data[] = Diagnostics::line('LIVEWIRE_ENABLED:', config('app.livewire', true) === true ? 'true' : 'false'); $data[] = ''; return $next($data); diff --git a/app/Assets/Helpers.php b/app/Assets/Helpers.php index c0281d67dbd..c40634bf1f2 100644 --- a/app/Assets/Helpers.php +++ b/app/Assets/Helpers.php @@ -265,4 +265,30 @@ public function decimalToDegreeMinutesSeconds(float|null $decimal, bool $type): return $degrees . '° ' . $minutes . "' " . $seconds . '" ' . $direction; } + + /** + * Censor a word by replacing half of its character by stars. + * + * @param string $string to censor + * @param float $percentOfClear the amount of the original string that remains untouched. The lower the value, the higher the censoring. + * + * @return string + */ + public function censor(string $string, float $percentOfClear = 0.5): string + { + $strLength = strlen($string); + if ($strLength === 0) { + return ''; + } + + // Length of replacement + $censored_length = $strLength - (int) floor($strLength * $percentOfClear); + + // we leave half the space in front and behind. + $start = (int) floor(($strLength - $censored_length) / 2); + + $replacement = str_repeat('*', $censored_length); + + return substr_replace($string, $replacement, $start, $censored_length); + } } diff --git a/app/Facades/Helpers.php b/app/Facades/Helpers.php index ff77200cf8e..b935c88cf12 100644 --- a/app/Facades/Helpers.php +++ b/app/Facades/Helpers.php @@ -21,6 +21,7 @@ * @method static string secondsToHMS(int|float $d) * @method static int convertSize(string $size) * @method static string decimalToDegreeMinutesSeconds(float $decimal, bool $type) + * @method static string censor(string $string, float $percentOfClear = 0.5) */ class Helpers extends Facade { diff --git a/app/Http/Middleware/DisableCSP.php b/app/Http/Middleware/DisableCSP.php index d747858bccf..e189ac8012d 100644 --- a/app/Http/Middleware/DisableCSP.php +++ b/app/Http/Middleware/DisableCSP.php @@ -30,14 +30,15 @@ class DisableCSP */ public function handle(Request $request, \Closure $next): mixed { + $dir_url = config('app.dir_url'); if ( config('debugbar.enabled', false) === true || - $request->getRequestUri() === '/docs/api' + $request->getRequestUri() === $dir_url . '/docs/api' ) { config(['secure-headers.csp.enable' => false]); } - if ($request->getRequestUri() === '/' . config('log-viewer.route_path', 'Logs')) { + if ($request->getRequestUri() === $dir_url . '/' . config('log-viewer.route_path', 'Logs')) { // We must disable unsafe-eval because vue3 used by log-viewer requires it. // We must disable unsafe-inline (and hashes) because log-viewer uses inline script with parameter to boot. // Those parameters are not know by Lychee if someone modifies the config. @@ -48,7 +49,7 @@ public function handle(Request $request, \Closure $next): mixed } // disable unsafe-eval if we are on a Livewire page - if (config('app.livewire', false) === true || Str::startsWith($request->getRequestUri(), '/livewire/')) { + if (config('app.livewire', false) === true || Str::startsWith($request->getRequestUri(), $dir_url . '/livewire/')) { $this->handleLivewire(); } diff --git a/app/Livewire/Components/Menus/LeftMenu.php b/app/Livewire/Components/Menus/LeftMenu.php index 5c6e4943262..d00d87778a9 100644 --- a/app/Livewire/Components/Menus/LeftMenu.php +++ b/app/Livewire/Components/Menus/LeftMenu.php @@ -35,6 +35,7 @@ class LeftMenu extends Component implements Openable use InteractWithModal; use UseOpenable; + #[Locked] public bool $has_log_viewer = false; #[Locked] public bool $has_dev_tools = false; #[Locked] public ?string $clockwork_url = null; #[Locked] public ?string $doc_api_url = null; @@ -61,6 +62,7 @@ public function logout(): void public function render(): View { $this->loadDevMenu(); + $this->has_log_viewer = config('log-viewer.enabled', true); return view('livewire.components.left-menu'); } diff --git a/app/Livewire/Components/Modules/Diagnostics/AbstractPreSection.php b/app/Livewire/Components/Modules/Diagnostics/AbstractPreSection.php index ab4b70fedc5..45e833f3935 100644 --- a/app/Livewire/Components/Modules/Diagnostics/AbstractPreSection.php +++ b/app/Livewire/Components/Modules/Diagnostics/AbstractPreSection.php @@ -2,6 +2,9 @@ namespace App\Livewire\Components\Modules\Diagnostics; +use App\Models\Configs; +use App\Policies\SettingsPolicy; +use Illuminate\Support\Facades\Gate; use Illuminate\View\View; use Livewire\Attributes\Locked; use Livewire\Component; @@ -11,7 +14,12 @@ */ abstract class AbstractPreSection extends Component { - #[Locked] public string $title; + #[Locked] public bool $can; + final public function boot(): void + { + $this->can = Gate::check(SettingsPolicy::CAN_SEE_DIAGNOSTICS, Configs::class); + } + /** * Rendering of the front-end. * @@ -25,17 +33,14 @@ final public function render(): View /** * Defined the data to be displayed. * - * @return array + * @return array */ abstract public function getDataProperty(): array; /** - * Return error message because we don't want this serialized. + * Defined the title to be displayed. * * @return string */ - public function getErrorMessageProperty(): string - { - return 'Error: You must have administrator rights to see this.'; - } + abstract public function getTitleProperty(): string; } diff --git a/app/Livewire/Components/Modules/Diagnostics/Configurations.php b/app/Livewire/Components/Modules/Diagnostics/Configurations.php index 127647856ee..ccde9c5517a 100644 --- a/app/Livewire/Components/Modules/Diagnostics/Configurations.php +++ b/app/Livewire/Components/Modules/Diagnostics/Configurations.php @@ -3,16 +3,16 @@ namespace App\Livewire\Components\Modules\Diagnostics; use App\Actions\Diagnostics\Configuration; -use App\Models\Configs; -use App\Policies\SettingsPolicy; -use Illuminate\Support\Facades\Gate; -use Livewire\Attributes\Locked; class Configurations extends AbstractPreSection { - #[Locked] public string $title = 'Config Information'; + public function getTitleProperty(): string + { + return 'Config Information'; + } + public function getDataProperty(): array { - return Gate::check(SettingsPolicy::CAN_SEE_DIAGNOSTICS, Configs::class) ? resolve(Configuration::class)->get() : []; + return $this->can ? resolve(Configuration::class)->get() : []; } } diff --git a/app/Livewire/Components/Modules/Diagnostics/Errors.php b/app/Livewire/Components/Modules/Diagnostics/Errors.php index 44ddf51a968..8a4fa855436 100644 --- a/app/Livewire/Components/Modules/Diagnostics/Errors.php +++ b/app/Livewire/Components/Modules/Diagnostics/Errors.php @@ -10,16 +10,20 @@ class Errors extends Component { - #[Locked] public string $title = 'Diagnostics'; - #[Locked] public string $error_msg = 'No critical problems found. Lychee should work without problems!'; + #[Locked] public bool $can = true; public function placeholder(): string { - return '

    + return '

     	Diagnostics
     	-----------
     	    ' . __('lychee.LOADING') . ' ...
    -

    -'; +
    +
    '; + } + + public function getTitleProperty(): string + { + return 'Diagnostics'; } /** diff --git a/app/Livewire/Components/Modules/Diagnostics/Infos.php b/app/Livewire/Components/Modules/Diagnostics/Infos.php index e9f437cd5f5..e49393c5c4e 100644 --- a/app/Livewire/Components/Modules/Diagnostics/Infos.php +++ b/app/Livewire/Components/Modules/Diagnostics/Infos.php @@ -3,16 +3,16 @@ namespace App\Livewire\Components\Modules\Diagnostics; use App\Actions\Diagnostics\Info; -use App\Models\Configs; -use App\Policies\SettingsPolicy; -use Illuminate\Support\Facades\Gate; -use Livewire\Attributes\Locked; class Infos extends AbstractPreSection { - #[Locked] public string $title = 'System Information'; + public function getTitleProperty(): string + { + return 'System Information'; + } + public function getDataProperty(): array { - return Gate::check(SettingsPolicy::CAN_SEE_DIAGNOSTICS, Configs::class) ? resolve(Info::class)->get() : []; + return $this->can ? resolve(Info::class)->get() : []; } } diff --git a/app/Livewire/Components/Modules/Diagnostics/Optimize.php b/app/Livewire/Components/Modules/Diagnostics/Optimize.php index f1753c97dc7..c28ec93c7cd 100644 --- a/app/Livewire/Components/Modules/Diagnostics/Optimize.php +++ b/app/Livewire/Components/Modules/Diagnostics/Optimize.php @@ -13,9 +13,9 @@ class Optimize extends Component { - #[Locked] public string $title = 'Optimize DB'; #[Locked] public array $result = []; #[Locked] public string $action; + #[Locked] public bool $can; private OptimizeDb $optimizeDb; private OptimizeTables $optimizeTables; @@ -24,6 +24,12 @@ public function boot(): void $this->optimizeDb = resolve(OptimizeDb::class); $this->optimizeTables = resolve(OptimizeTables::class); $this->action = 'Optimize!'; + $this->can = Gate::check(SettingsPolicy::CAN_SEE_DIAGNOSTICS, Configs::class); + } + + public function getTitleProperty(): string + { + return 'Optimize DB'; } /** @@ -33,10 +39,6 @@ public function boot(): void */ public function render(): View { - if (!Gate::check(SettingsPolicy::CAN_SEE_DIAGNOSTICS, Configs::class)) { - $this->result[] = 'Error: You must have administrator rights to see this.'; - } - return view('livewire.modules.diagnostics.with-action-call'); } diff --git a/app/Livewire/Components/Modules/Diagnostics/Space.php b/app/Livewire/Components/Modules/Diagnostics/Space.php index cedb61f0dd8..a79bec5d308 100644 --- a/app/Livewire/Components/Modules/Diagnostics/Space.php +++ b/app/Livewire/Components/Modules/Diagnostics/Space.php @@ -12,15 +12,21 @@ class Space extends Component { - #[Locked] public string $title = 'Space Usage'; #[Locked] public array $result = []; #[Locked] public string $action; + #[Locked] public bool $can; private DiagnosticsSpace $diagnostics; public function boot(): void { $this->diagnostics = resolve(DiagnosticsSpace::class); $this->action = __('lychee.DIAGNOSTICS_GET_SIZE'); + $this->can = Gate::check(SettingsPolicy::CAN_SEE_DIAGNOSTICS, Configs::class); + } + + public function getTitleProperty(): string + { + return 'Space Usage'; } /** @@ -30,10 +36,6 @@ public function boot(): void */ public function render(): View { - if (!Gate::check(SettingsPolicy::CAN_SEE_DIAGNOSTICS, Configs::class)) { - $this->result[] = 'Error: You must have administrator rights to see this.'; - } - return view('livewire.modules.diagnostics.with-action-call'); } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index ebc70ad9ed7..d18ff406516 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -34,6 +34,7 @@ use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Gate; use Illuminate\Support\Facades\Log; +use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\URL; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Str; @@ -164,6 +165,16 @@ public function boot() foreach ($this->livewireSynth as $synth) { Livewire::propertySynthesizer($synth); } + + $dir_url = config('app.dir_url') === '' ? '' : (config('app.dir_url') . '/'); + + Livewire::setScriptRoute(function ($handle) use ($dir_url) { + return Route::get($dir_url . 'livewire/livewire.js', $handle); + }); + + Livewire::setUpdateRoute(function ($handle) use ($dir_url) { + return Route::post($dir_url . 'livewire/update', $handle)->middleware('web'); + }); } /** diff --git a/config/app.php b/config/app.php index 9dbeaaebd5c..53bbecf9bc7 100644 --- a/config/app.php +++ b/config/app.php @@ -1,8 +1,24 @@ env('APP_URL', 'http://localhost'), + 'url' => renv('APP_URL', 'http://localhost'), + + 'dir_url' => env('APP_DIR', '') === '' ? '' : ('/' . trim(env('APP_DIR'), '/')), 'asset_url' => null, diff --git a/config/auth.php b/config/auth.php index e74531036e9..e3f3e405ca9 100644 --- a/config/auth.php +++ b/config/auth.php @@ -39,7 +39,7 @@ 'guards' => [ 'lychee' => [ - 'driver' => env('ENABLE_TOKEN_AUTH', true) ? 'session-or-token' : 'session', + 'driver' => env('ENABLE_TOKEN_AUTH', true) ? 'session-or-token' : 'session', // @phpstan-ignore-line 'provider' => 'users', ], ], diff --git a/config/broadcasting.php b/config/broadcasting.php index c48467a6e31..64dbf68581a 100644 --- a/config/broadcasting.php +++ b/config/broadcasting.php @@ -34,7 +34,7 @@ 'secret' => env('PUSHER_APP_SECRET'), 'app_id' => env('PUSHER_APP_ID'), 'options' => [ - 'host' => env('PUSHER_HOST', 'api-' . env('PUSHER_APP_CLUSTER', 'mt1') . '.pusher.com') ?: 'api-' . env('PUSHER_APP_CLUSTER', 'mt1') . '.pusher.com', + 'host' => env('PUSHER_HOST', 'api-' . env('PUSHER_APP_CLUSTER', 'mt1') . '.pusher.com') ?: 'api-' . env('PUSHER_APP_CLUSTER', 'mt1') . '.pusher.com', // @phpstan-ignore-line 'port' => env('PUSHER_PORT', 443), 'scheme' => env('PUSHER_SCHEME', 'https'), 'encrypted' => true, diff --git a/config/database.php b/config/database.php index 9035cf09482..ac563f5c478 100644 --- a/config/database.php +++ b/config/database.php @@ -205,5 +205,6 @@ ], ], - 'list_foreign_keys' => env('DB_LIST_FOREIGN_KEYS', false), + // Only list fk keys in debug mode. + 'list_foreign_keys' => (bool) env('DB_LIST_FOREIGN_KEYS', false) && (bool) env('APP_DEBUG', false), ]; diff --git a/config/filesystems.php b/config/filesystems.php index 3e2dfb87d0f..176bb760554 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -1,5 +1,34 @@ [ 'driver' => 'local', 'root' => env('LYCHEE_UPLOADS', public_path(env('LYCHEE_UPLOADS_DIR', 'uploads/'))), - 'url' => env('LYCHEE_UPLOADS_URL', env('APP_URL', 'http://localhost') . '/' . env('LYCHEE_UPLOADS_DIR', 'uploads/')), + 'url' => env('LYCHEE_UPLOADS_URL', '') !== '' ? renv('LYCHEE_UPLOADS_URL') + : (renv('APP_URL', 'http://localhost') . renv_cond('APP_DIR') . '/' . + renv('LYCHEE_UPLOADS_DIR', 'uploads')), 'visibility' => env('LYCHEE_IMAGE_VISIBILITY', 'public'), 'directory_visibility' => env('LYCHEE_IMAGE_VISIBILITY', 'public'), 'permissions' => [ @@ -96,7 +127,8 @@ 'symbolic' => [ 'driver' => 'local', 'root' => env('LYCHEE_SYM', public_path('sym')), - 'url' => rtrim(env('LYCHEE_SYM_URL', rtrim(env('APP_URL', 'http://localhost'), '/') . '/sym'), '/'), + 'url' => env('LYCHEE_SYM_URL', '') !== '' ? renv('LYCHEE_SYM_URL') : + (renv('APP_URL', 'http://localhost') . renv_cond('APP_DIR') . '/sym'), 'visibility' => 'public', ], diff --git a/config/honeypot.php b/config/honeypot.php index d41582474d3..0628e681986 100644 --- a/config/honeypot.php +++ b/config/honeypot.php @@ -114,6 +114,6 @@ 'info.php', 'phpinfo.php', ], - ] + ], ], ]; \ No newline at end of file diff --git a/config/log-viewer.php b/config/log-viewer.php index 27f4b036c5e..2450f9b545c 100644 --- a/config/log-viewer.php +++ b/config/log-viewer.php @@ -2,6 +2,27 @@ use Opcodes\LogViewer\LogLevels\LevelClass; +if (!function_exists('renv')) { + function renv(string $cst, ?string $default = null): string + { + return rtrim(env($cst, $default) ?? '', '/'); + } +} + +/** + * Allow to conditionally append an env value. + * + * @param string $cst constant to fetch + * + * @return string '' or env value prefixed with '/' + */ +if (!function_exists('renv_cond')) { + function renv_cond(string $cst): string + { + return env($cst, '') === '' ? '' : ('/' . trim(env($cst), '/')); + } +} + return [ /* |-------------------------------------------------------------------------- @@ -45,7 +66,7 @@ | */ - 'back_to_system_url' => '../', // config('app.url', null), + 'back_to_system_url' => renv('APP_URL', 'http://localhost') . renv_cond('APP_DIR'), 'back_to_system_label' => null, // Displayed by default: "Back to {{ app.name }}" diff --git a/config/markdown.php b/config/markdown.php index a2f2a5de05f..01ac337615b 100644 --- a/config/markdown.php +++ b/config/markdown.php @@ -12,145 +12,143 @@ */ return [ - - /* - |-------------------------------------------------------------------------- - | Enable View Integration - |-------------------------------------------------------------------------- - | - | This option specifies if the view integration is enabled so you can write - | markdown views and have them rendered as html. The following extensions - | are currently supported: ".md", ".md.php", and ".md.blade.php". You may - | disable this integration if it is conflicting with another package. - | - | Default: true - | - */ - - 'views' => true, - - /* - |-------------------------------------------------------------------------- - | CommonMark Extensions - |-------------------------------------------------------------------------- - | - | This option specifies what extensions will be automatically enabled. - | Simply provide your extension class names here. - | - | Default: [ - | League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension::class, - | League\CommonMark\Extension\Table\TableExtension::class, - | ] - | - */ - - 'extensions' => [ - League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension::class, - League\CommonMark\Extension\Table\TableExtension::class, - ], - - /* - |-------------------------------------------------------------------------- - | Renderer Configuration - |-------------------------------------------------------------------------- - | - | This option specifies an array of options for rendering HTML. - | - | Default: [ - | 'block_separator' => "\n", - | 'inner_separator' => "\n", - | 'soft_break' => "\n", - | ] - | - */ - - 'renderer' => [ - 'block_separator' => "\n", - 'inner_separator' => "\n", - 'soft_break' => "\n", - ], - - /* - |-------------------------------------------------------------------------- - | Commonmark Configuration - |-------------------------------------------------------------------------- - | - | This option specifies an array of options for commonmark. - | - | Default: [ - | 'enable_em' => true, - | 'enable_strong' => true, - | 'use_asterisk' => true, - | 'use_underscore' => true, - | 'unordered_list_markers' => ['-', '+', '*'], - | ] - | - */ - - 'commonmark' => [ - 'enable_em' => true, - 'enable_strong' => true, - 'use_asterisk' => true, - 'use_underscore' => true, - 'unordered_list_markers' => ['-', '+', '*'], - ], - - /* - |-------------------------------------------------------------------------- - | HTML Input - |-------------------------------------------------------------------------- - | - | This option specifies how to handle untrusted HTML input. - | - | Default: 'strip' - | - */ - - 'html_input' => 'strip', - - /* - |-------------------------------------------------------------------------- - | Allow Unsafe Links - |-------------------------------------------------------------------------- - | - | This option specifies whether to allow risky image URLs and links. - | - | Default: true - | - */ - - 'allow_unsafe_links' => true, - - /* - |-------------------------------------------------------------------------- - | Maximum Nesting Level - |-------------------------------------------------------------------------- - | - | This option specifies the maximum permitted block nesting level. - | - | Default: PHP_INT_MAX - | - */ - - 'max_nesting_level' => PHP_INT_MAX, - - /* - |-------------------------------------------------------------------------- - | Slug Normalizer - |-------------------------------------------------------------------------- - | - | This option specifies an array of options for slug normalization. - | - | Default: [ - | 'max_length' => 255, - | 'unique' => 'document', - | ] - | - */ - - 'slug_normalizer' => [ - 'max_length' => 255, - 'unique' => 'document', - ], - + /* + |-------------------------------------------------------------------------- + | Enable View Integration + |-------------------------------------------------------------------------- + | + | This option specifies if the view integration is enabled so you can write + | markdown views and have them rendered as html. The following extensions + | are currently supported: ".md", ".md.php", and ".md.blade.php". You may + | disable this integration if it is conflicting with another package. + | + | Default: true + | + */ + + 'views' => true, + + /* + |-------------------------------------------------------------------------- + | CommonMark Extensions + |-------------------------------------------------------------------------- + | + | This option specifies what extensions will be automatically enabled. + | Simply provide your extension class names here. + | + | Default: [ + | League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension::class, + | League\CommonMark\Extension\Table\TableExtension::class, + | ] + | + */ + + 'extensions' => [ + League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension::class, + League\CommonMark\Extension\Table\TableExtension::class, + ], + + /* + |-------------------------------------------------------------------------- + | Renderer Configuration + |-------------------------------------------------------------------------- + | + | This option specifies an array of options for rendering HTML. + | + | Default: [ + | 'block_separator' => "\n", + | 'inner_separator' => "\n", + | 'soft_break' => "\n", + | ] + | + */ + + 'renderer' => [ + 'block_separator' => "\n", + 'inner_separator' => "\n", + 'soft_break' => "\n", + ], + + /* + |-------------------------------------------------------------------------- + | Commonmark Configuration + |-------------------------------------------------------------------------- + | + | This option specifies an array of options for commonmark. + | + | Default: [ + | 'enable_em' => true, + | 'enable_strong' => true, + | 'use_asterisk' => true, + | 'use_underscore' => true, + | 'unordered_list_markers' => ['-', '+', '*'], + | ] + | + */ + + 'commonmark' => [ + 'enable_em' => true, + 'enable_strong' => true, + 'use_asterisk' => true, + 'use_underscore' => true, + 'unordered_list_markers' => ['-', '+', '*'], + ], + + /* + |-------------------------------------------------------------------------- + | HTML Input + |-------------------------------------------------------------------------- + | + | This option specifies how to handle untrusted HTML input. + | + | Default: 'strip' + | + */ + + 'html_input' => 'strip', + + /* + |-------------------------------------------------------------------------- + | Allow Unsafe Links + |-------------------------------------------------------------------------- + | + | This option specifies whether to allow risky image URLs and links. + | + | Default: true + | + */ + + 'allow_unsafe_links' => true, + + /* + |-------------------------------------------------------------------------- + | Maximum Nesting Level + |-------------------------------------------------------------------------- + | + | This option specifies the maximum permitted block nesting level. + | + | Default: PHP_INT_MAX + | + */ + + 'max_nesting_level' => PHP_INT_MAX, + + /* + |-------------------------------------------------------------------------- + | Slug Normalizer + |-------------------------------------------------------------------------- + | + | This option specifies an array of options for slug normalization. + | + | Default: [ + | 'max_length' => 255, + | 'unique' => 'document', + | ] + | + */ + + 'slug_normalizer' => [ + 'max_length' => 255, + 'unique' => 'document', + ], ]; \ No newline at end of file diff --git a/config/view.php b/config/view.php index 13399a3a2b6..4576eb17a9d 100644 --- a/config/view.php +++ b/config/view.php @@ -27,5 +27,5 @@ | */ - 'compiled' => realpath(storage_path('framework/views')), + 'compiled' => realpath(storage_path('framework/views')), // @phpstan-ignore-line ]; diff --git a/phpstan.neon b/phpstan.neon index e2b0081c3d8..1d63ac31f7f 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -11,6 +11,7 @@ parameters: - lang - database/migrations - tests + - config excludePaths: - database/migrations/2021_12_04_181200_refactor_models.php stubFiles: @@ -106,6 +107,12 @@ parameters: paths: - database/migrations + # Configs + - + message: '#Cast to bool is forbidden.#' + paths: + - config + # TESTS - message: '#Dynamic call to static method Illuminate\\Testing\\TestResponse::assert(Forbidden|ViewIs|Unauthorized|Ok|Status)#' diff --git a/resources/views/components/leftbar/disabled-leftbar-item.blade.php b/resources/views/components/leftbar/disabled-leftbar-item.blade.php new file mode 100644 index 00000000000..e9a894ac94f --- /dev/null +++ b/resources/views/components/leftbar/disabled-leftbar-item.blade.php @@ -0,0 +1,10 @@ +@props(['icon']) +
  • + + + + {{ $slot }} + + +
  • diff --git a/resources/views/components/leftbar/leftbar-item.blade.php b/resources/views/components/leftbar/leftbar-item.blade.php index d6133766d71..2cbfb608163 100644 --- a/resources/views/components/leftbar/leftbar-item.blade.php +++ b/resources/views/components/leftbar/leftbar-item.blade.php @@ -2,7 +2,7 @@
  • + class="p-2 py-1 cursor-pointer rounded-lg text-text-main-400 hover:text-text-main-100 whitespace-nowrap"> {{ $slot }} diff --git a/resources/views/livewire/components/left-menu.blade.php b/resources/views/livewire/components/left-menu.blade.php index fdb64445af1..57870d92f54 100644 --- a/resources/views/livewire/components/left-menu.blade.php +++ b/resources/views/livewire/components/left-menu.blade.php @@ -1,5 +1,5 @@