From 7f316d73ed3d99e5fc17bf7de43e125f48dfd6e9 Mon Sep 17 00:00:00 2001 From: alyaaghania Date: Wed, 15 Apr 2026 20:35:00 +0700 Subject: [PATCH] update sistem --- .editorconfig | 18 + .env.example | 65 + .gitignore | 24 + README.md | 59 + app/Http/Controllers/AuthController.php | 102 + app/Http/Controllers/Controller.php | 8 + app/Http/Controllers/GoogleAuthController.php | 49 + app/Http/Controllers/PrediksiController.php | 82 + app/Models/RiwayatPrediksi.php | 34 + app/Models/User.php | 48 + app/Providers/AppServiceProvider.php | 24 + artisan | 18 + bootstrap/app.php | 18 + bootstrap/cache/.gitignore | 2 + bootstrap/providers.php | 5 + composer.json | 87 + composer.lock | 8837 +++++++++++++++++ config/app.php | 126 + config/auth.php | 115 + config/cache.php | 117 + config/database.php | 183 + config/filesystems.php | 80 + config/logging.php | 132 + config/mail.php | 118 + config/queue.php | 129 + config/services.php | 44 + config/session.php | 217 + database/.gitignore | 1 + database/factories/UserFactory.php | 44 + .../0001_01_01_000000_create_users_table.php | 44 + .../0001_01_01_000001_create_cache_table.php | 35 + .../0001_01_01_000002_create_jobs_table.php | 57 + ...9_143648_create_riwayat_prediksi_table.php | 40 + ...add_indikasi_to_riwayat_prediksi_table.php | 28 + .../2026_04_04_165333_add_indikasi_fix.php | 22 + ...6_04_04_171541_change_indikasi_to_json.php | 25 + ...71315_modify_riwayat_prediksi_nullable.php | 24 + ...10_162926_add_google_id_to_users_table.php | 24 + database/seeders/DatabaseSeeder.php | 25 + package.json | 17 + phpunit.xml | 35 + public/.htaccess | 25 + public/animation/sehati-animation.html | 257 + public/css/layout.css | 267 + public/css/login.css | 256 + public/css/lupa-password.css | 235 + public/css/prediksi.css | 628 ++ public/css/register.css | 235 + public/css/riwayat.css | 206 + public/css/utama.css | 683 ++ public/favicon.ico | 0 public/img/favicon.ico | Bin 0 -> 15406 bytes public/img/kartun-sakit.png | Bin 0 -> 2220011 bytes public/img/lambung2.png | Bin 0 -> 2112647 bytes public/img/sehati-logo.png | Bin 0 -> 2089895 bytes public/img/sehati2-logo.png | Bin 0 -> 244687 bytes public/index.php | 20 + public/robots.txt | 2 + resources/css/app.css | 11 + resources/js/app.js | 1 + resources/js/bootstrap.js | 4 + resources/views/layouts/app.blade.php | 89 + resources/views/login/lupa-password.blade.php | 124 + resources/views/login/register.blade.php | 145 + resources/views/login/welcome.blade.php | 87 + .../views/tampilanutama/prediksi.blade.php | 435 + .../views/tampilanutama/riwayat.blade.php | 103 + resources/views/tampilanutama/utama.blade.php | 489 + routes/console.php | 8 + routes/web.php | 37 + storage/app/.gitignore | 4 + storage/app/private/.gitignore | 2 + storage/app/public/.gitignore | 2 + storage/framework/.gitignore | 9 + storage/framework/cache/.gitignore | 3 + storage/framework/cache/data/.gitignore | 2 + storage/framework/sessions/.gitignore | 2 + storage/framework/testing/.gitignore | 2 + storage/framework/views/.gitignore | 2 + storage/logs/.gitignore | 2 + tests/Feature/ExampleTest.php | 19 + tests/TestCase.php | 10 + tests/Unit/ExampleTest.php | 16 + vite.config.js | 18 + 84 files changed, 15602 insertions(+) create mode 100644 .editorconfig create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 README.md create mode 100644 app/Http/Controllers/AuthController.php create mode 100644 app/Http/Controllers/Controller.php create mode 100644 app/Http/Controllers/GoogleAuthController.php create mode 100644 app/Http/Controllers/PrediksiController.php create mode 100644 app/Models/RiwayatPrediksi.php create mode 100644 app/Models/User.php create mode 100644 app/Providers/AppServiceProvider.php create mode 100644 artisan create mode 100644 bootstrap/app.php create mode 100644 bootstrap/cache/.gitignore create mode 100644 bootstrap/providers.php create mode 100644 composer.json create mode 100644 composer.lock create mode 100644 config/app.php create mode 100644 config/auth.php create mode 100644 config/cache.php create mode 100644 config/database.php create mode 100644 config/filesystems.php create mode 100644 config/logging.php create mode 100644 config/mail.php create mode 100644 config/queue.php create mode 100644 config/services.php create mode 100644 config/session.php create mode 100644 database/.gitignore create mode 100644 database/factories/UserFactory.php create mode 100644 database/migrations/0001_01_01_000000_create_users_table.php create mode 100644 database/migrations/0001_01_01_000001_create_cache_table.php create mode 100644 database/migrations/0001_01_01_000002_create_jobs_table.php create mode 100644 database/migrations/2026_03_19_143648_create_riwayat_prediksi_table.php create mode 100644 database/migrations/2026_03_30_105535_add_indikasi_to_riwayat_prediksi_table.php create mode 100644 database/migrations/2026_04_04_165333_add_indikasi_fix.php create mode 100644 database/migrations/2026_04_04_171541_change_indikasi_to_json.php create mode 100644 database/migrations/2026_04_06_171315_modify_riwayat_prediksi_nullable.php create mode 100644 database/migrations/2026_04_10_162926_add_google_id_to_users_table.php create mode 100644 database/seeders/DatabaseSeeder.php create mode 100644 package.json create mode 100644 phpunit.xml create mode 100644 public/.htaccess create mode 100644 public/animation/sehati-animation.html create mode 100644 public/css/layout.css create mode 100644 public/css/login.css create mode 100644 public/css/lupa-password.css create mode 100644 public/css/prediksi.css create mode 100644 public/css/register.css create mode 100644 public/css/riwayat.css create mode 100644 public/css/utama.css create mode 100644 public/favicon.ico create mode 100644 public/img/favicon.ico create mode 100644 public/img/kartun-sakit.png create mode 100644 public/img/lambung2.png create mode 100644 public/img/sehati-logo.png create mode 100644 public/img/sehati2-logo.png create mode 100644 public/index.php create mode 100644 public/robots.txt create mode 100644 resources/css/app.css create mode 100644 resources/js/app.js create mode 100644 resources/js/bootstrap.js create mode 100644 resources/views/layouts/app.blade.php create mode 100644 resources/views/login/lupa-password.blade.php create mode 100644 resources/views/login/register.blade.php create mode 100644 resources/views/login/welcome.blade.php create mode 100644 resources/views/tampilanutama/prediksi.blade.php create mode 100644 resources/views/tampilanutama/riwayat.blade.php create mode 100644 resources/views/tampilanutama/utama.blade.php create mode 100644 routes/console.php create mode 100644 routes/web.php create mode 100644 storage/app/.gitignore create mode 100644 storage/app/private/.gitignore create mode 100644 storage/app/public/.gitignore create mode 100644 storage/framework/.gitignore create mode 100644 storage/framework/cache/.gitignore create mode 100644 storage/framework/cache/data/.gitignore create mode 100644 storage/framework/sessions/.gitignore create mode 100644 storage/framework/testing/.gitignore create mode 100644 storage/framework/views/.gitignore create mode 100644 storage/logs/.gitignore create mode 100644 tests/Feature/ExampleTest.php create mode 100644 tests/TestCase.php create mode 100644 tests/Unit/ExampleTest.php create mode 100644 vite.config.js diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..a186cd2 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,18 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.{yml,yaml}] +indent_size = 2 + +[compose.yaml] +indent_size = 4 diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..c0660ea --- /dev/null +++ b/.env.example @@ -0,0 +1,65 @@ +APP_NAME=Laravel +APP_ENV=local +APP_KEY= +APP_DEBUG=true +APP_URL=http://localhost + +APP_LOCALE=en +APP_FALLBACK_LOCALE=en +APP_FAKER_LOCALE=en_US + +APP_MAINTENANCE_DRIVER=file +# APP_MAINTENANCE_STORE=database + +# PHP_CLI_SERVER_WORKERS=4 + +BCRYPT_ROUNDS=12 + +LOG_CHANNEL=stack +LOG_STACK=single +LOG_DEPRECATIONS_CHANNEL=null +LOG_LEVEL=debug + +DB_CONNECTION=sqlite +# DB_HOST=127.0.0.1 +# DB_PORT=3306 +# DB_DATABASE=laravel +# DB_USERNAME=root +# DB_PASSWORD= + +SESSION_DRIVER=database +SESSION_LIFETIME=120 +SESSION_ENCRYPT=false +SESSION_PATH=/ +SESSION_DOMAIN=null + +BROADCAST_CONNECTION=log +FILESYSTEM_DISK=local +QUEUE_CONNECTION=database + +CACHE_STORE=database +# CACHE_PREFIX= + +MEMCACHED_HOST=127.0.0.1 + +REDIS_CLIENT=phpredis +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_MAILER=log +MAIL_SCHEME=null +MAIL_HOST=127.0.0.1 +MAIL_PORT=2525 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_FROM_ADDRESS="hello@example.com" +MAIL_FROM_NAME="${APP_NAME}" + +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION=us-east-1 +AWS_BUCKET= +AWS_USE_PATH_STYLE_ENDPOINT=false + +VITE_APP_NAME="${APP_NAME}" diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b71b1ea --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +*.log +.DS_Store +.env +.env.backup +.env.production +.phpactor.json +.phpunit.result.cache +/.fleet +/.idea +/.nova +/.phpunit.cache +/.vscode +/.zed +/auth.json +/node_modules +/public/build +/public/hot +/public/storage +/storage/*.key +/storage/pail +/vendor +Homestead.json +Homestead.yaml +Thumbs.db diff --git a/README.md b/README.md new file mode 100644 index 0000000..0165a77 --- /dev/null +++ b/README.md @@ -0,0 +1,59 @@ +

Laravel Logo

+ +

+Build Status +Total Downloads +Latest Stable Version +License +

+ +## About Laravel + +Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: + +- [Simple, fast routing engine](https://laravel.com/docs/routing). +- [Powerful dependency injection container](https://laravel.com/docs/container). +- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. +- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). +- Database agnostic [schema migrations](https://laravel.com/docs/migrations). +- [Robust background job processing](https://laravel.com/docs/queues). +- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). + +Laravel is accessible, powerful, and provides tools required for large, robust applications. + +## Learning Laravel + +Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. You can also check out [Laravel Learn](https://laravel.com/learn), where you will be guided through building a modern Laravel application. + +If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains thousands of video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. + +## Laravel Sponsors + +We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the [Laravel Partners program](https://partners.laravel.com). + +### Premium Partners + +- **[Vehikl](https://vehikl.com)** +- **[Tighten Co.](https://tighten.co)** +- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** +- **[64 Robots](https://64robots.com)** +- **[Curotec](https://www.curotec.com/services/technologies/laravel)** +- **[DevSquad](https://devsquad.com/hire-laravel-developers)** +- **[Redberry](https://redberry.international/laravel-development)** +- **[Active Logic](https://activelogic.com)** + +## Contributing + +Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). + +## Code of Conduct + +In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). + +## Security Vulnerabilities + +If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. + +## License + +The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php new file mode 100644 index 0000000..4fa5494 --- /dev/null +++ b/app/Http/Controllers/AuthController.php @@ -0,0 +1,102 @@ +validate([ + 'email' => 'required|email', + 'password' => 'required', + ]); + + $credentials = $request->only('email', 'password'); + $remember = $request->boolean('remember'); + + if (Auth::attempt($credentials, $remember)) { + $request->session()->regenerate(); + return redirect()->intended(route('halaman.prediksi')); + } + + return back() + ->withInput($request->only('email')) + ->with('error', 'Email atau password salah.'); + } + + // ── REGISTER ────────────────────────────────────── + public function showRegister() + { + return view('login.register'); + } + + public function register(Request $request) + { + $request->validate([ + 'email' => 'required|email|unique:users,email', + 'password' => 'required|min:8|confirmed', // confirmed = butuh field password_confirmation + ], [ + 'email.unique' => 'Email ini sudah terdaftar.', + 'password.min' => 'Password minimal 8 karakter.', + 'password.confirmed' => 'Konfirmasi password tidak cocok.', + ]); + + // Ambil nama dari bagian sebelum @ di email + $name = explode('@', $request->email)[0]; + + $user = User::create([ + 'name' => $name, + 'email' => $request->email, + 'password' => Hash::make($request->password), + ]); + + Auth::login($user); + + return redirect()->route('halaman.prediksi'); + } + + // ── LUPA PASSWORD ───────────────────────────────── + public function showLupaPassword() + { + return view('login.lupa-password'); + } + + public function resetPassword(Request $request) + { + $request->validate([ + 'email' => 'required|email|exists:users,email', + 'password' => 'required|min:8|confirmed', + ], [ + 'email.exists' => 'Email tidak ditemukan.', + 'password.min' => 'Password minimal 8 karakter.', + 'password.confirmed' => 'Konfirmasi password tidak cocok.', + ]); + + User::where('email', $request->email)->update([ + 'password' => Hash::make($request->password), + ]); + + return redirect()->route('login')->with('success', 'Password berhasil diubah. Silakan masuk.'); + } + + // ── LOGOUT ──────────────────────────────────────── + public function logout(Request $request) + { + Auth::logout(); + $request->session()->invalidate(); + $request->session()->regenerateToken(); + return redirect('/'); + } +} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..8677cd5 --- /dev/null +++ b/app/Http/Controllers/Controller.php @@ -0,0 +1,8 @@ +with(['prompt' => 'select_account']) + ->redirect(); + } + + // Callback setelah login Google berhasil + public function callback() + { + try { + $googleUser = Socialite::driver('google')->user(); + + $user = User::where('email', $googleUser->getEmail())->first(); + + if ($user) { + // Email sudah ada, update google_id saja + $user->update(['google_id' => $googleUser->getId()]); + } else { + // Email baru, buat akun baru + $user = User::create([ + 'name' => $googleUser->getName(), + 'email' => $googleUser->getEmail(), + 'google_id' => $googleUser->getId(), + 'password' => null, + ]); + } + + Auth::login($user); + + return redirect()->route('halaman.prediksi'); + + } catch (\Exception $e) { + return redirect()->route('login') + ->with('error', $e->getMessage()); + } + } +} diff --git a/app/Http/Controllers/PrediksiController.php b/app/Http/Controllers/PrediksiController.php new file mode 100644 index 0000000..758b80d --- /dev/null +++ b/app/Http/Controllers/PrediksiController.php @@ -0,0 +1,82 @@ +all(); + $gejala = $request->gejala ?? []; + + if (count($gejala) < 2) { + return redirect()->back()->with('error', 'Gejala yang dimasukkan belum cukup untuk melakukan prediksi penyakit.'); + } + + $response = Http::post('https://alyaghania.pythonanywhere.com/predict', [ + "Smoking_Status" => $request->merokok == "ya" ? 1 : 0, + "Alcohol_Use" => $request->alkohol == "ya" ? 1 : 0, + "Stress_Level" => $request->stres == "ya" ? 1 : 0, + + "Abdominal_Pain" => in_array("g1", $gejala) ? 1 : 0, + "Bloating" => in_array("g2", $gejala) ? 1 : 0, + "Heartburn" => in_array("g3", $gejala) ? 1 : 0, + "Rectal_Bleeding"=> in_array("g4", $gejala) ? 1 : 0, + "Appetite_Loss" => in_array("g5", $gejala) ? 1 : 0, + "Weight_Loss" => in_array("g6", $gejala) ? 1 : 0, + + "NSAID_Use" => $request->obat == "ya" ? 1 : 0, + ]); + + $hasil = $response->json()['hasil_prediksi'] ?? "Tidak ada hasil"; + $indikasi = $response->json()['indikasi_lain'] ?? []; + + $mapping = [ + 'GASTRITIS' => 'Gastritis', + 'GERD' => 'Gerd', + 'DISPEPSIA' => 'Dispepsia', + ]; + $hasil = $mapping[$hasil] ?? $hasil; + + // Simpan ke database + if ($hasil != "Tidak ada hasil" && Auth::check()) { + RiwayatPrediksi::create([ + 'user_id' => Auth::id(), + 'nama' => Auth::user()->name, // ambil dari akun + 'jenis_kelamin' => null, + 'umur' => null, + 'gejala' => $gejala, + 'stres' => $request->stres, + 'merokok' => $request->merokok, + 'alkohol' => $request->alkohol, + 'obat' => $request->obat, + 'hasil' => $hasil, + 'indikasi' => $indikasi + ]); + } + + return view('tampilanutama.prediksi', compact('hasil', 'data', 'indikasi')); + } + + // riwayat prediksi + public function riwayat() + { + $riwayat = RiwayatPrediksi::where('user_id', Auth::id()) + ->orderBy('created_at', 'desc') + ->get(); + + return view('tampilanutama.riwayat', compact('riwayat')); + } +} diff --git a/app/Models/RiwayatPrediksi.php b/app/Models/RiwayatPrediksi.php new file mode 100644 index 0000000..a00953a --- /dev/null +++ b/app/Models/RiwayatPrediksi.php @@ -0,0 +1,34 @@ + 'array', + 'indikasi' => 'array', // otomatis convert JSON ke array + ]; + + public function user() + { + return $this->belongsTo(User::class); + } +} diff --git a/app/Models/User.php b/app/Models/User.php new file mode 100644 index 0000000..749c7b7 --- /dev/null +++ b/app/Models/User.php @@ -0,0 +1,48 @@ + */ + use HasFactory, Notifiable; + + /** + * The attributes that are mass assignable. + * + * @var list + */ + protected $fillable = [ + 'name', + 'email', + 'password', + ]; + + /** + * The attributes that should be hidden for serialization. + * + * @var list + */ + protected $hidden = [ + 'password', + 'remember_token', + ]; + + /** + * Get the attributes that should be cast. + * + * @return array + */ + protected function casts(): array + { + return [ + 'email_verified_at' => 'datetime', + 'password' => 'hashed', + ]; + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php new file mode 100644 index 0000000..452e6b6 --- /dev/null +++ b/app/Providers/AppServiceProvider.php @@ -0,0 +1,24 @@ +handleCommand(new ArgvInput); + +exit($status); diff --git a/bootstrap/app.php b/bootstrap/app.php new file mode 100644 index 0000000..c183276 --- /dev/null +++ b/bootstrap/app.php @@ -0,0 +1,18 @@ +withRouting( + web: __DIR__.'/../routes/web.php', + commands: __DIR__.'/../routes/console.php', + health: '/up', + ) + ->withMiddleware(function (Middleware $middleware): void { + // + }) + ->withExceptions(function (Exceptions $exceptions): void { + // + })->create(); diff --git a/bootstrap/cache/.gitignore b/bootstrap/cache/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/bootstrap/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/bootstrap/providers.php b/bootstrap/providers.php new file mode 100644 index 0000000..38b258d --- /dev/null +++ b/bootstrap/providers.php @@ -0,0 +1,5 @@ +=5.0.0" + }, + "require-dev": { + "doctrine/dbal": "^4.0.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/3.2.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": "2024-02-09T16:56:22+00:00" + }, + { + "name": "dflydev/dot-access-data", + "version": "v3.0.3", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", + "scrutinizer/ocular": "1.6.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Dflydev\\DotAccessData\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dragonfly Development Inc.", + "email": "info@dflydev.com", + "homepage": "http://dflydev.com" + }, + { + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" + }, + { + "name": "Carlos Frutos", + "email": "carlos@kiwing.it", + "homepage": "https://github.com/cfrutos" + }, + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com" + } + ], + "description": "Given a deep data structure, access data by dot notation.", + "homepage": "https://github.com/dflydev/dflydev-dot-access-data", + "keywords": [ + "access", + "data", + "dot", + "notation" + ], + "support": { + "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.3" + }, + "time": "2024-07-08T12:26:09+00:00" + }, + { + "name": "doctrine/inflector", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/6d6c96277ea252fc1304627204c3d5e6e15faa3b", + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^12.0 || ^13.0", + "phpstan/phpstan": "^1.12 || ^2.0", + "phpstan/phpstan-phpunit": "^1.4 || ^2.0", + "phpstan/phpstan-strict-rules": "^1.6 || ^2.0", + "phpunit/phpunit": "^8.5 || ^12.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "src" + } + }, + "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": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.1.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2025-08-10T19:31:58+00:00" + }, + { + "name": "doctrine/lexer", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^5.21" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "src" + } + }, + "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": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/3.0.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2024-02-05T11:56:58+00:00" + }, + { + "name": "dragonmantank/cron-expression", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "d61a8a9604ec1f8c3d150d09db6ce98b32675013" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/d61a8a9604ec1f8c3d150d09db6ce98b32675013", + "reference": "d61a8a9604ec1f8c3d150d09db6ce98b32675013", + "shasum": "" + }, + "require": { + "php": "^8.2|^8.3|^8.4|^8.5" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.32|^2.1.31", + "phpunit/phpunit": "^8.5.48|^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "support": { + "issues": "https://github.com/dragonmantank/cron-expression/issues", + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.6.0" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2025-10-31T18:51:33+00:00" + }, + { + "name": "egulias/email-validator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" + }, + "require-dev": { + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Egulias\\EmailValidator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2025-03-06T22:45:56+00:00" + }, + { + "name": "firebase/php-jwt", + "version": "v7.0.5", + "source": { + "type": "git", + "url": "https://github.com/googleapis/php-jwt.git", + "reference": "47ad26bab5e7c70ae8a6f08ed25ff83631121380" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/googleapis/php-jwt/zipball/47ad26bab5e7c70ae8a6f08ed25ff83631121380", + "reference": "47ad26bab5e7c70ae8a6f08ed25ff83631121380", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "guzzlehttp/guzzle": "^7.4", + "phpfastcache/phpfastcache": "^9.2", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "psr/cache": "^2.0||^3.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0" + }, + "suggest": { + "ext-sodium": "Support EdDSA (Ed25519) signatures", + "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" + }, + "type": "library", + "autoload": { + "psr-4": { + "Firebase\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" + }, + { + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" + } + ], + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/firebase/php-jwt", + "keywords": [ + "jwt", + "php" + ], + "support": { + "issues": "https://github.com/googleapis/php-jwt/issues", + "source": "https://github.com/googleapis/php-jwt/tree/v7.0.5" + }, + "time": "2026-04-01T20:38:03+00:00" + }, + { + "name": "fruitcake/php-cors", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/php-cors.git", + "reference": "38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379", + "reference": "38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379", + "shasum": "" + }, + "require": { + "php": "^8.1", + "symfony/http-foundation": "^5.4|^6.4|^7.3|^8" + }, + "require-dev": { + "phpstan/phpstan": "^2", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" + }, + { + "name": "Barryvdh", + "email": "barryvdh@gmail.com" + } + ], + "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", + "homepage": "https://github.com/fruitcake/php-cors", + "keywords": [ + "cors", + "laravel", + "symfony" + ], + "support": { + "issues": "https://github.com/fruitcake/php-cors/issues", + "source": "https://github.com/fruitcake/php-cors/tree/v1.4.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2025-12-03T09:33:47+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.1.4", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/e01f4a821471308ba86aa202fed6698b6b695e3b", + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.5" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.41 || ^9.6.22 || ^10.5.45 || ^11.5.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.4" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2025-12-27T19:43:20+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.10.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^2.3", + "guzzlehttp/psr7": "^2.8", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-curl": "*", + "guzzle/client-integration-tests": "3.0.2", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.39 || ^9.6.20", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "psr-18", + "psr-7", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.10.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" + } + ], + "time": "2025-08-23T22:36:01+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "481557b130ef3790cf82b713667b43030dc9c957" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957", + "reference": "481557b130ef3790cf82b713667b43030dc9c957", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.44 || ^9.6.25" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/2.3.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2025-08-22T14:34:08+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.8.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "21dc724a0583619cd1652f673303492272778051" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051", + "reference": "21dc724a0583619cd1652f673303492272778051", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "0.9.0", + "phpunit/phpunit": "^8.5.44 || ^9.6.25" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.8.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2025-08-23T21:21:41+00:00" + }, + { + "name": "guzzlehttp/uri-template", + "version": "v1.0.5", + "source": { + "type": "git", + "url": "https://github.com/guzzle/uri-template.git", + "reference": "4f4bbd4e7172148801e76e3decc1e559bdee34e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/4f4bbd4e7172148801e76e3decc1e559bdee34e1", + "reference": "4f4bbd4e7172148801e76e3decc1e559bdee34e1", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-php80": "^1.24" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.44 || ^9.6.25", + "uri-template/tests": "1.0.0" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\UriTemplate\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + } + ], + "description": "A polyfill class for uri_template of PHP", + "keywords": [ + "guzzlehttp", + "uri-template" + ], + "support": { + "issues": "https://github.com/guzzle/uri-template/issues", + "source": "https://github.com/guzzle/uri-template/tree/v1.0.5" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template", + "type": "tidelift" + } + ], + "time": "2025-08-22T14:27:06+00:00" + }, + { + "name": "laravel/framework", + "version": "v12.51.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "ce4de3feb211e47c4f959d309ccf8a2733b1bc16" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/ce4de3feb211e47c4f959d309ccf8a2733b1bc16", + "reference": "ce4de3feb211e47c4f959d309ccf8a2733b1bc16", + "shasum": "" + }, + "require": { + "brick/math": "^0.11|^0.12|^0.13|^0.14", + "composer-runtime-api": "^2.2", + "doctrine/inflector": "^2.0.5", + "dragonmantank/cron-expression": "^3.4", + "egulias/email-validator": "^3.2.1|^4.0", + "ext-ctype": "*", + "ext-filter": "*", + "ext-hash": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "ext-session": "*", + "ext-tokenizer": "*", + "fruitcake/php-cors": "^1.3", + "guzzlehttp/guzzle": "^7.8.2", + "guzzlehttp/uri-template": "^1.0", + "laravel/prompts": "^0.3.0", + "laravel/serializable-closure": "^1.3|^2.0", + "league/commonmark": "^2.7", + "league/flysystem": "^3.25.1", + "league/flysystem-local": "^3.25.1", + "league/uri": "^7.5.1", + "monolog/monolog": "^3.0", + "nesbot/carbon": "^3.8.4", + "nunomaduro/termwind": "^2.0", + "php": "^8.2", + "psr/container": "^1.1.1|^2.0.1", + "psr/log": "^1.0|^2.0|^3.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "ramsey/uuid": "^4.7", + "symfony/console": "^7.2.0", + "symfony/error-handler": "^7.2.0", + "symfony/finder": "^7.2.0", + "symfony/http-foundation": "^7.2.0", + "symfony/http-kernel": "^7.2.0", + "symfony/mailer": "^7.2.0", + "symfony/mime": "^7.2.0", + "symfony/polyfill-php83": "^1.33", + "symfony/polyfill-php84": "^1.33", + "symfony/polyfill-php85": "^1.33", + "symfony/process": "^7.2.0", + "symfony/routing": "^7.2.0", + "symfony/uid": "^7.2.0", + "symfony/var-dumper": "^7.2.0", + "tijsverkoyen/css-to-inline-styles": "^2.2.5", + "vlucas/phpdotenv": "^5.6.1", + "voku/portable-ascii": "^2.0.2" + }, + "conflict": { + "tightenco/collect": "<5.5.33" + }, + "provide": { + "psr/container-implementation": "1.1|2.0", + "psr/log-implementation": "1.0|2.0|3.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/collections": "self.version", + "illuminate/concurrency": "self.version", + "illuminate/conditionable": "self.version", + "illuminate/config": "self.version", + "illuminate/console": "self.version", + "illuminate/container": "self.version", + "illuminate/contracts": "self.version", + "illuminate/cookie": "self.version", + "illuminate/database": "self.version", + "illuminate/encryption": "self.version", + "illuminate/events": "self.version", + "illuminate/filesystem": "self.version", + "illuminate/hashing": "self.version", + "illuminate/http": "self.version", + "illuminate/json-schema": "self.version", + "illuminate/log": "self.version", + "illuminate/macroable": "self.version", + "illuminate/mail": "self.version", + "illuminate/notifications": "self.version", + "illuminate/pagination": "self.version", + "illuminate/pipeline": "self.version", + "illuminate/process": "self.version", + "illuminate/queue": "self.version", + "illuminate/redis": "self.version", + "illuminate/reflection": "self.version", + "illuminate/routing": "self.version", + "illuminate/session": "self.version", + "illuminate/support": "self.version", + "illuminate/testing": "self.version", + "illuminate/translation": "self.version", + "illuminate/validation": "self.version", + "illuminate/view": "self.version", + "spatie/once": "*" + }, + "require-dev": { + "ably/ably-php": "^1.0", + "aws/aws-sdk-php": "^3.322.9", + "ext-gmp": "*", + "fakerphp/faker": "^1.24", + "guzzlehttp/promises": "^2.0.3", + "guzzlehttp/psr7": "^2.4", + "laravel/pint": "^1.18", + "league/flysystem-aws-s3-v3": "^3.25.1", + "league/flysystem-ftp": "^3.25.1", + "league/flysystem-path-prefixing": "^3.25.1", + "league/flysystem-read-only": "^3.25.1", + "league/flysystem-sftp-v3": "^3.25.1", + "mockery/mockery": "^1.6.10", + "opis/json-schema": "^2.4.1", + "orchestra/testbench-core": "^10.9.0", + "pda/pheanstalk": "^5.0.6|^7.0.0", + "php-http/discovery": "^1.15", + "phpstan/phpstan": "^2.0", + "phpunit/phpunit": "^10.5.35|^11.5.3|^12.0.1", + "predis/predis": "^2.3|^3.0", + "resend/resend-php": "^0.10.0|^1.0", + "symfony/cache": "^7.2.0", + "symfony/http-client": "^7.2.0", + "symfony/psr-http-message-bridge": "^7.2.0", + "symfony/translation": "^7.2.0" + }, + "suggest": { + "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.322.9).", + "brianium/paratest": "Required to run tests in parallel (^7.0|^8.0).", + "ext-apcu": "Required to use the APC cache driver.", + "ext-fileinfo": "Required to use the Filesystem class.", + "ext-ftp": "Required to use the Flysystem FTP driver.", + "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", + "ext-memcached": "Required to use the memcache cache driver.", + "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.", + "ext-pdo": "Required to use all database features.", + "ext-posix": "Required to use all features of the queue worker.", + "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0|^6.0).", + "fakerphp/faker": "Required to generate fake data using the fake() helper (^1.23).", + "filp/whoops": "Required for friendly error pages in development (^2.14.3).", + "laravel/tinker": "Required to use the tinker console command (^2.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.25.1).", + "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.25.1).", + "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.25.1).", + "league/flysystem-read-only": "Required to use read-only disks (^3.25.1)", + "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.25.1).", + "mockery/mockery": "Required to use mocking (^1.6).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^5.0).", + "php-http/discovery": "Required to use PSR-7 bridging features (^1.15).", + "phpunit/phpunit": "Required to use assertions and run tests (^10.5.35|^11.5.3|^12.0.1).", + "predis/predis": "Required to use the predis connector (^2.3|^3.0).", + "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", + "resend/resend-php": "Required to enable support for the Resend mail transport (^0.10.0|^1.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^7.2).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^7.2).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^7.2).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^7.2).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^7.2).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^7.2)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "12.x-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Collections/functions.php", + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", + "src/Illuminate/Filesystem/functions.php", + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Log/functions.php", + "src/Illuminate/Reflection/helpers.php", + "src/Illuminate/Support/functions.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/", + "src/Illuminate/Conditionable/", + "src/Illuminate/Reflection/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Laravel Framework.", + "homepage": "https://laravel.com", + "keywords": [ + "framework", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2026-02-10T18:20:19+00:00" + }, + { + "name": "laravel/prompts", + "version": "v0.3.13", + "source": { + "type": "git", + "url": "https://github.com/laravel/prompts.git", + "reference": "ed8c466571b37e977532fb2fd3c272c784d7050d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/prompts/zipball/ed8c466571b37e977532fb2fd3c272c784d7050d", + "reference": "ed8c466571b37e977532fb2fd3c272c784d7050d", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.2", + "ext-mbstring": "*", + "php": "^8.1", + "symfony/console": "^6.2|^7.0|^8.0" + }, + "conflict": { + "illuminate/console": ">=10.17.0 <10.25.0", + "laravel/framework": ">=10.17.0 <10.25.0" + }, + "require-dev": { + "illuminate/collections": "^10.0|^11.0|^12.0|^13.0", + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3|^3.4|^4.0", + "phpstan/phpstan": "^1.12.28", + "phpstan/phpstan-mockery": "^1.1.3" + }, + "suggest": { + "ext-pcntl": "Required for the spinner to be animated." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.3.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Laravel\\Prompts\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Add beautiful and user-friendly forms to your command-line applications.", + "support": { + "issues": "https://github.com/laravel/prompts/issues", + "source": "https://github.com/laravel/prompts/tree/v0.3.13" + }, + "time": "2026-02-06T12:17:10+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v2.0.9", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "8f631589ab07b7b52fead814965f5a800459cb3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/8f631589ab07b7b52fead814965f5a800459cb3e", + "reference": "8f631589ab07b7b52fead814965f5a800459cb3e", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "illuminate/support": "^10.0|^11.0|^12.0|^13.0", + "nesbot/carbon": "^2.67|^3.0", + "pestphp/pest": "^2.36|^3.0|^4.0", + "phpstan/phpstan": "^2.0", + "symfony/var-dumper": "^6.2.0|^7.0.0|^8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\SerializableClosure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" + } + ], + "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", + "keywords": [ + "closure", + "laravel", + "serializable" + ], + "support": { + "issues": "https://github.com/laravel/serializable-closure/issues", + "source": "https://github.com/laravel/serializable-closure" + }, + "time": "2026-02-03T06:55:34+00:00" + }, + { + "name": "laravel/socialite", + "version": "v5.26.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/socialite.git", + "reference": "db6ec2ee967b7f06412c3a0cf1daaf072f4752a4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/socialite/zipball/db6ec2ee967b7f06412c3a0cf1daaf072f4752a4", + "reference": "db6ec2ee967b7f06412c3a0cf1daaf072f4752a4", + "shasum": "" + }, + "require": { + "ext-json": "*", + "firebase/php-jwt": "^6.4|^7.0", + "guzzlehttp/guzzle": "^6.0|^7.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0|^13.0", + "illuminate/http": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0|^13.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0|^13.0", + "league/oauth1-client": "^1.11", + "php": "^7.2|^8.0", + "phpseclib/phpseclib": "^3.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "orchestra/testbench": "^4.18|^5.20|^6.47|^7.55|^8.36|^9.15|^10.8|^11.0", + "phpstan/phpstan": "^1.12.23", + "phpunit/phpunit": "^8.0|^9.3|^10.4|^11.5|^12.0" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "Socialite": "Laravel\\Socialite\\Facades\\Socialite" + }, + "providers": [ + "Laravel\\Socialite\\SocialiteServiceProvider" + ] + }, + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\Socialite\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel wrapper around OAuth 1 & OAuth 2 libraries.", + "homepage": "https://laravel.com", + "keywords": [ + "laravel", + "oauth" + ], + "support": { + "issues": "https://github.com/laravel/socialite/issues", + "source": "https://github.com/laravel/socialite" + }, + "time": "2026-03-29T14:50:53+00:00" + }, + { + "name": "laravel/tinker", + "version": "v2.11.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "c9f80cc835649b5c1842898fb043f8cc098dd741" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/c9f80cc835649b5c1842898fb043f8cc098dd741", + "reference": "c9f80cc835649b5c1842898fb043f8cc098dd741", + "shasum": "" + }, + "require": { + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "php": "^7.2.5|^8.0", + "psy/psysh": "^0.11.1|^0.12.0", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0|^8.0" + }, + "require-dev": { + "mockery/mockery": "~1.3.3|^1.4.2", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.5.8|^9.3.3|^10.0" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0)." + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Tinker\\TinkerServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Tinker\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Powerful REPL for the Laravel framework.", + "keywords": [ + "REPL", + "Tinker", + "laravel", + "psysh" + ], + "support": { + "issues": "https://github.com/laravel/tinker/issues", + "source": "https://github.com/laravel/tinker/tree/v2.11.1" + }, + "time": "2026-02-06T14:12:35+00:00" + }, + { + "name": "league/commonmark", + "version": "2.8.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/4efa10c1e56488e658d10adf7b7b7dcd19940bfb", + "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "league/config": "^1.1.1", + "php": "^7.4 || ^8.0", + "psr/event-dispatcher": "^1.0", + "symfony/deprecation-contracts": "^2.1 || ^3.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "cebe/markdown": "^1.0", + "commonmark/cmark": "0.31.1", + "commonmark/commonmark.js": "0.31.1", + "composer/package-versions-deprecated": "^1.8", + "embed/embed": "^4.4", + "erusev/parsedown": "^1.0", + "ext-json": "*", + "github/gfm": "0.29.0", + "michelf/php-markdown": "^1.4 || ^2.0", + "nyholm/psr7": "^1.5", + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", + "scrutinizer/ocular": "^1.8.1", + "symfony/finder": "^5.3 | ^6.0 | ^7.0", + "symfony/process": "^5.4 | ^6.0 | ^7.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0", + "unleashedtech/php-coding-standard": "^3.1.1", + "vimeo/psalm": "^4.24.0 || ^5.0.0 || ^6.0.0" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.9-dev" + } + }, + "autoload": { + "psr-4": { + "League\\CommonMark\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", + "homepage": "https://commonmark.thephpleague.com", + "keywords": [ + "commonmark", + "flavored", + "gfm", + "github", + "github-flavored", + "markdown", + "md", + "parser" + ], + "support": { + "docs": "https://commonmark.thephpleague.com/", + "forum": "https://github.com/thephpleague/commonmark/discussions", + "issues": "https://github.com/thephpleague/commonmark/issues", + "rss": "https://github.com/thephpleague/commonmark/releases.atom", + "source": "https://github.com/thephpleague/commonmark" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/commonmark", + "type": "tidelift" + } + ], + "time": "2025-11-26T21:48:24+00:00" + }, + { + "name": "league/config", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/config.git", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^3.0.1", + "nette/schema": "^1.2", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Config\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Define configuration arrays with strict schemas and access values with dot notation", + "homepage": "https://config.thephpleague.com", + "keywords": [ + "array", + "config", + "configuration", + "dot", + "dot-access", + "nested", + "schema" + ], + "support": { + "docs": "https://config.thephpleague.com/", + "issues": "https://github.com/thephpleague/config/issues", + "rss": "https://github.com/thephpleague/config/releases.atom", + "source": "https://github.com/thephpleague/config" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + } + ], + "time": "2022-12-11T20:36:23+00:00" + }, + { + "name": "league/flysystem", + "version": "3.31.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "1717e0b3642b0df65ecb0cc89cdd99fa840672ff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/1717e0b3642b0df65ecb0cc89cdd99fa840672ff", + "reference": "1717e0b3642b0df65ecb0cc89cdd99fa840672ff", + "shasum": "" + }, + "require": { + "league/flysystem-local": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "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", + "phpseclib/phpseclib": "3.0.15", + "symfony/http-client": "<5.2" + }, + "require-dev": { + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", + "aws/aws-sdk-php": "^3.295.10", + "composer/semver": "^3.0", + "ext-fileinfo": "*", + "ext-ftp": "*", + "ext-mongodb": "^1.3|^2", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.5", + "google/cloud-storage": "^1.23", + "guzzlehttp/psr7": "^2.6", + "microsoft/azure-storage-blob": "^1.1", + "mongodb/mongodb": "^1.2|^2", + "phpseclib/phpseclib": "^3.0.36", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5.11|^10.0", + "sabre/dav": "^4.6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "File storage abstraction for PHP", + "keywords": [ + "WebDAV", + "aws", + "cloud", + "file", + "files", + "filesystem", + "filesystems", + "ftp", + "s3", + "sftp", + "storage" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/3.31.0" + }, + "time": "2026-01-23T15:38:47+00:00" + }, + { + "name": "league/flysystem-local", + "version": "3.31.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "2f669db18a4c20c755c2bb7d3a7b0b2340488079" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/2f669db18a4c20c755c2bb7d3a7b0b2340488079", + "reference": "2f669db18a4c20c755c2bb7d3a7b0b2340488079", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "league/flysystem": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\Local\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Local filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "file", + "files", + "filesystem", + "local" + ], + "support": { + "source": "https://github.com/thephpleague/flysystem-local/tree/3.31.0" + }, + "time": "2026-01-23T15:30:45+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.16.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/2d6702ff215bf922936ccc1ad31007edc76451b9", + "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "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 || ^10.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "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.16.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2024-09-21T08:32:55+00:00" + }, + { + "name": "league/oauth1-client", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/oauth1-client.git", + "reference": "f9c94b088837eb1aae1ad7c4f23eb65cc6993055" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/oauth1-client/zipball/f9c94b088837eb1aae1ad7c4f23eb65cc6993055", + "reference": "f9c94b088837eb1aae1ad7c4f23eb65cc6993055", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-openssl": "*", + "guzzlehttp/guzzle": "^6.0|^7.0", + "guzzlehttp/psr7": "^1.7|^2.0", + "php": ">=7.1||>=8.0" + }, + "require-dev": { + "ext-simplexml": "*", + "friendsofphp/php-cs-fixer": "^2.17", + "mockery/mockery": "^1.3.3", + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5||9.5" + }, + "suggest": { + "ext-simplexml": "For decoding XML-based responses." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev", + "dev-develop": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "League\\OAuth1\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Corlett", + "email": "bencorlett@me.com", + "homepage": "http://www.webcomm.com.au", + "role": "Developer" + } + ], + "description": "OAuth 1.0 Client Library", + "keywords": [ + "Authentication", + "SSO", + "authorization", + "bitbucket", + "identity", + "idp", + "oauth", + "oauth1", + "single sign on", + "trello", + "tumblr", + "twitter" + ], + "support": { + "issues": "https://github.com/thephpleague/oauth1-client/issues", + "source": "https://github.com/thephpleague/oauth1-client/tree/v1.11.0" + }, + "time": "2024-12-10T19:59:05+00:00" + }, + { + "name": "league/uri", + "version": "7.8.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri.git", + "reference": "4436c6ec8d458e4244448b069cc572d088230b76" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/4436c6ec8d458e4244448b069cc572d088230b76", + "reference": "4436c6ec8d458e4244448b069cc572d088230b76", + "shasum": "" + }, + "require": { + "league/uri-interfaces": "^7.8", + "php": "^8.1", + "psr/http-factory": "^1" + }, + "conflict": { + "league/uri-schemes": "^1.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-dom": "to convert the URI into an HTML anchor tag", + "ext-fileinfo": "to create Data URI from file contennts", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "ext-uri": "to use the PHP native URI class", + "jeremykendall/php-domain-parser": "to further parse the URI host and resolve its Public Suffix and Top Level Domain", + "league/uri-components": "to provide additional tools to manipulate URI objects components", + "league/uri-polyfill": "to backport the PHP URI extension for older versions of PHP", + "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "URI manipulation library", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "URN", + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc2141", + "rfc3986", + "rfc3987", + "rfc6570", + "rfc8141", + "uri", + "uri-template", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri/tree/7.8.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2026-01-14T17:24:56+00:00" + }, + { + "name": "league/uri-interfaces", + "version": "7.8.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "c5c5cd056110fc8afaba29fa6b72a43ced42acd4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/c5c5cd056110fc8afaba29fa6b72a43ced42acd4", + "reference": "c5c5cd056110fc8afaba29fa6b72a43ced42acd4", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.1", + "psr/http-message": "^1.1 || ^2.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "Common tools for parsing and resolving RFC3987/RFC3986 URI", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.8.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2026-01-15T06:54:53+00:00" + }, + { + "name": "monolog/monolog", + "version": "3.10.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/b321dd6749f0bf7189444158a3ce785cc16d69b0", + "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8 || ^2.0", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "php-console/php-console": "^3.1.8", + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.17 || ^11.0.7", + "predis/predis": "^1.1 || ^2", + "rollbar/rollbar": "^4.0", + "ruflin/elastica": "^7 || ^8", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/3.10.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2026-01-02T08:56:05+00:00" + }, + { + "name": "nesbot/carbon", + "version": "3.11.1", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon.git", + "reference": "f438fcc98f92babee98381d399c65336f3a3827f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/f438fcc98f92babee98381d399c65336f3a3827f", + "reference": "f438fcc98f92babee98381d399c65336f3a3827f", + "shasum": "" + }, + "require": { + "carbonphp/carbon-doctrine-types": "<100.0", + "ext-json": "*", + "php": "^8.1", + "psr/clock": "^1.0", + "symfony/clock": "^6.3.12 || ^7.0 || ^8.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/translation": "^4.4.18 || ^5.2.1 || ^6.0 || ^7.0 || ^8.0" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "doctrine/dbal": "^3.6.3 || ^4.0", + "doctrine/orm": "^2.15.2 || ^3.0", + "friendsofphp/php-cs-fixer": "^v3.87.1", + "kylekatarnls/multi-tester": "^2.5.3", + "phpmd/phpmd": "^2.15.0", + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^2.1.22", + "phpunit/phpunit": "^10.5.53", + "squizlabs/php_codesniffer": "^3.13.4 || ^4.0.0" + }, + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev", + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "https://markido.com" + }, + { + "name": "kylekatarnls", + "homepage": "https://github.com/kylekatarnls" + } + ], + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "https://carbonphp.github.io/carbon/", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "docs": "https://carbonphp.github.io/carbon/guide/getting-started/introduction.html", + "issues": "https://github.com/CarbonPHP/carbon/issues", + "source": "https://github.com/CarbonPHP/carbon" + }, + "funding": [ + { + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" + }, + { + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", + "type": "tidelift" + } + ], + "time": "2026-01-29T09:26:29+00:00" + }, + { + "name": "nette/schema", + "version": "v1.3.4", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "086497a2f34b82fede9b5a41cc8e131d087cd8f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/086497a2f34b82fede9b5a41cc8e131d087cd8f7", + "reference": "086497a2f34b82fede9b5a41cc8e131d087cd8f7", + "shasum": "" + }, + "require": { + "nette/utils": "^4.0", + "php": "8.1 - 8.5" + }, + "require-dev": { + "nette/tester": "^2.6", + "phpstan/phpstan": "^2.0@stable", + "tracy/tracy": "^2.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Nette\\": "src" + }, + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "📐 Nette Schema: validating data structures against a given Schema.", + "homepage": "https://nette.org", + "keywords": [ + "config", + "nette" + ], + "support": { + "issues": "https://github.com/nette/schema/issues", + "source": "https://github.com/nette/schema/tree/v1.3.4" + }, + "time": "2026-02-08T02:54:00+00:00" + }, + { + "name": "nette/utils", + "version": "v4.1.2", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "f76b5dc3d6c6d3043c8d937df2698515b99cbaf5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/f76b5dc3d6c6d3043c8d937df2698515b99cbaf5", + "reference": "f76b5dc3d6c6d3043c8d937df2698515b99cbaf5", + "shasum": "" + }, + "require": { + "php": "8.2 - 8.5" + }, + "conflict": { + "nette/finder": "<3", + "nette/schema": "<1.2.2" + }, + "require-dev": { + "jetbrains/phpstorm-attributes": "^1.2", + "nette/tester": "^2.5", + "phpstan/phpstan": "^2.0@stable", + "tracy/tracy": "^2.9" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", + "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()" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.1-dev" + } + }, + "autoload": { + "psr-4": { + "Nette\\": "src" + }, + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", + "keywords": [ + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "support": { + "issues": "https://github.com/nette/utils/issues", + "source": "https://github.com/nette/utils/tree/v4.1.2" + }, + "time": "2026-02-03T17:21:09+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v5.7.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0" + }, + "time": "2025-12-06T11:56:16+00:00" + }, + { + "name": "nunomaduro/termwind", + "version": "v2.3.3", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/termwind.git", + "reference": "6fb2a640ff502caace8e05fd7be3b503a7e1c017" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/6fb2a640ff502caace8e05fd7be3b503a7e1c017", + "reference": "6fb2a640ff502caace8e05fd7be3b503a7e1c017", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^8.2", + "symfony/console": "^7.3.6" + }, + "require-dev": { + "illuminate/console": "^11.46.1", + "laravel/pint": "^1.25.1", + "mockery/mockery": "^1.6.12", + "pestphp/pest": "^2.36.0 || ^3.8.4 || ^4.1.3", + "phpstan/phpstan": "^1.12.32", + "phpstan/phpstan-strict-rules": "^1.6.2", + "symfony/var-dumper": "^7.3.5", + "thecodingmachine/phpstan-strict-rules": "^1.0.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Termwind\\Laravel\\TermwindServiceProvider" + ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "files": [ + "src/Functions.php" + ], + "psr-4": { + "Termwind\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Its like Tailwind CSS, but for the console.", + "keywords": [ + "cli", + "console", + "css", + "package", + "php", + "style" + ], + "support": { + "issues": "https://github.com/nunomaduro/termwind/issues", + "source": "https://github.com/nunomaduro/termwind/tree/v2.3.3" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://github.com/xiCO2k", + "type": "github" + } + ], + "time": "2025-11-20T02:34:59+00:00" + }, + { + "name": "paragonie/constant_time_encoding", + "version": "v3.1.3", + "source": { + "type": "git", + "url": "https://github.com/paragonie/constant_time_encoding.git", + "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", + "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", + "shasum": "" + }, + "require": { + "php": "^8" + }, + "require-dev": { + "infection/infection": "^0", + "nikic/php-fuzzer": "^0", + "phpunit/phpunit": "^9|^10|^11", + "vimeo/psalm": "^4|^5|^6" + }, + "type": "library", + "autoload": { + "psr-4": { + "ParagonIE\\ConstantTime\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com", + "role": "Maintainer" + }, + { + "name": "Steve 'Sc00bz' Thomas", + "email": "steve@tobtu.com", + "homepage": "https://www.tobtu.com", + "role": "Original Developer" + } + ], + "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", + "keywords": [ + "base16", + "base32", + "base32_decode", + "base32_encode", + "base64", + "base64_decode", + "base64_encode", + "bin2hex", + "encoding", + "hex", + "hex2bin", + "rfc4648" + ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/constant_time_encoding/issues", + "source": "https://github.com/paragonie/constant_time_encoding" + }, + "time": "2025-09-24T15:06:41+00:00" + }, + { + "name": "paragonie/random_compat", + "version": "v9.99.100", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", + "shasum": "" + }, + "require": { + "php": ">= 7" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "polyfill", + "pseudorandom", + "random" + ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/random_compat/issues", + "source": "https://github.com/paragonie/random_compat" + }, + "time": "2020-10-15T08:29:30+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.9.5", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/75365b91986c2405cf5e1e012c5595cd487a98be", + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.44 || ^9.6.25 || ^10.5.53 || ^11.5.34" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.5" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2025-12-27T19:41:33+00:00" + }, + { + "name": "phpseclib/phpseclib", + "version": "3.0.51", + "source": { + "type": "git", + "url": "https://github.com/phpseclib/phpseclib.git", + "reference": "d59c94077f9c9915abb51ddb52ce85188ece1748" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/d59c94077f9c9915abb51ddb52ce85188ece1748", + "reference": "d59c94077f9c9915abb51ddb52ce85188ece1748", + "shasum": "" + }, + "require": { + "paragonie/constant_time_encoding": "^1|^2|^3", + "paragonie/random_compat": "^1.4|^2.0|^9.99.99", + "php": ">=5.6.1" + }, + "require-dev": { + "phpunit/phpunit": "*" + }, + "suggest": { + "ext-dom": "Install the DOM extension to load XML formatted public keys.", + "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", + "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", + "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", + "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." + }, + "type": "library", + "autoload": { + "files": [ + "phpseclib/bootstrap.php" + ], + "psr-4": { + "phpseclib3\\": "phpseclib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jim Wigginton", + "email": "terrafrost@php.net", + "role": "Lead Developer" + }, + { + "name": "Patrick Monnerat", + "email": "pm@datasphere.ch", + "role": "Developer" + }, + { + "name": "Andreas Fischer", + "email": "bantu@phpbb.com", + "role": "Developer" + }, + { + "name": "Hans-Jürgen Petrich", + "email": "petrich@tronic-media.com", + "role": "Developer" + }, + { + "name": "Graham Campbell", + "email": "graham@alt-three.com", + "role": "Developer" + } + ], + "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", + "homepage": "http://phpseclib.sourceforge.net", + "keywords": [ + "BigInteger", + "aes", + "asn.1", + "asn1", + "blowfish", + "crypto", + "cryptography", + "encryption", + "rsa", + "security", + "sftp", + "signature", + "signing", + "ssh", + "twofish", + "x.509", + "x509" + ], + "support": { + "issues": "https://github.com/phpseclib/phpseclib/issues", + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.51" + }, + "funding": [ + { + "url": "https://github.com/terrafrost", + "type": "github" + }, + { + "url": "https://www.patreon.com/phpseclib", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib", + "type": "tidelift" + } + ], + "time": "2026-04-10T01:33:53+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": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client" + }, + "time": "2023-09-23T14:17:50+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory" + }, + "time": "2024-04-15T12:06:14+00:00" + }, + { + "name": "psr/http-message", + "version": "2.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/2.0" + }, + "time": "2023-04-04T09:54:51+00:00" + }, + { + "name": "psr/log", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/3.0.2" + }, + "time": "2024-09-11T13:17:53+00:00" + }, + { + "name": "psr/simple-cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" + }, + "time": "2021-10-29T13:26:27+00:00" + }, + { + "name": "psy/psysh", + "version": "v0.12.19", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "a4f766e5c5b6773d8399711019bb7d90875a50ee" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/a4f766e5c5b6773d8399711019bb7d90875a50ee", + "reference": "a4f766e5c5b6773d8399711019bb7d90875a50ee", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^8.0 || ^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^8.0 || ^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2", + "composer/class-map-generator": "^1.6" + }, + "suggest": { + "composer/class-map-generator": "Improved tab completion performance with better class discovery.", + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": false, + "forward-command": false + }, + "branch-alias": { + "dev-main": "0.12.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Psy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "https://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.12.19" + }, + "time": "2026-01-30T17:33:13+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "ramsey/collection", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/344572933ad0181accbf4ba763e85a0306a8c5e2", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.45", + "fakerphp/faker": "^1.24", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^2.1", + "mockery/mockery": "^1.6", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpspec/prophecy-phpunit": "^2.3", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5", + "ramsey/coding-standard": "^2.3", + "ramsey/conventional-commits": "^1.6", + "roave/security-advisories": "dev-latest" + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/2.1.1" + }, + "time": "2025-03-22T05:38:12+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.9.2", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "8429c78ca35a09f27565311b98101e2826affde0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/8429c78ca35a09f27565311b98101e2826affde0", + "reference": "8429c78ca35a09f27565311b98101e2826affde0", + "shasum": "" + }, + "require": { + "brick/math": "^0.8.16 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14", + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.25", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "ergebnis/composer-normalize": "^2.47", + "mockery/mockery": "^1.6", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.6", + "php-mock/php-mock-mockery": "^1.5", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpbench/phpbench": "^1.2.14", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^9.6", + "slevomat/coding-standard": "^8.18", + "squizlabs/php_codesniffer": "^3.13" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.9.2" + }, + "time": "2025-12-14T04:43:48+00:00" + }, + { + "name": "symfony/clock", + "version": "v7.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/clock.git", + "reference": "9169f24776edde469914c1e7a1442a50f7a4e110" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/clock/zipball/9169f24776edde469914c1e7a1442a50f7a4e110", + "reference": "9169f24776edde469914c1e7a1442a50f7a4e110", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/clock": "^1.0", + "symfony/polyfill-php83": "^1.28" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/now.php" + ], + "psr-4": { + "Symfony\\Component\\Clock\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Decouples applications from the system clock", + "homepage": "https://symfony.com", + "keywords": [ + "clock", + "psr20", + "time" + ], + "support": { + "source": "https://github.com/symfony/clock/tree/v7.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-11-12T15:39:26+00:00" + }, + { + "name": "symfony/console", + "version": "v7.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "41e38717ac1dd7a46b6bda7d6a82af2d98a78894" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/41e38717ac1dd7a46b6bda7d6a82af2d98a78894", + "reference": "41e38717ac1dd7a46b6bda7d6a82af2d98a78894", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^7.2|^8.0" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v7.4.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-01-13T11:36:38+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v7.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "ab862f478513e7ca2fe9ec117a6f01a8da6e1135" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/ab862f478513e7ca2fe9ec117a6f01a8da6e1135", + "reference": "ab862f478513e7ca2fe9ec117a6f01a8da6e1135", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v7.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-10-30T13:39:42+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v7.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "8da531f364ddfee53e36092a7eebbbd0b775f6b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/8da531f364ddfee53e36092a7eebbbd0b775f6b8", + "reference": "8da531f364ddfee53e36092a7eebbbd0b775f6b8", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/polyfill-php85": "^1.32", + "symfony/var-dumper": "^6.4|^7.0|^8.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", + "symfony/webpack-encore-bundle": "^1.0|^2.0" + }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v7.4.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-01-20T16:42:42+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v7.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "dc2c0eba1af673e736bb851d747d266108aea746" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/dc2c0eba1af673e736bb851d747d266108aea746", + "reference": "dc2c0eba1af673e736bb851d747d266108aea746", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "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/v7.4.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-01-05T11:45:34+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/event-dispatcher": "^1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/finder", + "version": "v7.4.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "ad4daa7c38668dcb031e63bc99ea9bd42196a2cb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/ad4daa7c38668dcb031e63bc99ea9bd42196a2cb", + "reference": "ad4daa7c38668dcb031e63bc99ea9bd42196a2cb", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "symfony/filesystem": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v7.4.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-01-26T15:07:59+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v7.4.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "446d0db2b1f21575f1284b74533e425096abdfb6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/446d0db2b1f21575f1284b74533e425096abdfb6", + "reference": "446d0db2b1f21575f1284b74533e425096abdfb6", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "^1.1" + }, + "conflict": { + "doctrine/dbal": "<3.6", + "symfony/cache": "<6.4.12|>=7.0,<7.1.5" + }, + "require-dev": { + "doctrine/dbal": "^3.6|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.4.12|^7.1.5|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v7.4.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-01-27T16:16:02+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v7.4.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "229eda477017f92bd2ce7615d06222ec0c19e82a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/229eda477017f92bd2ce7615d06222ec0c19e82a", + "reference": "229eda477017f92bd2ce7615d06222ec0c19e82a", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^7.3|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/browser-kit": "<6.4", + "symfony/cache": "<6.4", + "symfony/config": "<6.4", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<6.4", + "symfony/flex": "<2.10", + "symfony/form": "<6.4", + "symfony/http-client": "<6.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<6.4", + "symfony/messenger": "<6.4", + "symfony/translation": "<6.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<6.4", + "symfony/validator": "<6.4", + "symfony/var-dumper": "<6.4", + "twig/twig": "<3.12" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/dom-crawler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^7.1|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/serializer": "^7.1|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0", + "symfony/var-exporter": "^6.4|^7.0|^8.0", + "twig/twig": "^3.12" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "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/v7.4.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-01-28T10:33:42+00:00" + }, + { + "name": "symfony/mailer", + "version": "v7.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "7b750074c40c694ceb34cb926d6dffee231c5cd6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/7b750074c40c694ceb34cb926d6dffee231c5cd6", + "reference": "7b750074c40c694ceb34cb926d6dffee231c5cd6", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.2", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/mime": "^7.2|^8.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<6.4", + "symfony/messenger": "<6.4", + "symfony/mime": "<6.4", + "symfony/twig-bridge": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/twig-bridge": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mailer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Helps sending emails", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/mailer/tree/v7.4.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-01-08T08:25:11+00:00" + }, + { + "name": "symfony/mime", + "version": "v7.4.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "b18c7e6e9eee1e19958138df10412f3c4c316148" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/b18c7e6e9eee1e19958138df10412f3c4c316148", + "reference": "b18c7e6e9eee1e19958138df10412f3c4c316148", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<5.2|>=6", + "phpdocumentor/type-resolver": "<1.5.1", + "symfony/mailer": "<6.4", + "symfony/serializer": "<6.4.3|>7.0,<7.0.3" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^5.2", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4.3|^7.0.3|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/tree/v7.4.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-01-27T08:59:58+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70", + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-06-27T09:58:17+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "symfony/polyfill-intl-normalizer": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-10T14:38:51+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "3833d7255cc303546435cb650316bff708a1c75c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "php": ">=7.2" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-12-23T08:48:59+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-01-02T08:10:11+00:00" + }, + { + "name": "symfony/polyfill-php83", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/17f6f9a6b1735c0f163024d959f700cfbc5155e5", + "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php83\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php83/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-08T02:45:35+00:00" + }, + { + "name": "symfony/polyfill-php84", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php84.git", + "reference": "d8ced4d875142b6a7426000426b8abc631d6b191" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/d8ced4d875142b6a7426000426b8abc631d6b191", + "reference": "d8ced4d875142b6a7426000426b8abc631d6b191", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php84\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php84/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-06-24T13:30:11+00:00" + }, + { + "name": "symfony/polyfill-php85", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php85.git", + "reference": "d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91", + "reference": "d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php85\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.5+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php85/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-06-23T16:12:55+00:00" + }, + { + "name": "symfony/polyfill-uuid", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/21533be36c24be3f4b1669c4725c7d1d2bab4ae2", + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-uuid": "*" + }, + "suggest": { + "ext-uuid": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Uuid\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for uuid functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/process", + "version": "v7.4.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "608476f4604102976d687c483ac63a79ba18cc97" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/608476f4604102976d687c483ac63a79ba18cc97", + "reference": "608476f4604102976d687c483ac63a79ba18cc97", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v7.4.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-01-26T15:07:59+00:00" + }, + { + "name": "symfony/routing", + "version": "v7.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "0798827fe2c79caeed41d70b680c2c3507d10147" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/0798827fe2c79caeed41d70b680c2c3507d10147", + "reference": "0798827fe2c79caeed41d70b680c2c3507d10147", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/config": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/yaml": "<6.4" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Maps an HTTP request to a set of configuration variables", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "support": { + "source": "https://github.com/symfony/routing/tree/v7.4.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-01-12T12:19:02+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.6.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43", + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v3.6.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-15T11:30:57+00:00" + }, + { + "name": "symfony/string", + "version": "v7.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "1c4b10461bf2ec27537b5f36105337262f5f5d6f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/1c4b10461bf2ec27537b5f36105337262f5f5d6f", + "reference": "1c4b10461bf2ec27537b5f36105337262f5f5d6f", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.33", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/emoji": "^7.1|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v7.4.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-01-12T10:54:30+00:00" + }, + { + "name": "symfony/translation", + "version": "v7.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "bfde13711f53f549e73b06d27b35a55207528877" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/bfde13711f53f549e73b06d27b35a55207528877", + "reference": "bfde13711f53f549e73b06d27b35a55207528877", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.5.3|^3.3" + }, + "conflict": { + "nikic/php-parser": "<5.0", + "symfony/config": "<6.4", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<6.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<6.4", + "symfony/yaml": "<6.4" + }, + "provide": { + "symfony/translation-implementation": "2.3|3.0" + }, + "require-dev": { + "nikic/php-parser": "^5.0", + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v7.4.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-01-13T10:40:19+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.6.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "65a8bc82080447fae78373aa10f8d13b38338977" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/65a8bc82080447fae78373aa10f8d13b38338977", + "reference": "65a8bc82080447fae78373aa10f8d13b38338977", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v3.6.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-15T13:41:35+00:00" + }, + { + "name": "symfony/uid", + "version": "v7.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "7719ce8aba76be93dfe249192f1fbfa52c588e36" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/7719ce8aba76be93dfe249192f1fbfa52c588e36", + "reference": "7719ce8aba76be93dfe249192f1fbfa52c588e36", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-uuid": "^1.15" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Uid\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to generate and represent UIDs", + "homepage": "https://symfony.com", + "keywords": [ + "UID", + "ulid", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/uid/tree/v7.4.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-01-03T23:30:35+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v7.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "0e4769b46a0c3c62390d124635ce59f66874b282" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0e4769b46a0c3c62390d124635ce59f66874b282", + "reference": "0e4769b46a0c3c62390d124635ce59f66874b282", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "twig/twig": "^3.12" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v7.4.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-01-01T22:13:48+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "f0292ccf0ec75843d65027214426b6b163b48b41" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/f0292ccf0ec75843d65027214426b6b163b48b41", + "reference": "f0292ccf0ec75843d65027214426b6b163b48b41", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^7.4 || ^8.0", + "symfony/css-selector": "^5.4 || ^6.0 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^8.5.21 || ^9.5.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "support": { + "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.4.0" + }, + "time": "2025-12-02T11:56:42+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.6.3", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "955e7815d677a3eaa7075231212f2110983adecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/955e7815d677a3eaa7075231212f2110983adecc", + "reference": "955e7815d677a3eaa7075231212f2110983adecc", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.1.4", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.5", + "symfony/polyfill-ctype": "^1.26", + "symfony/polyfill-mbstring": "^1.26", + "symfony/polyfill-php80": "^1.26" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-filter": "*", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, + "branch-alias": { + "dev-master": "5.6-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2025-12-27T19:49:13+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", + "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "https://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/2.0.3" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2024-11-21T01:49:47+00:00" + } + ], + "packages-dev": [ + { + "name": "fakerphp/faker", + "version": "v1.24.1", + "source": { + "type": "git", + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", + "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", + "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", + "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.24.1" + }, + "time": "2024-11-21T13:46:39+00:00" + }, + { + "name": "filp/whoops", + "version": "2.18.4", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "d2102955e48b9fd9ab24280a7ad12ed552752c4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/d2102955e48b9fd9ab24280a7ad12ed552752c4d", + "reference": "d2102955e48b9fd9ab24280a7ad12ed552752c4d", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^4.0 || ^5.0" + }, + "suggest": { + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Whoops\\": "src/Whoops/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" + } + ], + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", + "keywords": [ + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" + ], + "support": { + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.18.4" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2025-08-08T12:00:00+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0 || ^3.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "hamcrest" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "support": { + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.1.1" + }, + "time": "2025-04-30T06:54:44+00:00" + }, + { + "name": "laravel/pail", + "version": "v1.2.6", + "source": { + "type": "git", + "url": "https://github.com/laravel/pail.git", + "reference": "aa71a01c309e7f66bc2ec4fb1a59291b82eb4abf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pail/zipball/aa71a01c309e7f66bc2ec4fb1a59291b82eb4abf", + "reference": "aa71a01c309e7f66bc2ec4fb1a59291b82eb4abf", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "illuminate/console": "^10.24|^11.0|^12.0|^13.0", + "illuminate/contracts": "^10.24|^11.0|^12.0|^13.0", + "illuminate/log": "^10.24|^11.0|^12.0|^13.0", + "illuminate/process": "^10.24|^11.0|^12.0|^13.0", + "illuminate/support": "^10.24|^11.0|^12.0|^13.0", + "nunomaduro/termwind": "^1.15|^2.0", + "php": "^8.2", + "symfony/console": "^6.0|^7.0|^8.0" + }, + "require-dev": { + "laravel/framework": "^10.24|^11.0|^12.0|^13.0", + "laravel/pint": "^1.13", + "orchestra/testbench-core": "^8.13|^9.17|^10.8|^11.0", + "pestphp/pest": "^2.20|^3.0|^4.0", + "pestphp/pest-plugin-type-coverage": "^2.3|^3.0|^4.0", + "phpstan/phpstan": "^1.12.27", + "symfony/var-dumper": "^6.3|^7.0|^8.0", + "symfony/yaml": "^6.3|^7.0|^8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Pail\\PailServiceProvider" + ] + }, + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\Pail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Easily delve into your Laravel application's log files directly from the command line.", + "homepage": "https://github.com/laravel/pail", + "keywords": [ + "dev", + "laravel", + "logs", + "php", + "tail" + ], + "support": { + "issues": "https://github.com/laravel/pail/issues", + "source": "https://github.com/laravel/pail" + }, + "time": "2026-02-09T13:44:54+00:00" + }, + { + "name": "laravel/pint", + "version": "v1.27.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/pint.git", + "reference": "54cca2de13790570c7b6f0f94f37896bee4abcb5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pint/zipball/54cca2de13790570c7b6f0f94f37896bee4abcb5", + "reference": "54cca2de13790570c7b6f0f94f37896bee4abcb5", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "ext-tokenizer": "*", + "ext-xml": "*", + "php": "^8.2.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.93.1", + "illuminate/view": "^12.51.0", + "larastan/larastan": "^3.9.2", + "laravel-zero/framework": "^12.0.5", + "mockery/mockery": "^1.6.12", + "nunomaduro/termwind": "^2.3.3", + "pestphp/pest": "^3.8.5" + }, + "bin": [ + "builds/pint" + ], + "type": "project", + "autoload": { + "psr-4": { + "App\\": "app/", + "Database\\Seeders\\": "database/seeders/", + "Database\\Factories\\": "database/factories/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "An opinionated code formatter for PHP.", + "homepage": "https://laravel.com", + "keywords": [ + "dev", + "format", + "formatter", + "lint", + "linter", + "php" + ], + "support": { + "issues": "https://github.com/laravel/pint/issues", + "source": "https://github.com/laravel/pint" + }, + "time": "2026-02-10T20:00:20+00:00" + }, + { + "name": "laravel/sail", + "version": "v1.53.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/sail.git", + "reference": "e340eaa2bea9b99192570c48ed837155dbf24fbb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sail/zipball/e340eaa2bea9b99192570c48ed837155dbf24fbb", + "reference": "e340eaa2bea9b99192570c48ed837155dbf24fbb", + "shasum": "" + }, + "require": { + "illuminate/console": "^9.52.16|^10.0|^11.0|^12.0|^13.0", + "illuminate/contracts": "^9.52.16|^10.0|^11.0|^12.0|^13.0", + "illuminate/support": "^9.52.16|^10.0|^11.0|^12.0|^13.0", + "php": "^8.0", + "symfony/console": "^6.0|^7.0|^8.0", + "symfony/yaml": "^6.0|^7.0|^8.0" + }, + "require-dev": { + "orchestra/testbench": "^7.0|^8.0|^9.0|^10.0|^11.0", + "phpstan/phpstan": "^2.0" + }, + "bin": [ + "bin/sail" + ], + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Sail\\SailServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Docker files for running a basic Laravel application.", + "keywords": [ + "docker", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/sail/issues", + "source": "https://github.com/laravel/sail" + }, + "time": "2026-02-06T12:16:02+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.6.12", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "shasum": "" + }, + "require": { + "hamcrest/hamcrest-php": "^2.0.1", + "lib-pcre": ">=7.0", + "php": ">=7.3" + }, + "conflict": { + "phpunit/phpunit": "<8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.5 || ^9.6.17", + "symplify/easy-coding-standard": "^12.1.14" + }, + "type": "library", + "autoload": { + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], + "psr-4": { + "Mockery\\": "library/Mockery" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "https://github.com/padraic", + "role": "Author" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.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", + "homepage": "https://github.com/mockery/mockery", + "keywords": [ + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" + ], + "support": { + "docs": "https://docs.mockery.io/", + "issues": "https://github.com/mockery/mockery/issues", + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" + }, + "time": "2024-05-16T03:13:13+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.13.4", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3 <3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2025-08-01T08:46:24+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v8.8.3", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "1dc9e88d105699d0fee8bb18890f41b274f6b4c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/1dc9e88d105699d0fee8bb18890f41b274f6b4c4", + "reference": "1dc9e88d105699d0fee8bb18890f41b274f6b4c4", + "shasum": "" + }, + "require": { + "filp/whoops": "^2.18.1", + "nunomaduro/termwind": "^2.3.1", + "php": "^8.2.0", + "symfony/console": "^7.3.0" + }, + "conflict": { + "laravel/framework": "<11.44.2 || >=13.0.0", + "phpunit/phpunit": "<11.5.15 || >=13.0.0" + }, + "require-dev": { + "brianium/paratest": "^7.8.3", + "larastan/larastan": "^3.4.2", + "laravel/framework": "^11.44.2 || ^12.18", + "laravel/pint": "^1.22.1", + "laravel/sail": "^1.43.1", + "laravel/sanctum": "^4.1.1", + "laravel/tinker": "^2.10.1", + "orchestra/testbench-core": "^9.12.0 || ^10.4", + "pestphp/pest": "^3.8.2 || ^4.0.0", + "sebastian/environment": "^7.2.1 || ^8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + }, + "branch-alias": { + "dev-8.x": "8.x-dev" + } + }, + "autoload": { + "files": [ + "./src/Adapters/Phpunit/Autoload.php" + ], + "psr-4": { + "NunoMaduro\\Collision\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Cli error handling for console/command-line PHP applications.", + "keywords": [ + "artisan", + "cli", + "command-line", + "console", + "dev", + "error", + "handling", + "laravel", + "laravel-zero", + "php", + "symfony" + ], + "support": { + "issues": "https://github.com/nunomaduro/collision/issues", + "source": "https://github.com/nunomaduro/collision" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2025-11-20T02:55:25+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "54750ef60c58e43759730615a392c31c80e23176" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "11.0.12", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "2c1ed04922802c15e1de5d7447b4856de949cf56" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2c1ed04922802c15e1de5d7447b4856de949cf56", + "reference": "2c1ed04922802c15e1de5d7447b4856de949cf56", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^5.7.0", + "php": ">=8.2", + "phpunit/php-file-iterator": "^5.1.0", + "phpunit/php-text-template": "^4.0.1", + "sebastian/code-unit-reverse-lookup": "^4.0.1", + "sebastian/complexity": "^4.0.1", + "sebastian/environment": "^7.2.1", + "sebastian/lines-of-code": "^3.0.1", + "sebastian/version": "^5.0.2", + "theseer/tokenizer": "^1.3.1" + }, + "require-dev": { + "phpunit/phpunit": "^11.5.46" + }, + "suggest": { + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "11.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "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/11.0.12" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-code-coverage", + "type": "tidelift" + } + ], + "time": "2025-12-24T07:01:01+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "5.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "2f3a64888c814fc235386b7387dd5b5ed92ad903" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/2f3a64888c814fc235386b7387dd5b5ed92ad903", + "reference": "2f3a64888c814fc235386b7387dd5b5ed92ad903", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "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/5.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-file-iterator", + "type": "tidelift" + } + ], + "time": "2026-02-02T13:52:54+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "5.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/c1ca3814734c07492b3d4c5f794f4b0995333da2", + "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^11.0" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/5.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:07:44+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/3e0404dc6b300e6bf56415467ebcb3fe4f33e964", + "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:08:43+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "7.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", + "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "security": "https://github.com/sebastianbergmann/php-timer/security/policy", + "source": "https://github.com/sebastianbergmann/php-timer/tree/7.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:09:35+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "11.5.53", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "a997a653a82845f1240d73ee73a8a4e97e4b0607" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a997a653a82845f1240d73ee73a8a4e97e4b0607", + "reference": "a997a653a82845f1240d73ee73a8a4e97e4b0607", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.13.4", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=8.2", + "phpunit/php-code-coverage": "^11.0.12", + "phpunit/php-file-iterator": "^5.1.1", + "phpunit/php-invoker": "^5.0.1", + "phpunit/php-text-template": "^4.0.1", + "phpunit/php-timer": "^7.0.1", + "sebastian/cli-parser": "^3.0.2", + "sebastian/code-unit": "^3.0.3", + "sebastian/comparator": "^6.3.3", + "sebastian/diff": "^6.0.2", + "sebastian/environment": "^7.2.1", + "sebastian/exporter": "^6.3.2", + "sebastian/global-state": "^7.0.2", + "sebastian/object-enumerator": "^6.0.1", + "sebastian/recursion-context": "^6.0.3", + "sebastian/type": "^5.1.3", + "sebastian/version": "^5.0.2", + "staabm/side-effects-detector": "^1.0.5" + }, + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "11.5-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.53" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2026-02-10T12:28:25+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/15c5dd40dc4f38794d383bb95465193f5e0ae180", + "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:41:36+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/54391c61e4af8078e5b276ab082b6d3c54c9ad64", + "reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "security": "https://github.com/sebastianbergmann/code-unit/security/policy", + "source": "https://github.com/sebastianbergmann/code-unit/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-03-19T07:56:08+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "183a9b2632194febd219bb9246eee421dad8d45e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/183a9b2632194febd219bb9246eee421dad8d45e", + "reference": "183a9b2632194febd219bb9246eee421dad8d45e", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "security": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/security/policy", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:45:54+00:00" + }, + { + "name": "sebastian/comparator", + "version": "6.3.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2c95e1e86cb8dd41beb8d502057d1081ccc8eca9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2c95e1e86cb8dd41beb8d502057d1081ccc8eca9", + "reference": "2c95e1e86cb8dd41beb8d502057d1081ccc8eca9", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.2", + "sebastian/diff": "^6.0", + "sebastian/exporter": "^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.4" + }, + "suggest": { + "ext-bcmath": "For comparing BcMath\\Number objects" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" + } + ], + "time": "2026-01-24T09:26:40+00:00" + }, + { + "name": "sebastian/complexity", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "ee41d384ab1906c68852636b6de493846e13e5a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/ee41d384ab1906c68852636b6de493846e13e5a0", + "reference": "ee41d384ab1906c68852636b6de493846e13e5a0", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.0", + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:49:50+00:00" + }, + { + "name": "sebastian/diff", + "version": "6.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/b4ccd857127db5d41a5b676f24b51371d76d8544", + "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/6.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:53:05+00:00" + }, + { + "name": "sebastian/environment", + "version": "7.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "a5c75038693ad2e8d4b6c15ba2403532647830c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/a5c75038693ad2e8d4b6c15ba2403532647830c4", + "reference": "a5c75038693ad2e8d4b6c15ba2403532647830c4", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.3" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "https://github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/7.2.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/environment", + "type": "tidelift" + } + ], + "time": "2025-05-21T11:55:47+00:00" + }, + { + "name": "sebastian/exporter", + "version": "6.3.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "70a298763b40b213ec087c51c739efcaa90bcd74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/70a298763b40b213ec087c51c739efcaa90bcd74", + "reference": "70a298763b40b213ec087c51c739efcaa90bcd74", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=8.2", + "sebastian/recursion-context": "^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/6.3.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", + "type": "tidelift" + } + ], + "time": "2025-09-24T06:12:51+00:00" + }, + { + "name": "sebastian/global-state", + "version": "7.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "3be331570a721f9a4b5917f4209773de17f747d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/3be331570a721f9a4b5917f4209773de17f747d7", + "reference": "3be331570a721f9a4b5917f4209773de17f747d7", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "sebastian/object-reflector": "^4.0", + "sebastian/recursion-context": "^6.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/7.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:57:36+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/d36ad0d782e5756913e42ad87cb2890f4ffe467a", + "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.0", + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "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/3.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:58:38+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "6.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "f5b498e631a74204185071eb41f33f38d64608aa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/f5b498e631a74204185071eb41f33f38d64608aa", + "reference": "f5b498e631a74204185071eb41f33f38d64608aa", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "sebastian/object-reflector": "^4.0", + "sebastian/recursion-context": "^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/6.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:00:13+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/6e1a43b411b2ad34146dee7524cb13a068bb35f9", + "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:01:32+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "6.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "f6458abbf32a6c8174f8f26261475dc133b3d9dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/f6458abbf32a6c8174f8f26261475dc133b3d9dc", + "reference": "f6458abbf32a6c8174f8f26261475dc133b3d9dc", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/6.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" + } + ], + "time": "2025-08-13T04:42:22+00:00" + }, + { + "name": "sebastian/type", + "version": "5.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "f77d2d4e78738c98d9a68d2596fe5e8fa380f449" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/f77d2d4e78738c98d9a68d2596fe5e8fa380f449", + "reference": "f77d2d4e78738c98d9a68d2596fe5e8fa380f449", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "security": "https://github.com/sebastianbergmann/type/security/policy", + "source": "https://github.com/sebastianbergmann/type/tree/5.1.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/type", + "type": "tidelift" + } + ], + "time": "2025-08-09T06:55:48+00:00" + }, + { + "name": "sebastian/version", + "version": "5.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c687e3387b99f5b03b6caa64c74b63e2936ff874", + "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "security": "https://github.com/sebastianbergmann/version/security/policy", + "source": "https://github.com/sebastianbergmann/version/tree/5.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-10-09T05:16:32+00:00" + }, + { + "name": "staabm/side-effects-detector", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/staabm/side-effects-detector.git", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/staabm/side-effects-detector/zipball/d8334211a140ce329c13726d4a715adbddd0a163", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.6", + "phpunit/phpunit": "^9.6.21", + "symfony/var-dumper": "^5.4.43", + "tomasvotruba/type-coverage": "1.0.0", + "tomasvotruba/unused-public": "1.0.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "lib/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A static analysis tool to detect side effects in PHP code", + "keywords": [ + "static analysis" + ], + "support": { + "issues": "https://github.com/staabm/side-effects-detector/issues", + "source": "https://github.com/staabm/side-effects-detector/tree/1.0.5" + }, + "funding": [ + { + "url": "https://github.com/staabm", + "type": "github" + } + ], + "time": "2024-10-20T05:08:20+00:00" + }, + { + "name": "symfony/yaml", + "version": "v7.4.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "24dd4de28d2e3988b311751ac49e684d783e2345" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/24dd4de28d2e3988b311751ac49e684d783e2345", + "reference": "24dd4de28d2e3988b311751ac49e684d783e2345", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0|^8.0" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v7.4.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-12-04T18:11:45+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b7489ce515e168639d17feec34b8847c326b0b3c", + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "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.3.1" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2025-11-17T20:03:58+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": {}, + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": "^8.2" + }, + "platform-dev": {}, + "plugin-api-version": "2.6.0" +} diff --git a/config/app.php b/config/app.php new file mode 100644 index 0000000..c74a68d --- /dev/null +++ b/config/app.php @@ -0,0 +1,126 @@ + env('APP_NAME', 'Laravel'), + + /* + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines the "environment" your application is currently + | running in. This may determine how you prefer to configure various + | services the application utilizes. Set this in your ".env" file. + | + */ + + 'env' => env('APP_ENV', 'production'), + + /* + |-------------------------------------------------------------------------- + | Application Debug Mode + |-------------------------------------------------------------------------- + | + | When your application is in debug mode, detailed error messages with + | stack traces will be shown on every error that occurs within your + | application. If disabled, a simple generic error page is shown. + | + */ + + 'debug' => (bool) env('APP_DEBUG', false), + + /* + |-------------------------------------------------------------------------- + | Application URL + |-------------------------------------------------------------------------- + | + | This URL is used by the console to properly generate URLs when using + | the Artisan command line tool. You should set this to the root of + | the application so that it's available within Artisan commands. + | + */ + + 'url' => env('APP_URL', 'http://localhost'), + + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | Here you may specify the default timezone for your application, which + | will be used by the PHP date and date-time functions. The timezone + | is set to "UTC" by default as it is suitable for most use cases. + | + */ + + 'timezone' => 'Asia/Jakarta', + + /* + |-------------------------------------------------------------------------- + | Application Locale Configuration + |-------------------------------------------------------------------------- + | + | The application locale determines the default locale that will be used + | by Laravel's translation / localization methods. This option can be + | set to any locale for which you plan to have translation strings. + | + */ + + 'locale' => env('APP_LOCALE', 'en'), + + 'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'), + + 'faker_locale' => env('APP_FAKER_LOCALE', 'en_US'), + + /* + |-------------------------------------------------------------------------- + | Encryption Key + |-------------------------------------------------------------------------- + | + | This key is utilized by Laravel's encryption services and should be set + | to a random, 32 character string to ensure that all encrypted values + | are secure. You should do this prior to deploying the application. + | + */ + + 'cipher' => 'AES-256-CBC', + + 'key' => env('APP_KEY'), + + 'previous_keys' => [ + ...array_filter( + explode(',', (string) env('APP_PREVIOUS_KEYS', '')) + ), + ], + + /* + |-------------------------------------------------------------------------- + | Maintenance Mode Driver + |-------------------------------------------------------------------------- + | + | These configuration options determine the driver used to determine and + | manage Laravel's "maintenance mode" status. The "cache" driver will + | allow maintenance mode to be controlled across multiple machines. + | + | Supported drivers: "file", "cache" + | + */ + + 'maintenance' => [ + 'driver' => env('APP_MAINTENANCE_DRIVER', 'file'), + 'store' => env('APP_MAINTENANCE_STORE', 'database'), + ], + +]; diff --git a/config/auth.php b/config/auth.php new file mode 100644 index 0000000..7d1eb0d --- /dev/null +++ b/config/auth.php @@ -0,0 +1,115 @@ + [ + 'guard' => env('AUTH_GUARD', 'web'), + 'passwords' => env('AUTH_PASSWORD_BROKER', 'users'), + ], + + /* + |-------------------------------------------------------------------------- + | Authentication Guards + |-------------------------------------------------------------------------- + | + | Next, you may define every authentication guard for your application. + | Of course, a great default configuration has been defined for you + | which utilizes session storage plus the Eloquent user provider. + | + | All authentication guards have a user provider, which defines how the + | users are actually retrieved out of your database or other storage + | system used by the application. Typically, Eloquent is utilized. + | + | Supported: "session" + | + */ + + 'guards' => [ + 'web' => [ + 'driver' => 'session', + 'provider' => 'users', + ], + ], + + /* + |-------------------------------------------------------------------------- + | User Providers + |-------------------------------------------------------------------------- + | + | All authentication guards have a user provider, which defines how the + | users are actually retrieved out of your database or other storage + | system used by the application. Typically, Eloquent is utilized. + | + | If you have multiple user tables or models you may configure multiple + | providers to represent the model / table. These providers may then + | be assigned to any extra authentication guards you have defined. + | + | Supported: "database", "eloquent" + | + */ + + 'providers' => [ + 'users' => [ + 'driver' => 'eloquent', + 'model' => env('AUTH_MODEL', App\Models\User::class), + ], + + // 'users' => [ + // 'driver' => 'database', + // 'table' => 'users', + // ], + ], + + /* + |-------------------------------------------------------------------------- + | Resetting Passwords + |-------------------------------------------------------------------------- + | + | These configuration options specify the behavior of Laravel's password + | reset functionality, including the table utilized for token storage + | and the user provider that is invoked to actually retrieve users. + | + | The expiry time is the number of minutes that each reset token will be + | considered valid. This security feature keeps tokens short-lived so + | they have less time to be guessed. You may change this as needed. + | + | The throttle setting is the number of seconds a user must wait before + | generating more password reset tokens. This prevents the user from + | quickly generating a very large amount of password reset tokens. + | + */ + + 'passwords' => [ + 'users' => [ + 'provider' => 'users', + 'table' => env('AUTH_PASSWORD_RESET_TOKEN_TABLE', 'password_reset_tokens'), + 'expire' => 60, + 'throttle' => 60, + ], + ], + + /* + |-------------------------------------------------------------------------- + | Password Confirmation Timeout + |-------------------------------------------------------------------------- + | + | Here you may define the number of seconds before a password confirmation + | window expires and users are asked to re-enter their password via the + | confirmation screen. By default, the timeout lasts for three hours. + | + */ + + 'password_timeout' => env('AUTH_PASSWORD_TIMEOUT', 10800), + +]; diff --git a/config/cache.php b/config/cache.php new file mode 100644 index 0000000..b32aead --- /dev/null +++ b/config/cache.php @@ -0,0 +1,117 @@ + env('CACHE_STORE', 'database'), + + /* + |-------------------------------------------------------------------------- + | Cache Stores + |-------------------------------------------------------------------------- + | + | Here you may define all of the cache "stores" for your application as + | well as their drivers. You may even define multiple stores for the + | same cache driver to group types of items stored in your caches. + | + | Supported drivers: "array", "database", "file", "memcached", + | "redis", "dynamodb", "octane", + | "failover", "null" + | + */ + + 'stores' => [ + + 'array' => [ + 'driver' => 'array', + 'serialize' => false, + ], + + 'database' => [ + 'driver' => 'database', + 'connection' => env('DB_CACHE_CONNECTION'), + 'table' => env('DB_CACHE_TABLE', 'cache'), + 'lock_connection' => env('DB_CACHE_LOCK_CONNECTION'), + 'lock_table' => env('DB_CACHE_LOCK_TABLE'), + ], + + 'file' => [ + 'driver' => 'file', + 'path' => storage_path('framework/cache/data'), + 'lock_path' => storage_path('framework/cache/data'), + ], + + 'memcached' => [ + 'driver' => 'memcached', + 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), + 'sasl' => [ + env('MEMCACHED_USERNAME'), + env('MEMCACHED_PASSWORD'), + ], + 'options' => [ + // Memcached::OPT_CONNECT_TIMEOUT => 2000, + ], + 'servers' => [ + [ + 'host' => env('MEMCACHED_HOST', '127.0.0.1'), + 'port' => env('MEMCACHED_PORT', 11211), + 'weight' => 100, + ], + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => env('REDIS_CACHE_CONNECTION', 'cache'), + 'lock_connection' => env('REDIS_CACHE_LOCK_CONNECTION', 'default'), + ], + + 'dynamodb' => [ + 'driver' => 'dynamodb', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), + 'endpoint' => env('DYNAMODB_ENDPOINT'), + ], + + 'octane' => [ + 'driver' => 'octane', + ], + + 'failover' => [ + 'driver' => 'failover', + 'stores' => [ + 'database', + 'array', + ], + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Cache Key Prefix + |-------------------------------------------------------------------------- + | + | When utilizing the APC, database, memcached, Redis, and DynamoDB cache + | stores, there might be other applications using the same cache. For + | that reason, you may prefix every cache key to avoid collisions. + | + */ + + 'prefix' => env('CACHE_PREFIX', Str::slug((string) env('APP_NAME', 'laravel')).'-cache-'), + +]; diff --git a/config/database.php b/config/database.php new file mode 100644 index 0000000..df933e7 --- /dev/null +++ b/config/database.php @@ -0,0 +1,183 @@ + env('DB_CONNECTION', 'sqlite'), + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Below are all of the database connections defined for your application. + | An example configuration is provided for each database system which + | is supported by Laravel. You're free to add / remove connections. + | + */ + + 'connections' => [ + + 'sqlite' => [ + 'driver' => 'sqlite', + 'url' => env('DB_URL'), + 'database' => env('DB_DATABASE', database_path('database.sqlite')), + 'prefix' => '', + 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), + 'busy_timeout' => null, + 'journal_mode' => null, + 'synchronous' => null, + 'transaction_mode' => 'DEFERRED', + ], + + 'mysql' => [ + 'driver' => 'mysql', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => env('DB_CHARSET', 'utf8mb4'), + 'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'), + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + (PHP_VERSION_ID >= 80500 ? \Pdo\Mysql::ATTR_SSL_CA : \PDO::MYSQL_ATTR_SSL_CA) => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'mariadb' => [ + 'driver' => 'mariadb', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => env('DB_CHARSET', 'utf8mb4'), + 'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'), + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + (PHP_VERSION_ID >= 80500 ? \Pdo\Mysql::ATTR_SSL_CA : \PDO::MYSQL_ATTR_SSL_CA) => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'pgsql' => [ + 'driver' => 'pgsql', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => env('DB_CHARSET', 'utf8'), + 'prefix' => '', + 'prefix_indexes' => true, + 'search_path' => 'public', + 'sslmode' => env('DB_SSLMODE', 'prefer'), + ], + + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', '1433'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => env('DB_CHARSET', 'utf8'), + 'prefix' => '', + 'prefix_indexes' => true, + // 'encrypt' => env('DB_ENCRYPT', 'yes'), + // 'trust_server_certificate' => env('DB_TRUST_SERVER_CERTIFICATE', 'false'), + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Migration Repository Table + |-------------------------------------------------------------------------- + | + | This table keeps track of all the migrations that have already run for + | your application. Using this information, we can determine which of + | the migrations on disk haven't actually been run on the database. + | + */ + + 'migrations' => [ + 'table' => 'migrations', + 'update_date_on_publish' => true, + ], + + /* + |-------------------------------------------------------------------------- + | Redis Databases + |-------------------------------------------------------------------------- + | + | Redis is an open source, fast, and advanced key-value store that also + | provides a richer body of commands than a typical key-value system + | such as Memcached. You may define your connection settings here. + | + */ + + 'redis' => [ + + 'client' => env('REDIS_CLIENT', 'phpredis'), + + 'options' => [ + 'cluster' => env('REDIS_CLUSTER', 'redis'), + 'prefix' => env('REDIS_PREFIX', Str::slug((string) env('APP_NAME', 'laravel')).'-database-'), + 'persistent' => env('REDIS_PERSISTENT', false), + ], + + 'default' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_DB', '0'), + 'max_retries' => env('REDIS_MAX_RETRIES', 3), + 'backoff_algorithm' => env('REDIS_BACKOFF_ALGORITHM', 'decorrelated_jitter'), + 'backoff_base' => env('REDIS_BACKOFF_BASE', 100), + 'backoff_cap' => env('REDIS_BACKOFF_CAP', 1000), + ], + + 'cache' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_CACHE_DB', '1'), + 'max_retries' => env('REDIS_MAX_RETRIES', 3), + 'backoff_algorithm' => env('REDIS_BACKOFF_ALGORITHM', 'decorrelated_jitter'), + 'backoff_base' => env('REDIS_BACKOFF_BASE', 100), + 'backoff_cap' => env('REDIS_BACKOFF_CAP', 1000), + ], + + ], + +]; diff --git a/config/filesystems.php b/config/filesystems.php new file mode 100644 index 0000000..37d8fca --- /dev/null +++ b/config/filesystems.php @@ -0,0 +1,80 @@ + env('FILESYSTEM_DISK', 'local'), + + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Below you may configure as many filesystem disks as necessary, and you + | may even configure multiple disks for the same driver. Examples for + | most supported storage drivers are configured here for reference. + | + | Supported drivers: "local", "ftp", "sftp", "s3" + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app/private'), + 'serve' => true, + 'throw' => false, + 'report' => false, + ], + + 'public' => [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => rtrim(env('APP_URL', 'http://localhost'), '/').'/storage', + 'visibility' => 'public', + 'throw' => false, + 'report' => false, + ], + + 's3' => [ + 'driver' => 's3', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION'), + 'bucket' => env('AWS_BUCKET'), + 'url' => env('AWS_URL'), + 'endpoint' => env('AWS_ENDPOINT'), + 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), + 'throw' => false, + 'report' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Symbolic Links + |-------------------------------------------------------------------------- + | + | Here you may configure the symbolic links that will be created when the + | `storage:link` Artisan command is executed. The array keys should be + | the locations of the links and the values should be their targets. + | + */ + + 'links' => [ + public_path('storage') => storage_path('app/public'), + ], + +]; diff --git a/config/logging.php b/config/logging.php new file mode 100644 index 0000000..9e998a4 --- /dev/null +++ b/config/logging.php @@ -0,0 +1,132 @@ + env('LOG_CHANNEL', 'stack'), + + /* + |-------------------------------------------------------------------------- + | Deprecations Log Channel + |-------------------------------------------------------------------------- + | + | This option controls the log channel that should be used to log warnings + | regarding deprecated PHP and library features. This allows you to get + | your application ready for upcoming major versions of dependencies. + | + */ + + 'deprecations' => [ + 'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), + 'trace' => env('LOG_DEPRECATIONS_TRACE', false), + ], + + /* + |-------------------------------------------------------------------------- + | Log Channels + |-------------------------------------------------------------------------- + | + | Here you may configure the log channels for your application. Laravel + | utilizes the Monolog PHP logging library, which includes a variety + | of powerful log handlers and formatters that you're free to use. + | + | Available drivers: "single", "daily", "slack", "syslog", + | "errorlog", "monolog", "custom", "stack" + | + */ + + 'channels' => [ + + 'stack' => [ + 'driver' => 'stack', + 'channels' => explode(',', (string) env('LOG_STACK', 'single')), + 'ignore_exceptions' => false, + ], + + 'single' => [ + 'driver' => 'single', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, + ], + + 'daily' => [ + 'driver' => 'daily', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'days' => env('LOG_DAILY_DAYS', 14), + 'replace_placeholders' => true, + ], + + 'slack' => [ + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'username' => env('LOG_SLACK_USERNAME', 'Laravel Log'), + 'emoji' => env('LOG_SLACK_EMOJI', ':boom:'), + 'level' => env('LOG_LEVEL', 'critical'), + 'replace_placeholders' => true, + ], + + 'papertrail' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class), + 'handler_with' => [ + 'host' => env('PAPERTRAIL_URL'), + 'port' => env('PAPERTRAIL_PORT'), + 'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'), + ], + 'processors' => [PsrLogMessageProcessor::class], + ], + + 'stderr' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => StreamHandler::class, + 'handler_with' => [ + 'stream' => 'php://stderr', + ], + 'formatter' => env('LOG_STDERR_FORMATTER'), + 'processors' => [PsrLogMessageProcessor::class], + ], + + 'syslog' => [ + 'driver' => 'syslog', + 'level' => env('LOG_LEVEL', 'debug'), + 'facility' => env('LOG_SYSLOG_FACILITY', LOG_USER), + 'replace_placeholders' => true, + ], + + 'errorlog' => [ + 'driver' => 'errorlog', + 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, + ], + + 'null' => [ + 'driver' => 'monolog', + 'handler' => NullHandler::class, + ], + + 'emergency' => [ + 'path' => storage_path('logs/laravel.log'), + ], + + ], + +]; diff --git a/config/mail.php b/config/mail.php new file mode 100644 index 0000000..522b284 --- /dev/null +++ b/config/mail.php @@ -0,0 +1,118 @@ + env('MAIL_MAILER', 'log'), + + /* + |-------------------------------------------------------------------------- + | Mailer Configurations + |-------------------------------------------------------------------------- + | + | Here you may configure all of the mailers used by your application plus + | their respective settings. Several examples have been configured for + | you and you are free to add your own as your application requires. + | + | Laravel supports a variety of mail "transport" drivers that can be used + | when delivering an email. You may specify which one you're using for + | your mailers below. You may also add additional mailers if needed. + | + | Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2", + | "postmark", "resend", "log", "array", + | "failover", "roundrobin" + | + */ + + 'mailers' => [ + + 'smtp' => [ + 'transport' => 'smtp', + 'scheme' => env('MAIL_SCHEME'), + 'url' => env('MAIL_URL'), + 'host' => env('MAIL_HOST', '127.0.0.1'), + 'port' => env('MAIL_PORT', 2525), + 'username' => env('MAIL_USERNAME'), + 'password' => env('MAIL_PASSWORD'), + 'timeout' => null, + 'local_domain' => env('MAIL_EHLO_DOMAIN', parse_url((string) env('APP_URL', 'http://localhost'), PHP_URL_HOST)), + ], + + 'ses' => [ + 'transport' => 'ses', + ], + + 'postmark' => [ + 'transport' => 'postmark', + // 'message_stream_id' => env('POSTMARK_MESSAGE_STREAM_ID'), + // 'client' => [ + // 'timeout' => 5, + // ], + ], + + 'resend' => [ + 'transport' => 'resend', + ], + + 'sendmail' => [ + 'transport' => 'sendmail', + 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'), + ], + + 'log' => [ + 'transport' => 'log', + 'channel' => env('MAIL_LOG_CHANNEL'), + ], + + 'array' => [ + 'transport' => 'array', + ], + + 'failover' => [ + 'transport' => 'failover', + 'mailers' => [ + 'smtp', + 'log', + ], + 'retry_after' => 60, + ], + + 'roundrobin' => [ + 'transport' => 'roundrobin', + 'mailers' => [ + 'ses', + 'postmark', + ], + 'retry_after' => 60, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Global "From" Address + |-------------------------------------------------------------------------- + | + | You may wish for all emails sent by your application to be sent from + | the same address. Here you may specify a name and address that is + | used globally for all emails that are sent by your application. + | + */ + + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), + 'name' => env('MAIL_FROM_NAME', 'Example'), + ], + +]; diff --git a/config/queue.php b/config/queue.php new file mode 100644 index 0000000..79c2c0a --- /dev/null +++ b/config/queue.php @@ -0,0 +1,129 @@ + env('QUEUE_CONNECTION', 'database'), + + /* + |-------------------------------------------------------------------------- + | Queue Connections + |-------------------------------------------------------------------------- + | + | Here you may configure the connection options for every queue backend + | used by your application. An example configuration is provided for + | each backend supported by Laravel. You're also free to add more. + | + | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", + | "deferred", "background", "failover", "null" + | + */ + + 'connections' => [ + + 'sync' => [ + 'driver' => 'sync', + ], + + 'database' => [ + 'driver' => 'database', + 'connection' => env('DB_QUEUE_CONNECTION'), + 'table' => env('DB_QUEUE_TABLE', 'jobs'), + 'queue' => env('DB_QUEUE', 'default'), + 'retry_after' => (int) env('DB_QUEUE_RETRY_AFTER', 90), + 'after_commit' => false, + ], + + 'beanstalkd' => [ + 'driver' => 'beanstalkd', + 'host' => env('BEANSTALKD_QUEUE_HOST', 'localhost'), + 'queue' => env('BEANSTALKD_QUEUE', 'default'), + 'retry_after' => (int) env('BEANSTALKD_QUEUE_RETRY_AFTER', 90), + 'block_for' => 0, + 'after_commit' => false, + ], + + 'sqs' => [ + 'driver' => 'sqs', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), + 'queue' => env('SQS_QUEUE', 'default'), + 'suffix' => env('SQS_SUFFIX'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'after_commit' => false, + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => env('REDIS_QUEUE_CONNECTION', 'default'), + 'queue' => env('REDIS_QUEUE', 'default'), + 'retry_after' => (int) env('REDIS_QUEUE_RETRY_AFTER', 90), + 'block_for' => null, + 'after_commit' => false, + ], + + 'deferred' => [ + 'driver' => 'deferred', + ], + + 'background' => [ + 'driver' => 'background', + ], + + 'failover' => [ + 'driver' => 'failover', + 'connections' => [ + 'database', + 'deferred', + ], + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Job Batching + |-------------------------------------------------------------------------- + | + | The following options configure the database and table that store job + | batching information. These options can be updated to any database + | connection and table which has been defined by your application. + | + */ + + 'batching' => [ + 'database' => env('DB_CONNECTION', 'sqlite'), + 'table' => 'job_batches', + ], + + /* + |-------------------------------------------------------------------------- + | Failed Queue Jobs + |-------------------------------------------------------------------------- + | + | These options configure the behavior of failed queue job logging so you + | can control how and where failed jobs are stored. Laravel ships with + | support for storing failed jobs in a simple file or in a database. + | + | Supported drivers: "database-uuids", "dynamodb", "file", "null" + | + */ + + 'failed' => [ + 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'), + 'database' => env('DB_CONNECTION', 'sqlite'), + 'table' => 'failed_jobs', + ], + +]; diff --git a/config/services.php b/config/services.php new file mode 100644 index 0000000..883e406 --- /dev/null +++ b/config/services.php @@ -0,0 +1,44 @@ + [ + 'key' => env('POSTMARK_API_KEY'), + ], + + 'resend' => [ + 'key' => env('RESEND_API_KEY'), + ], + + 'ses' => [ + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + + 'slack' => [ + 'notifications' => [ + 'bot_user_oauth_token' => env('SLACK_BOT_USER_OAUTH_TOKEN'), + 'channel' => env('SLACK_BOT_USER_DEFAULT_CHANNEL'), + ], + ], + + 'google' => [ + 'client_id' => env('GOOGLE_CLIENT_ID'), + 'client_secret' => env('GOOGLE_CLIENT_SECRET'), + 'redirect' => env('GOOGLE_REDIRECT_URI'), + ], + +]; diff --git a/config/session.php b/config/session.php new file mode 100644 index 0000000..5b541b7 --- /dev/null +++ b/config/session.php @@ -0,0 +1,217 @@ + env('SESSION_DRIVER', 'database'), + + /* + |-------------------------------------------------------------------------- + | Session Lifetime + |-------------------------------------------------------------------------- + | + | Here you may specify the number of minutes that you wish the session + | to be allowed to remain idle before it expires. If you want them + | to expire immediately when the browser is closed then you may + | indicate that via the expire_on_close configuration option. + | + */ + + 'lifetime' => (int) env('SESSION_LIFETIME', 120), + + 'expire_on_close' => env('SESSION_EXPIRE_ON_CLOSE', false), + + /* + |-------------------------------------------------------------------------- + | Session Encryption + |-------------------------------------------------------------------------- + | + | This option allows you to easily specify that all of your session data + | should be encrypted before it's stored. All encryption is performed + | automatically by Laravel and you may use the session like normal. + | + */ + + 'encrypt' => env('SESSION_ENCRYPT', false), + + /* + |-------------------------------------------------------------------------- + | Session File Location + |-------------------------------------------------------------------------- + | + | When utilizing the "file" session driver, the session files are placed + | on disk. The default storage location is defined here; however, you + | are free to provide another location where they should be stored. + | + */ + + 'files' => storage_path('framework/sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Database Connection + |-------------------------------------------------------------------------- + | + | When using the "database" or "redis" session drivers, you may specify a + | connection that should be used to manage these sessions. This should + | correspond to a connection in your database configuration options. + | + */ + + 'connection' => env('SESSION_CONNECTION'), + + /* + |-------------------------------------------------------------------------- + | Session Database Table + |-------------------------------------------------------------------------- + | + | When using the "database" session driver, you may specify the table to + | be used to store sessions. Of course, a sensible default is defined + | for you; however, you're welcome to change this to another table. + | + */ + + 'table' => env('SESSION_TABLE', 'sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Cache Store + |-------------------------------------------------------------------------- + | + | When using one of the framework's cache driven session backends, you may + | define the cache store which should be used to store the session data + | between requests. This must match one of your defined cache stores. + | + | Affects: "dynamodb", "memcached", "redis" + | + */ + + 'store' => env('SESSION_STORE'), + + /* + |-------------------------------------------------------------------------- + | Session Sweeping Lottery + |-------------------------------------------------------------------------- + | + | Some session drivers must manually sweep their storage location to get + | rid of old sessions from storage. Here are the chances that it will + | happen on a given request. By default, the odds are 2 out of 100. + | + */ + + 'lottery' => [2, 100], + + /* + |-------------------------------------------------------------------------- + | Session Cookie Name + |-------------------------------------------------------------------------- + | + | Here you may change the name of the session cookie that is created by + | the framework. Typically, you should not need to change this value + | since doing so does not grant a meaningful security improvement. + | + */ + + 'cookie' => env( + 'SESSION_COOKIE', + Str::slug((string) env('APP_NAME', 'laravel')).'-session' + ), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Path + |-------------------------------------------------------------------------- + | + | The session cookie path determines the path for which the cookie will + | be regarded as available. Typically, this will be the root path of + | your application, but you're free to change this when necessary. + | + */ + + 'path' => env('SESSION_PATH', '/'), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | This value determines the domain and subdomains the session cookie is + | available to. By default, the cookie will be available to the root + | domain without subdomains. Typically, this shouldn't be changed. + | + */ + + 'domain' => env('SESSION_DOMAIN'), + + /* + |-------------------------------------------------------------------------- + | HTTPS Only Cookies + |-------------------------------------------------------------------------- + | + | By setting this option to true, session cookies will only be sent back + | to the server if the browser has a HTTPS connection. This will keep + | the cookie from being sent to you when it can't be done securely. + | + */ + + 'secure' => env('SESSION_SECURE_COOKIE'), + + /* + |-------------------------------------------------------------------------- + | HTTP Access Only + |-------------------------------------------------------------------------- + | + | Setting this value to true will prevent JavaScript from accessing the + | value of the cookie and the cookie will only be accessible through + | the HTTP protocol. It's unlikely you should disable this option. + | + */ + + 'http_only' => env('SESSION_HTTP_ONLY', true), + + /* + |-------------------------------------------------------------------------- + | Same-Site Cookies + |-------------------------------------------------------------------------- + | + | This option determines how your cookies behave when cross-site requests + | take place, and can be used to mitigate CSRF attacks. By default, we + | will set this value to "lax" to permit secure cross-site requests. + | + | See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#samesitesamesite-value + | + | Supported: "lax", "strict", "none", null + | + */ + + 'same_site' => env('SESSION_SAME_SITE', 'lax'), + + /* + |-------------------------------------------------------------------------- + | Partitioned Cookies + |-------------------------------------------------------------------------- + | + | Setting this value to true will tie the cookie to the top-level site for + | a cross-site context. Partitioned cookies are accepted by the browser + | when flagged "secure" and the Same-Site attribute is set to "none". + | + */ + + 'partitioned' => env('SESSION_PARTITIONED_COOKIE', false), + +]; diff --git a/database/.gitignore b/database/.gitignore new file mode 100644 index 0000000..9b19b93 --- /dev/null +++ b/database/.gitignore @@ -0,0 +1 @@ +*.sqlite* diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php new file mode 100644 index 0000000..584104c --- /dev/null +++ b/database/factories/UserFactory.php @@ -0,0 +1,44 @@ + + */ +class UserFactory extends Factory +{ + /** + * The current password being used by the factory. + */ + protected static ?string $password; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => fake()->name(), + 'email' => fake()->unique()->safeEmail(), + 'email_verified_at' => now(), + 'password' => static::$password ??= Hash::make('password'), + 'remember_token' => Str::random(10), + ]; + } + + /** + * Indicate that the model's email address should be unverified. + */ + public function unverified(): static + { + return $this->state(fn (array $attributes) => [ + 'email_verified_at' => null, + ]); + } +} diff --git a/database/migrations/0001_01_01_000000_create_users_table.php b/database/migrations/0001_01_01_000000_create_users_table.php new file mode 100644 index 0000000..4b57bc9 --- /dev/null +++ b/database/migrations/0001_01_01_000000_create_users_table.php @@ -0,0 +1,44 @@ +id(); + + $table->string('name'); // nama user + $table->string('email')->unique(); // email login + $table->timestamp('email_verified_at')->nullable(); + + $table->string('password')->nullable(); + // nullable supaya bisa dipakai login Google nanti + + $table->string('google_id')->nullable(); + // untuk login Google + + $table->string('avatar')->nullable(); + // foto profil dari Google + + $table->rememberToken(); + // untuk fitur "ingat saya" + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('users'); + } +}; diff --git a/database/migrations/0001_01_01_000001_create_cache_table.php b/database/migrations/0001_01_01_000001_create_cache_table.php new file mode 100644 index 0000000..ed758bd --- /dev/null +++ b/database/migrations/0001_01_01_000001_create_cache_table.php @@ -0,0 +1,35 @@ +string('key')->primary(); + $table->mediumText('value'); + $table->integer('expiration')->index(); + }); + + Schema::create('cache_locks', function (Blueprint $table) { + $table->string('key')->primary(); + $table->string('owner'); + $table->integer('expiration')->index(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('cache'); + Schema::dropIfExists('cache_locks'); + } +}; diff --git a/database/migrations/0001_01_01_000002_create_jobs_table.php b/database/migrations/0001_01_01_000002_create_jobs_table.php new file mode 100644 index 0000000..425e705 --- /dev/null +++ b/database/migrations/0001_01_01_000002_create_jobs_table.php @@ -0,0 +1,57 @@ +id(); + $table->string('queue')->index(); + $table->longText('payload'); + $table->unsignedTinyInteger('attempts'); + $table->unsignedInteger('reserved_at')->nullable(); + $table->unsignedInteger('available_at'); + $table->unsignedInteger('created_at'); + }); + + Schema::create('job_batches', function (Blueprint $table) { + $table->string('id')->primary(); + $table->string('name'); + $table->integer('total_jobs'); + $table->integer('pending_jobs'); + $table->integer('failed_jobs'); + $table->longText('failed_job_ids'); + $table->mediumText('options')->nullable(); + $table->integer('cancelled_at')->nullable(); + $table->integer('created_at'); + $table->integer('finished_at')->nullable(); + }); + + Schema::create('failed_jobs', function (Blueprint $table) { + $table->id(); + $table->string('uuid')->unique(); + $table->text('connection'); + $table->text('queue'); + $table->longText('payload'); + $table->longText('exception'); + $table->timestamp('failed_at')->useCurrent(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('jobs'); + Schema::dropIfExists('job_batches'); + Schema::dropIfExists('failed_jobs'); + } +}; diff --git a/database/migrations/2026_03_19_143648_create_riwayat_prediksi_table.php b/database/migrations/2026_03_19_143648_create_riwayat_prediksi_table.php new file mode 100644 index 0000000..4323478 --- /dev/null +++ b/database/migrations/2026_03_19_143648_create_riwayat_prediksi_table.php @@ -0,0 +1,40 @@ +id(); + $table->foreignId('user_id')->constrained('users')->onDelete('cascade'); + + // Data diri + $table->string('nama'); + $table->enum('jenis_kelamin', ['L', 'P']); + $table->integer('umur'); + + // Gejala (disimpan sebagai JSON) + $table->json('gejala'); + + // Gaya hidup + $table->enum('stres', ['ya', 'tidak']); + $table->enum('merokok', ['ya', 'tidak']); + $table->enum('alkohol', ['ya', 'tidak']); + $table->enum('obat', ['ya', 'tidak']); + + // Hasil + $table->string('hasil'); + + $table->timestamps(); // created_at = waktu prediksi + }); + } + + public function down(): void + { + Schema::dropIfExists('riwayat_prediksi'); + } +}; diff --git a/database/migrations/2026_03_30_105535_add_indikasi_to_riwayat_prediksi_table.php b/database/migrations/2026_03_30_105535_add_indikasi_to_riwayat_prediksi_table.php new file mode 100644 index 0000000..bf8483a --- /dev/null +++ b/database/migrations/2026_03_30_105535_add_indikasi_to_riwayat_prediksi_table.php @@ -0,0 +1,28 @@ +text('indikasi')->nullable(); + }); + } + + public function down(): void + { + Schema::table('riwayat_prediksi', function (Blueprint $table) { + $table->dropColumn('indikasi'); + }); + } +}; diff --git a/database/migrations/2026_04_04_171541_change_indikasi_to_json.php b/database/migrations/2026_04_04_171541_change_indikasi_to_json.php new file mode 100644 index 0000000..d2bad0f --- /dev/null +++ b/database/migrations/2026_04_04_171541_change_indikasi_to_json.php @@ -0,0 +1,25 @@ +json('indikasi')->nullable()->change(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('json', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2026_04_06_171315_modify_riwayat_prediksi_nullable.php b/database/migrations/2026_04_06_171315_modify_riwayat_prediksi_nullable.php new file mode 100644 index 0000000..76fb14f --- /dev/null +++ b/database/migrations/2026_04_06_171315_modify_riwayat_prediksi_nullable.php @@ -0,0 +1,24 @@ +enum('jenis_kelamin', ['L', 'P'])->nullable()->change(); + $table->integer('umur')->nullable()->change(); + }); + } + + public function down() + { + Schema::table('riwayat_prediksi', function (Blueprint $table) { + $table->enum('jenis_kelamin', ['L', 'P'])->change(); + $table->integer('umur')->change(); + }); + } +}; diff --git a/database/migrations/2026_04_10_162926_add_google_id_to_users_table.php b/database/migrations/2026_04_10_162926_add_google_id_to_users_table.php new file mode 100644 index 0000000..289caa9 --- /dev/null +++ b/database/migrations/2026_04_10_162926_add_google_id_to_users_table.php @@ -0,0 +1,24 @@ +string('google_id')->nullable()->after('email'); + $table->string('password')->nullable()->change(); + }); + } + + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn('google_id'); + $table->string('password')->nullable(false)->change(); + }); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php new file mode 100644 index 0000000..6b901f8 --- /dev/null +++ b/database/seeders/DatabaseSeeder.php @@ -0,0 +1,25 @@ +create(); + + User::factory()->create([ + 'name' => 'Test User', + 'email' => 'test@example.com', + ]); + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..7686b29 --- /dev/null +++ b/package.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://www.schemastore.org/package.json", + "private": true, + "type": "module", + "scripts": { + "build": "vite build", + "dev": "vite" + }, + "devDependencies": { + "@tailwindcss/vite": "^4.0.0", + "axios": "^1.11.0", + "concurrently": "^9.0.1", + "laravel-vite-plugin": "^2.0.0", + "tailwindcss": "^4.0.0", + "vite": "^7.0.7" + } +} diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..d703241 --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,35 @@ + + + + + tests/Unit + + + tests/Feature + + + + + app + + + + + + + + + + + + + + + + + + diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..b574a59 --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,25 @@ + + + Options -MultiViews -Indexes + + + RewriteEngine On + + # Handle Authorization Header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Handle X-XSRF-Token Header + RewriteCond %{HTTP:x-xsrf-token} . + RewriteRule .* - [E=HTTP_X_XSRF_TOKEN:%{HTTP:X-XSRF-Token}] + + # Redirect Trailing Slashes If Not A Folder... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} (.+)/$ + RewriteRule ^ %1 [L,R=301] + + # Send Requests To Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + diff --git a/public/animation/sehati-animation.html b/public/animation/sehati-animation.html new file mode 100644 index 0000000..ab0efc1 --- /dev/null +++ b/public/animation/sehati-animation.html @@ -0,0 +1,257 @@ + + + + + SEHATI - Intro Animation + + + + + +
+ +
+ +
+
+
+ + +
+ + +
+ SEHATI Logo + SEHATI +
+
+ + + + + diff --git a/public/css/layout.css b/public/css/layout.css new file mode 100644 index 0000000..782accd --- /dev/null +++ b/public/css/layout.css @@ -0,0 +1,267 @@ +@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap'); + +/* ─── Global ─── */ +body { + font-family: 'Plus Jakarta Sans', sans-serif; + color: #1a2e1f; + overflow-x: hidden; + background-color: #ffffff; + padding-top: 70px; +} + +/* ════════════════════════════════ + NAVBAR +════════════════════════════════ */ +.navbar { + background: rgba(255, 255, 255, 0.95) !important; + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + border-bottom: 1px solid rgba(0, 0, 0, 0.05); + height: 70px; +} + +.navbar-brand { + color: #4F7C59; + font-size: 22px; + font-weight: 800; + letter-spacing: -0.5px; + text-decoration: none; + display: flex; + align-items: center; + gap: 1px; +} +.navbar-brand:hover { + color: #2D5A3D; +} + +.navbar-logo { + height: 100px; + width: auto; + margin: -20px 2px -20px 0; + filter: contrast(1.2) saturate(1.3); + position: relative; + z-index: 10; +} + +.navbar .nav-link { + font-family: 'Plus Jakarta Sans', sans-serif; + font-weight: 500; + font-size: 14px; + color: #5a6b5e !important; + position: relative; + padding: 6px 4px !important; + transition: color 0.25s ease, transform 0.25s ease; +} +.navbar .nav-link::after { + content: ''; + position: absolute; + width: 0; + height: 2px; + bottom: 0; + left: 50%; + background-color: #4F7C59; + transition: all 0.3s ease; + transform: translateX(-50%); + border-radius: 2px; +} +.navbar .nav-link:hover { + color: #4F7C59 !important; + transform: translateY(-1px); +} +.navbar .nav-link:hover::after { + width: 80%; +} + +/* Login button */ +.navbar .nav-link.nav-btn-login { + background-color: #4F7C59; + color: #ffffff !important; + border-radius: 50px; + padding: 8px 22px !important; + font-weight: 600; + border: 2px solid #4F7C59; + transition: all 0.25s ease; +} +.navbar .nav-link.nav-btn-login::after { + display: none; +} +.navbar .nav-link.nav-btn-login:hover { + background-color: transparent; + color: #4F7C59 !important; + transform: translateY(-2px); + box-shadow: 0 4px 14px rgba(79,124,89,0.2); +} + +/* ════════════════════════════════ + HAMBURGER +════════════════════════════════ */ +.navbar-toggler { + border: none; + background: transparent; + padding: 4px 6px; + box-shadow: none !important; + outline: none !important; +} + +.hamburger-icon { + display: flex; + flex-direction: column; + gap: 5px; + width: 24px; +} + +.hamburger-icon span { + display: block; + height: 2px; + width: 100%; + background-color: #4F7C59; + border-radius: 2px; + transition: all 0.3s ease; +} + +/* Animasi X saat menu terbuka */ +.navbar-toggler[aria-expanded="true"] .hamburger-icon span:nth-child(1) { + transform: translateY(7px) rotate(45deg); +} +.navbar-toggler[aria-expanded="true"] .hamburger-icon span:nth-child(2) { + opacity: 0; + transform: scaleX(0); +} +.navbar-toggler[aria-expanded="true"] .hamburger-icon span:nth-child(3) { + transform: translateY(-7px) rotate(-45deg); +} + +/* Dropdown mobile */ +.navbar-collapse { + background: rgba(255, 255, 255, 0.98); + border-radius: 0 0 16px 16px; + padding: 0; + margin-top: 0; +} + +@media (max-width: 991px) { + .navbar { + height: auto; + min-height: 70px; + } + + .navbar-collapse { + padding: 12px 8px 16px; + border-top: 1px solid rgba(0,0,0,0.05); + margin-top: 8px; + } + + .navbar .nav-link { + padding: 10px 12px !important; + border-radius: 8px; + } + + .navbar .nav-link:hover { + background-color: rgba(79, 124, 89, 0.06); + transform: none; + } + + .navbar .nav-link::after { + display: none; + } + + .navbar .nav-link.nav-btn-login { + display: inline-block; + margin-top: 4px; + text-align: center; + } +} + +/* ════════════════════════════════ + FOOTER +════════════════════════════════ */ +footer { + font-family: 'Plus Jakarta Sans', sans-serif; + font-size: 13px; + color: #6b7c6e; + border-top: 1px solid #e8f0e5; + padding: 20px 0; + text-align: center; +} + +/* ─── Profil Dropdown ─── */ +.nav-profil-btn { + display: flex; + align-items: center; + gap: 8px; + background: transparent; + border: 1.5px solid #D8E8D2; + border-radius: 50px; + padding: 5px 12px 5px 5px; + cursor: pointer; + transition: all 0.2s; +} +.nav-profil-btn:hover { + border-color: #7DAA6E; + background: #F4FAF1; +} +.nav-profil-btn::after { + color: #4F7C59; +} +.nav-profil-avatar { + width: 30px; + height: 30px; + border-radius: 50%; + background: linear-gradient(135deg, #4F7C59, #2D5A3D); + color: white; + font-size: 13px; + font-weight: 700; + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; +} +.nav-profil-name { + font-size: 13px; + font-weight: 600; + color: #2D5A3D; +} +.nav-dropdown { + border: 1.5px solid #D8E8D2; + border-radius: 14px; + box-shadow: 0 8px 24px rgba(45,90,61,0.12); + padding: 6px; + min-width: 180px; +} +.nav-dropdown-item { + display: flex; + align-items: center; + gap: 10px; + font-size: 13px; + font-weight: 500; + color: #2D5A3D; + border-radius: 8px; + padding: 9px 12px; + transition: background 0.15s; +} +.nav-dropdown-item:hover { + background: #F4FAF1; + color: #2D5A3D; +} +.nav-dropdown-item i { + width: 14px; + color: #7DAA6E; + font-size: 13px; +} +.nav-dropdown-divider { + border-color: #D8E8D2; + margin: 4px 0; +} +.nav-dropdown-logout { + color: #c0392b !important; + width: 100%; + background: transparent; + border: none; + text-align: left; +} +.nav-dropdown-logout:hover { + background: #fff5f5 !important; +} +.nav-dropdown-logout i { + color: #c0392b !important; +} diff --git a/public/css/login.css b/public/css/login.css new file mode 100644 index 0000000..1afbd2b --- /dev/null +++ b/public/css/login.css @@ -0,0 +1,256 @@ +/* ════════════════════════════════ + LOGIN PAGE +════════════════════════════════ */ + +.login-section { + min-height: calc(100vh - 70px); + display: flex; + align-items: center; + justify-content: center; + padding: 40px 16px; + background: radial-gradient(circle at 20% 80%, #e7f1e4 0%, #ffffff 60%); + position: relative; + overflow: hidden; +} +.login-section::before { + content: ''; + position: absolute; + width: 400px; height: 400px; + background: radial-gradient(circle, rgba(125,170,110,0.12) 0%, transparent 70%); + top: -80px; right: -80px; + pointer-events: none; +} + +/* ─── Card ─── */ +.login-card { + background: #ffffff; + border: 1px solid #D8E8D2; + border-radius: 24px; + box-shadow: 0 8px 40px rgba(45,90,61,0.1); + padding: 48px 44px; + width: 100%; + max-width: 440px; + position: relative; + overflow: hidden; +} +.login-card::before { + content: ''; + position: absolute; + top: 0; left: 0; right: 0; + height: 3px; + background: linear-gradient(90deg, #7DAA6E, #2D5A3D); +} + +/* ─── Header ─── */ +.login-header { + text-align: center; + margin-bottom: 28px; +} +.login-logo-wrap { + display: flex; + align-items: center; + justify-content: center; + gap: 4px; + margin-bottom: 4px; +} +.login-logo-box { + width: 40px; + height: 40px; + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; +} +.login-logo { + width: 250%; + height: 250%; + object-fit: contain; + filter: contrast(1.2) saturate(1.3); +} +.login-brand { + font-family: 'Plus Jakarta Sans', sans-serif; + font-weight: 800; + font-size: 2rem; + color: #4F7C59; + line-height: 1; +} +.login-subtitle { + font-size: 13px; + color: #6B7F70; + margin: 0; +} + +/* ─── Form Labels ─── */ +.login-label { + display: block; + font-size: 12px; + font-weight: 600; + color: #2D5A3D; + letter-spacing: 0.4px; + text-transform: uppercase; + margin-bottom: 7px; +} + +/* ─── Input Group ─── */ +.login-input-wrap { + position: relative; + margin-bottom: 18px; +} +.login-input-icon { + position: absolute; + left: 14px; + top: 50%; + transform: translateY(-50%); + color: #7DAA6E; + font-size: 14px; + pointer-events: none; +} +.login-input { + width: 100%; + padding: 12px 16px 12px 40px; + border: 1.5px solid #D8E8D2; + border-radius: 12px; + background: #F4FAF1; + font-family: 'Plus Jakarta Sans', sans-serif; + font-size: 14px; + color: #1C2B22; + outline: none; + transition: border-color 0.25s, box-shadow 0.25s, background 0.25s; +} +.login-input:focus { + border-color: #7DAA6E; + box-shadow: 0 0 0 3px rgba(125,170,110,0.15); + background: #ffffff; +} +.login-input::placeholder { + color: #a0b5a5; +} + +/* ─── Remember & Forgot ─── */ +.login-row { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 24px; +} +.login-remember { + display: flex; + align-items: center; + gap: 7px; + font-size: 13px; + color: #6B7F70; + cursor: pointer; +} +.login-remember input[type="checkbox"] { + width: 16px; height: 16px; + accent-color: #4F7C59; + cursor: pointer; +} +.login-forgot { + font-size: 13px; + font-weight: 600; + color: #4F7C59; + text-decoration: none; + transition: color 0.2s; +} +.login-forgot:hover { + color: #2D5A3D; +} + +/* ─── Submit Button ─── */ +.btn-login { + width: 100%; + padding: 13px; + border: none; + border-radius: 50px; + background: linear-gradient(135deg, #4F7C59, #2D5A3D); + font-family: 'Plus Jakarta Sans', sans-serif; + font-size: 14px; + font-weight: 700; + color: white; + cursor: pointer; + transition: all 0.25s ease; + box-shadow: 0 4px 16px rgba(45,90,61,0.25); +} +.btn-login:hover { + transform: translateY(-2px); + box-shadow: 0 8px 24px rgba(45,90,61,0.35); +} +.btn-login:active { + transform: scale(0.98); +} + +/* ─── Divider ─── */ +.login-divider { + display: flex; + align-items: center; + gap: 12px; + margin: 24px 0 16px; +} +.login-divider::before, +.login-divider::after { + content: ''; + flex: 1; + height: 1px; + background: #D8E8D2; +} +.login-divider span { + font-size: 12px; + color: #a0b5a5; + white-space: nowrap; +} + +/* ─── Social Button ─── */ +.btn-social { + width: 44px; height: 44px; + border-radius: 50%; + border: 1.5px solid #D8E8D2; + background: #ffffff; + display: flex; align-items: center; justify-content: center; + cursor: pointer; + transition: all 0.2s; + box-shadow: 0 2px 8px rgba(0,0,0,0.06); +} +.btn-social:hover { + border-color: #7DAA6E; + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(0,0,0,0.1); +} + +/* ─── Register Link ─── */ +.login-register { + text-align: center; + margin-top: 24px; + font-size: 13px; + color: #6B7F70; +} +.login-register a { + font-weight: 700; + color: #4F7C59; + text-decoration: none; + transition: color 0.2s; +} +.login-register a:hover { + color: #2D5A3D; +} + +/* ─── Alert ─── */ +.alert { + font-family: 'Plus Jakarta Sans', sans-serif; + font-size: 13px; + font-weight: 500; + border-radius: 12px; + padding: 12px 16px; + margin-bottom: 20px; + border: none; +} +.alert-danger { + background: #fff0f0; + color: #c0392b; + border-left: 4px solid #e74c3c; +} +.alert-success { + background: #f0faf3; + color: #2d6a2f; + border-left: 4px solid #4F7C59; +} diff --git a/public/css/lupa-password.css b/public/css/lupa-password.css new file mode 100644 index 0000000..fbe2d2c --- /dev/null +++ b/public/css/lupa-password.css @@ -0,0 +1,235 @@ +/* ════════════════════════════════ + LOGIN PAGE +════════════════════════════════ */ + +.login-section { + min-height: calc(100vh - 70px); + display: flex; + align-items: center; + justify-content: center; + padding: 40px 16px; + background: radial-gradient(circle at 20% 80%, #e7f1e4 0%, #ffffff 60%); + position: relative; + overflow: hidden; +} +.login-section::before { + content: ''; + position: absolute; + width: 400px; height: 400px; + background: radial-gradient(circle, rgba(125,170,110,0.12) 0%, transparent 70%); + top: -80px; right: -80px; + pointer-events: none; +} + +/* ─── Card ─── */ +.login-card { + background: #ffffff; + border: 1px solid #D8E8D2; + border-radius: 24px; + box-shadow: 0 8px 40px rgba(45,90,61,0.1); + padding: 48px 44px; + width: 100%; + max-width: 440px; + position: relative; + overflow: hidden; +} +.login-card::before { + content: ''; + position: absolute; + top: 0; left: 0; right: 0; + height: 3px; + background: linear-gradient(90deg, #7DAA6E, #2D5A3D); +} + +/* ─── Header ─── */ +.login-header { + text-align: center; + margin-bottom: 28px; +} +.login-logo-wrap { + display: flex; + align-items: center; + justify-content: center; + gap: 4px; + margin-bottom: 4px; +} +.login-logo-box { + width: 40px; + height: 40px; + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; +} +.login-logo { + width: 250%; + height: 250%; + object-fit: contain; + filter: contrast(1.2) saturate(1.3); +} +.login-brand { + font-family: 'Plus Jakarta Sans', sans-serif; + font-weight: 800; + font-size: 2rem; + color: #4F7C59; + line-height: 1; +} +.login-subtitle { + font-size: 13px; + color: #6B7F70; + margin: 0; +} + +/* ─── Form Labels ─── */ +.login-label { + display: block; + font-size: 12px; + font-weight: 600; + color: #2D5A3D; + letter-spacing: 0.4px; + text-transform: uppercase; + margin-bottom: 7px; +} + +/* ─── Input Group ─── */ +.login-input-wrap { + position: relative; + margin-bottom: 18px; +} +.login-input-icon { + position: absolute; + left: 14px; + top: 50%; + transform: translateY(-50%); + color: #7DAA6E; + font-size: 14px; + pointer-events: none; +} +.login-input { + width: 100%; + padding: 12px 16px 12px 40px; + border: 1.5px solid #D8E8D2; + border-radius: 12px; + background: #F4FAF1; + font-family: 'Plus Jakarta Sans', sans-serif; + font-size: 14px; + color: #1C2B22; + outline: none; + transition: border-color 0.25s, box-shadow 0.25s, background 0.25s; +} +.login-input:focus { + border-color: #7DAA6E; + box-shadow: 0 0 0 3px rgba(125,170,110,0.15); + background: #ffffff; +} +.login-input::placeholder { + color: #a0b5a5; +} + +/* ─── Remember & Forgot ─── */ +.login-row { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 24px; +} +.login-remember { + display: flex; + align-items: center; + gap: 7px; + font-size: 13px; + color: #6B7F70; + cursor: pointer; +} +.login-remember input[type="checkbox"] { + width: 16px; height: 16px; + accent-color: #4F7C59; + cursor: pointer; +} +.login-forgot { + font-size: 13px; + font-weight: 600; + color: #4F7C59; + text-decoration: none; + transition: color 0.2s; +} +.login-forgot:hover { + color: #2D5A3D; +} + +/* ─── Submit Button ─── */ +.btn-login { + width: 100%; + padding: 13px; + border: none; + border-radius: 50px; + background: linear-gradient(135deg, #4F7C59, #2D5A3D); + font-family: 'Plus Jakarta Sans', sans-serif; + font-size: 14px; + font-weight: 700; + color: white; + cursor: pointer; + transition: all 0.25s ease; + box-shadow: 0 4px 16px rgba(45,90,61,0.25); +} +.btn-login:hover { + transform: translateY(-2px); + box-shadow: 0 8px 24px rgba(45,90,61,0.35); +} +.btn-login:active { + transform: scale(0.98); +} + +/* ─── Divider ─── */ +.login-divider { + display: flex; + align-items: center; + gap: 12px; + margin: 24px 0 16px; +} +.login-divider::before, +.login-divider::after { + content: ''; + flex: 1; + height: 1px; + background: #D8E8D2; +} +.login-divider span { + font-size: 12px; + color: #a0b5a5; + white-space: nowrap; +} + +/* ─── Social Button ─── */ +.btn-social { + width: 44px; height: 44px; + border-radius: 50%; + border: 1.5px solid #D8E8D2; + background: #ffffff; + display: flex; align-items: center; justify-content: center; + cursor: pointer; + transition: all 0.2s; + box-shadow: 0 2px 8px rgba(0,0,0,0.06); +} +.btn-social:hover { + border-color: #7DAA6E; + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(0,0,0,0.1); +} + +/* ─── Register Link ─── */ +.login-register { + text-align: center; + margin-top: 24px; + font-size: 13px; + color: #6B7F70; +} +.login-register a { + font-weight: 700; + color: #4F7C59; + text-decoration: none; + transition: color 0.2s; +} +.login-register a:hover { + color: #2D5A3D; +} diff --git a/public/css/prediksi.css b/public/css/prediksi.css new file mode 100644 index 0000000..b607baa --- /dev/null +++ b/public/css/prediksi.css @@ -0,0 +1,628 @@ +@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700&family=DM+Serif+Display:ital@0;1&display=swap'); + +:root { + --green-deep: #2D5A3D; + --green-mid: #4F7C59; + --green-soft: #7DAA6E; + --green-pale: #EAF3E6; + --green-mist: #F4FAF1; + --cream: #FAFAF8; + --text-dark: #1C2B22; + --text-muted: #6B7F70; + --border: #D8E8D2; + --white: #FFFFFF; + --shadow-sm: 0 2px 12px rgba(45,90,61,0.08); + --shadow-md: 0 8px 32px rgba(45,90,61,0.12); + --radius-lg: 20px; + --radius-md: 12px; + --radius-sm: 8px; +} + +*, *::before, *::after { box-sizing: border-box; } + +/* Hanya override body khusus halaman prediksi lewat class wrapper, + bukan di level html/body global agar tidak bentrok dengan app.blade.php */ + +/* ─── Background Blob ─── */ +.bg-blob { + position: fixed; + pointer-events: none; + z-index: 0; + border-radius: 50%; + filter: blur(80px); + opacity: 0.45; +} +.bg-blob-1 { + width: 500px; height: 500px; + background: radial-gradient(circle, #b8dba8 0%, transparent 70%); + top: -120px; right: -80px; +} +.bg-blob-2 { + width: 350px; height: 350px; + background: radial-gradient(circle, #d4eecc 0%, transparent 70%); + bottom: -80px; left: -60px; +} + +/* ─── Layout ─── */ +.page-wrap { + position: relative; + z-index: 1; + min-height: calc(100vh - 70px); + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 24px 16px; + background: var(--cream); + font-family: 'Plus Jakarta Sans', sans-serif; + color: var(--text-dark); + overflow: hidden; +} + +/* ─── Header ─── */ +.form-header { + text-align: center; + margin-bottom: 32px; +} +.form-header .eyebrow { + font-size: 11px; + font-weight: 600; + letter-spacing: 3px; + text-transform: uppercase; + color: var(--green-soft); + margin-bottom: 8px; +} +.form-header h2, +.form-main-title { + font-family: 'Plus Jakarta Sans', sans-serif; + font-weight: 800; + font-size: clamp(1.6rem, 3vw, 2.2rem); + color: var(--green-deep); + line-height: 1.2; +} + +/* ─── Step Progress ─── */ +.step-progress { + display: flex; + align-items: flex-start; + margin-bottom: 32px; +} +.step-dot { + display: flex; + flex-direction: column; + align-items: center; + gap: 6px; + width: 60px; +} +.step-dot .dot { + width: 32px; height: 32px; + border-radius: 50%; + border: 2px solid var(--border); + background: var(--white); + display: flex; + align-items: center; + justify-content: center; + font-size: 12px; + font-weight: 600; + color: var(--text-muted); + transition: all 0.35s ease; + position: relative; + z-index: 1; +} +.step-dot .dot-label { + font-size: 10px; + font-weight: 500; + color: var(--text-muted); + white-space: nowrap; + transition: color 0.3s; + text-align: center; +} +.step-dot.active .dot { + background: var(--green-mid); + border-color: var(--green-mid); + color: white; + box-shadow: 0 0 0 4px rgba(79,124,89,0.18); +} +.step-dot.active .dot-label { color: var(--green-mid); font-weight: 600; } +.step-dot.done .dot { + background: var(--green-soft); + border-color: var(--green-soft); + color: white; +} +.step-dot.done .dot-label { color: var(--green-soft); } + +.step-line { + width: 60px; + height: 2px; + background: var(--border); + margin-top: 15px; + margin-bottom: 0; + position: relative; + overflow: hidden; + flex-shrink: 0; +} +.step-line::after { + content: ''; + position: absolute; + left: 0; top: 0; + height: 100%; + width: 0%; + background: var(--green-soft); + transition: width 0.5s ease; +} +.step-line.filled::after { width: 100%; } + +/* ─── Card ─── */ +.form-card { + background: var(--white); + border: 1px solid var(--border); + border-radius: var(--radius-lg); + box-shadow: var(--shadow-md); + width: 100%; + max-width: 480px; + padding: 36px 40px; + position: relative; + overflow: hidden; +} +.form-card::before { + content: ''; + position: absolute; + top: 0; left: 0; right: 0; + height: 3px; + background: linear-gradient(90deg, var(--green-soft), var(--green-deep)); +} + +/* ─── Slides ─── */ +.slide-container { + position: relative; + min-height: 260px; +} +.prediction-slide { + position: absolute; + top: 0; left: 0; right: 0; + opacity: 0; + pointer-events: none; + transform: translateX(30px); + transition: opacity 0.35s ease, transform 0.35s ease; +} +.prediction-slide.active { + opacity: 1; + pointer-events: all; + transform: translateX(0); + position: relative; +} +.prediction-slide.exit-left { + opacity: 0; + transform: translateX(-30px); +} + +/* ─── Slide Title ─── */ +.slide-title { + font-size: 13px; + font-weight: 600; + color: var(--text-muted); + letter-spacing: 0.5px; + margin-bottom: 20px; + display: flex; + align-items: center; + gap: 8px; +} +.slide-title .icon { + width: 28px; height: 28px; + background: var(--green-pale); + border-radius: 8px; + display: flex; align-items: center; justify-content: center; + font-size: 14px; +} + +/* ─── Form Fields ─── */ +.field-group { margin-bottom: 18px; } +.field-group label { + display: block; + font-size: 12px; + font-weight: 600; + color: var(--green-deep); + letter-spacing: 0.4px; + margin-bottom: 7px; + text-transform: uppercase; +} +.field-group input, +.field-group select { + width: 100%; + padding: 12px 16px; + border: 1.5px solid var(--border); + border-radius: var(--radius-md); + background: var(--green-mist); + font-family: 'Plus Jakarta Sans', sans-serif; + font-size: 14px; + color: var(--text-dark); + outline: none; + transition: border-color 0.25s, box-shadow 0.25s, background 0.25s; + appearance: none; + -webkit-appearance: none; +} +.field-group input:focus, +.field-group select:focus { + border-color: var(--green-soft); + box-shadow: 0 0 0 3px rgba(125,170,110,0.15); + background: var(--white); +} +.field-group input.error, +.field-group select.error { + border-color: #e07070; + box-shadow: 0 0 0 3px rgba(224,112,112,0.12); +} +.field-group .select-wrap { position: relative; } +.field-group .select-wrap::after { + content: ''; + position: absolute; + right: 14px; top: 50%; + transform: translateY(-50%); + width: 0; height: 0; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 6px solid var(--green-soft); + pointer-events: none; +} +.field-error { + font-size: 11px; + color: #c0504e; + margin-top: 5px; + display: none; + font-weight: 500; +} +.field-error.show { display: block; } +.field-hint { + display: block; + font-size: 11px; + color: var(--text-muted); + margin-top: -4px; + margin-bottom: 6px; + line-height: 1.4; +} +.slide-hint { + display: block; + font-size: 12px; + color: var(--text-muted); + margin-top: -8px; + margin-bottom: 16px; + line-height: 1.5; +} + +/* ─── Radio Group ─── */ +.radio-group { display: flex; gap: 10px; } +.radio-option { flex: 1; position: relative; } +.radio-option input[type="radio"] { position: absolute; opacity: 0; width: 0; } +.radio-option label { + display: flex; + align-items: center; + justify-content: center; + gap: 6px; + padding: 11px; + border: 1.5px solid var(--border); + border-radius: var(--radius-md); + background: var(--green-mist); + cursor: pointer; + font-size: 13px; + font-weight: 500; + color: var(--text-muted); + text-transform: none; + letter-spacing: 0; + transition: all 0.2s; +} +.radio-option input[type="radio"]:checked + label { + border-color: var(--green-mid); + background: var(--green-pale); + color: var(--green-deep); + font-weight: 600; + box-shadow: 0 0 0 3px rgba(79,124,89,0.12); +} +.radio-option label:hover { + border-color: var(--green-soft); + background: var(--white); +} + +/* ─── Navigation Buttons ─── */ +.form-nav { + display: flex; + align-items: center; + justify-content: space-between; + margin-top: 28px; + padding-top: 20px; + border-top: 1px solid var(--border); +} +.btn-prev { + display: flex; + align-items: center; + gap: 6px; + padding: 10px 20px; + border: 1.5px solid var(--border); + border-radius: 50px; + background: transparent; + font-family: 'Plus Jakarta Sans', sans-serif; + font-size: 13px; + font-weight: 600; + color: var(--text-muted); + cursor: pointer; + transition: all 0.25s; +} +.btn-prev:hover:not(:disabled) { + border-color: var(--green-soft); + color: var(--green-mid); + transform: translateX(-2px); +} +.btn-prev:disabled { opacity: 0.3; cursor: not-allowed; } +.btn-next { + display: flex; + align-items: center; + gap: 6px; + padding: 11px 24px; + border: none; + border-radius: 50px; + background: linear-gradient(135deg, var(--green-mid), var(--green-deep)); + font-family: 'Plus Jakarta Sans', sans-serif; + font-size: 13px; + font-weight: 600; + color: white; + cursor: pointer; + transition: all 0.25s; + box-shadow: 0 4px 14px rgba(45,90,61,0.25); +} +.btn-next:hover { + transform: translateX(2px); + box-shadow: 0 6px 20px rgba(45,90,61,0.35); +} +.btn-next:active { transform: scale(0.97); } + +/* ─── Symptom Checkboxes ─── */ +.symptom-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 8px; +} +.symptom-item { position: relative; } +.symptom-item input[type="checkbox"] { position: absolute; opacity: 0; width: 0; } +.symptom-item label { + display: flex; + align-items: flex-start; + gap: 8px; + padding: 10px 12px; + border: 1.5px solid var(--border); + border-radius: var(--radius-sm); + background: var(--green-mist); + cursor: pointer; + font-size: 12px; + font-weight: 500; + color: var(--text-muted); + text-transform: none; + letter-spacing: 0; + transition: all 0.2s; + min-height: 48px; + line-height: 1.4; +} +.symptom-item input:checked + label { + border-color: var(--green-mid); + background: var(--green-pale); + color: var(--green-deep); + font-weight: 600; +} +.symptom-item label .check-box { + width: 16px; height: 16px; + border: 2px solid var(--border); + border-radius: 4px; + flex-shrink: 0; + margin-top: 1px; + transition: all 0.2s; + display: flex; align-items: center; justify-content: center; +} +.symptom-item input:checked + label .check-box { + background: var(--green-mid); + border-color: var(--green-mid); +} +.symptom-item input:checked + label .check-box::after { + content: '✓'; + color: white; + font-size: 10px; + font-weight: 700; +} + +/* ─── Result Placeholder ─── */ +.result-placeholder { + text-align: center; + padding: 12px 0 4px; +} +.result-placeholder .result-icon { + width: 64px; height: 64px; + background: var(--green-pale); + border-radius: 50%; + display: flex; align-items: center; justify-content: center; + font-size: 28px; + margin: 0 auto 16px; +} +.result-placeholder p { + font-size: 13px; + color: var(--text-muted); + line-height: 1.6; +} + +/* ─── Result Prediction ─── */ + +.result-box { + padding: 22px; + border-radius: 16px; + border: 1.5px solid var(--border); + background: #fffdf4; +} + +.result-box.risk { + background: linear-gradient(160deg, #fffbee 0%, #fff8e0 100%); + border-color: #f5d97a; +} + +.result-box.safe { + background: linear-gradient(160deg, #f2fbf4 0%, #e6f7ea 100%); + border-color: var(--green-soft); +} + +.result-badge { + display: inline-flex; + align-items: center; + gap: 6px; + background: #fff3cd; + border: 1px solid #f5d97a; + color: #9a6c00; + font-size: 10px; + font-weight: 700; + letter-spacing: 0.8px; + text-transform: uppercase; + padding: 4px 12px; + border-radius: 50px; + margin-bottom: 16px; +} + +.disease-name { + font-size: 24px; + font-weight: 800; + color: var(--green-deep); + letter-spacing: -0.3px; + line-height: 1.2; + margin-bottom: 18px; +} + +.result-divider { + height: 1px; + background: linear-gradient(90deg, #f5d97a, transparent); + margin-bottom: 16px; + opacity: 0.6; +} + +.result-desc { + font-size: 13px; + color: var(--text-dark); + line-height: 1.65; + margin-bottom: 16px; +} + +.result-tips { + background: rgba(255, 255, 255, 0.7); + border: 1px solid rgba(245, 217, 122, 0.5); + border-left: 3px solid #e6a800; + border-radius: 10px; + padding: 13px 15px; + margin-bottom: 16px; +} + +.tips-label { + font-size: 10px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.8px; + color: #9a6c00; + margin-bottom: 6px; +} + +.tips-text { + font-size: 12.5px; + color: var(--text-dark); + line-height: 1.6; + margin: 0; +} + +.disclaimer-line { + height: 1px; + background: linear-gradient(90deg, #f5d97a, transparent); + margin-bottom: 14px; + opacity: 0.6; +} + +.result-disclaimer { + display: flex; + align-items: flex-start; + gap: 10px; + font-size: 11.5px; + color: var(--text-muted); + line-height: 1.55; +} + +.result-disclaimer p { + margin: 0; + flex: 1; +} + +.disclaimer-icon { + font-size: 14px; + flex-shrink: 0; + margin-top: 1px; +} + +/* ─── Custom Alert Modal ─── */ +.custom-alert-overlay { + display: none; + position: fixed; + inset: 0; + z-index: 9999; + background: rgba(28, 43, 34, 0.5); + align-items: center; + justify-content: center; + backdrop-filter: blur(3px); +} +.custom-alert-overlay.show { + display: flex; +} +.custom-alert-box { + background: var(--white); + border-radius: var(--radius-lg); + border: 1px solid var(--border); + box-shadow: var(--shadow-md); + padding: 2rem 1.75rem; + max-width: 360px; + width: 90%; + text-align: center; + position: relative; + animation: alertPop 0.25s ease; +} +@keyframes alertPop { + from { opacity: 0; transform: scale(0.92) translateY(8px); } + to { opacity: 1; transform: scale(1) translateY(0); } +} +.custom-alert-icon { + width: 56px; + height: 56px; + border-radius: 50%; + background: #fff8e6; + border: 2px solid #f5c842; + display: flex; + align-items: center; + justify-content: center; + margin: 0 auto 1.25rem; +} +.custom-alert-box h3 { + font-size: 16px; + font-weight: 700; + color: var(--green-deep); + margin-bottom: 0.5rem; +} +.custom-alert-box p { + font-size: 13px; + color: var(--text-muted); + line-height: 1.65; + margin-bottom: 1.5rem; +} +.custom-alert-btn { + width: 100%; + padding: 11px 0; + border: none; + border-radius: 50px; + background: linear-gradient(135deg, var(--green-mid), var(--green-deep)); + color: white; + font-family: 'Plus Jakarta Sans', sans-serif; + font-size: 13px; + font-weight: 600; + cursor: pointer; + box-shadow: 0 4px 14px rgba(45,90,61,0.25); + transition: all 0.2s; +} +.custom-alert-btn:hover { + box-shadow: 0 6px 20px rgba(45,90,61,0.35); + transform: translateY(-1px); +} diff --git a/public/css/register.css b/public/css/register.css new file mode 100644 index 0000000..fbe2d2c --- /dev/null +++ b/public/css/register.css @@ -0,0 +1,235 @@ +/* ════════════════════════════════ + LOGIN PAGE +════════════════════════════════ */ + +.login-section { + min-height: calc(100vh - 70px); + display: flex; + align-items: center; + justify-content: center; + padding: 40px 16px; + background: radial-gradient(circle at 20% 80%, #e7f1e4 0%, #ffffff 60%); + position: relative; + overflow: hidden; +} +.login-section::before { + content: ''; + position: absolute; + width: 400px; height: 400px; + background: radial-gradient(circle, rgba(125,170,110,0.12) 0%, transparent 70%); + top: -80px; right: -80px; + pointer-events: none; +} + +/* ─── Card ─── */ +.login-card { + background: #ffffff; + border: 1px solid #D8E8D2; + border-radius: 24px; + box-shadow: 0 8px 40px rgba(45,90,61,0.1); + padding: 48px 44px; + width: 100%; + max-width: 440px; + position: relative; + overflow: hidden; +} +.login-card::before { + content: ''; + position: absolute; + top: 0; left: 0; right: 0; + height: 3px; + background: linear-gradient(90deg, #7DAA6E, #2D5A3D); +} + +/* ─── Header ─── */ +.login-header { + text-align: center; + margin-bottom: 28px; +} +.login-logo-wrap { + display: flex; + align-items: center; + justify-content: center; + gap: 4px; + margin-bottom: 4px; +} +.login-logo-box { + width: 40px; + height: 40px; + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; +} +.login-logo { + width: 250%; + height: 250%; + object-fit: contain; + filter: contrast(1.2) saturate(1.3); +} +.login-brand { + font-family: 'Plus Jakarta Sans', sans-serif; + font-weight: 800; + font-size: 2rem; + color: #4F7C59; + line-height: 1; +} +.login-subtitle { + font-size: 13px; + color: #6B7F70; + margin: 0; +} + +/* ─── Form Labels ─── */ +.login-label { + display: block; + font-size: 12px; + font-weight: 600; + color: #2D5A3D; + letter-spacing: 0.4px; + text-transform: uppercase; + margin-bottom: 7px; +} + +/* ─── Input Group ─── */ +.login-input-wrap { + position: relative; + margin-bottom: 18px; +} +.login-input-icon { + position: absolute; + left: 14px; + top: 50%; + transform: translateY(-50%); + color: #7DAA6E; + font-size: 14px; + pointer-events: none; +} +.login-input { + width: 100%; + padding: 12px 16px 12px 40px; + border: 1.5px solid #D8E8D2; + border-radius: 12px; + background: #F4FAF1; + font-family: 'Plus Jakarta Sans', sans-serif; + font-size: 14px; + color: #1C2B22; + outline: none; + transition: border-color 0.25s, box-shadow 0.25s, background 0.25s; +} +.login-input:focus { + border-color: #7DAA6E; + box-shadow: 0 0 0 3px rgba(125,170,110,0.15); + background: #ffffff; +} +.login-input::placeholder { + color: #a0b5a5; +} + +/* ─── Remember & Forgot ─── */ +.login-row { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 24px; +} +.login-remember { + display: flex; + align-items: center; + gap: 7px; + font-size: 13px; + color: #6B7F70; + cursor: pointer; +} +.login-remember input[type="checkbox"] { + width: 16px; height: 16px; + accent-color: #4F7C59; + cursor: pointer; +} +.login-forgot { + font-size: 13px; + font-weight: 600; + color: #4F7C59; + text-decoration: none; + transition: color 0.2s; +} +.login-forgot:hover { + color: #2D5A3D; +} + +/* ─── Submit Button ─── */ +.btn-login { + width: 100%; + padding: 13px; + border: none; + border-radius: 50px; + background: linear-gradient(135deg, #4F7C59, #2D5A3D); + font-family: 'Plus Jakarta Sans', sans-serif; + font-size: 14px; + font-weight: 700; + color: white; + cursor: pointer; + transition: all 0.25s ease; + box-shadow: 0 4px 16px rgba(45,90,61,0.25); +} +.btn-login:hover { + transform: translateY(-2px); + box-shadow: 0 8px 24px rgba(45,90,61,0.35); +} +.btn-login:active { + transform: scale(0.98); +} + +/* ─── Divider ─── */ +.login-divider { + display: flex; + align-items: center; + gap: 12px; + margin: 24px 0 16px; +} +.login-divider::before, +.login-divider::after { + content: ''; + flex: 1; + height: 1px; + background: #D8E8D2; +} +.login-divider span { + font-size: 12px; + color: #a0b5a5; + white-space: nowrap; +} + +/* ─── Social Button ─── */ +.btn-social { + width: 44px; height: 44px; + border-radius: 50%; + border: 1.5px solid #D8E8D2; + background: #ffffff; + display: flex; align-items: center; justify-content: center; + cursor: pointer; + transition: all 0.2s; + box-shadow: 0 2px 8px rgba(0,0,0,0.06); +} +.btn-social:hover { + border-color: #7DAA6E; + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(0,0,0,0.1); +} + +/* ─── Register Link ─── */ +.login-register { + text-align: center; + margin-top: 24px; + font-size: 13px; + color: #6B7F70; +} +.login-register a { + font-weight: 700; + color: #4F7C59; + text-decoration: none; + transition: color 0.2s; +} +.login-register a:hover { + color: #2D5A3D; +} diff --git a/public/css/riwayat.css b/public/css/riwayat.css new file mode 100644 index 0000000..3f62f8c --- /dev/null +++ b/public/css/riwayat.css @@ -0,0 +1,206 @@ +@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap'); + +.riwayat-wrap { + max-width: 720px; + margin: 0 auto; + padding: 40px 16px; +} + +.riwayat-header { + text-align: center; + margin-bottom: 32px; +} + +.riwayat-title { + font-family: 'Plus Jakarta Sans', sans-serif; + font-size: 24px; + font-weight: 800; + color: #2D5A3D; + margin-bottom: 6px; +} + +.riwayat-subtitle { + font-size: 13px; + color: #6B7F70; +} + +/* ─── Empty ─── */ +.riwayat-empty { + text-align: center; + padding: 60px 20px; + color: #6B7F70; +} + +.empty-icon { + font-size: 48px; + margin-bottom: 16px; +} + +.btn-cek { + display: inline-block; + margin-top: 16px; + padding: 10px 24px; + background: linear-gradient(135deg, #4F7C59, #2D5A3D); + color: white; + border-radius: 50px; + font-size: 13px; + font-weight: 600; + text-decoration: none; + transition: all 0.2s; +} + +.btn-cek:hover { + transform: translateY(-2px); + box-shadow: 0 4px 14px rgba(45,90,61,0.25); + color: white; +} + +/* ─── Card ─── */ +.riwayat-list { + display: flex; + flex-direction: column; + gap: 16px; +} + +.riwayat-card { + background: #ffffff; + border: 1px solid #D8E8D2; + border-radius: 16px; + padding: 20px 24px; + box-shadow: 0 4px 16px rgba(45,90,61,0.07); +} + +.riwayat-card-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 16px; + flex-wrap: wrap; + gap: 8px; +} + +.riwayat-hasil-badge { + font-size: 13px; + font-weight: 700; + padding: 5px 14px; + border-radius: 50px; +} + +.riwayat-hasil-badge.gastritis { + background: #fff3e0; + color: #e65100; +} + +.riwayat-hasil-badge.gerd { + background: #fce4ec; + color: #c62828; +} + +.riwayat-hasil-badge.dispepsia { + background: #e8f5e9; + color: #2e7d32; +} + +.riwayat-tanggal { + font-size: 12px; + color: #6B7F70; + display: flex; + align-items: center; + gap: 5px; +} + +/* ─── Section ─── */ +.riwayat-section { + border-top: 1px solid #E8F0E5; + padding-top: 12px; + margin-top: 12px; +} + +.riwayat-section-label { + font-size: 11px; + font-weight: 700; + color: #7DAA6E; + text-transform: uppercase; + letter-spacing: 0.5px; + margin-bottom: 8px; +} + +.riwayat-row { + display: flex; + justify-content: space-between; + font-size: 13px; + padding: 3px 0; +} + +.riwayat-key { + color: #6B7F70; +} + +.riwayat-val { + font-weight: 600; + color: #1C2B22; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + max-width: 300px; +} + +/* ─── Gejala Tags ─── */ +.riwayat-gejala-wrap { + display: flex; + flex-wrap: wrap; + gap: 6px; +} + +.gejala-tag { + background: #F4FAF1; + border: 1px solid #D8E8D2; + color: #2D5A3D; + font-size: 12px; + font-weight: 500; + padding: 4px 10px; + border-radius: 50px; +} + +/* ─── Gaya Hidup Tags ─── */ +.riwayat-gayahidup-wrap { + display: flex; + flex-wrap: wrap; + gap: 6px; +} + +.gayahidup-tag { + font-size: 12px; + font-weight: 500; + padding: 4px 10px; + border-radius: 50px; +} + +.gayahidup-tag.aktif { + background: #fff0f0; + color: #c0392b; + border: 1px solid #f5c6cb; +} + +.gayahidup-tag.tidak { + background: #F4FAF1; + color: #2D5A3D; + border: 1px solid #D8E8D2; +} + +/* ─── Indikasi Lain Tags ─── */ +.riwayat-indikasi-wrap { + display: flex; + flex-wrap: wrap; + gap: 6px; +} + +.indikasi-tag { + background: #fff8e1; + border: 1px solid #ffe082; + color: #f57f17; + font-size: 12px; + font-weight: 500; + padding: 4px 10px; + border-radius: 50px; +} diff --git a/public/css/utama.css b/public/css/utama.css new file mode 100644 index 0000000..310a07a --- /dev/null +++ b/public/css/utama.css @@ -0,0 +1,683 @@ +@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&family=DM+Serif+Display:ital@0;1&display=swap'); + +/* ─── Variables ─── */ +:root { + --green-deep: #2D5A3D; + --green-mid: #4F7C59; + --green-soft: #7DAA6E; + --green-pale: #e7f1e4; + --green-mist: #f7faf8; + --text-dark: #1a2e1f; + --text-muted: #6b7c6e; + --white: #ffffff; + --radius-xl: 40px; + --radius-lg: 24px; + --radius-md: 12px; + --shadow-card: 0 2px 20px rgba(45,90,61,0.08); + --shadow-lg: 0 12px 48px rgba(45,90,61,0.15); +} + +/* ─── Global ─── */ +body { + font-family: 'Plus Jakarta Sans', sans-serif; + color: var(--text-dark); +} + +/* ════════════════════════════════ + HERO SECTION +════════════════════════════════ */ +.hero-section { + padding: 100px 0 80px; + background: radial-gradient(circle at 80% 20%, #f0f7ed 0%, #ffffff 70%); + overflow: hidden; + position: relative; +} +.hero-section::before { + content: ''; + position: absolute; + width: 600px; height: 600px; + background: radial-gradient(circle, rgba(125,170,110,0.12) 0%, transparent 70%); + top: -100px; right: -100px; + pointer-events: none; +} + +.hero-title { + font-family: 'Plus Jakarta Sans', sans-serif; + font-weight: 800; + font-size: clamp(1.8rem, 3.5vw, 2.8rem); + line-height: 1.2; + color: var(--text-dark); + margin-bottom: 20px; +} +.hero-title span { + color: var(--green-mid); + font-weight: 800; +} + +.hero-desc { + font-size: 1.05rem; + color: var(--text-muted); + line-height: 1.7; + max-width: 500px; + margin-bottom: 40px; +} + +/* Hero Buttons */ +.btn-hero-primary { + display: inline-flex; + align-items: center; + gap: 8px; + background: linear-gradient(135deg, var(--green-soft), var(--green-mid)); + color: white; + padding: 14px 30px; + border-radius: 50px; + font-weight: 700; + font-size: 14px; + text-decoration: none; + border: none; + box-shadow: 0 6px 24px rgba(79,124,89,0.3); + transition: all 0.3s ease; +} +.btn-hero-primary:hover { + transform: translateY(-3px); + box-shadow: 0 10px 32px rgba(79,124,89,0.4); + color: white; +} + +.btn-hero-outline { + display: inline-flex; + align-items: center; + gap: 8px; + background: transparent; + color: var(--green-mid); + padding: 13px 30px; + border-radius: 50px; + font-weight: 700; + font-size: 14px; + text-decoration: none; + border: 2px solid var(--green-soft); + transition: all 0.3s ease; +} +.btn-hero-outline:hover { + background: var(--green-soft); + color: white; + transform: translateY(-3px); +} + +/* Hero Image */ +.hero-img-wrap { + position: relative; + display: flex; + justify-content: center; + align-items: center; +} +.hero-img-wrap::before { + content: ''; + position: absolute; + width: 360px; height: 360px; + background: radial-gradient(circle, rgba(125,170,110,0.18) 0%, transparent 70%); + border-radius: 50%; +} +.hero-img { + width: 100%; + max-width: 520px; + max-height: 420px; + height: auto; + object-fit: contain; + border-radius: 50px; + position: relative; + z-index: 1; + animation: floating 4s ease-in-out infinite; + filter: drop-shadow(0 20px 40px rgba(79,124,89,0.2)); +} + +@keyframes floating { + 0% { transform: translateY(0px); } + 50% { transform: translateY(-14px); } + 100% { transform: translateY(0px); } +} + +/* ════════════════════════════════ + FEATURE CARDS +════════════════════════════════ */ +.features-section { + padding: 20px 0 60px; + background: var(--white); +} + +.feature-card { + background: var(--white); + border: 1px solid rgba(0,0,0,0.05); + border-radius: var(--radius-lg); + padding: 40px; + height: 100%; + display: flex; + flex-direction: column; + box-shadow: var(--shadow-card); + transition: all 0.35s ease; + position: relative; + overflow: hidden; +} +.feature-card::before { + content: ''; + position: absolute; + bottom: 0; left: 0; right: 0; + height: 3px; + background: linear-gradient(90deg, var(--green-soft), var(--green-deep)); + transform: scaleX(0); + transform-origin: left; + transition: transform 0.35s ease; +} +.feature-card:hover { + transform: translateY(-6px); + box-shadow: var(--shadow-lg); +} +.feature-card:hover::before { + transform: scaleX(1); +} + +.feature-icon { + width: 56px; height: 56px; + background: var(--green-pale); + border-radius: 16px; + display: flex; align-items: center; justify-content: center; + font-size: 1.5rem; + color: var(--green-mid); + margin-bottom: 20px; + transition: all 0.3s ease; +} +.feature-card:hover .feature-icon { + background: var(--green-mid); + color: white; + transform: scale(1.08); +} + +.feature-card h4 { + font-weight: 700; + font-size: 1.1rem; + margin-bottom: 10px; + color: var(--text-dark); +} +.feature-card p { + color: var(--text-muted); + font-size: 0.9rem; + line-height: 1.65; + margin: 0; +} + +/* ════════════════════════════════ + TENTANG SECTION +════════════════════════════════ */ +.tentang-section { + background-color: var(--green-pale); + border-radius: 60px 60px 0 0; + padding: 80px 0 100px; +} + +/* ── Header ── */ +.st-header { + text-align: center; + margin-bottom: 4rem; +} + +.st-title { + font-family: 'Plus Jakarta Sans', sans-serif; + font-size: clamp(1.6rem, 3vw, 2.2rem); + font-weight: 800; + color: var(--green-deep); + margin: 0 0 0.75rem; + line-height: 1.2; +} + +.st-subtitle { + font-size: 14px; + color: var(--text-muted); + max-width: 480px; + margin: 0 auto; + line-height: 1.7; +} + +/* ── Steps wrapper ── */ +.st-steps { + display: flex; + flex-direction: column; + gap: 0; + margin-bottom: 3rem; + position: relative; +} + +/* ── Satu baris step (3 kolom: kiri | center | kanan) ── */ +.st-step { + display: grid; + grid-template-columns: 1fr 56px 1fr; + align-items: stretch; + min-height: 160px; +} + +.st-step-left { + padding: 2rem 2rem 2rem 0; + display: flex; + align-items: center; + justify-content: flex-end; +} + +.st-step-right { + padding: 2rem 0 2rem 2rem; + display: flex; + align-items: center; + justify-content: flex-start; +} + +/* Step genap: flip kiri-kanan */ +.st-step:nth-child(even) .st-step-left { + order: 3; + padding: 2rem 0 2rem 2rem; + justify-content: flex-start; +} +.st-step:nth-child(even) .st-step-center { + order: 2; +} +.st-step:nth-child(even) .st-step-right { + order: 1; + padding: 2rem 2rem 2rem 0; + justify-content: flex-end; +} + +/* ── Node tengah ── */ +.st-step-center { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + position: relative; +} + +.st-node { + width: 48px; + height: 48px; + border-radius: 50%; + border: 2px solid var(--green-soft); + background: var(--green-pale); + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + position: relative; + z-index: 1; + transition: border-color 0.3s, background 0.3s, transform 0.3s; +} + +.st-step:hover .st-node { + border-color: var(--green-mid); + background: #fff; +} + +.st-node.st-active { + border-color: var(--green-deep); + background: var(--white); + transform: scale(1.12); +} + +.st-node-inner { + width: 32px; + height: 32px; + border-radius: 50%; + background: rgba(125, 170, 110, 0.15); + display: flex; + align-items: center; + justify-content: center; + font-size: 15px; +} + +/* ── Card konten ── */ +.st-card { + background: var(--white); + border: 1px solid rgba(125, 170, 110, 0.2); + border-radius: var(--radius-lg); + padding: 1.25rem 1.5rem; + max-width: 300px; + width: 100%; + box-shadow: var(--shadow-card); + transition: border-color 0.25s, transform 0.25s, box-shadow 0.25s; +} + +.st-card:hover { + border-color: var(--green-soft); + transform: translateY(-3px); + box-shadow: var(--shadow-lg); +} + +.st-card.st-active { + border-color: var(--green-soft); + transform: translateY(-3px); + box-shadow: var(--shadow-lg); +} + +.st-card-num { + font-size: 10px; + font-weight: 700; + letter-spacing: 0.1em; + text-transform: uppercase; + color: var(--green-mid); + margin: 0 0 8px; +} + +.st-card-title { + font-size: 15px; + font-weight: 700; + color: var(--text-dark); + margin: 0 0 6px; + line-height: 1.3; +} + +.st-card-desc { + font-size: 12.5px; + color: var(--text-muted); + line-height: 1.6; + margin: 0; +} + +/* ── Ilustrasi SVG ── */ +.st-illus { + max-width: 240px; + width: 100%; + display: flex; + align-items: center; + justify-content: center; +} + +.st-illus svg { + width: 100%; + height: auto; + filter: drop-shadow(0 4px 12px rgba(45, 90, 61, 0.1)); +} + +/* ── Disclaimer ── */ +.st-disclaimer { + display: flex; + gap: 12px; + align-items: flex-start; + background: #FFF8EC; + border: 1px solid rgba(239, 159, 39, 0.4); + border-radius: var(--radius-md); + padding: 14px 18px; + max-width: 640px; + margin: 0 auto; +} + +.st-disclaimer-icon { + width: 20px; + height: 20px; + border-radius: 50%; + background: #EF9F27; + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + margin-top: 1px; +} + +.st-disclaimer-icon svg { + width: 10px; + height: 10px; +} + +.st-disclaimer-text { + font-size: 12.5px; + color: #633806; + line-height: 1.6; + margin: 0; +} + +/* ── Responsive ── */ +@media (max-width: 768px) { + .tentang-section { + border-radius: 40px 40px 0 0; + padding: 60px 0 80px; + } + + .st-step { + grid-template-columns: 56px 1fr; + min-height: auto; + } + + /* sembunyikan kolom kiri (ilustrasi), tampilkan kolom kanan (card) */ + .st-step-left { display: none !important; } + .st-step-center { order: 1 !important; justify-content: center; } + .st-step-right { + order: 2 !important; + display: flex !important; + padding: 1.25rem 0 1.25rem 1rem !important; + justify-content: flex-start !important; + } + + /* reset nth-child(even) flip di mobile */ + .st-step:nth-child(even) .st-step-left { display: none !important; } + .st-step:nth-child(even) .st-step-center { order: 1 !important; } + .st-step:nth-child(even) .st-step-right { + order: 2 !important; + padding: 1.25rem 0 1.25rem 1rem !important; + justify-content: flex-start !important; + } + + /* sembunyikan ilustrasi di dalam st-step-right kalau ada */ + .st-step-right .st-illus { display: none !important; } + + .st-card { max-width: 100%; } + .st-header { margin-bottom: 2.5rem; } + + #timelineSvg { display: none; } +} + +/* ════════════════════════════════ + GEJALA SECTION +════════════════════════════════ */ +.gejala-section { + background: var(--white); + padding: 80px 0; +} + +.section-title { + font-family: 'Plus Jakarta Sans', sans-serif; + font-weight: 800; + font-size: clamp(1.8rem, 3vw, 2.2rem); + color: var(--text-dark); + letter-spacing: 0.5px; + margin-bottom: 12px; +} +.section-divider { + width: 48px; height: 3px; + background: linear-gradient(90deg, var(--green-soft), var(--green-deep)); + border-radius: 2px; + margin: 0 auto 48px; +} + +.gejala-img { + max-height: 380px; + mix-blend-mode: multiply; + border-radius: 40px; + filter: drop-shadow(0 15px 30px rgba(200, 240, 200, 0.8)); +} + +.gejala-card { + padding: 20px; + border-radius: var(--radius-md); + background: var(--green-mist); + border: 1px solid transparent; + transition: all 0.3s ease; + height: 100%; +} +.gejala-card:hover { + background: var(--white); + border-color: rgba(125,170,110,0.3); + box-shadow: var(--shadow-card); + transform: translateY(-3px); +} + +.gejala-number { + font-family: 'Plus Jakarta Sans', sans-serif; + font-weight: 800; + font-size: 2.2rem; + color: var(--green-soft); + opacity: 0.7; + line-height: 1; + margin-bottom: 10px; +} +.gejala-card h6 { + font-weight: 700; + font-size: 0.9rem; + color: var(--text-dark); + margin-bottom: 6px; +} +.gejala-card p { + font-size: 0.82rem; + color: var(--text-muted); + line-height: 1.6; + margin: 0; +} + +/* ════════════════════════════════ + CTA SECTION +════════════════════════════════ */ +.cta-section { + padding: 60px 0 80px; + background: var(--white); +} + +.cta-box { + background: linear-gradient(135deg, var(--green-deep) 0%, var(--green-soft) 100%); + color: white; + padding: 64px 60px; + border-radius: var(--radius-xl); + box-shadow: var(--shadow-lg); + position: relative; + overflow: hidden; + text-align: center; +} +.cta-box::before { + content: ''; + position: absolute; + width: 400px; height: 400px; + background: rgba(255,255,255,0.05); + border-radius: 50%; + top: -150px; right: -100px; + pointer-events: none; +} +.cta-box::after { + content: ''; + position: absolute; + width: 250px; height: 250px; + background: rgba(255,255,255,0.04); + border-radius: 50%; + bottom: -80px; left: -60px; + pointer-events: none; +} + +.cta-badge { + display: inline-flex; + align-items: center; + gap: 6px; + background: rgba(255,255,255,0.15); + border: 1px solid rgba(255,255,255,0.25); + color: rgba(255,255,255,0.92); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.04em; + padding: 6px 14px; + border-radius: 50px; + margin-bottom: 24px; + position: relative; + z-index: 1; +} + +.cta-title { + font-family: 'Plus Jakarta Sans', sans-serif; + font-weight: 800; + font-size: clamp(1.8rem, 3.5vw, 2.4rem); + margin-bottom: 14px; + line-height: 1.25; + position: relative; + z-index: 1; +} + +.cta-trust { + display: flex; + justify-content: center; + flex-wrap: wrap; + gap: 8px 24px; + margin-bottom: 36px; + position: relative; + z-index: 1; +} +.cta-trust-item { + display: flex; + align-items: center; + gap: 7px; + font-size: 13px; + font-weight: 500; + color: rgba(255,255,255,0.88); +} +.cta-trust-item i { + color: #a8e6a3; + font-size: 14px; +} + +.cta-actions { + position: relative; + z-index: 1; + margin-bottom: 20px; +} + +.btn-cta { + display: inline-flex; + align-items: center; + gap: 8px; + background: white; + color: var(--green-deep); + padding: 14px 40px; + border-radius: 50px; + font-weight: 700; + font-size: 15px; + text-decoration: none; + box-shadow: 0 6px 24px rgba(0,0,0,0.15); + transition: all 0.3s ease; +} +.btn-cta:hover { + transform: translateY(-3px) scale(1.03); + box-shadow: 0 12px 32px rgba(0,0,0,0.2); + color: var(--green-deep); +} + +.cta-note { + font-size: 13px; + color: rgba(255,255,255,0.6); + margin: 0; + position: relative; + z-index: 1; +} +.cta-note a { + color: rgba(255,255,255,0.9); + font-weight: 600; + text-decoration: underline; + text-underline-offset: 3px; +} +.cta-note a:hover { + color: white; +} + +@media (max-width: 768px) { + .cta-box { + padding: 48px 24px; + } + .cta-trust { + gap: 8px 16px; + } + .cta-title br { display: none; } + .hero-img-wrap { + display: none; + } + + .gejala-img { + display: none; + } +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/public/img/favicon.ico b/public/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..f1bb8c6c93085a34b9c174a5320e146aa0c7cffc GIT binary patch literal 15406 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 literal 0 HcmV?d00001 diff --git a/public/img/kartun-sakit.png b/public/img/kartun-sakit.png new file mode 100644 index 0000000000000000000000000000000000000000..184e55f3d82c7b8d5ef07c171b5ef46e5f0f2259 GIT binary patch literal 2220011 zcmeFabx<8mx9B~%y9AdYL4v!xyL%Gcb>l7xAwYnQLvZ)t4oL_W+?@n>cjs>MFHkUx7KQznXY_LRhB_RCPD@P08LI-QXK$bAxU@u5gM|yTq?f@ zfU`bRV{zT5y^Wi_3FI^xWN&85?qm#L0hoaRPy+CNa)$YR0sy$r{^XMRCzt(y&E@9e z!2gt!pTmNO&y3aze^Pc& zVltb$m>avAo7saLEnGc}UChNS%^h67m^m2Rn_I}JYBF&;K02FOTUxss+i5tuxtN-3 zdO4YUN?W(buqSfFgFvk zvvhQ^cD1s%HdQh=vo_BDBZ|X6qBuIZL-hQOrSy-Ibib+mw@O+WgRGd%j9rbNbo6=B zG2h1A)6~ul^h7Es#~kEp?BYs5X<=vXVCiZ_$V2;ED~G3&Ehy}b9jq-NSxk-XEG~$+WsGFK(#+fT3}=C01?l@)Lc%|^QEV~6Th{!8NVqPkC~|j zHy4u$9~UbVCmSa>lL@OS8xs$!DK9%Ot1$-$53B3%vR*^1WbR_@>ge*?+QGu{AA4C! zSQ)!QY~}&62D7Q7gDb?6#%``w%ujS*yMWADnIV6V)*x$32V++^7jsV~khz@&)o&m| zEKj*u{;%Bk_btr-F3#nTFTMT`e+|wtb#t-vWcW|@{5JJ}sFdN6FP!7xm$!O(bFFwjuY(71N=xuDyHZ&NL@ zcbv_yZbV_1I;C0B;E@?v=EPE`7)$_rDK0^;uQ_OLjI4h%CQLgI94fcMy~NPqk?{x)`%jvXVbthe0LyQyayT z5EK%Maun7M6i-=L^;mJ>5g_Ue2|+`_BmPdnKq0`01F)A1esrq4X?$L^9M$O?xowQY zbG&F-;y!E{>krwpC9$@O>)BO1#=4sC-xITu)OV|S(CnaxO0`2*aC+2bDYWJW4YLLf zu%bdFAjN@#dW3~$1%AszN(D>6iXVupPi|{59=};B7UGwN>SNReQc$R2Rf0!kgolEI zLx6&U6=M})75djPD^w`kpN7rdnA!CodXPx6XEC=iF*Rm!ax<~BHuW$!VS&W1s~d>L z(G=vwO8Qhg4JohZ7>_4uo;9G$eYKC4$t}e%p!^ z<4JZ{7-)pR|H<+&!B9|usQznio>rfm*eQV*)2wB@I2CDp!XqPd!L&CSD2PB(~YSvI%+f01u&LWhhvm}2Ki!6(bLHUkV$@4J#K%m zQ0*ptt1?Jivr6PoQ18Zz270Av5-xqcTi_zYFhKc7`XB$qeZp+Hw9fz*~L z*9OO_{*8d^C$_>mHqC%{4jK70X6`ZAMm+Y5Xqc~L&VZ(g$k%Mpr+RGh6=&Kt=U;|| z=i(%V1&O@R#)@8!-08vkvj)R@Lt@6{Ps~`~#dHpQPz~lMD|$T^{75%>9~bjKkz*D4 zm+Qiy!mB$vy8b@}3L6_cD<3;62OlT*??8bZ^8P;L(*OT7D1)J%|7ZE3-~fo_F#y(J zC}ij-7x;#c{k>52Tk^n=?NwCXahJ`FOJdjz9LH_=Uhs)|;HFqwYUlDBydKysI@|M} zxu3}4&u_X4b1#tT9uQ0fko%Fm%)QWcQ{x2_Sy)Ua@pT8ni<0_eW1#hR5xF-%v*Zii z2E-kDRJCt;^IqYSNj_7xTE4a{ekOPRMXB%hqBSTx(@b_*7t!0W)LZN}G?X7I`=G$( zCq>R;N0Ay=dSp_mi!1vz&Zkc|EqeD8GdhaB<%ikMjwmVFn{@UVrror$C2{8YYj;v_!d~xw=VwLm z4Z7M98U_l0$~9#*X2tk-ti!RwK*Hv~gu8C@aq$V-rW8DKC4HfO66?+jA(a0Vfd6f4 z@YGoTI{=|V|Fan&O)pF^G!)>*8|wWGOZ-U37rwH^V^QGayFTl#H8FjTNJ{Te=K!hw z2w#nnl1;Wokcfwdah7prf%3bZ)1zLY`N+)}9lXldzF=mQSzNum?BJkA=2!gu&68R!R~JL|pXoqTj( zj{22O&mn5ELz6p4i>LKt-B*=0TSPv)aS`mT;EPg3-8;d!k}#eKJx~HYiBZ?xQGMAV z3Q*Ln^b3zp{rFKX9${=$)-JJmS*nVV9n})NALl5xV^@?Gi9m8jp4dsVY}DF=mR|2Y6R#5$QhKb|cy`5WyfB@!voW`n*H_tGRic4l6OV|bVSY6}wmV{o{qR)z5gh8Cag z%zM?x3`0qi`o-WE+oRb}Lq0u*+CL+{zq`K#{u200;4gu{1pX5EOW-eozXbjg_)Fj~ zfxiU)68KBtFM+=V{u200;4gu{1pX5EOW-eozXbjg_)Fj~fxiU)68KBtFM+=V{u200 z;4gu{1pX5EOW-eozXbk&BXFTBdiO&`sIDEEn3?&`6qdH5%P(e8I>0Y|NUv=vaI`%4 z)Y_0db&fA|gv`+I5L)H3M?sm>1r90Kyp})Hvi=*a5&*PS{#o|&zghFf&Be~m&dSEk z#Ad-|%*4sc%g1DF%4fmE$!^LAS=q$O%4)_2(e(YlR(JiMu6YY2{!_mKWN#+gkILQ> zE}LG6!Z39fAYqO3dr6V26=YqPgR!+8Gh|ha3uJW}WcAY%RRU9Xkd@1x;=!U!2Cn5m zZ9JEc@OQ|0ToVg36X5qU9~K)Yb4$pnfLar4Gn2=e$0Yz$URq8XfPyR%gnW1o0FPe* zEJUa?C?yyuEC3n{3I+@6aUPHW;9=q5;b7t6;ouPv;1Q8Ak&%&*ka5v5P%)q35)eGY z#m6Tir6DIGrXs<|r+7(0Mf-xDfu4|@iIs_tm4=R+P` zl9rK`lh@GH($>+{(>FCUx3ILbwgI`ixqEned564x7y3TzLwIald_rPUa!P7WZeD&t zVNr2ObxmzueM4hYbI142uI`@RAAMuv6O&WZGqZEcE30ek8=G6(JI5!dXXh7}SJyXB zdO-n@kNp2^|E*pSb3j2u*3Q5pJn01m?eU~I7Azbk8$7m{8iKJi&U5x4L|k!jcGWi| zDh~A{JQJ5uWPEDQWt!tB)qZRCf2LUQ|C46_R_s6YngdWF>lvW2V6XrY;2g#5eyIXf zG;S_H2MwfKK_k5Wi7d{Pa~GV9=a@t&m_7_>A+JQLsFwg9vfm*;m3wB-< z{+A6r?XZm~XVzI3jAb1_DJF_GD~iT;s|t;Gkp;hZk!31B29-|-lT!csXZS#kQrsFR zlr9Tx5Z)R@G@v$Q9T!Uf%(s?ZPoHfNQSz%QY!MywV#%py=qs%fXf1sJtQ|;=qKE*O zCDAbg6FdUbF#`Rr0P;)eJ^~dE7(IyrV-FBpVcKVz>_16_QV$Uk8nYY*trqxX1%*5U z4Y`7s2O~cMBbx;e7DZ!({FAlhvdL`2gG;r`q|b^iQdR15VK57o|4wMz&mSTtQHlL7^{UEoX2=VqZPMS@Vv+n zM>M27AG2>1alc2M@T`=M8U8S4%@4$N_mxqWU?(fNKDzK4kLzN zBw11moa>uVLkE(;K}2CgpBF`k4unW!s7lcVF#oSYKa z^WZ`a>oZ%H^>gX@OK3jNdZk3cVEFkEjutwoi!$Lr3bq;!7r0Yp*L??A&#?4s2abp- zN@i(b9??N9slo&nP<~Z~sS-togBav1L|Zz{C##^+Va5X{f%t*gLGPfE;eTUE&VxXa zhtv-Bq&;!CC@meq+b0%7{v-ZZn)o)=ccDd6qOGZ-n#~YbRfOy5mo-<&9(=9`-~z{r zW=G+`L?ww91t*@(TR~)4L1Ys$IDmb{)82%Ap`U~e{WBFD%rWOD1t+<-C>`}H@Uj8o z?3X&z<~PpOBZP9oDI^%3;X_)>q_efG=P#=H7{7d+LR{0|npVy_Pj!uakZ?0OcHa6p z1@EU%>Ui8Qw*a>R4j{U;dd25_g^zGnqFdDVBM~`gX5W`*^$_*yZI1O^8T4`^{^`Sx z;w_`8NT{vnL}a}s=e9C&ZV7bRfIdJU7!QeBlR#uq8h{|@>u(4U<&i{@WKAG@s4Unl z*e5rDA+knf6O)E3dAQTWx0U@uqedetYzoo6?z)Q>+H^gSJ%1!CwlND~B`DFp2N$Z? zq|Qol1UmUWT^4e4MZRU;tkBO~rx=6JaG#p?fE|^}jrhEriXMU{0jeHf+vDH^e5*5F z)4I1LUJWSi(wB4S&yIgw;Pt%Jh^ymhCtzfpu!Je{{H1k_&0u6S$oOs!_YIxK#PROP z%@XoPDPRAJr4a+?@=RH*Uf9Oerw#9u;Cy67MdrJBeJ@-jKX|m;L zV`0gH&~(jnF!#DHG=>Q~8XMQbVJpJ1gx*nqm!n{Lk#%68{icf^!aWD5_lD&2ZJTXQ z#&fmNohbcA*qa64mF}ls^*jPo?2OIq8ags5yu1Rk zGbI#sKo)c$G9<#_ApW5W4IzqX4WW%W@|5iCqJSi@o*bN(4hDV1|JnwHE1w*KmXjn^ zf?+Wl;$T+Bw{;X6OAp_&wYTO@T5<^KE}la%3j1XYlynVKJoBWhZoGz}oS}0zID0HJnpTLoSIGS~P!6?!Kb<9K9z!syBnGe$zHn({?$>qCG6Ox%-~Ii>%{6n!!@^OD@1= zWgeP_+Uu?J75YZwDjr_(HuukNn)~{$McQkXve*C`f^w6?s`w2bJPb5e`)kAO-QExEu33GQ15svTQiarKF&iMOt->yviLXK|K5Q_7$%%!KA!V)5Aa$LxbpLq^(99^0=a<&>YGAWV z?E<`Ekh_ETrjJmTL0XJ-cT5m$g{cai3h9piacB77Ey(W^@_@W3C1h9;NMuC_wtZ;S z#2@4fn4Dynx1E@X*KWRDi6f$Ph!4znn+n2IC&&q8(K{;$O2usMjye#}36>Ljry8Ap zrx3th~U8i&k^PsT<$Bw=NaP zxrZ?N~QwU=qs+VbVqGPd|U%)4~x_ zP9VTcQ@DsAJC}~eZx>Y53Eub#^t+fak(5rjQr$ghjTA0yy53^t&v(u5UTa6HRGrH)%nj6@s#FK@d`c622G7C2Esfj1J__F&>ESGcR5zx_;Q}UjO z{0zF>W(UKZ<-wtRZj+US4vNNw@*YZs;ppLiKjX{c4o*|?c!3k(?RvL1?6p|lRZYTA5qAcb9d(9RI?PT!}amk7`0Q2~>IIx1#6EwZf<*g>8bM77iO_Zl;>NA~iDb%t;ija};bDXA?HY7UC-%Zw^o*B|bqyFwMfDvdS z$Z&`TFr9k@D)8VV$3NX0am%T?WtrOsosOAOIwVkW9JHSU;`G3>=(DooEMD?3o(%sl zr0s``dJ>J%H&&b1@6;Xvzv=Yoj1if_r0+5ugT6XWLhU$?sahS&`Y+bXg z$|h+;+CPT3mNI8kQsAJ5vn9InaUqxxhfmXNQQb0^F^Q+lZY|={u zcGZp84`(_0n-4Up{()YPjo7qkXDu2KZ_V~_5ZQBsU+C%2 zy*RjnQ1De~@z+IO;ynU^KH>Y{H8(z{Y?y4jDDRq1loqZ2?r5F{Qorrp!nf8ZOe)i&Ak2a3&fV>N%1^Ei;*=^L6?_=jL^BxTSEmGemAAsB+ z_@{kk+()i-IlED$`%la>Phx|_H}xSjLD#7re4Cbv3TvhNxn2X zLWO5}p++h<$46m3!<{_#mzNFPmpoX_eS_;Ym?ffw>V?sdfDx#so?dtDfxkOfrpm9y zEOCvEY=t=>by}I&-D%|kH=1$WoDn*1ilY|No!REdZiI}S4Zqjl8u67d_n^XZDC|qy zByV(K|8;~7G42uN90Vx|OUJG_-x( zQkH(M)K$*K1m*YJedRINW#RRyL79m;>B?`E*Vo^C51(6)!bNSeTEHLpF0To~XS)Xyvzsxc z9+QJ8OO-3P>^WJ|?8X+xA=)^q6IG6@N&Z-LNq6_lW}47XiOn^&4R7Csf=xBaGvH_r zk##<7rY3bJOuBiVWy0t`0yc{rK{WmJn9@yaAu$F=UoW{nSFIb4j||U)1T=K+q9sEH zqNXUF#6DU5s$H}EVtiMcp6;xJHp}_mM0Pu7Ao-%!_Vu)Ff-+t0>xjj6o*u9&WY+*7<+X~C*5pzzwJLWiDAy<=XDOEX1( zt(ut*fpoHHkz`o3fe-0fj{wo7en-xZtA-y&zCWgCirXSK6WPI1MO7iK{f2{L<(c+n z5AyddpGXhY;(b$xqLX7zBf>?yVTIbJQw1r8umh^@v*FK9J|VmJw%PJGBp(elbxWw} zpsb!|0KXfK--$m1RU)AK{k>HYCzDZUwM=L}jf*l!y-HJEtP7->^WHRS!a=FE2i1u& zN+*QFp({df>SAH-G|$*#yN`Kf(%ff4>f%#NV&{%G zeMM4s!_z^=Qg`eZmO6?5%dmzpb#Ok7tWjvRg~v4VgzZ%t14C)5Kn9IGdoHt{ox65T z{$MLeQn`nakbr9D2Fu`uo9mm&^b{tx-&6XhDGz)g_EXnH@Oyp_N5QsC-ik;2Znk|X zE8b#pKH@EdlETMs5K-oPs+d@Va!_Be$$FFcFBt=N_a8k|v3WVj+$i&5cE&8b=&HSuhmKtX$HZrTkQn57JD#zmPwN7Qm zM0s0N9#BR?#fD#lXwc6p8>Jm4z2f}3Do2{CL0c3%{XL^kDz|K>_QMEcX}R{Q`twBG zdt*JO4v)ae&vlM7#omB3RDUkjX$g66qYNGoiZ90)iJ4rjI0~*kRm^*;{xV#f6E-KY zJ3bQ{YLTxcjXf*Gu*0SkwV3^Wl;nIa+G(MRny8eJZo|S8`Fw^qi4*IiJ90!@DJZZK zfwE!3^y^aN5olagS#kBaq&S`booJA@+X^)x!3jPNZu(kq7nyUj?v`%R# znuZ3;fvd+zzoH_;&Zev&xzBL&T^C%7pg#in+(tBBud7x?2=>2>y0*j!uSJvjmuB84 zHhgc>=jdY08x|Z#xFN<`OrAPf*eE=Td)Lv4xK#0L{1GUZ^$Vv{-t1b8h$q8(AkL%}pcUx$4^AzLY zz0q+e<%kRxX^q5K!Dut3-tJE!Dk$lRzrk2e`jA0T+s1z*XEt6(FteS6BYg33{JDZ2 z!MPd5zUgJWclbHI^0vDV8Iz5>WAnn<&CKS%2f6Y9hiE5l4BAV&#?A%0Mx<8n5$FTl zz|)WVC(C%1omj7=n6d#j{hNh60NnRr9(>OL=sERDvVNwPXSyOmt? zZGi_J0Ba9gB@vuagyl8@R2Vu_2j$@QX_v&$F>tLu`pfqT9N=?m?eI*O_~M3sdBNc$ z);pT~U7mJEqKQkKS^W|d1((@dF_B;7il;##k?48FjYTKfS|K0P8ieSk;Hh0$rC#xK<|-4!hA#Di$cC@mCc@}vh})@GJBuS z3l(S^Hk%CS=~}&fOq;}}N!JSp5;>w!0ikb-_awJdS01+wWJRl8QY9sRWRW*0GOZ6I zV=o=K-`z?gaUmq*O#IW zcXVSFQesRnd;U{lSE{2szw9>m$F61y8i{m1Y7$&!n{8h?lBQXja7+F${N@WhvaT+} z!CXSDPPC+ZD+vSi@w#m$N?Ui+@ShxG11zQnaz3Ghoo1`$ZzggMLMvn{Y_JWxwUXDg zH98xz6f`0lTj=Sv*R;>pK|&umZ)uZ&K6lx$ibftWR}P-g7H=xbr0muU|c(PWq_SkC6Gx(WcBNZ6o!c zQ@Uo3=lwQ&DHLnmlT;bCx#|iE>9yv{`bxHA>**}g4Gk9f?($JR_ogf&9}eaEn(u@I?E1h)z}M#0*m8m*%W2V^D0AlJ zUBpuMy;^CGG-Lf9?SIB3G}`93rWK3UGZ^$WU}W-jE@kOX_=({A59QxY8w(4?4gAzl z_P+^h6kR$#)UmtnQHzVt=R};oz_p%`zsGX2Ns1{lq=dQh$Pm#t1bgS)=f&2@I4+BX z3sa82A~2q;$d&!76>4!BXSKz8y?Q^!(6l3A31TsqFW4ElkyvhsUOG0T{kg-tUni-w zj`cw<=FKy4uO)DTU}RLAZOKPBEw41Lqm!JwsEr1`j;B|9fyj!moS|Vfd1~^`>iTqw z^r&T?oT2h@cm!Ff9|W%#!nzrgetsJ1?3?lxadXCE?tw4SG|-P-8N$#Vbz};GMb&OH zdWLN`I{4k1uZdwxY><(y%W&`PQ;?;VX;ZKW}v@qFp4%&Nug~{v%xrP`mh^!Gp!?$w9nq1+C=P!lutRn$G#aMBU~1c z&ebRsK3*}8*rs5Sy72xeN5EuMnUE0NO{k}g4DO{EH__*q7bd^0xsXLX4FL%yGhZLtujjPL_#L3lK#tRNxf!ak^m z^j6Y2vYGvUR@H+7K)fLJCZ&2#L!6=E1)D0>84~dcNrmN^sGr}bNfoZKw)G8A?b2O% zIW7+NMNRRrQF+K!i1NO}hiV^o+6L$J(|X}RjW1wkVT;fYS&KU-MdSPW#%Y9^!ut0H zg-h(#I||M+g;zeyb@5{6le&w&0q+mGMbHb6?}}sAW*2p>5>>_4^k=_TkqKsF?~8=e zQ4db}Kf4Ohg3DCF2c2Wji6n|W0v-ns@gOLKw|B(FS0bI-MCmQ*${h$6uA)?*Y^D30 z^7b9F?w7~&`CqMFcht7!3o94aZQZmbeuj}VW%YY+2d-o|&Xm^Z712MV;-Yc&iVcaV z;baJdcpyA(pshNr_*poEih7^4>!Q;0@SbwYEKVo~#00}PT6B40wB>@T`ib$8$kcmv z_&pi6Wc1ZKR(F+)rKwsb3aNa4;*PZqpB$kGFUs;Oig5PK7V7#*Sicre(72nZfSAgz zwfTx;Yp9I#6nwk#xZ+C;oF+e3*FRr-FNoaeGnYiFbXD6}M`spfhOFzGchAMFv zx%1}=W>UpVg3h0%$nR~O4-_w}P>btUskRjrqt;ok&kNpByFCzHeOwVin=4O9A5*eG zI9P5{TIRSP{{}P9TehyuK9Tu|_0l|#V=Oq`$aJfPYZ?%NU!LX$8m?lAaZRb*0q96X^T zu`JG#&T~KRXfZVeM6j(9{lCQ&7HSJm!1Xm?w+M@UC501s7tZd$W9?y0Q9q$-Y>5){ z{kB5ngI|jqo^wL_D0^^h4gVqfZbZq;m|=p335uRi=q`wRJ3htdcWCY!MFmkr@eAbO zDt*GBJOJ`?GtVkm9$qswFHiMTxCBE+Z8(hRv(co1-9bHgo-ljMcJ-{7y2x=bli?c0 zQM{u^yMyRvYB#4_3wDr)M%38YufBIsZy0PQBk{lmVQY>#Uf>yKG-IMD$u?!$6GEjQ zKlzDhI0tTGKll$db%B&XY*koh%@k4-)0$M~Cb1)nW3>@8h;MqhN+Kln(%Zp>qy~NC zhm=uj%nDv%1kW*AXN0Z+AF#fyEk{nmc+-zNlOwH!*6C;ZMz!uoVJ04-Tu{=w*>4b( zeOn=Kc2sOS{CAs$_^~&lUq&-=7tG5B^TE?J1#q>+KqkM#pHlT*`T4v|EhmN>q6cDq z>Te@X3fruH&2q@^_x6BWcVkx%5&=I(13dyB4;O>%u+uGT%3k}K`@T$XOa&7{oiLRm z+)~72Ae%f*9(4z@g|^<2^QfQ)B9d>>?fqto(Oa&?$+Z zD8VCO(QGZP4@3@X3JbCCi?geFj2=1 zw=W8-zU}J}avp@G;U=VP=`-h}mlt$-0OlAmy}!J<5l{;kNWu@F-sNt}Gcyk~E3wO; zDF4Vz%&v}QP%5g1Inivw&v|1@_A&x8D%Y(`E17p$RbF%Vr&gHxo^xcS#ms|(^XV7I zl}&|GXbQ(%GCD>oyv1&k2a($dSd48mHKpMh2!D=qY0|WHJhE!liDZ)A2u&clxRmL; zApOVl$bz3?*5JCplb>=;Lbkjk?bU?+%DXiEosG~{PE)-+eCbM5!OI~*hILu1RqP)k z1VvANHukd(<^-lh$(LQlRgzF96 zk9%d2CC*RW3T7^^@eam_!A>w7EXF zRSkpJssU~Y-a|-Yq;ah&?^lT9-(h!8zk40OQlIzvkRzkE{6KO*_agZj$y%JgVc%4h z&`A)E4;y*8qC)IQ)N#NF=4Hot)JkTDlv5)ni<3x4G4>6TBUY?+AmKHVh$xasR$dRD z`*0TLd{KLk%?W&9ti0el4p2Y#_^8ppPIej1^l8NDBz8|$d~~$60mtr9y}HA>x}#iOUiA41 zgiCM~+BKYTLTP=_0QZQ13pgYsC!@dtn|DhC|EO+@I7AX7z`V2Lfpz+bWL?D58eQh?ZgvF6c)Y;L-A_RoB$y{v8uMM%VvU#9C$%VPn)oPk4qzY-7%70d1bwl*6%|V7cPx{OTr^r8V zr8;%PVl*~!Q#^y@?d%5`{W;Er5U^oeu630}KOkF9MU3A2t0u)%kMu!PRPF}3<%7-8 zp;XA8H(ILPNmKMdoKQ-;#l2ivM)&c;(HBx%v=vf!-HC({hieQKX1E_(7cXM{+b6&A zohp1f5c1}{rs}^;qZ#~KU(-C14989iX34rJe_k;mL+?^Z6(!|$$iu@lac^5_=6v{k zD}tveHw`&r%i7U1TK)Qsqr1pZns`CSYsy=pR=?SJe}X~YLuVx`u(n3~AxsXch5_a| z`1A6u{nT9fI7T9)2XOnPS0ttA(AR5)m+jDGf;*q+HMWz*$wDv ziDPW_s#Oh|q;U8&6C3(TWVEh`yu%twIk>SNFBx816@?%()Kj*!RMTsHx@yc*H{~pK zrwlqT5%*5V2w|bF{bEm;o>zB*)>Uj8M-+-Yy4gsaM3&NHvy;nxKOWVJeF>f= z+TsgM6$J@12lfMBH=3%Dx3;tP^hZqR3%c{P#$IjXk+&Lo;9qDGs8-f!A}?lHk7P)YSM5CQT`_r%Pm zuX(V1&ApdaFx=r@di0|c8KZCI2AE0r%W?|`+v%sOoau=Yt9{yuDFGH5l|jv&yfVAR zaQp@xhUF;tjeNN{ce}a1%Z3Yg8)1VF>O7BtYYfJAYW-oh+Evseup*q}dWiCq-|t!` z9-&CYhwN6Xgi%07;xihVHDf0Kf?(nU0k-07%S8S!D)glc;G&!HgRKa)ck{{Xra{jP zW12H=s{l8L)@aBRyWIz^Q8~TWO&=}2=q}h@vlF~9w7JS!2sMlpF6i5>%|yiXe#}eA zGPWdq)){OLg?o5Go}lTfLu<27Emqu@W9d99tVy;}!YFPdFe-mi4T}G zTJmTp>A6b&Ha6}fAW!e-R2Zsh81sJjo$$gG9_M9Lxc+U?MLM5?5v`ESX@!QDookTI z00J^B{kACHXQSMR%Qu`u?$YnClF!JMH)n{fUyJ>mtC8=RWn!XwXW*UHUqwI@{jz7r z#WtIfB-Xwqu4qd|;-+CaDmawnDRyDezytxUy{(BAYa!p#T05jaw5 zQ3v_W^=%1yJFPd~9;8CssNrI9dsfi+yN4qqu=dgY=eS=}S=fRV>~0s0_+k)7C<> zj;>T?(!o=mQD3ME&ynV$jC>wQ$e#Ey_?(lCWbx+*;@)ApAHsE+6uN_7sv5@2U#StW zMDZ3|OJSG})hQUaJ zhcU7dFetD^d_lj%RVsi~wi-3#+KV^063fZ#Ni@Ij|DxV%n%;&;52LV8OJ*ZLLN$G6 zYGC}Tt=)%|Y?0%`;i}4KUw-!N+s%^;I)k(wnscIqm ztsLjMkY^JIGxw`TYFBE5LT268j{p;xs*cZr&KgIW^1@c^e$Vo_>}T1ePZh&^{3@Zf zFS{go?^FuiOX}_?q^|uojM;c_7*25N{RA?*>t{BvQW}=~Ext@Mjhg6DX*4qWEuioJ zf?ay!0t)(phassynX#OAWt=-+_{rbR=e?;Hz32rni~F1>Z$kQ^vQu)aGYPGRo)sdpj^JB(qeSn4w-xe z$U^4tcc!rF3%FNDE2asJ>)9)Mdw9^Ye_8Z=M!VQysTPeTSs7FsB9N&a@r@ zk-i`>c|yE5%atm;e=ePZX%s;rZi)hke@E@&Zj-@NcmmB%arTGd2_M3QI`oTgkk5~x zP%;PHZoJ0{v2K6fOF@&Oc)7s8E-H9ycV(*n&_B`sO~9n%xPP8)8#iw~S9rihrd=lA zbu_(g%4MoBz>9RyHSHamrvFM!aaF!h$M*-J#58WC1H}Pckft1go5Nf6wjN``Nfm1K zMqRLIDRq9)ad@IS>$&da{ty4)nvAbQFd7+4y`%FLlcc+YnH=7j^II-+S#h>r<#GDr zOiYT4Ll(rD3`<2N)kN-0b323Pp49u|)#f0*)RU`}Lqyq|)F%1W&8A;>1hFdnLR#dp zN4b_;J$E+N1)o8(Lg*1IT6qm*WVWT6zuXE8Wdg9HSJ*IR?{wU-58TK17p`x+rbfaB z+detg@ikS(kqA<+u}ot0%Gl`$7{+ZFaE!cdTJF1)!4Pn0(yJ5=NPr9s%P;?#n67am_ZlUBv=5xdKLmifMoTZ4H(YH)#H(n?QzwQIJ zMbR9a{S*RTKhyy-FDRoMpS;T4Ck2|bOa%%u-wcfuxF&@B&mz%Nd9|9YNzdp!hjDvM zZeb!}4hrXjuriwV7X3a#V>O#a$>;;`l1R`OqVw4z9UY4bWcRBUL@&nIx>t*M8GJB( zuy%Lovn=TrEN?rvU4`znfb4Dy9YV6e)= zTZR=!Qnk6o#_+Sy4Ic8L0)up?sTT>JEnh1!?To?pIf>#Iu{?;>RPSC~k&{^F7JVZQ zwdF2z?eLg5HVTk#8h4<5uNo%9Xt!|nigp3xjo*D(uka+|m_qiMM{u1kmydx!?>8~}Z|YtjzkNg4vQFkQ zZ6a9XQJe4{qyCzyk|}peJ#KnhHasvDxST6=*FN(ISe~4f6)NB4=HO|JNltb6iF2{N zOq|+}?0>%RA~LJddz0Ba(f!H0YA7cvLPMJ%r>;SFMX4%lzM;bJ{>S;DfgPx&!9{8@ z(c*UID_MMJ4^Mxr$XgA}1>=bTS5;{A57%RaB=3>V9d|_s6s|8*!j|m6lD|_h&$C?M z_PAxa8sXsSg!-h2-Az0g_A*T7GJcahS{}ZEi-{S3Wsde^5S#?%IYO#gTmaSd%m|Dj zc(@QgIh6Nor%k8}5cg}(3B(B$BjtaiLb-ahPiGZjV<_ zR^s@x_6ADRQ|rNk*l?DDc*bDx{;z!Ltx2EirnO&~XUXmTw!Y<5lDhLs#OYn|NJA>T z>KN*tFYw~W>qe*L^=C8QOm(0X*2eh0r}S(4@_AEZ&~4zOrrovPN1@!8ah(D0L=lc{ zW)&=q=^P>((SIOPZKxBIt=3r$m_j~FfU$Qyc)#WjnI)o0)=7ge^+xApusx%?m?Ba9CGieM2rMg)Ez;XsQTeaW-9dmz}fyDcmpi7!_{ z^%-IGZ)&|-v7DB-IvWc)Cb!8n<4v@4&FW`snhQ^E$Gs^~xG5vbb=@v|If>oIYae8m zjHZlvr<4#B)O}eQG<`bq1+QGl$<*#Z>Nu%vqMOK%0XwiL8O~n0M=Xz7vRTY{itQ%0 zD&!UwoSo4P+~oC*Sq7A2Q}g1X>+_-9;uVpka_ikM2nQ)cF&73JhUU?eH+T061H zHhY(W?S94Jy&@cAFb6+YJHPg7m9ex|rjx!T_9XuREK)a1LzmT3O*Zm7i*S6VImh&< zdK$-7W^!II@};wqMmu1a&N3 zZm}Xoe&qea`%P&C+(@X>k&mj`7~9W}sO0;PTG|r6jOVEfJED{q9#e>4{Y0Fp{^_b} z`jDk*f_X3ecSz|4PE9ndZm5`Q|K+n&PyLsqxarsptv#Rj*;yV45NFFeu zp>T7$Gt-}LlpKSWU z0PBjjW{)h^G)tStljrYT?iV#uIium3m541%m7zCt-Ylk$c!M6b)Sb*s-Ek1F9ceT> z9Hqprj8i;TPUM(c+su%kC>)y3S_zo8+GNwlWVt5>rZK+Z7~gY~@iv_lWr{yaB!R^Z z(BZa4S7I_MVv0!}4c503LL*FiRk>LYn_C}1*&u^UvWK*A#-Eb^0QIQoZ5`Vy%-#Ko z{cAREjJxS$xPohDV8sIDXOumuT)SIS%RFa&4EHeU*0QX~k{Kp=&PM=`FY0o0=mF1B zSk<2@vfSyRP0Ck$92MkWXS$m9=!Up#h|qTTtRwF(Rk7Ip*LHEbyv9kROy!xfYqAQ+ z{b?6tHg8k@d8jQE-Nx*DP=;2Kz(9KAiefV^Av4GtepDZoI|J+PX@$syc{s;v zU^0CcdrfI3&|oj*z}Ghx%6|CVs&)><y`m0Ab3c<{;z@-xTMY%A2xg!K;a38HH60OXSsb={? zsO`t;R?e6ivz$hKlA)al<9u16=~~%m)a})o08uDnjH{gEAdHV=#Z8kmjGT5nV*2XK zN)z1J#==R!F)O)tNV*{8@K0QNpK9f6o>p5Uxi<*&J$IQ7vXi}y>1lJA@GYm?d{g$x1}wDv-cJ31L6!X255OAL=!`FU9go267FM{s*DesO zY=+(p{{RurUB3f?`OzjL-ZVHir<%hAoDZcUBx{cU0Phd!Op#xs{U{KP(f*VT2;ay4 z@A%LN4tJmTNA;iv7v(?QKhmVD6{UQ}M|}SPT30P1nFJR16oyi}a2FZpnnff~kn%q& z210N^{{VRZ09vA1UQXVdkM*V^J7wKGW8Ht92pQCPH}{?=)#U9JwY+2MT1G$nEp<@p zapHDFUMSPXiF*2_u*RKm$6^JZ;Tw=M7fK-V` zQp`GW)KdY4GtqXZVtY^pJByg(;YQ~?5kOe48nld9^4$$E8*o0^9JVOn31N{5_1vUq z^`?Z;k)~Ult3{AID~zm&dZUgRPq;MaQpPHqCX-K>{(2gZYK!)4fwcK^{<4>}LG0P; zQQF5J%>0`4Y;Y8B+-HuIF`2h9tg#hgQWi4}pa6y9ro|(j*Rif0J4QW+Q{p3z2BL&;BN$`sc&tm>X~%9m`4Nv<8aB`?d$@!2YgoXS9Uon zO3Aa=F0HPt^@WQ_&|$q~d9QdU#oFek z?Ww^HfSI>RERrj6(+a3hKrjY>9`(-{+1;J4qUGg*(pY#F2sCuj;bR7z>>laV=4-M$ zG3cxG&m3{iYWm#EWOtf2kg&mT6i}_btZEfiMgRk_6olE*Mgk%#@Bzp4rbzsco7so- zqT;Yf{{VmKMZqB%upj-}E;NR`gXjMMcl>EwY9YLC`id?bq$U36(-k)_l!8J6zdp3C zRf==m0pF(-u2(6OcQ|%py(k^5Rt!mB^V*sd6F>S9{YJ*ng&zAe-q!WtAGp;yx<@CXm^bLN`?G|ML{Crf?WOY*0UJax0^j_0or|~oN{Z| zJi@ip@kxPA--<&kG3JoW{Zy%hsj>Ur(tvrBN|Jm8w;yKE-3 zJO2QK(m|wnfg181&vP3`9Gh}uZoiQLjMlODb!5|x^gX8V#XJm4DDW`BVPh%64Dr{2S8mbQ`@mgQwvDjzrupq~5#k=C@P{o^XpN-Xtj znGLJk-l!zn$R!|kDS{Y(-z3*XMWMq7t-GCc>lCVz1xH31Q;dQQbF^&+%8H2?O{%Mm zuLB?Fr9rmjGB8jEdK^^T(IPW20fu@Uikp|n!_NnB2dJXs_H0I+HgJCO(Qr_)8(fYL zW?%FC={8cPRco=vPgTLG<~CG@eZTH!(w8}2z=^dGxcbuOAF{Dl<4`PID8&~SDn&VF zFSjSJ_){gK65O>iS^#iVds9R)p}u7v!9>GF)Gqb>`iQQ92bvnA+gpp`E>i3qt&itSS5+17-&Ft z4D0Mc0P)LXHP2luU#ZuIyVIcwy3`sX+wE0I!Do$tABZeJTISU1vNPmuR^XgnSuh-a z<;H(Lf0ZHVL;aU<%uT?7&vP})I6v?eRR{5=E0$aA@Wz5!lVBfmH3*~drYjUK@1%d- z*&>7g06iFRzWDBF3wIf5YPMIllA$C_9tjzaS>GGgkKiQy=}mj0>T74`tcn%e27on@ z_^(v*#!mjGlNu{K3{n|dRv}3gH(+Kw-fhdW^c9ucGu5-3)Cjj}BYw3FSk@@X(_)8n zyqNW}Ff z9i7OU=2kbfyV$iYJ`1RRpP?0lI$^1ecXf`v7=E>kq<2%Na*JM`59e9)9SVsXUXjrK z-{n)xXsD02z6NwhJQI)4y;Nteq*SBswuVV|L}Y&yO@ckY{YHl(qf7BATwU#9&%HyD zyeSK7FPY~va^d0%C!Ov#~f#t&dAkSVzfB0C=Hi};WS^QtDs z?}iWA{7Gt8?p)c)8-KkUsbA5ax+rgBml3KrHT{3=S25UFM7KJOfH6XFu&4Lj_8x<& z{K(d&MH3oyob~8qTU%Ttw=>*J9MjxM=1AUN(ake?FwU7gXTQub{OObP0do?M-P#a;+9H^&CDf(Avo|18ZpZ+8LnRaVM7J*k z^HwDTb)*K23`$q5d4p~;M--S9%D17UF^o9D6ag4OGsP7I*KjaFkHyu>+K4y1OVXl_qx;ML-}C9#w5L(Uky4tPF2^Od zsbG&2?}fl*bvPYDbmW z>!&N~iaM-h5;4I!{A-qI^(Z@-7ZS*s*f$Z#9;3Ld8$B4t=&ZL%GVYDC2LyK?T9$00 zK=Ux*9-TeKP0dsXU21A>mR;P;xRd?y-|_4C;;GK=P=gA(8*KgyCqeb?WCO$`6$3M_Q~iy%^KR|H5DZXyCM=~o_g_3GG_wRXK+6JR;b~q ztUgx$74CVfFe#kLe2PBo0LaI-Te*sh?@@iL2saQj!gnRHE$$nM@Wybc$zeVnS zvsW4N>Sa27+B2iD)0)B-*_o!1x6L!QWR<;1{+$OwQrmA)=(H`w;rPbaAHsW3CMz~G zj(tr4QMhrq`6p|Rq;#ZG^E2-Jsn=wq4mZJ+VrA61O!$=CLesGy$VxjVpywUa{sKMV6Uw z8U~yKed&dZpJcNm{aVqWSYv6{P1ZG{$Sg$KHH&`$qR0&WN5UF)^kpO*8cqq0_9@wT z6Hl|qgNjO;L2|aI@c!EPV8}<~Q93F_wQ~OehqNQ0ptNb4Sd0Eu z-c?y1Ci5a>W3`6i$n4l)IZ@WGbz?Q=OejhZ$m;IIcTpCMf@_*uophUn)a3ODnHZcA z&*W>CNcL#SG;^16m%UZCS$^9m-AG1RvF+0y=Yj26tGy2AC_)_5b~d5#zNq$#CFSH6 z(zpDxjxG55ox`7D`I^2&jt7{hD?w;SbKx6?w~?gOqazvlZHk=x9p{={scJap5^tB3 z&y&OR-Jpdof^Kj(N}1b(*Nl2ngj1D{iDKGXtB`BS*LAJLB-2NcU}wd*ww9WFZEZEEzU$_HquXa&!GPR z8s3dAbQlX+BgI4JAb{7Gh0O9sT;9nm&k-M<;mcGc-E-nYV510Z`7yz z7L_WJert=;GKx?4bHg{F=sWrv6Yh7qHj`_mTbQjQ!DG4Ij#@_k^B(4dHtt<^#&P-6 zB&l(=zHhomMxbR=J2)ezI-g&qA=syJI0{1W2XRPdZ1V0H9che?D4IfjhDqoE_n<`$ zS!JHuFu6@SPhzIvdj9~q=s%0EOlMUKE3+9?*2s03+bV!C0KgTMLZE4>=CCyso@fKA z@bn{>BE4hHM$@vB^BM*MRrICjBrXjv>JQ^+p zH>#6H1IWtCa;~Qgr`o1TNm-PgiuTuJNFll-%seEZVPyXR2KMjU&~wT>rm5dz-tKzf z`ufxrVBM4G)Bxbw;fFt^0dB)d1mmx<>ryk3)~1(Q*Co;|=4h-fRZZie!${|m7JCd} zpQx-V$?T50F;R~@UWR_5;C(LV=7QaAr2}Y|58bgIhqDi3kyx&1>~HNnf;k#S=J z;{$6nr}D!806JW&xSl>gW+O+2;kH>CZBkNL?mkRvnLhis8g9faRY#&$D!d79B}*+% z>Ht^whDpFeJqX7mim2XNBDt>ArmokKUroLHLa0`WpUf$_TjV4hZUpu{d8um7#@`fq zndlPfnii3!t;O}~-`U7rek(Rk0*pA$JtN$=|FBpB%O1~^q>loFfH?(pF!Gz zl&<9+&pw0t&@(;cG84`Ru0NFkM;vIONrkyKl&RVs4M8D!~9kn?XkmD7kqjLzm7|Y>_<8Z;N3DIoc6;dTS zCBQX@)#PpMqDI<1&U#Yz6CbsS*jZc0Z4S-A*P?MD=gRAx&;&Bv#)AVC0Yc{Q3QlPV z=k*)Ijp|NC3}Y;{rnqHBJvgB-XzA?c1qU?5SZRP9QUav17km>y60)O4QNSuj2tDX( zCCZS2^uZ#TtFQrY5?GOZ~vvZ~NqPOIB|hMohY`&G8>$v%R0w_kLRb zC9rY$Qn9j%j^kfV)$U^^>gpRP{{XuZhGG8z0&YJ+MbZv<^f9mPwEGz3ns*btdBm3u zyPR|Y^!f@F-p1+oA&P4~LhcDHA~7OmUU?4PrsrnKWV@3T@_?V|GG zwKCjXIl}By^Pfasr|N$pQ)RLnZ7yn>FYEgKP5mFjvd-yst&ui zf<=FXR+%l4S>H5N%HPGW^W)j{qv_nZBr z_yJuorlYCLQmdAWV|dK!IW?(>zi4nWMF1(Ci0MFvJj@iFPz49nz+wk#Lm*v2g5xx< zF{1gwJe*JjPjXo2Gyz^&*?}3L4BM=j-|0Zi4Km|p;Zl3lr>NQ8>GvR@8LJ@B5`*4= z8NcVv08Ae^rUT3INM$RVNS;F~7KVTM>k-=DkFVpJnL$f(<2Mo?wQ5%9tQU#?*Y2P5 z83*zei=_G*s;TZhd_`*%fp3y~B6#02{F(m%eR8Am#b)Bx=831V$0n(1;m;E4Hdpg3 zFx^aUt>kaG$tDlp>BDXn$5tXmPu{2bfc( z9!g5=?X;aIOwf_O#}PBI!_OhzBmGZd>@Yp3y^l6?saf7^ea*{0dBF6kxYTS>mO!AA zc%Zu!H2cr9>IODAhULCqKIEVMkRO;HrnjRnvdl3Q^yWsRzbBLL>sy>;48?{!dw-s2 z0kat3MSGbN`8-i4V$XOd2OiHvnmfu##e!3+B)RT1o(k z+cbtm`&mdJ5O^Tc8O`ecAGV$_h*4n#u!cn3icej*Ag+A@$F*fDN=EeY5{AWXGeDL( zCYHu|tzx$e8Ear8Qsny6#J8}`e@cQ~wwwjppE804clY>%F^pRJR4rtg-HbHfGPs$EH zlr~gprKv&XCZyKH637%}ngJs^c}t#pb`%zohp%cDmX^%3+z94jnALfG!;nDsI5lui z_dzRK%;_!el3g|n`Q0FbNRnn}AS!ME{{UL;Jg1|u%UkJhYXi+NGHNRA6!S^TlBXPcDHtFO4r{6jTSJngcd@vqn$XC0Xb=O< z01&R}b3h3*eCB}>GjTx5mkdb)n2y6sTv)~QsT(+0bgQ@N3sjU{i$J`7su$}_E?Qp< z-D8(pEXB-=_Ffl^b8{hM=qcHfINZd0Bbb>QoM8WqA7VC zg+yLU6VM7xq^`!5&ZkP!TTjtm8=|c|vYDT6KyUya_yB%Y%{^A8)SabtWadq$Oi@2#N!0OQp8WcnG&(ObzP=AC2W zsAhM!v4IuN<`a;rPfYC$#2y7{7__Z(nx$+z-QUp~QfXc-)R;$kbzx-z`_Bnyf4~un zIeVEZ_;@SDHqDO@cxzA4rfag#d8n|*+Gjh8k3|PKAC7(MuVix9tvdQW7i4P7GdU-( zy+dRuq(o10X%s^w$^pU2q*6r*AD*-pR+4-+1qCEzYWlPmMMTWcGmNA$jn3ae>F#)^ zX3LBl(HTa4Li`Z!wlN>zi0_b(c03QjAFWcctD@4oB9Fti-eHmfhJU~24>Ni7B=eu4 z6|`SNj;4<2*^5n*Mv1QEX?&~*)PNE^3=OI{A6~xormW;`BU;fshf+G{^{QGKN!-6B z!|AsY-zf7eWy4%3A2dV^ZyuunWP4WY7dbe96%Vb3h%fs(DuEo`QigMRATXQ*g0LdEd$KIF5Wyif-f<0y_1!0AY3O$~<3G2~UE zS8lubX&*jdW>Llz;Gf31&F$}wZz>hVH zsMe5HI^l+dpFL;IZu@=5JEq=4rAZ@R+t2pak%K>wUux%o7z5h`jP=fFPBB*MbyS3_ z>bB@<4;IQ~668 ze~I9|lr6oz^o!Sdvy>IqLXB(B(y8sT(g`5f!>hR zQYyTRe)AedScJ}?o^wogDqh~jZv)Ldi4;rK-LM4-Ty{Chwf3Evbl8Ex$D2M-4}HIQ z{y5LA8ZFMKVP`G$A7g25OTE;SeX2v3oPfc-0Udz$&(e#gbn;4)v~^#Jek)S0P%^k2 zs}A(iFsVDMnl|x;?ZbYCw~6LeWu+dy_%)(A7@cxEnxYGqB>Cu%&Q1@#QX*Ru_+^OF zgdg+mEVkf#B#f*20bP;R9FyGCsvuE73QYh;)Bw{!57O7nzd`6|5!v(tfgHqlQi1o) zbKKg*$#wneu3=b|PNtp3VSL~_(zsY2bSin~ox;XU?Awo}2xKML3ZWQ2D2&Ts&5l-( z9FCWAV{z$B4vH(H0Hz|!PFvQ1Cs`-~!O1*O0+f>(pbo#maXda9Msa~Ol1!uhmOLNF zuj5%Te-V1>GTA6_b6H7tH>WFZW8Lmm!>1miu$P(LPS0j!T+ii)@(`)pjDgSRSzg;6 zQH}m18%~G&Lf#vzi6pmzUz!->3G**v#N_0Tdt*4MaOGELL#ZvIX-A^yvj&n_=9WzS z#qJ~|pZn^PaeJ9M*ogbFc0p*GUYk3c8wg^M^^;~;{aEu$opcnTQlh-&a=p)stfQOA zTcna>{{Spt21ow@zEl%V>?4KiVpFMHPYDs*OB#{ZNSSl_iiX)rlvCd2L%mmYt&ej^ zuR^raZX_>G=9uhIzrBLO12xov5O6z^eE{x#sjW)0dLy4%8&SSXjZ!H-&ZqZw>fjU~ z-Y1d2^8=vnN^(m>zLf_E^Dl_$u6!KxY3r!zGX1vHgUYViWAz1ppIrK4uh~0uLsVe1 zD0BN9Lgkm?@@7q)t;A(`+?_Fw2>yrk`czonb4yE_(EOl$ha;t0M-@q2wwZ2w{E?W9=BM@v-bdKgy{R%la}Ez13k}*B)T{GAaK6 z(6?7zJ&sD7n*tni#SfGUCaln&nFx%EY)rLN3XktG>M2ON>yeib*lR%>zzqsRe=y-P;1m9{hGv{E=; zPbZ4a#OPI7%cN?EzDuy`%8vzwBJh` zbt?)k2mSTD{UF!EH-$b&S@TvLbZ{0&5)rimF0nHYDO7?K3 zuFDru+(I{B%>y{+5$6l|nuci>pTc6#sF_KROpom{AL9r2OYU2z;4*32+m@q!iV^8@ zjY3z{T-;wo#S0OIPmcDCW&8Tu8V|HlzN(RY2mFTkq7T#Ic4=+SGgS020fdaLokbxSX|P?ZsgE1GH4LPOa__&jgJO^ z8M>%LWMEW-Oh=pR$|2RH+tBks%bHx-7^+0GY6s$&iz@U1C~taVAiR;hf~bZ`ALNcO zGF^{BilnZ|lSy5cY;LtJ0vMvPo9!0SpjNk?vH=5~ta)Fj{yW~PR3jzW#x#dA)Cm!F~43hSe>ziV=rF)X$>aNWXr1UO;;0DTI= z%^equBx!n=jntk2#z*N$X?7sEOIw(pDTGqQ!wilA1bc%^LerFWMogX=(%(BR5;A+n zO8)>VjzrD=vs1Z;ulQotD=$oTUbG{MOW+~fiH=e18FTN~2EUS9h$t+d|{ zSsl-!0U{s0Et|1#e6S?eZAj^rOYI`{&b2eeKe;{gkB+Qe7)w`LW z*)4eME~?&nKQMr2%3rAdBkq3yDf05{Y3*)n!)&6LsZ1E@PEO;mBn@7!k-nhD8z4+$u|+E+kKGt0RbsD6Dpq z)Q;b!9KD9ByKA{DabW#LT1FF@GNxCOG7c*2b2$=640$1&j@;9+4n&NW(XQqL1F7vy zo1E^Y;>`-ndL_bKOs9zLhnREdNZ@`XR`8)Y?2dYs>BDw%8kdW89ZK;ntYG^Eyqx)& z4=EiEKZQ?EUbWjx1eUcK!&e;Ml+n=qJAx|>Zu&UO?z@3xJD8o!j6o+o&hgD_StON= zaPn=to`t%(&Y`8iMubn@bN6NIA_Bwfv(TW(62I@r|p+Z+I&H4CNKD>>Uz-`K zB)E@26Dv~@Z$(y{T#Fgo1TsuW>_`YdJILX0Cv#FPRfCm;QT4AxHeiDatUH#DX)Neim3+b^9a! zjjUd69TsI-hvvgStzz)BrM8C47gjs!NIXsA7=|Z@PP-ZY<3>;FN9kEh0G`a+IQF+g z{{Z1MxsRKl56S@QZKnV{6Qsel;!_w{zs+ib;#L+T#{{U%4Wa!Vas;>^{nLJCNvwrVf(@!1dLH%l6B)3M2 zabw22r7%spwSgTtl{o!sd0AZOicMQhD*piSG_%HXKYE|zOO=+UiqdNuI=)|6u>g+q zp#HSIn`L`sin4f%K#foQP3;(tn`I6Bs+Ac%kiN2(?5Qt|ygv~*zIXN61E182wT7wK ziDMz$%A4XokPD@~mZ3AL!3?VyADPeTTE_)B9P`J)6sGuzD-ZNtA~ijlS;_qZ{{ULr zI0x03OE6s#nJE3S41gOj>zVnYLnfMh6p0y4xY8Ci5S%LJS%M&FC35ae+a^!r}O-%X?GfLvD)cU zn|(scbHPcK8z0?&kp2L$KZR#eUM7^KX`YVO(&L7%GrWQAWY5g>fELJ}tw0EDiIGuH zB+_F$JucO4ZIwq{b3!Gt_Xp;r%83n0M>rRnz|?xEpa6kPL^2R40tPg|jGCbdiUbCj z6}2dZ#hj6_&P4(|+5Z4>bn&0zG{kDdKPcU*$u;AYFa%Hp>mbDdYL;C7{E7e_tf59rN*wR~`VKuwSB#x*^c^SY1fCu>%wCs@(y~|MPG6>YP z0P*N5IW*X=cYVbgaR>cK{{X&e^7#v$_as{;2Z$T~`J%{IWUFB_jI1q>ekq6>NS;D6 z6*1pEDKV>zn?%_k?@~Fj(5b;6;rJ0yk)_JX1W=Ltxj*lm{{TJI{o;MnQ*pUK^DaOg zHsF8kl>P7NF?+w$LJ1U)xpN@&X2&7mxJE!5-)T0FP+Y{{Xgk{{TJaj!8Yk znk!>Y;?3VrlglOF0PWg&0OWy_)QtA5rAyyZ>}wj{_)dAc)oiJvIk_4?jN6D*0zkgG-Tu0&pL(NAMy18!2Trp$N2u0T#4*Y zGh2^cN;yd&h902OTLHK9q)6c;Uti@%5*6D#MYGsS2@I{91>rxdjwg0$+m+B;OZj^u50FhSbCQ_U_>^AI%d>x2w{-4$G-<{9N& zN&FyxzGJ3Dmy%eeR4X*R(mN}?EXvLqky8kcrfg0#p%+w%PY z6s#8(83H#i_?k@(F`9CjP5qLtAti?JeM#f+1b$UJBKJK9z*p_4cu!B7PxXkc3y(sK zQ~v;Et|_ZYqrRKwif2KZlEgCXQ$QUDhoaeO<{qqR12kQ^q#~?`nv#gib3o2w&etRv z2m-J+G2Ie?kIB!E*8JgDDDoDdn28=Bvl1CH(G_tzHicSG$AOKI)(~7&X zGkmJ&sn5Sou(h$dj9f(oDHoWd1np2WkHWj58|smS*W>5qoBxg>n-tvLD^T#ACO5dkVscZy%&v2df-Xx*AMyu(>#9k}>$^ zlbS1)iuMdg%`wh7!qVqK%0g_}Jy?3t%oYuR9uuFX05?uD$E#vKBa`=xzPxQG@WOs| zGPR12k>7X-s_9p7Chq!e9!%!xT^d|p-165H*lkx$kd8F%`&L&Xkd2ss3NvR z9fct=8HY3stmm4Mkh9>@9gaj?KSE7lY%%A@EZ?mFP`SKPcy1|(r1$8j?@$Cysh}Tw zigpp4`rKx1s>2lQBEo9$f%nB00mE2`@w`w3i>V>#)C^?P$0s{?eiX!D>i!BGRCd{zGz%PqH27^ix_>_>Aj6a>uP-!y36* zZvaw%)w>2Ct#zjQqk*o>=e0dD35g_mQh$Ckf%$g)D@e_v91}U4!LI3tb+aYxBdX^O zkMs4dS0uO4htD0gA-C~-8^m|ey{w(Yibv~1qW3_m_crbITUpdJQi8vj{OczMjTDh* z%tyhE*Yl;S9*kj9GC|1t(*lm8I;==o<7Duk{D`KD1@$m*q(-qZm&+n;+6D^ZqC1x& zft^r76-M2RzncF5^{V9?lNVxG?p2~fU#JHnv|Az`;9b zxn&rS9=Tjm%7@G`*Mx$)tG?C7|4o1fO#Tq?>R7{uC4yI_E(YYU;O^0y1ntO{m;@!EOPSfan zezdHvJF<<{?(p)+yF`S!&HzyV05(4Y*!(Ls6GtoRVNG(9M?^!`<=v7V*v zJb`N&VsngAkHUv7%`0>=ji|qkCNyZ<+F%1C4{=c0Rv#_hm7pbxAEhfc7e-_2UUPYN zk(MW*QJmFs_Z7x9z3s=(btHDmf4*{mDtAj@vn7f<8*jZM+%Wdz@};W{5h2uwJ79xq z_Tx0H7a*2FkduS z1Y2l-g$bYu63n;Vixk95;j3RPYZ+!x_n8dD`>kUa#Yq#H5&(IEfwU-ea>rD zKIqBEvpK8lJK_j3!7~2<(?tHFv{H{^9AtC%wl{EwXrq=U{{W_Kynb97wIs>qXy-K# zwr|~WX&uHtjY)=4^v@ryUfT-Y${*W*Wgtm3v5)Rvp-;*{HlOp&0A7Pwx3~(fL}c{b zK@Id_!Tb#|7Gz#C8)SM_C)|*=bY}pJAEhQVb9%H#b;x#eEN(g7#y6Y~%N5S%p(pY> zBL_IInLIiz)x(@bRy^e7U}x8yW~t50l?4-C4L;V*0Gd@|y#PE4(Oqba-nx+7YOq7{ z!l04U6!~r|*v^*z;^3c~V)gn{SXUqt?7WB9ll+JEq}9fm(&#!o+P1NHVtt}3STp#vzu{bU zj_N0==o(F~ooc(7JiW=TR&^pxPg_e7`3OS}B%9-TQAtaR| z9MCeW+)C#WCMdWJ7IR8-BjSK3O+F>-$){mlog$3~3Mc|jI|=~K(0*+v&i??O(@idY zLrBDan5|LCEn5rb0Aj5YWKX-=s6`2g$p_MaGH%LbhFtShBb?OyvV<+E!T#-Q7WC~M}_?qs>Z_=;)=yU$6Z<&7rF^ZP$vmLLxC5y!> zvn+S+t>Z)Ft3M97eT$ISNj%j)lw`3f!tyDObCCj>=xc;mm9wSNra zljeI3TdBPUqjxHSX{55K=wy^2sByOJwC}PmB5N{7m0dm(eO;USRC}m;jcaXijm>vu zk3~cNG+rHtX%U$9GN8$G26Ox?{{Yvb@eg=oCGHMqPsMSXJV6qFM6`Ddr{1HH70k|F{{X^zgblhot|;XWW>9+_LN(f4 zF{R2^F^_!~sF@)N`Wki>%(H!}#CDjPj#M1X_mq$@;L{*hknoCrWBO19s5VADTe+qp zR+RM3F%L&k^`HUdX5oK2U?Rks%bc1(OuInfQxMje1BK+%xB~7!dx`*)fG7eBxx_Zp zOWHIo`3%r4hG|h7Z4Xa`kC`BiPuFP8Yt-Z_UF5knXhv1b5XaC8p&9a?3B@on?noKP z;8PKwakD2KxTYf>^%2p7Z6Ny9qFKx8T1B+3?tn!nWM{yD0 ztc#!2fA#8I8A?dOx!-2t);5pSG2FQH-PC>}qV_1)(|k*Aq(t(FPf!~e2iWwgja7Rw zN}p6~FZPbHA&XCyomT;z$*~tc{+)KO$2e{p#2iiTPlGQ>t1 z7p6HBwH}2Fi%1S}9zDUTyA_d}b!ifk6tMhhrYjUAw+oOM@zXT!B8AG8ILP*@LS<T1XyW^@jq1+=S`&q^0LgqlFf>9&gn%98kY+1n&@K<-%=0aRg# z%^(P_n95H6DS>q^2pGu8phBCozh|df0>jqu=bnOqu&=0WQp|pWfUw(p(;?pHj>3Sk zd2WFnMFC;!a*A*|(-nt3+KdjYdr@$(@hIbQ=hBOc#Vvki{>QtFed%K{5378?)~Y*` zJtEDya0UlJIIB5KTc-JsHL4`XxO2`&TBIU`?X?9l8COnlSG`q*b3R@a=M=!oyCZ4l zsS?b4l~OsX)RQLe6moFPK9r?#qbBCcMqm~}{{RA9{{SpjWgK?DWi7kP3dS;bGbq3~ z?fO;@I-4h<-TWW2mgh^JNnD5)U8+9}{{TAZr0k3;E3?*Y?VwZuDCyptlM+a@Awob^ z13uL^D#X561B?!7T&oF=56wtrc}9O4Kv!^jQv#Ih@6wtBGIBsXief0f4p@;?BCCzk z0os`)mYnSa_>SZCCqLH}C7!+T@-HjGmhX%-@=G!I4I^#;0LOOM9Z!htr=(7cX+3HU z1>t%QXaYA<-+1vz04k{9Py}y^0T32k@knPeBjtefq*%n1`Jhk*mz3u{r~tH)nr0-> z1(7QTB%TETReOe(Oq22o1Y5SbQ^wu}08bslu{=`(K{ECvPy)pu+*@&=2~uN{cV>YQ zUAdIoN1T_sgnj}=C-fCj+|IAUbrZMV`c|mqF>X$BbAy`HMojI&{*^?T*F^gCrhv-2 zW4jc@$~P~B=j&92%!{c&CyJs>`b=w;)16{PFtk{VF%RG}_4YuZ1?|+rpN?$NI;1Ja^rX=~`1>>6HE>zm1avZga&u zFijR>Cj^1-NtA(|it>7OrD2gacI4)OE6Ut;G*}8Q=LeHc!E&6E?7e+h8+E!rJTn>M zBn>(lQVfmNnPi}(Ej0uhq4<(a1DyfN(zI4u>Y9{58%-(&tnRL>Nf{Ja=nhjBi%=~s z1zoKM#Iap>-85Sf`legd4b7^pR=e)D?z(U8>aPCoRM)d-&pFSzuJioP^ZZlobrqUq z=KHyo^6ZC?8qG%*Y%JXK z-8ZiPv|)em3pdS_K0oh)?z&BHzm0$I^S@T#vcK_#dz%j}GM~M3x#>sYj6&2fF3u0= zeptEl+9LRMwyV}`lunk`Zara+>-(R;zSBB^I_Cs_wiLN}(_b5Nv1i^p70H-PR)6-I z{jR2Mui^XQ_nPVw8??ygAN=`Gdo&ly{=T|$_1pJ<&cE{Mt*#4rb`N*SVSvya@M<2OG zU%7Kx!1XzPM|@Z3BUi8bS?1QCeE;YV_dR*jQ^kV$z0BDY8&2Q!n*%@ge(Mp>@S+|4 z4O-&!dv>0>p>X}tSH|wsm0tHy@Qtg_Aw7Q?{Qmj1eeDmwxa^+9Q5!P)#OBKW<%8Ro zt?6Zd*0l8(&l2ODb@eE`G-c-_b2f4Fox7}4zu61(v#hrICtIo%F=rG zw{ET2vQYE4Z>avdG<|INu3!DmbbvdVco1fMy1xJCd$D)^@~bw|xBW^GkQ{+xV+RQx`tJ?&kZ81CM`n{pZ^kZE1h`qm$3C(QTT) zu>9HwJjjQ<_mxpryPUqC+KfH@R*^w>^56sCxcT)X@N-^P7Frg*-|@hYZ{0tXT_V41 zEEBf8{)=6^l6+Rpk01U3xM3KST6Dp)_Lsl;n;zY{VcmVnyRvpZ{@YuQ{&dfSCl5V! z)8dxbcD!(t=9vwH*e%OGSoYAs=t(Q`%8wU+>r6HFy+69zZdrie%lOM3sC6>B&DaYf*FKbm^(&U@egcCOO(xoP09qwjBcY2M)9?<}AD(r<5k&3^C-yyx{( z2anEVY%jf9Wp9}L#`D!($NHUD9#N#qtxsUg}?Yx5-yl zT)69#k_QRb`+@GQ-+%PO(0 zIg#{(gD*pqJkGDL<_+k=6Q3Q2-)R~c_@F2!T-^TKoGX4?ef9OOdl%{DTNW78rw7HrE7~nzUhfCkkM~_|MSS_ zONYU=cgVl{+i(ALpyz1)TfbZXB-($&+Y8=)k~sRK&kn3azrXdhH>6Fs|L!X6QGG{K zRqcmsU1i@K+10+gv+SeM59S;mp6psz-2B+#2X9UPTjI^e6jA=d8KdVaBJr)de#6mM z-qATsR_g!`Pip;TB{&utH`^P#j-l4tmlaC9cBFenGGofE_+mnmeIsf`n z??dhf&J5eTfAQ(FuNYqIdTOV5^Pf2T76V!E4*Uua=iID=ueg4-u*0wIe4*syKak(} z{dKRu_Ks`+>o4Z4J-u;MX9?<)o&CWzYe$D)nfEiQbY5GxVPPb3Wm;pw&#?fi6VJSc z+u)}O?J2$M&o^&2==xq)?R-1TG?>?p;N`Et52k$Zi&+Fo`{2%dLL1>%!!L%v{dF7f zZbI}38AgyFB1HpRRdx18-;%(VO-=RwK>e1MCEE(%t!d+__dOA8st@{Lrf^I1=0M}- zMqd-W;TsK`{dLP)0xiM%Kp^DXRKKKg%ccPQQ^Va&Azw=!e7AL*FBtG&`k<%2`JP}) z^UxN+(SdFCD}7r64fV|}`!+S-Q&(5t+}yU$Uw5~^{=WHjL0=%WI{|29<-hb&MOPc?2hr8tj%h%jo-;`SWlFh#6&Gr6UJ;IWd^*3Ky)i?idnCk0WG=FKj)Cqzo zEZJuNXWQL(^Op;t?`aCqmsU{kUq=7a{V(~~e|@d5to+|>==OiQ;Q#pS|8)_mg)ad& z_5Hj3-1I-$&)1jwhtqt0uS+-JQ+N8eOE=o{HZJuS<`pfi zE3Wqy*&Y63`@hEZCHK4e|J`ZT`GT7onm7CGOCA2y(rf6S74I^5hjuDI_}R4b+swT8 zUp!)cv+SvB^R~M0FmAeSD=hrqWsiOT3!(WR7xkq4>EZSJJXJY=dHwLSwM(THEAH8I z;w9FIYCeX4Oa@7{F@ZL-7Df}m^{HHF0zXZe4NV0b?=kV^4Go4)$T$liu8 zzq;$v+U{k}RNqqH)cn)C{;ftdN50%q-ha2FfBOiOm9Mrk{7lvtk57wR zHn#qxeCyN?wLf|AmqXjI{DV~s&xzI(?LcuN$bql+lKWrp@&AGTbZC-Gy z^LN{y+1GH@Pxo63Zl5~-^2+AFA2huBo4Q7yzdUu%fBc92^sB`#xU^V%UGP7a*GujR zi4#79NvXAt{-*(#e?#3;TcN!!uehk*kylvkTbftA(N>VxP*`_Ep)G%@t)afS<5f!H|Mb${HZ9-mYgtjf=H9!THZ7^UdrJ#cYu`OBo0p_c^p2+HdfO8C z|BJxab?*PEq&k+`9d=v3BQL*UsV}e4R#cqlt1E8EgXIl$n}n?L_wN@`PGQ@yXH z-hao}$*)=b-*^50MOXat(hL7PFaNi&`pU&Wa_w7qxUllY;3tapi37JE^8ay{WP5XT z$HvMn$(29dEPQ!g>wkCMuU-7B%dS~i`S*gOca$4fK2-JA4?3KA#^=?KtDfAY{H6b5 z$J2j0@t@$bW^1hIeemHU1fYxcV4|LDG7I}G@*{gsseo)Xtx@#0=I z$H;77r^>f&SLNBZV{`YYFciZKLF>Ne&whFM%@_H<75?a(pE~g~N6KvJYR$rj_=i48 zM^RlGVk^&|XEUl*x8f?D{!`0znfeAo5A95;#?#=%7l@FD^ggsMu@AG>qe!MU8sx5Ndrh^sC&p^>HaLk5WTF-n7ZnR~F z4ePJFt6`@1eALzY-9g=VZhsl(kDs%xR1=HTXje)yk}!DPHp4%z zqr$)biv9BCEAdR+@V6bmTk_l2Z~4=ftexLnz5JE4%Ok7KT{^4zSEbgDtFSA=|8nxG z?I?;k*Wcl|;m6Lo)@yl3x!z2)bn z4;CG6aX+;57s+)W9@y=({5d}H*zS_6&Q!lDt$aIjKl!FLcg2I(x}UB7_@##{#_uWn z>>DR?o_lZJ14iYZqV(o(R&Mrc;v(eyX(4|$HMM;EpJh4R1D{CwB%Ti@u9e-Cebt#Lg5);)jTI-}R+xBTp;+Go*`W63=~oF@$bJYJDI zwp{a*KH(>6g`UI4rEgOe?^D^wzrFX`>wZD*`?%*$PX4L0{eJh}<7+nF5*unBP$=%* ztvTnmzOy0gPuw-5BYj0zpL$~PYkymZKVaLAe;Z`(HB#20ndp-QQnN z+*Ubt;I~6tuWJilcRn%ycRyKpuCSr~rT&cQcgNoGg-*P*<;_35^Q(fZS17xv6IzEYv6^lRSyL;vK~@9li4(Q}A;f3oenn~jID@w+ht5a3%z~&qAOM$`#HY$ zmZx4{Zdy{9`Rh}wU)!6meZTvWtKC;-z4*nf?;&;kJ1c9~KX~QVb$1lK@x`{YJKouC zEpTr9b@sl~IdgBFe*gYz+t4lLLkHjL`F6$qbDm(QUSIU?4`%wX<3GgSxa#@I`1mJr zCqh5>?y;MH{^s=b0q%Rg+n;`E`T0+ts=i`q$BWx9?!4Re>);cET~}Q5$LsozWS_nL z$FHRCe;T`ZXy<{z!oOTtc{RqmNT?s;+$!=sQjghR^=x1_*?ib zp0>SrPmmqYmV9&nuZmm#re1Ql<>lYLyB$<5z;p1xST*hRd~t64#etoNz9_G_=l15sAGwb<9QG~P zdZGGB%M7#15$S$v?e|CS)0p16_4h5S3;sIyylqs-s66z9Wqj<1pYMPDoujY6e8USj zb|h|o?wOOq-Ic*<{yV?S$cbb2ZoC^eB0`uAvWSM{h#;bgg;6e{-rA2!c-VDg7>T&zW$_ISf}#(HtcWkBNT?*b zc&~&=`Ly7zrNVv_%iwA!(ZxFBY6i(dB4Rfl7DFUI-YvSk$ny3|i-hMegt>xEt{XpwrW1V`B5 zb;irEsEe5Gi>AkEol&5ap5P+5vCbj+N!zGTGQiyg$8CI3h9+p4R**Ip|6VySCP*s7bt;isyq+@V8 zq`j|7L^T5G8n{Ce1KHfGNw9f zG#wMR&BId%5a~7-%#A1d*y(=om(Y@(;JoU{Ax;iCG5^3ZFr-%pAI=<42MZyKqpn0B zX7jF?nyleH%d&kH<9UA47)3SBw?xq3iYdpG0@1Ry&E+L;OTghd!>(|iFNw&}L&s%s z45p4OVoO{^%<+h3whw_5?$3(M(6%YZZHfK^Yv%@qua*PIf_y{-_=%N zu^L1UR#0>>8Aeou6zz%0Q5U9CuOko~s~8_cBl-H59o`BKi}5IUIwAz-AcBKnrI1F# z)sP$r2~nv@JAnv_Yf3GVw6E1gm0vT3Nn`19w1)-Dqm;U15v!_^yCodkSw_TayzK0* zMZwk{q@>5Dp3THahmvOOLTlx2Hrkd^`nw=j;nQJkFj(5+-qSH{>lV(&!%R7DFtWD2pr3cl$-B*MR9{ z1m`y}j33c3>@<8hu7>DmSQ38Wg3gZc@~J)+cOV3!(JW3=vSZjBY_Sh9VD?qSzF1~h z>QzWiMn#gAz}1}utK*rNgFxGzR9W0XbK@?GGR|gli7<-47A6L`)q2?PWOPf(@us->R(n|dLx)1Jr}1d#=BY8 zmkblr3cGl2aXSBU4I@-##2r_rK>-pr2=EcZH`<#5jMotYcNYB8{$Dh4XJwOHHo+z_dZPolRR$(r?By8 zO*lq$p^!K+O-ylNUHhX4q;6CL2C2os*_`}%o+gNx;|>q0>_=F^EBP(6WpZ~^&l%@z z?Ptj_>4m&H%cE*tCM`H9BMwVQxhw6&e63QOzs`v!`i|5qdLE&p2s=xQr&4~|V=i~= zsTvuvsipfeeFMiJ(OU$}DT@b>Q&=>=M$R`bP!OL9N;1|)5?wLlV#&s8)a5!;0_8gVzKX$=YV zW7AC6p-P!EYSIu4u8_$i8cOa$+l~}yaJ7xYe2-0gYiYEsJZVJvFj9vIa)=QenTlQx zBDiUvN=VQGh$X@zlITqE z1X3rmHacQ+z?Mubl(uT#nJUrnfDdROv#8yKhWi%TZTb{`) z8H{Fe)`FTEOj?Xu38?kr)@6sO$uPdh$(eEQItsJ#JjL5{{fL=mY~bl8NkS|-LL4Rp zF20s$z|s+?JS>q3t-upF2XJLCPFq>>5kV`^f=2{DVh|Cqi?M>IKSpH8z@vFqZo^uR zK`Ek*MVZnmMKl{YglUtUxx*69jkAIlZ9leHh#-uHBydKflOZw49EQW+X9$6MmDMvY zp3%hMq#2GPNO>>LJ<$umFKXs6mgC)`INXki%e5##E{+!sOoZizNce){JUqihEe1Ws zWp{F6XJ@-pme{mMO5JWG%*j$r+lDb#GZ&wPPsK>RmWjz`3@LTzl1^SPNOb2&K-)^X9R%8799D){#y33h^JiwD{XD;~BO7!51J zMd6Q=?<6!dN8OgoN(jqp!jj?Lak!P{>1qJ5PLa@9;qzY_LD0iG^^8*s$75VHjG(-X z6I>^WF#?lxy4^$sK5Sn>GENMN(_DB#lAJWoFo;IPYhayl0;$boT`3Dr>K8INIV6EW z_KRa2TpPU-md_Zp0>x=ykK4Z< z?mML*B?Z|+Vp~J*U?x&kfo*#9v)M^+h5r}Nx);Z zlp4_lRkDG?oXjjyO2qnDSV~w5LLdjb?n7#)9N}&;ou`lhYoAfrF1jF85igoCl2A9= z{0Jxe;bi2)H0x^xbfyBRn9j^P+yv{_@l^RJNlz!rkVIw#U@9Vve=9QyM%B>*BqoMk zGKY=z#dEkDcecfhZP9d3FImRylh|1|IG-AX=y{RX%e z=dI+q5BkNJlMm12lAMwbxs#(fBTnko(lF`8)xK8ftx8;s#uj#l_2K2-XxgMv@CF6P znd*cZmxCsJ$fnGfL#+nR1BFsFr}MciIFeDNz^fG)H;%U9>gcfKSMd}^p2_uDSmDeB z^g-FEvm=@=v(su#E)z`Z-?b;5yaI*Qr`t|MT>40~hl9M$k|`jnu*fx96J$J!X9S~E z&4%ugvBbi8sFw`!E7N_mX^^tB7Y7|mNVHu1` z(E6aCjnk++n2Ymqj?l~!0^q{x-k6bXiw6W}?-Xujg@n^h&xSevY-P3EC`!0~JYCx+ zhUk=0hovBNiQOr0;yHOH6{a%a4~T)PRu(EG?_Upbu9igb_ec*CvBW2Nj~gjtti4Kg zFNqLcBrm&jb$f`9E1_f8$xf|`F6EVUJ@v>sO7DXc^2`(ThYK{d0Q-lly--RJ888kU z1+=^c`=K9h?I0CH!offn#=+7w$Esa2E_e;pFv0?oMYVvv+i(h6$_hOu9jVvfc|z;6 z%+;Xcx!f}z?8%jR=Jh!_=HQ%|dZ0aed-bok$j0;6VlIlUaF0MHTid>A zygCAd2QeT)9><(ewGgt1Q?dm;^j|24(9@)zo1_#n zQ1PyPYk$-wi@Ud_eD1WKqeOoyGK4tKc@dVZDXlUAzaWw|R6K_T_(~wmv||qm-8pK; zF_kBr&S?d<%qt{h5y2g@7-W4hy^n;B;UK4VV$jsaYvd zP_O#e5fS}3+D=3e5prV%qZipE;mSos32D37j^L2(eI;f)WLL~&kllMpQtH?HkQF#d z#RFEh)r^P7fcRK!o#`a}&@t3Hej;Mek@~*q{_3gz z{qB)AGv_%SmRNx1$<7o-5aWS0VIl9kC?tYJE39hTY(GHwTzn=MsPGs{mKza9=veNn zZ4#Y?X2Bj02Z%7o44G92wvH7U673!>Jx#Nya(FFIk*UT-3ypU;Si!`~?0qczm;j-L zqh1zKL66Nwdfd4)GAt66dyvxH3<;MJ%j^z9nB+0G((SK+>ZqOGLm5lkH+iNMGaj&L zZ~{SP=tlO5)u;7loF~%CP_->=z@VizXz@uiYbillYs`y6BV=}ZU11ksG&BYGQP~jb z2H4$kOy?n-?GusQm(|xqx@T5tX#kA|*#ygC<} zfYkm0#Ls8MP-!BQC&%YArc$2jv#Fn)>gS-VOXNZ8quoBeNCIT+W zsx!0LHA9tkdvT{Y=9DibQ<3zV1Y@LH3?Ww5Bv5h;lKmRCkzS5KX>%G4fFg>3Z*qE0 zt08?lsH%ztf+YjZ{g7#ql7Z#&RF;;WeRB0DuPI_98U+@VNXoM==Rl zGR!5MBiVSsjMYt{Rg8H{x?MT~~5qG|y5Mj4@r zo>ZV$l<~aP+L&T8BN0m+MVNh%(=?8V3&w1`Oe%fU<5pF z1N6-jt4ZoHHfxqZfhlE8tx$(b@|b97@wCIpLbdDS{8-oteLWMb6JtuZzjhl>2Zc!` zyC>85uy|sw(j{dy@@f+sG?gL=V93y_3K`H>8L2l806+yW0{o$^Y|2q&Mxc)z?DLlZ zaRsMi4kE29Mc`FsdPbHm7|Jcgv{W`#CDZ^H1LO;I<>C3+z1$}45+eJC z38n=6EbizN(IgaiaZFDo97GzhTRv4)5-$oN+;~U=Dh4>WU~E+!mo?if=CUSJBG2M$B2NuC0 z_K*n(qKYACjO#?)%W5L|0lr=qnGm;M6TaYcz)2PPN6PfXx!~+l)2N)9W328JvzopsipA)rO)T5m+Wu1tw(!TNUYH-E=8J5scZNEGh?Z z!zs{JlzF@*;CqB~sB(_RL>jFzrpvPZNZi<7eOI8J2(CjC6ha3VLHAUj16^2R52>zm zdiWDdC^-ZTWLvPp4oRV>CDsm}g!wfB63^*Gx^N{1 z6nSK9z6_0s5YOcJceNVQYguKsukIvJqrjkjBGMLA4Uyr491oqroc;5)nj}DG`+Pl- z)Z01Y)Rk=p!~#XSHt z@}6^BwX6=PVR}X@F2)g#=NPxL#+umBP|HA>!pwfi5cEYtI68rKxftsd_@PEaOw*ca z_0vShL^h-0E!@#cLB7yMn5qdeo%UJKRI0Q1E!L1ABNDrlqv2 zo>21IV%tQ-sjXY`Jt7L2HU@kX&eIycgiYaaXub$1)5RjbTCE^yp|=gx5e&fFa5Zhy z`kdLl4hNw@soRRm{SCcl$?r_4TS;vXJ*!p$4sL@iNvJX@8ibWo8bHl62|edGlQrQm z!Hj3?SBdi}j4du`Go&q^rhNv+8l&w`4S-o=o6Kd;;y@xT*6;&J1qB@pfy~+3#@f_Yn-+Bd zUlDu;=uiWv7A6@@{d%UZi;X#`ZSZrD+ovoA%MQvs*s4~KN4ZDpNyQ-S@L0ifv0bW7#>7r2&APg@!6d`olh+v6Xmsn+< zVXRS?*NhEKAew!oTEF*sw@f^_A4s6$jCKNv_-ltI@;$u&G?|S<`#86_+YmQOpf_d6 ztX^N0%*qaOjMdV{o&w@l0DUNGUhG@pJ{<<1^Mp~2O3jGpj_3CDoA0!C?6wM1MuWa8 z!)qgeylAtV7%9}oFNz1~@&u10 z4ezd^XC7)NkM_yppmn;8j-rfx2I^|@3>^!&MnVt!lZqG;d)&Oz4g7Yz z8?pd|zxOIvy%XgY0$qNxd@bjF!V zCzOI#QVAi!T96#a$6QVGd={oP9eVB===!=t0J*zy5O6nqaAdMkvPkC&X`nOcCC{P7^F1Sn;zhd^KpBpdNYYlVsNvIc z@Kj$c5r}H0b7rzTL!?7pGV{=crEys(vbABOp=lo334D|5Xr*R!EX_F*3dj0^67l1_ z|5%F_J=qJ?Wi;KW3%fW<65I%A6zubTtF)8Ks(H}hwI8#mV}oUhL|<<}P?kfMK&wXc zobhcVK)o!7=v&l<^!B$OpGe1=*UfXr6+<{=BI&70Q{>|D2^7>LZu~I9g+o9-&njRO ze_b6=yHH7;THxsslM3@Unyu~;v=vvnk(j#pIbiN(cB)Ty_ILCKkkOFUx$U%C11(8P zh6n+pnox7)CEad!A|c|#A&cOx%g{Sdmmz9EL%j}y9L_TUZPCRRhl0TpE?|=Is$g5Z zOlwM!`ss-Tf%kV{Y;3rP?F~r7l`5qND-Kx@dq{PqKj|Q*Di=5#GGM1u6X-BGStg4s z8_JtT7;{kPoF~NsNg^^6z`+WvtpgQ^;HLHQZ52rZ@=c7XUl!^(K5>AYRG1mro*{`n zy(c_K)x+_CrX)1F3XYbft)T&Fa3uv&vs4BMg^+p!Y**~egi~HQg1*<+*U2V%hkU9( zz;uO#0BChU_eIBg*yv$mwm)DRT}~Y>#5O~uY&y+D1J;@WBvg-?>kqIRQw5YeN5D{& zr?FH|P4+?FO?m}ohV~_|Ov|0&9i5FMfZA|ncP5t1jnlTGp5DArMbk2~u11bksS;Gx zXpe!)2?1tLVR1Fn)eW*Kz$&gPn58nBl15V(=>U0~sXVPeTj|vI_xT4ul)$C@Cf{HH zawic}cd>$hp46BVca(vC@2xmm2(VHX$52gug;3+rWA*Ea!G7Kt4UJ~QztBz@n4*M3 zY2*B-%jB+=ca`}^430_Q-IT+Mi^nSG=CV%~&t=erGM^a^?jT5x1|G_7aC(-xB8Kri zL+JqlgIdh^O$>ngh5HkL*Vj%tpd_Arq9-pxF&)RcAk!jyq5lPdo_)4`vm?Oqj7MJe z?vXGX!4Xi6Jz);BXP_d-#f?w75v?%Z1Huiz!KW(|dqJwD%<@Fu>bp)Ix=@}aU09pHP!9M3^KF1 z-{Tgmx3d~L!~ir2<5ZbqVUN@=#5#_Nh{g&1!t{7hw~%oHvBD&I4nk!Gj^R9ywTgL3 zPUaWnnr-ci4DYVP9a_WyiLhKllb&UfTr|FxFcF#v@Goy&sCG}$U6OyFWH^(1w2;(_ zGo9_gGCS>17B#hTfS)Wd*X_Z+H5K`Npi-iX43lAKp4&h#hIL^nen~+~=~;J2WwMW) z2y&}9Zx;wHRuLL%lOSK5xX6N(I2P<;q26n4lUOSYE3Kgvm)6z0v6e}V2jl|2+1f9O z1fV_Hg#k}asP+(}`$6HhaoND5zkX`JAxi}nRT;_+lEA#On&D_Szz(Mo^;Q6Qj<~2@ zl^HlnFUg?5yuco`w=Oz-)q7IAOK2IFd>xR`RC4QMM~&{dpq9wr86vVaw( z+9%o!z?mVaF*0WE4OF_lqj^{{AgopFY#Gn!#xo3h7?uIM>m&Klib1y<7A27cdRYV0 zA8|+)JILG+J&boq{*rw4mtBhjzN ziVH4IKm)9Dz?=kV^i`_t&XuQSTNO0^tcmHUG#Q$5kn#Dh)BRRx^nn*(c`S$|nc1qO z^4x5uUR$!;L2$$A*zDxCdDl>06$WQI+?U=PfYq?Esw7CDNi?@)rl(8dzC=F$lTFF0!k(HV=xa96)ZlGRpW^SPr;B0J8R_7lM|$OK~d-e z)pXih8}C5bXaRr^lXEVf8x=2G;Pb!hhI?f)3-ZvN-R1Oebq4)YSi!z`L zE8QKW5t#*Gz`z^9E=3oQ_p;U*`uN;_;E_C_oNrrC$}@pvU*qXAqRx`$H3170pO|nG ziwusFxYIF&%<|r#7@UI!R^X1QNs>y0^MFMUCLI{CP|k3ui{`3KfI}2Cl2KZ;I__0@ zla5#Y{?+C|M?&KkGYp>L^f2&d4hll9>fv7KvbS!>6Y9Y}F;r)97M-Z4sy1y$f}7?6 zmU=`OAIruQe#(;zKu~Httwvhs%I6AYS9t71Jq*ae92^qa9iEY+yLn%oDGI{FdxZoK zQ(*W z0Ae;^$tq6IjVoxh+gTKPn)F8V;CR%iHwklCB`C0U##8E3nF$8~>`IiVjY|$X8nVO^ zjz?wzbiZp~zQ=l6=D;+*jQz%7Y8GN@!VGe}$;k{%WDCQ28r(kuj_VqC0b4Bk zVfZT$11iKJOJfKDU(6pVh3iA6CJ)#KoFi(jb6;GVZ1+rtw_b6}F=@BJ1Viu87 z5jtbgIFM`fywe&J3RS?2 zmn=qOy#&L8@5#~S<)&&p+)gBi+6f`M95MmX7XQ$LwYOIjDA03>8crL5$;@iQ)45C} zPd{|Luqs&1%P9fdLsa9rgoXr(B(89vo(bAE*cC9=-gW})+Cji9sQZ{f#B+NUv*FJE z{ifLM_M9N)~S<7poOCN$;$p*rG zT5GlKAi~nvMS?+aj;UU@vk(#}3^#x{%xbD}o~nTnDZ!zq#MI~mh$HUA4hiv%0*UXP zQx4l@bqOtu`C%|DbQ+|4jo_IYH^86@t62LlB6AAn(yRs`COExQPoINLY|&;d z!m4=?EX^1|$kA*oOjZK<2SOOCk3czGvJBmsY7HF|HGu9Ivh*AlfcC|+{P`5}Mwk;f%w!(nGGt~s}7#qqH8}wjz;fdUWY>iFN zSPiQHH6?j%shg*^mGj!v9<6M3Z}hp|*bYi2VSqxCV6rQ&_ns>5WJLRt1@Z$rX;N6v+gzT{SSf5}k{29&ZFtB-JTN(irHGEXjLl z0D&}+$KWN36Ldw4(Xi3f+2eE=++HnJyAcKjHvm$+D>NFKqs!}#Rc*4SA*~3LRI-cn zY<^&M=-RR;p3f1^v{=vf0i)-Eex!cAd|1s`XFzwX#ilBQFy^@m2@Y2Rtu;Zk4Qj>@ z_u;@?;Err&(|xdK|1?< zX32Bu-jdyF35tT19q6-0LL~+{n(s+msj=}3wHNvT17(1hv6@-6j)w!fNECOIaelZP zym+dR{<&RGZ`wEvRTSi|`Vki9)=J8OP#f!JJ1Q+es@>^uC^q{C>#+fD=N`(YtJ`zZLOa~{k~gn$U(iKy$&fFKVNvsY?B zJ=jz}-rZ3>0_x44N)=Y=MrYMoIw}yXkYSiwW1Rsi5aC|0x6U+7=sfd)_ezN=x*8Z9b`Z|MqTYTQCaRB4 zr1PGf)Ff(BSw3E`aubc_=tXF1jZTLgu3TX-EyoC$v8iRmg8hvYV=|Q{9IvuHRphJe zXyo|B?Ryg-z+4HWKk6C*CT>18vOilG?*@!qzJK{;~}W63L#ef|;+;9%NJxnj83kyJXK0!mA0Dchfv% zg?Jb^p;;-oLcCb$v}V_CH=AqC%xvGe3F#on+wLjlA_2M-vA^}5()S8V96yA2Q*nG<29Yo~u zdSIpcq8h6?CCS(>@esH->9rVE1%n141+ka{!`Du)MGpi}F1L#+l|zwkr#D$frm}gLtyN^D6~ghpTor+dv5tl+vBk+(>2;CaLc$lm?~CmsoUzy z(68dO)^ZIDb%BySJKh_kgAd0M$8a7J1deC-F6fI+PB7x(0L&{O0tw^|UR46zJ~!Ki z%sFMX4uC|eI&-|THV%(A31`wqg?=q~DJ z;n|UdCs9SM-V0pj;Y}1l1n}?4wnmEd+6_e%Wwt+RiGP zHPwNXjw=w2+G!Apy~y;3x#Qgstw6k`jv_qVXKlm18FK3JfD*1>O%6>3S9KQj*burW z03B*K1H-F4AL+&u8X`-wbsR2@j78^D@PG(BEFlo1J*)_%LwC&WZYYD{2WT-tM@mvW zX0auGukM{prlh+l9z1(3)_KU3YXkUfhF@zmz!XkMDJ4pGUc98-P%=zKj$s0d7HsDm&J+P{MY^#ylK zit(zpAOZ?Mo0JD>sL0Y-evUcX6Adl$*8xscuk(V|ioi&@0qI{0F5fm-Mw}v8n=-ej zADjT1&Q#_*UMLc6A&Umm7~khtX?q;6ZiIP`)Vb>Qv)3@mNzMZVvwNz{3~i4X1QutY zIvlF-@0DO+DAE>8_Tj^Mz*pz<&|k3rQAk&La2W8&NF7rLJZG$o+I7sHp_gYmqwou* zY8j>k)!BJ%u+9`=RS9*!8#E8ifD{AKnex^xj)p)23x{x^a34ugozTEw6-O(b+!VBg zFfvAiz)d*->P@PL`Ar?s-O$nmG%ANoCTgb2u<1ZstbejE_1uUY@^^J}+b7Tn>1jCK z!GeAfmDsK^FfkqEA_t%xX-4((;MyrfZ3{d?z@sQWiw%Qqg(qH~OJNq6uMVVY1K(th z0B25yp?^*1dp?AtCyg*wZ<_>qGnCvxR5z4U#w0?8;c0>>%hVx6($R@zN%kHLM3q?B z39L(C5hrILpggpt8~wHM02CD9KdYsP5{k7(iaL(PO#C7Fscw9 z>?6IW!a+9DrBBs9hl5Tk77<;b=>0j5%!VWFhceWN z)-Xl(yxU=7>qic&S#&rZG6a~tx&s?tjrlFm=+*_3f#`5$2F#BSI*wMB@=O~OVo60h ztgr)xp2l?}F4=y7oGQ~YDr0mN-#L-tbe=}2ZEl`Pv6>c55=Ia!Gn(c_(bky{`u#}+ zhU0!f?XNG7^Vlhkm)vz6XM>|XczF^YccbCqs8q)fPqj2QjJU95*}HZNJTs6~df?$W z4OA%<$WM3@p$wj;vO*a()M2=fIIdaU*lGK{mH86*h&%fpw^30unS~Qc&=+x zj=b_TGFj!KTk~ls^~t_-EpB5_;>PodX!m{zU;*$7&AO1<;H2IF2JFRM?3;^o zae@1toEL49HkSBjW`57}eLmmsgO+0Mgm4cpX-H0Vh)@%%g^uZ3pgJU%mcN*v^k!8z z^d>!(Ka8|3H88c0!{c6HIsU-p1fZnqYMp3kU_J0g9k=diJ!b8C;?N=n4E0=Pm%Nvn zaez#6)s|4pERLhxz!4s9HX?B)G>FP?BQ#9qijpTy^LSK#!1XpQOuY3O?(*SBh)6-U6LJ4 zf@>_2HKG)<+zb0%J0u2EGd8G}U&cC+w=ozwNy2W24zy?rQJ7`mxP_rJ*}M68-@&ME z3+QPZ=EMmX7S=#rvPp2k_O+VrDEJy>eioF(QOp>2(Gd zWiti_>8essburD0T;c}CcZ0K!=Y>PdDGZEUSDOhpJ9(B^H`%N%$LzhyDBn2=pmGJ1 zUz#U`2`UaXkJKNyQ6HYu8{B3v?MyNp$7gn5o)i=;BwHsx)DeRONFlBnq zDk;izE#b|U*H6_gfRw~ll}sk`?FGL3p9n)SmFt<*Gg>>VvW%Xqujctz0Tb96~@|;_gP{+seY{M8<3(7U1Is> zWwf>Eg+PMz#eFm5Msf#Tt10k`^OtGm&P7AYzTCf}C9`^mQPv+U*QJP5G{2QDBS*ZLG^V+%o>z6&B$GG~FDM!#^g~Sk2Fz2VM z@S?zYm3-vO4pu4--r8Y=FXpK(PNsHRtfNVh0?H0qe*Wz58lh>5r6wo|W9BxzaB`fk zb^$NN7{HHtN+mtU_)Q^m32zFXqu;PDpjG(lqo$#0_AE8^bl;iKhDgwNiKy(@8-%da zaR?wQo<3fag#uyq`kN5t1po#^C%HBNL;v!*f{b|%IU2^O@JWG7op|v@7^k8<-f33> z(Q1UMF%ZmotAzPkA0@z6$&UVf2{8ZQtQ|@R0|O6+r=3i?jIqlFV4ls0F=ZIq`7VsL zMNWF#(M*is@)m$0Z$9|`Q6`7ARpuydNjYoatbaHlzrAoCa)LD% zusA7oViUL7=f7m|2}i-JJ{qU%&BZX&odP;u9M#q=Wq!!PNOu6$S=`V^9kX71?_z+p zbyoNm$A=T{k6{$>3{B8+#fqna3={4c6qOD~Fd)5YKQq_G;~WD+v^tq5Ans;C_uJ-( z5qVU!GIj^$M3c@MyXpI3(h1WpN&*a5$SevuDO1QhDLAckO(+5x2pN(g$;{(<2xtRm zU3r%K{X&!v_)Ii0FT-CR#^3?ZnU8J&6^?Kb+fM(i1}Z=T7BkYKqJymzu&AR@=3c`E z`0dF)bXpIHKf4jIxPOf*CRrIINDlTXRSN)#fiWV7(ixaR>#y!YDu&Wc$-yoO|3zUWAt<$OTst`Ec)PEY*3 zMVHjK)tc+Hz^Tk~o{lk!pvic84&I{g6xr&_DOavPOVkz@#*?8a5Rz61 zY?^u^OS(su$&qCgX?v@tMjs=pL;VCgtu9yRLtXk%SLf#5DHV$^&5Ma=QDK)Tls_bX zMGgl)_!eTP+X%Suz76~0t4YjR_R>GezkWKeOi-2n`O}p%#yb-eU)#DM@C+vZd>dkh z?dJ9>T}7$N)5f#dYrVGYL-_AP)abE6PfjG}-b>z1S!;{GBHGf=b=1(w963Lbxe%g= z9q-D^+v5o|wpEgDrtuq9e1BI*}b3w9dK3gXc?uDypk4S2pdo?u>@ud`U|t=!=gs)ULjR zerC=~*i*0lt| zRa#2v6lPU&Lj8o<0wMwY9aSkT!_`%px|_mHF-LfkcSDNtata;!c$aqba*G4oFvlD; zV7Bk6hxJqkCwpZVkB)}HhC)>5sebPp+uVp4J4WGha@Gwvbhl;kw;-X=+|l{&z7UhN zm&sG&VRaR={~pvRAu8KaT=&p~Rr~EvoC&BQP>2#H0+i*8r2g!SWqGm#-_GhH#+xRd zRvk6etG-rdN|Cl7q8{ur?q%TX>e(Yvk_ea5Y%@7wf4c8j-wiKpzhRUg?-!?;yH)Wk z)o<-JUV?EMHSt%W!$Dml?v^t05eEkM7k>{a4evqP_O76JO@m17VZ4~u@y{-zK*BI3 zFgaJ~4wcry%~*g(j1KoO&?{Rhh+@?qzPTQ6FAijO2k%XGly-=BTRVm{d14liw{lOg zN?M_g!Lm+_h9#~+2;+}JF3>ZtYHNwkeb(1p(^l2MD`Q#! z?!v$;c`<+ZmT!~sqi_*5XX2o`^{ZF={5kKMrR)8;miEq0$eQP8%8&hU5uo<>m8U+u z_~R;s-NSW)hUl9u*66)L^t|wlVA=7R3=EsrDMt0#^1-2T9~I4*hk$c&{O#G9xF21o z@X2TAw=&T9^j*PY|IqitPiH;#$tc>WF?#%jfVs_=`|{YB4!Opbr5PR+?011iO@HxQ z2Ez;P!93zH#M*=TpE8?M7cgeudtEP?E>k`mJ{=_)>05!^N;e|#M)1}eq*SXLDm^1u zB?d_8Pak14VA|Ja&(Fe^O~OP3y~8^<>VxALXJeV^OnczYE+(WYAFD}mey8&Z3 z>W<_>n5;R#5!hYU<^3xT1(lNFQ6~QCZgi)t8y8nV5f+$3r2%L!>o5YH~nB*H$ z+kkkHIP4S1A0LTh&fl;E2s$de>!j|i`~9YArk}jy`||d3U~4vb=sl zVSde!jjgrE&dplL1q%-M9!)bCL3pDa1E>opHxPK##e>#gvniChwr=39)Q*?JU20pk zWs@VG!tXpcuPZ|Kg5VzY*&CY#T;OVE$)lLS^(cIq;Et)n6=N-8=o>cp1>au4*%^Ia z;7YG6LRW%;3V(at5W|=bdpsCV=ojuYs@45d{k-ay>pqm9|MaJ@!V}TV!*+yYz%sU# z_BuhX5MDNfnF<7Nk;q+;jUFm6pvjZ)To)XOvbc(=Jzf^&L@)^#Vj%L%w9LLrFv1)v z3&;43q4iKwLR^+6yTWv$zyf*5W|ydNq6_#quHZNSG1z}c$6!V}rt&WeI=S@V@fzlE zIEznRZCcdMfDF4sRG7{E;HW&sz&wiQjry^qkVY**m>xIMl(f(r;f#Cdud{Mnq48a; z5c;SP&9=Z5ISmx?8Re`ZNQ_kPqfq@^SeHYXsJkF=QPKPCQtU6L<)(vFf)#Wq0v`RwM$;n(K-O{7lz1hvgQAhkLyo3It6mtK^I|Hh<2(X)*Xt-*`Q=BV#AKJj zz}d1W2=IWIf8>L;4<1?D)?k?pHTkzFjX~}Nr$}p0_jFa-qH+Bv&fylx%$xATSGRdS zX%DZ~?h{=Km36EjZDw>~+yFZGVqYX#&WA@bCbh7SddUU~s$pj}?WtEUu+U)g=tGO* zteaV(UDl`%q-n?zN{Crf$o|ig#m~024VOEnlu*642&UKe=a@Ho>p0X-0I4Wd)4dom zkTFc=83VR9R@=A5!HR4G|hRrS>MML&t-w^ME5z6wpw!5$ki_?dCi zoOk1hRpiu;HJ^41_b)k&%wxLK$EXq~SPx+{*j?4qs{7eK8;LJaAtGck@kYQFuB>Q} zY{FV!s4cIKCgvu%h6PVY2ORCN_mZUu9JLRtpd~?SLwunMy9c*%b`s=3E0XC!r`1W! z+}a*RYab%OSH7-1kM(Y{jnezv;=%y>(*ewh(%z%Kdimii2Msu6#m;jlbq_%dahE4K zQk+sOc)zEuHQbKM;vIz5wBBBDvwOQe$?e^#?H(A9ztIY!4#2Zhtc4&2 z7kjFCI>bZZx^*3LnGLq8&K)0~UHZ*OOT?^r3500^k4<+O)lh)RsCa}ch{}Oe zIg+;TksZrK5aSnpgSXdV^V!I-jgW6>)HpPu7I&xJKt@cDkvt!$t|sptL1J*LPTN5v zG2>}PT+vCjE0O!%eDzo( zj;hfvE`ejPJ^7P-k78^Pz&uO5y_)7*ka!Pqi+iIwaD~i%5t=J4S@AZ!zmLGjfW-vq(hh)0v4fFYY83WT%V zOW85H!pSoz85Ipw~}-2C~Cy|kOx ziqm1_NcGQlEJqO{<;^F%65^$(m~Uaykl>3imu?>O0%|}}B){H+vQoLgX94X%x;Njy zdy_?}vYMRxm?gg4AJtQS$x@3bfU^;8qu+bQKh%RFEluDpm0vx$#^5POjiCHNUKacO z_GPCG7NI)v5{~Dt75=X7%uw#Bu<}FTOlea^(8^yRZ6RBG|3S=qs>_i7X-|N&W|=FU zdbMf9dBU$gdbMBOnO07rD)mr0XPpt$Ddx{p3b_u~paVG#QyLs15(XtOSg0Kc<=LCp zR~`h~@5VZ;u&L?x0j^`v>uZyIdW_ht94?O@66V4>zbk2zqUnTF8_|L zs~!PG3iA`6-1#_MJ-^is_3eEMEQr);FoPs4-Hy~Fjhda|B5~&|EJ!+p(p8u~q5ujS zn-Xh;n;*h9VxYnjyRYFVQC*PDY)4k`7f0{wX*pygpW9EWbH4yWbfKL(?{u^&v5OLM z!6Z9Ofl1v;(X^#21SD^*~0M5So46s2`fo|@Rnlij&juF|4;2oO(>xH zWaR6>&+_w+bfN6~r|aX>G7wE~GEEMv0eR`7 z4IVnA0?m!cuGlg$?%Y&Q^+PV`Tzl}DNMCeYlkOv!HEhl8HP5pctTTAb0r!Lie^e@2 zI-h=~Yo^I^DBZEZl7t6VOjEPSe+WI*?Uv|p5#n|5%ryJNX?T7+)-0KARPwU?pzzgS@~GOJ{l zlo@Juk>L??#$W_DjG?54x-Sl?!jgZn-&2PY4a*gAY9cr};-uVN!%(kKkA^a;S{qhOEkpHI17*ipsg#hDTY{6J3~*;Hy7KMT*^Y6}4SAI)c`y_#LZ%z751MQ}4OV^FNq z6A5*qp4|T1foLd_F|(bzhR^f|ds&Khfy2bK9%raXf~}aTS6O6;l=WUQrl9E^?iIR$ zOY-vSq&a6`fI~C@qu&Hk7KCs1B9rtYLs6+WLhR;a8Yke~l+#+T$>0MEBfg}a_#eA&{O7aLs)7MhD-)_l?<=D;{Tb3VsIO#PLsy>V5 z50~)*tFHr~JkTvjbUTS=!UC4`#ZrwwL}T=1pUeR(zJ#gV&clpjKn~%9hMrU8CwV7Cm0Od>_{3}HzmlRhwxXOavX8sWJ!buDwZ(BGbGVrSa}Z* zr}=FhgYeph)&mSGMYN3O1-fvj0Ad5+_2-Y_zj^(1l;}&i13uh#NzD4_e+-^X{s`$a z;?(IeCU|f$k?Y=@){3KX_)}Or5>b;FKuDn!QX@Tc8u+uohoYUeMtf$P+e25MJHr6GW=>c^gacMC7;dY;+o$B=MwVuR~ zI9L_rqoC)|8m1c|;igaZLZ2bmU5*RZl$@73_X(FGb@+yZqZzHwK1V&mTjHyFVYHGc|>(Wt>&-T2;q* z3VyDzuQyMp&WR_Y4?Zg}B<>%p@*P`%fn3B-(fBmpg>iP7Aw4)>61=kw=d+=xGhuvS zQ34s5lQ3lXWE9Kb9fet>BRKdlvBChCL`V2uy$vx54e0F5ur;rRk2hma@l9G*q(Q@sUqWd=iezj&DHwMp$n zju|^%91pKOUL*3Dc}ixaQq3aR|My=HCXq+O8HeB4+YuFii-j5a$YM92!OOTeRR5 z#y!Eo?4ci+ z0RZ{{-%X&g!SwL_$5Y!|7{?%u&;rPmT6@l%f5%lXxmPA6!sLON%6z-MP} zUUyKKYci*9Y|HrQiMfsuV7wi(otSl>5)uDb9Tdj4y%19oRPqLXCuHVrwBk9fXB`14 zrF8;vJf~o;gIw`WDUEo^(bJtxX&C0XYdq?iFmfxA^;vnbkIbdw>&~Od;onZ*kR3_{cFX|6Nu8(y*zfG-odX1ksuG421uW|aK@9qQCck7c~e11c~e2D{A34aITIiL)ms*v_-9(GfiD$LuF@;T^%8&Od2 z#7;yrtyj7Ui(R(dBqXr=A&UyiMW5Qf@GkrrxNtgsE5Jb_%|Ynv%LM!b0VUa)(Nu>6W?Nu8vQ)g!E&^Yn zU@@sXFz`~WgB;JL&^ zveah~^9$kRX+T-AZSOODLM=zV+5?;}&0v@?!y!jWPhUC4OrV8eE_hbvCa4$q1KMuh z0Vs%{buFM=q_em6#lc^%YUhJEC1=&csD=-~+oS=FbE6hWnP`VH1n`Os zY-_pS#WDvMuO(0fSYCW#!Bv9i$VdM#wB1}95550AdEpu#qRH;6PvT-dCM+xi8N%d1 z66$X%8&;~8uwQHHA=f>$a2-T|B;E9vx3%Cy6fZ;@+5>NGhF3tOR4|D|NJJemy$SPr z{fCp5-0N%KpF^0=1h9rvBGvACW)=38ZdkR6t4%zjsy)q+OY7Fw%n<8$ zw&yVcz*8_wAVI3$(C$2ffV9F85RF@wk>2xp(H@E*G6b{FeyUPz?n_(<@^1s247kTo zV(vUfd!#b%#y_Pt_23&eHQRFS^dl%Xx_G>fp`q$%fk2iYizpOl6Wanl>MVG=bX6A*=oFXr#WI({70@yo05$W4w+`-bw+@KhjX zpzOri8{0an4ZPGh47M?hY~H`RTaM+>K>0*W9$TP0tx=4%dmz>CvQNSWFds~j$}oO^ zz4y2fN70-7*BhNz{OB&V7xdx#Q%WhtL^JR_mDVAEwU>L4oXJg|hz<|3n5(0^PUl#Q zeRxo>T)<~>eMoFA;9jhmB8GG zHJC%Y49_2eX(uJ-pT$OIew6YGVnB%Ux|2h@@0SrW8u{@N?cfxi#f*h^kp}%{6CIYU zG#n%|4hkWz*gjJiJ-E*7AV`*`K%+aj&<9c2S`HSq+7jS`_M5_}Atq@A0rpLv@E|wP zNX`)x!FB56smr~&lW_))TgVk!;Kx-@8F7_Pfq-|27qj#*xD>HMyVUd6%6TW8t|ug6 z&M%{jBAk$6vr^FI+>=5PpXe0CvBZQz?R<*qwh;3n62W!^&j>;cQE!xerfP#SWA43j zjrTh(n$sb?l|>MZI5#)OnEE&!!OL3m!I_HKHabH@|LU#=6A6e}!}Lm#;3?i7&;vMf zHkmo`&%SP*pdCo}0)Kd_a8j^N(e+{3bTX6!VOk;#ne)g5WDZfd{|6&ArpRHM*TrTm ziP{G~qDsFAJ8c^OnQFQ&p|}v(21Be)N&*q(?t_S;rZfb;H?P^U;vCI+v?(8vhXE&x zywE6>^(1SG66DJS3)liUJW??F9N;>*RF@E?CgRL_Orm_6PQyn`2%>rp&L~`}VswQy zM&W4@bthAh3DYnm@}k6XkmKB}LcLRxd5Nq0JQBVUsl5(CHV&r={24+Nb|m;m%civy z4xF6i^6FZ_i{O-cM%o)C6kcL&(cl)n=)>5DHN-JUn+1t?j$AWWp6ahAQtEiylYY0 zEo0OugW34@5<@thqk7W3Wm->`3$qw8bIcmO+7L0JViic zdj9zF?c*@M7QDY`9oM=mPvl{lT1E4Vk22$xIo|``BWCq7EH_F928jt*PCW-|1CPQL zwhiq@q6+<_gT$QEL(D-z7j?;yk?jbG^+Z^+Z~8b^z@2VSRGJyQ4owG~agl;ZjgB?N?)4y}A8jWZY#5kT8qrDaK*B4USVb|JbiY%Q zHf!U(wo{$PpMD=zp3p~2H@@7@TpZ|WJc)HMY=HNq1?+m#&h*Al>uCWtv05pV>Ayst znka8r`5z3nl<^&ei|~PKQ2v4W?e1PcE&JscA;>5IFSM8H@*l3>{loR^l$d#3SbBW1 zp6RX*6>Gy7+70zfZ?C5?g2h{}UI3ee)_37m&&)bv75s>>fRR=x^d!#m2PNB464hv5 z9r}I}JmO$?wdE2Dy(1*X@(63lIfzAy3r$W8L$iCWH%aYnOhz*s{71~};WA6*Hu~Vt zJyAiCgrt>BrFXXLeR$&fkE*+aq`7DTkrGU$mC@7R&Z{t?yo5+t7ty)KOGe8Ax~hiK zR}_+WdEwq9OIR*F)ad<-_^$mGwTpMx5P!x&ZQ%bC3COD6P*;{wI@%b|1oumum27W3si-u z3)x% zcCw5H_fEjTV5VK_`+c(c%+|^1;nQrjk|uJy8>zX2Y75o>h%>Xn2o-Y>ap!Tt*Fa26 z6+)01?}7hX-0rt#{ur-UhgQ|!K*xbm)~K};fI)kdrx%-x(16SV%z-7_lj&}x5QIY7 z+f{NV(dk1)hqEi^k%%S+f)i(rG_e+usksqKRbjeDwUd}r5iIcrr>CX{B#f2of%)g6Q|CSEobCvBVDs z`;Qv$GqvZw{-M!+nh`XZqMS%?z)9qvd6y0|YtNTp>76K#n&P5_=9d)+;hmC`u{yt8 zpB~rjIGeLD^U~5CF}nCh6PVl%ut6DfCNLZ>q-7vNc!c`%A5R;##kI<`&x6r#bwVSV zygbf^P@Xu93h=gO48GfOx6i>RX+C*AKZIvCmA`%&`Tz(wgk?+IIzq((F-0v_1V&>f zQSC>d-74-h9t9c3l3o-#cG>5&Lq3G1I30g<>H1ddE8@g7B-tGWKG!cT>_(^nZdJa||Szdaag#2TZ)?R2<~-xp>6 z#~*(<1u+HA8Y#OWX&T28d&rksZS@&)-GYoX5t;VLuoNzl(dncV1f|On5gZGcM}x}h`e`MWL>dAj7)Vjgdxg0Bbg(thTKPK7Z9$Qn8DYt zG!e^%9Sjp>hAitu_8sNzh3^6&A<-PS#Mu6=)EF)ExzzmUqUi!E+lI25}h#S2YPx`lZH=z zc{}U~HC!}2KUz`dN3LL0%%I2TGVfgWLPH{g%HF5UCd}#ydA0z0UL=l8E))Y0u7Ojx zix++oHFj$($F&FO=GzNM?#_@=_+NyR*$XbKPLMXzfx;U{65R;)G1);JyRiSLh(G=C z9MXM|^tJ)hbRq{(qJJg%8`hxz0c2s4Sw_mgMv4M1HB}Sqdti|@7Flz~nuxTMUJSGj ztX#cO)nrS6k8VC*qxXg$5KoycILe2~7vVZ1WF3@rM}K%96Y6mU*IMUrw<6>@7(tcV zkTknxdHoZX6?RT$dne%X#^@+ZL2U=pzF7NwetdQgNJrhJ!d=&LVGYSDq+E>Jf!%98 z5iYaq$PD$;$p6b;*#lVYI)oF?4Hp=Y0(~G|OQ9`pPtL%Y;NWhZZpI`KGFeicgEMLr zEa*M-_?oy@Lb-!bb!G<`K)d=-aUC|4*%$j*bOYeevAR4M#W6?^;AvGze*yz&Zd}9k z-D|DvK1BcQjOV4V>SBW z{wQE2%#PvNw9fvdgrfz3A1YZlGPJLS6kwYjTOb9{Inc)q7sqC}V1#HtepTIqjH9Vzqv@m$U$IumQ#+(R5lu-D zhmi_dEWRGzk0H$Mo$c(>&F`CgCyo@DY7O{3M#P;SWa6bzquAjTGLNX7dICb7jGQu5 zBy8ybyFG9jHvaUVh%%f%J!rLY^VIl`Kq6{;hZIK84^jVqeh~E-en&dHnnvo(9Qgl` z4(zicQ2Zm za`6O_LoJVDtcIZu{*&k|{z|!ZxkW?_GdZSG>_4X?HVtcBJ~(x#)Q2BJcR5CS1WpJ) zT61iOfV|+MBWU<5|NJK;s$xaM57&tBGP8VtzSou)`3K;|TqGR-5{Jf!b)Y4?CgjS@ ztUUbyGxE&K$B$#3ROiQ^=6zWWot#WXpDqP59xdtB0}-?&ai7FQuf<^oSm8(?oF{qp z#sV-*gUHL!I?VAuA|3pdq2ET)efg&}Px3p0B=bw`eSPQ(+RO7($j;OWga|;aU?ZDM zH_WMsTp)m6^H$PBn7ju8fa~Jyj(i{K_t^K~*Z4nxCAL~+g+g~Lfqz09iN+f{ z8(y)32t?QBb8hNM)Po4%Rvch3Bt8lV;y!cu>HP62*dd4|CWg1er;Y}zppdOz;;J8{Yj81X_51Br}IR4?zF zcp{B%)=@`<1@hyPh;6o7ktZS2OY4vztvbyI@$WeAETMt+Br&cM@(6Q4QJA7h>A#qGJaooO8!-dPVi*pC0UsDpk_t9iQG>E z9N^-|ieX38h3rFGW}K12*dc*E9v&5LvSkn96j-*OfVL8ct~h3DA8MEReZi-9O~8w& zO`6FWNxT>&cRCz0GB?5uzS*#{S3v=1R@7xoKdxGFmxUxhnGprmLyv#Qfr;lPQD(Y_ z<*=YB|&*I?JDT(O_>FMH5fQ7yA3ws!Nw8^ zz7feNBlFz}Iq=bXd1I4xT}>3U zg>l}x?vW)dJi+u|#`mbxd#Tc=|FOgSD_5YAjcdCey{segIPCh%9mq6aoSa@OCGvzd zDt)s0WXXqbmBQ+esD$fr8Q1ArK=CAzS)y=^)wk6qkiBEoJ%`BKQ^I@}qde!z6g@po z#4$hA6nmKF1!0Q0IlO^ToalX^Kn#yJ$u1G(W&m?MS$PBM}>oybAV0+EL3JaqJYcyBxfA_$ioPV>vmXa>Id^raH74v zfbQ&1L9AHV8y#+0@~^`YoICkLWGl{2$Vk(Z2hX6*gctDbKC@8q{1(btv3Zf1F z6jG$>n#?*%_rprbRioS@^0y*fyG<~M)n&bf zc_mWi-YLC|uM|gt-zY|~bzjH)2|m(-HiU9EV|Z8r&_?Zjok*_^o@(PT|J8 zn6u$R1yLTtyDc&0*vG_CU;7&D;g%OmmECC?AzY)!u4j*#t+W@BciD%Cp6LQfiG+Z~ zW80-(A)n4}SfY;A!3$g|!jq0$UxzuY0Rn5>deiq?A@HFY$ie)3jH}in_zuPF%uiV( zU0d#nFN`DAz|4`X+P~E~DjIcrN%4MbqWLEGp zE}Bg9`ibPc2wazrWe zbqR4a+PzouWe97bc|Qu71Y$+-1OF+QXBR0$eb3Y4RRQs**%m7&Mq$%79~43$gu!&z z036Wa%RQyA)^ZWK^rXqicW99q=%c(7POrXD`CVDG)>Q~Q4u1MfbjyLff^Vq=pz z$Y9qR6Vt9Q_yCk&^9{9n5M}T$ss%p(Mh4n?Suc7hKjNh{7&_yCH$VBmO3ITpN=i=T z0gQn+2QAoYNXy@MSN=KJpZOzK8T#jKwd9{|UBB|>AHm>+nuBMfQ~(;wVd%9LX8sQAqWPQ4KN$4Z+o8CRn0u{v1@W8d<%_6#)IxuSh*lrM zTGN;;a|qV|eX_8Mp#ws;emFRx^&~J5Iuk!O0e>Q!MxXon?*l~4Z zA^d;ebKW{0mP;CJgcI3M^|#x_!2Se$QN*D zA;!~p)p`CoXWW3XF=46h0&RfNYGjl`6xQ3b6XO^!E{uO&vO}nt!t)fC z66hO11>CbDA|1Q0J^5}TS3}AIFJPZ7A!GUlbtHKhdhn~Z#Z6)xEs#ejsh*jLAI`M| zpoxoE7XWl6kpquOT=QT%LtMe;2E5(VaG()Y5|J7V4963GopdL$!M0qhl2?&d3EKmS zjuh5)v`Wi52sjg1=q`h-SwZN5e+@p?z&Eyuad$87E*?YI{NXo2A)uG;Gh}r%(dqZJ zY~~!M|=ZV6o5w3G!Z9)p$W8W#p@UOxk6Xlxb6%rd~X=0ZpzYYER2r1?fn+o)DHVfZNH;Tt=Yp zW2b`A{lCQkSA^ojy-dD*yDJM2E)5ww<=>n4|NSH~4UzWbfQw?m3)%Mlr9X1O_rl3z zfb~{I_+O>lmThm&W9DERwW+G>W zud&*DU=GS*2WeeI0zt!q0f4##XU1KOW?0AO4@!J((LZ}Pl^2i1_L^@}6_MPGg>Lgh zjNybc&nFa6a|cL%!@ zJGifmmtXKZd8rI^{zBj0KMc(;c+71tX*cP6VB6|xXZkUD2T?1n=~KrxYbAYx=&;p% zy31tw@nm8GjW$*Wg#g`Qm57uru9`<6tS)A2ab<$V`V@k^e-YCfAElfn_Rets82sA- zL=GYYl*!*chwmC5BeW7&eHQ!Z(LF05q>moiBk_-}TR&Sz`I~m@qgYc^8z_R_IIv7L zVSPmWN9N_egI9ol!N8w>5MDTq{uWLZYW_6ghE|!JE8qojmMM&9F#mxCj<7dUqv3XW z5DtcS^6#7mp5*yx^I#>3YEA~)g2&1w%xtM@E+rVCFw&;z?}@dCfq8EfB%DQE>#$vOi4LLBlZdW{IaBnbIjHQ? z5f|13jk~P~Q^6A5E&;!*y>31PgzU?uAC#u+%MdUCz+_+RSR_VTp$yq+zw$|#2pRX@X9{#;j;N&=GG4x5pk}}q-Uu!2lVeR7$wIhb zF%0WiW&_eO)(1#&8LH8()6#fXJbc|JrPML4_^?{Rg{DAXSuEwgd^JVC}@$ut^kq64&KDCpV2*%Jo4m_wWbqsj5Dsl^9QAZw9r@#CKmAUHsA-5vltj4J__U-&3~da@B}%35NY0Gx#w%2 zd*sw3TQpAb8fs{aZ+18OZ3%DGGvt+RbJ&qKH50l zg!Lo?rKr6hJGphH-_BvyPc(v1u4Z-g|A;=vIysgy!`cJuPI~eC$db($J=l}nco!pk z)s78=^0#1Ww!em~^!|JjY!%`ZWXz?fHMC1e$+1|cw!QEZzDI!}-JHUf03bGt+gA*N zTqi&iynA~*uF(yAt|Gnz0k^R=;Cr^8N5dbTJhzf|0QQo>8R%FhtbWJVq2S{1Z&0+n z&X>P%bi?$E4;aK_$0HWHpBLh^AXM;U8xC-hh7$PkA~R;zBP0SZup%iT3yvmRZ$}VL z2yYK+6Kal^dEvbt0J6}PUBvPuEHaXK@~hZY#g{hW0hH5dw-|J17|V#c3+z@K*&{hD zoc|4MHdV1q5YdFUdomwDtS!LBe5K!7!s10t1Z83CQ_Sq?^|V#ZV->N4eOCTESoevz zapcR=4a+QC)S{K>7&Ua^SOKE*$as;EBun!evgJEGEYiSu0KiNFH4l^ifJF>Cly*A> zrQ@AEIBkdoi9g+wrzxE|AcCopaUz6>K{6}ig5S4d<0GLVZU-(xH?#@t=SHc*G5r>S z=(MrXX)<3qS?+=MHHvVjpURE~K5C4&COgPgL*G3t^K@U3mu!{kW|if$wO39iD=1rq z9EjD)pYkyL!lnaC++Y4?8>y%X=j;fsTYe}nYDB%%x3YBm-6X_H1lx_zD9F1~?oTaP z#%y!HVM{DVkuG`wdmPUr^{yFP_8}P&r8W(YmPHxZ%xI&K$%--t_Ex}2Qg)~(o^f1L z>b40A1T;K*(jw)uR$lI(vYH`-FHQqcBZ(M#uaCh!M zw&P(ADWtk#c`pep^wQlMI06*Kc4NDT32r>u@8_;xk5|7)sG@!F4bN`{@#sw-GCVPd z4p6^d;#M9b+?TmQO`@b{`7Ts^4V0^}q%O0VSIl&Rw_85O`^EOYzg*^U;+1TUG^W7S;3|YJ|2W zKs2z~_vJo`p$t+dXmcsyzsIT@Z<>j($V*RmnVI!@wSf5XVFzMEAS8Tnxq0(_g~>@?wU^ zBm^s=R`i$q-IH!moGO3|_0U42{xA+de54_OAC4We16ZdP`ueDl#!w=Nc@&YU5%pIp z>8_{yMe0O>1OSWWzsp!)*JD9q?Zt~ z>5m>29%4FSt{AX*N0s|17CVVC8go1VnF;#Cm>2nC*k;wiYQYrI%VGU0Sm`Wb#?kO* zzKpp=uoMZFkOJFTR%T>;DX2I?Pg$(UnMJh$0v|bR#PhXe>(E4Ckb#C)zB%BzX9=|H zC3GAc)wH$H!vOp(_EH)zey7z9@_~Bo4JGvLFC$KMt<&`_OOuuF-1; zu$4nEmZ7%35l22EFBbj#V4L}o6MGx)r0%=NH&9Dz*Zb#-1Z7>tr zu$k2D4@@V|i+O#NQ?lt_FX@W+wcf>Jq!>i-?8CoKQp_w?zhYcRXD~uj_AV@5mU({2 zTV@APCalz|ocr7ZNE>?LB-T@z@flnQQ4$nBAE6bhBwSG08&wJ>NLhfNWWkWF_N@}O1WMQgtWb1Q6yk!9*H#t{*9#_{$*fK!5) zX(4ybH6cjtSMCrPnVnfNZK7EawPqUKlFnL4>?DRtUS9`H%7!>Ryl=v1icwoZ9BIAp z6I8Dqi{drJREmEFR*$hUAlPL59QZ+}&UjGK86Gy0R^GKJv_?L*1XZNz$e+@u$C4~vZY?wi-nLHa>X+8!^d*Y{$s2wO>WDbGEb}%we zVf4{K&sao4BQWS{-tr-?d4IKrY5_S%!d$-cH*14i%*l%Q6a0LiF{sioSc@3+KUhM9 zgJdc=BFU2!ie+Mb&9wYlmmkwnQ2EROb`qz$BL+=}>Ty?2r!$obb z!m5NJ)$jguxZM}2M<5f#U@pXlP)e^GuvM3PY~A%qw8bJkI@Y6gO?P;bZj$mhkw92C z&X@J@kCwqT2iNrn^ET*D*g?!Qc;I45uS^{nHOJl?HiXEkWr-uWL{1|h2}Tn%QOC3; ztDULtdS$p+5Y&~Dnu}FhJ@;&X6pOVa2Jvi&m}@ikCtrlEJL#*wnT6BKk6v6faD*1h zf85sX4QvDCwcYd=^CbyV27PM*v5OOk+Ky)m7goOB=hGcw3>)5{A?L&!U8?$Cb3sQ< zQhB&u*)3v5Ud`%&?74L=sZB1YH?KiGL_fOAFs8ge%7i z1jEA1*j!$mMQONG>`9>6cEMbvK_}x$WFR100n59(L~gQBscd``#KI9^sxIDxWMm{O zhiE4GUPL$xGfLfaTIU>*powg2&1E@rOO>>=) zR_vkNbOQ@xmf$Pkl;i*dB33sOq+a_8%9k3#9^TiBFQ3V#3B;Mf+Otc!SWmnaJg^OyFxs%bD>d% zbM@x-ZqL&gOyut7eldKxe-du3TC( zjTvxH)y&;CbP~~IXA^h}5AjlWi@E|&U%L@9(sL~ER5+(Y3B>3jDzr+&Z~TJA&xsws zJ?pk(m2i&uDuy{DCKMyPzdJufx;xy5`xxJ}!J(yaTe{tw`=h+dL+`AT9XxIiU~$4J zdYGZBzl+rY8e0khlc9k+A<_uGo7ICPDAE9Ot_7rpMjIiEwvp;exE1#dCK!q-WMp=G zjAo3+?5F4n4w_F+Hx|yBKu_Q|?vdZ!FMfVLO*jqa2yuFk{}@bP^(#-#|3}bd@wSh${u-1) zjos8W6f9T5q?pwX-x|N*y6W^}OGGrG+;|k$z!K=9(*byh!h{?PJoWvq%QC57Sgy-@Sut|-;0G{MFb%~b*R02#m%s4SJ7opoN`zXXWP$M{&Ogn|m z3JIOW>-&y_psW~ZV;>DF9Aq%@-4yX2$~#>g1vkOq2f?&J;$$!iJ1Ty+(*+j@lB(dc z=pXkHIsA1GYZ4u#Po$CRz{x0xP>y%r_i-8d-Pkz|5<{1R%0g;@JAjhnSl1*1OtJb* zqsN`4r$HP_c=K``cM=%|eS$9(TXu2ey3a@PN0&=GJx+?YAf51w`Jly_9TbopZwn$*)(!dv zK!;coFsb_F4jp1Ya1wvkHuS6A)tx?eG1|h*If=w$3b<#yr6Q>x7 z2gM+y^E#_6Ml{%ev_r%q5KA|p3mo+s5@JOt^@#75v027LhZRPhS()O&=;-)fs0YkP z0eqrT=A@j#Ctyg3r3F%ig;(&cDA1{{Y_}|9xUA@UJ8Zpj41f$!kV42Px?qTk$Vwfl z8rdW=DWIN4LCD~F>qWwDR>Q{!qtUmvER=5GG(_T@W=AxDiPvBk4fe(mFq9)bV+t25 zmJafs`XYXod96k*uq8!ZhXdHPLrpcY)Py;LZF(iA-~u3&n{A>}AjYwx9@{`bXUu*0I8RRYW72Cxih3HnkL zyI6vtg-+rA!ke)X+5exU_YG>}PV;@cTSD8CAtedLS6E3^w`i~!n_LiH6^^%Rg)E2! zgu*x{LrhK`5o9x(k+$rN%XRn7y)9@G@QRdB7!uZaj&ZP=oSLKrVYD+lFOHzHDmiw% zXJGD>uy(7Q#3#30WuL08^Ws$9y<2rZoqaKx{J}_Sb^m_P?|Hu8&zHX{*p?zscg}&* z&udzP-qA+$Jg9Ixd4iM)7|x8Yc4GsTs?q;WyZ~;i3}ME+7U*}zbPaXyYlij-(dVF$ zBty2?(!T_T1h8ZUqB{__LD-5#M;Ftk@Oq$dyNX+F?XSMz z;Zc~W;bQ4#iasTfz*Ja&F0WO{V+&)U0zD>8&2AAj?E2~fsy`IfSVAkz@4n-oplDEa zO_fc50`gOpyf(b+@;weaUQN?a759FD}ZeW2SP(5ER-6@Ldp=3$jej~rQ zv?zAf_=Pt6w0{HS4D2=74>|m(Vek7U+%}5nUDeRgNFZV~)Mk<3T zURaHl@bs?eXcGq1eUy~Y0|9WA{K%E_recS3P`vgdV^0As8u1?(Yi}l|oY?F4Q0oqv zHDI{ro#Z{h?~V^z{y90X_ z0YNOMVM}#YJ-yZB2Q{kMFS=2?GlR;^mYK>%^d9O45pX-u>Jg&gAOWP;R-P~&CCY~n z{(>Et5lx75>BGPuQ8-QhJBG}D`GTYTFrUlN{nFcbIl#?_1Mjw*DGU^f$w#^?c*B2+-MUsKEN0LZyj}Pz83~SbU6JtsiS&d?qB^NKqr{# zN5o5`CgEdR%+GQd1?Dn2VMrz-Nqe6m$@R>A$uxUwVN)eSK1!a1aq>^J`eP?N6FKK! zBSuQUQyu>D-!%J;`x{-hS!83?9n#Q3go#sKtLhI>(l=!Q46>8wh-@HMV(oB%1AAjE z7)$!&I?9SJ4l41)=P*|&i7Z}AA)EkPl|RruYRk`8!8}9%=4Y7L2;Aw?cDp@SeK0Brl}N&um(s;fP378$ z{_$QY5>rnC9C13Ph;)lc(~sB_p&TZe-@aMJL6OhU#Vq8zFlt25`-_SHah%D5U<)Ud z=c6E1!ov0<`M{)qB18}@OcAJ5`A7*3K&lV0URU8jMw5XB@C`r}HxtSm+zLRdNlElt z<@|wR6$ad13UZQ{!+h<|@TFsXeI^j4vG<4Pidfd)?%71JCYK)}&0((4zISb*m?`T^ zMsA37>+`Wd6OZ2eevl2b%vs`z^_|7D+w`&+KNCmO!M35`aHx~ihQ#WJ6cj9aafQY3 zcYCnjT7{1C3>z{72CEH%gr~|#G`ECFjs8|grs(t^xWw-r7Vk7UW{Dfq1=0et-B63p zG6+T-@^*UzBDPmPGcB)O4SX3iLQU(Gjdh;%Moj3CS z@T$GHyLL1n&E6Y!A{k&TJ3UiuGcy8+JHw)U+(9?_-)&9M3_dqW;APt=YKccFVcIbX z)g|IREV&*wHuT;^*JJ-~SkR)!!a~AI^7^7^Zwzq53oXyA=GtBQq`E4|*cKP9Hdfoo z&-2ec!ox;;_4_gD_t8GK%hoyYlJpcWeX%I4wSZ5xm-9rD5_;8xyS|Pxjz{4p%<=hh zdr#}$Y5^t>q*XsySC%~I%Bk6K=@S$PSSg#u-X3#;khaW_NY(`A=3ZrduW~I$2$NTJ>bq|m zBJw8T+DzxCW`u{o2>Z0DB))ImHpxz3UMx|v_yp$+&HZOjRsoiWamZCMJ?Idj4&);D z{*~3=J)l0i%o%-ZsvZ-#MuBCFs-!4-&t%9IAr;BKA41+W!Szr2(li)K;-T$GmqZxq zW?TBW-USv-*b6~N+hdN#xWA5ZqLJ3aXY&u1_d+)JM2xAJQf%9#ZdomOvP&$F%!#lx z_hh;T2G~05Hsuna!6~aJfQd+)*BRHazPJ zg=nXOca4LYG?}H(zf3HwEFf2?*@m{`joY1B>kA#3SN`VTTUmGMvmGd?BVS}?E;ZCf zOdgzM#~x*AOERxo#J!1sN!m2`c-y@J_3SaEyckE!l-pR{nMHY}qP2nNgcx)p27YB? zZ7P%i+gW{C6bz_5fKHcpQILWL^qdBG4FKtCV}5r)vD(u_=O#rMg_q)b9kKmtkoy#4I7H zB}e8ml1>(~`^*T74fJZBoYHrzfMk1{1;PYuMEe83-dIe<$LkwbW zU4B(V-_&PZxF2w_v;N|8`#TRh=H=CYJv_IU;_Nx{(XZl;bgLHM3xz(ATRL(}yH4H8 z*%c@RE(~idVCx00|F zWyYh5w_utUlEQuZ;$*MD30)h|_56O!U0bl4u~m_T(BSR3S@6{S!sKg!497tGeDtYt zFcXkYeol^p0d`7LXVM?I!DdLL#a)gSUJ|OYkrM_dl*W(etEXb3O;oxZSN_tX+*86} zV_oKd?W;No-di#HFf_*^6||$)`TJ(=rmlx2!6&d_78--KWjXwId&>#y${)8~l97MW zdqNT8L5BDYjsww|G!Jy_q!R?jOKu5+{5cuwCq193^lLFWTOHQ(edhF86|`_cDEs9p z^IdAQ__5-JU4{Mu{i3OyCi)K&VWu93`4Pph;ahB2wHsl^BOE=2J3SF4N1edHP>3W9 z=e83ZN9`zbyr^5hDb33Yx~4>Z3@OVj7y)$Xnm9jN3&ohu zNuMXHTCcw`qX9UIBTFoZCVF*kfw*DM#bX%9(Pqr9d={n3YMYezZCKkjbfkCO&;+>; z^?ng3r+)sI6AGD6o&7(1T~%{EqKoMG-cRos{$_$cF#6e}KjT>aVTusbl32`mvf^fQ zGfs!lYk@D~-o{8N4Y5kLkN)Z+5Qx%?*@l{8*V5B>NsO&m)&)}-mk~DG#MB^;{U+S} zi^b^AUYFN8&x*B<$tepm{;4w?D;4SDUF!;Y6I=To-<%roAGpV1P8`&r99!^R((o^e zRvW6pT+_IjS+$??5ssK~J{~4Q9R}$n1#*G1@iOryi>_+`9~QUJ+5N@eWa@ORTSX~% zAV277DOZG}dqO0Vn(b;!J_F1%Nr)kIFug~t&&a`M2GLdE#RnrNAY;%&W;ccZY$_BI z4DI^D%Jiea@`%lu7s^m|6e*kAWtt@Yfnc(^A#J_ zNmD&oYS`H7Q|cj98mYVoD3&ZS+o@soj1iq~h(2*OK}$wCNPIJlHafScQ=Y(*J{Emc z*hja&#vinG!5YP*%G^Hk@$d=a7~BgV=8i$X?p9#xm2^8+_ap~QUcf!KPk|Bm` z>Y>+fpr>FWL=&W5vTh#~xGfG7@K)ItJ93`HgPx0z1|r+27JIt?v0&GC_4ND3LCT!{ zVt=^17?C(D*{5eTd&^`8qlAU&?nFG4a#n1OkB8BU9x-hiYpe4oxKT-7^Z7n39q2t7 zu!gm>LtGq7X^XF8w$mQ~)P z+>KHM&wdiWv;iBQ!ot*yI1?5Y1FS$8Sefu`iHG+thWJF3YG#wDDY3?bUeSR`DlO&q z14^XDhIOLp?g_T|3>q<(Uc1>-Ow{pa6`$u(X1Hj{++9LUVS3Rid-*SBcg?2 zyFcsL!w?I^h{k{1R(7^sxS#jDed)!+HwlSzhW6-`wBS6HPU0tVIxfCCm>eR^g05>D z5;Ix@?`-;mH$3cB>KRz!OG5IMBXh>J`!yRost=4MvR~IF$E-}-(Oyg)_r$IF{Zw%xQ@^|i-td{%K*yig|ySUMLlJ>C3 zyYQ&{9pX{v-bT|(*&QL|!>yw(nEAf3-}+ID^lK*Jmt!HnziYe#Q_5!Q=k}Bv?t;-7 ziGAz9Lx%LEaBlv-M~W+J0~jr~H3rho^;5br8s!Bzxl%}V(T*=<8amG-5TV>Ob6cvN z=f@PaD^k5BSl{eDaH+B5>`3JSSRu*scy@6(Y9u*878$aoTjRR+%YOGq{q$?13-2@z zpsWy;dmk|QVc|Q=o&Q>_a6OzLMkC*a_)<*^4Oouk*(K+8TYt>4##jecBPQ4^;svs7 zO^JlkLU_0kmve{=!nk@sYB(z<31f=R_+Drfx2WWtvGUTyI?3gTAk$-2;@QQbi-d&M zSH6ghL7#qg$tbqHMRS9kGkni5rSdnCf^23Ow17_aCY#;2WWiS2N<3dLfZ^JAv=o!RBiRuEXcbtJu38npJ4#TV6Lp8_@gB!dCX zzDZZXv-@udN*h*f8$wzCLFn^s5NwaNDjCkgvmI^TN!vA{iN>?2W3F4t66GgFr2Q7h zl)crn$M$4$;!2w3R$0mOF{B8l)S}o=D$Uub(C4RG5^~W;Z08Iibo46+#IhN=X1k`^ za|a!B9z7Wj2X3_TW%>H$%@3XMJ*6{#YX`%{?pTC*_`QKW1?$m|@j4P`;&BJ!b*J?H zO<4=uvU6Jc>^qyx&QJy31|SMAr1nJeq>qrF>Am60>IVHovh zUK%UykjR3Csqbe^ap}WruWs#j9z1@)3uNM}3w&N)p>)cuu8Bzc!|yB4y|8M}bVp3NufCNZ zfP-81ZmI^`;VwZP63^2tJ^^8St80Z;xIRoDcQ3#f$5f%vb5I*8ez?=~vN{Wgl8I95 zJsVy<$ReTGm;nkLRde} z?uwaXtVO;+_HD$=JnHdK;_NZAbtT2_A9c(&t#~AaS_o7dKOU|h zg@XmBgq;I8zPCOgfY(|d4(nvsq=g$hnd$ZzaMEEyo$=O`f!pmu9T<$Qg6i^3KYDoT zO_JscT?k$3mDCiua7({};KZ-z7w6~8oP^_rJZ%ySjdKaXDv%ophD|Foax+$*4zYU)D^!H0$QOE|9&5pP?zFurXXAnUU z;dteIzI4SX%P5%GM$4tq02FoA%;nsi_&I2Uc-3K_l;`--)N8x}V0H`1Ut`2z$}eXB z`}c3~uK*kX((qh&XOSjK8z$s#z%ZI3pb@b*w>e!Z$zBTkxUP_G#LrWKLEF@-5@bY{BJ_MB6f?qf}moBo%pN!A{nbU3EzFFGZ$`q;IY;$_v`SbyI zq>~yZ;C%Wy2hYd~RY+gihRwk8TE_ZPB<1gQgQDxa1bgO>bcs|Nc*t0@Duje-eV%8#K7$~eU zi0T~DP$C$b^_DZ}7vnBj>sMTU%~ha?fR}W~BcMpd7|=>zz*%5IZnb#|)+okHzp3_! z%4jjToEC`*xqelm5V8CBy#F#Bao@^=u*kV!PmTh!u<8W;idn#vXQ|HwvfTn&)*s2f z%vt(HxBM@|j(E&}eScwX1eWC--$ub7LHxjw-dZ|%VJ?sEL+dvV+$QhA9d+q;h@%=1 zE3Zn-#=^hCr?pCURkMq1n7C~GNkII-ThUAID#*8iTjc$bTUZ4zuzZ2(OQjqqDy6-S3;jamhp z&xf*Tkqc(s11iDr_JWys-FCNIAVs0e}OrGW(mr``??O}FdX z-EL`+eV3DsZSId3-t(MeLqbI6c|80Y(JH4(FRwos&Lblmxc;ZVRU(Hc?aL|qv*Fh| zR=xQP_X&#c9o%~P`X%U((*s7c{kv0mx6u+{MrO7Vk9-`UJxr)3ww)xxyQZV?U#9X; zRzmu7Olc4?3u!uCBff7=(U2<w$hb&Uo+U0NgJ`G>I#3S*c%gol;CpH zEYIOJM*RCF2-8CXvra+h$kHY3!lMbR>-ml!O9mN-8%=by2YtW84*=-&qrk`Re^^+I zjI@S@%G3E7k#nyHJK(@qNbM#PQ?pCel{+4GPEV=9Yw@#9D$t%iBkvpC%+dBMFD$jg z2}BHly3qCbfyYk*#bHhPhTsd03M@YJr!fcA9Godz-R9Upo|^44{r}iA3b}^1!3EPD z*>`Ei5Q>@j$8M6c;^WoO*zsF3!@;y?&ldKo!;g@nejadz6lZC4 z=mdc6gm&lV0HBW!h$UU>6!o4J{I$u3rnl4uupat zH{@)v`SPW^eR^gzTC0@0A?a3ZP$@*$_LU2cO{`kKJ!!(BX3MMIj%QX1v?o^|F_fVy z-paJDPH%%wUc`l1WvAn z+}9on*IpGlvwC!NDa;u(7S|gjqvyodI6a#PddW!O;G835vj|cjD!0&T2e#{la$*)K z2ira*I~S<;05_AcdA0_0z_Oj$)J_VsBCIBgKu1;-6J_Fx*G9@IwPQbZCNukdUg(N2 z#f+2E4Z*As4*i%I9~S?qaA9%IGZte?;)4h>Phw+P(duIxnS8N1X(456ge-ObeDzDg z#G_Pf9nC}sM~xb zH^a`r^SnOnXV7Go?HEYTxI#Z3H=D*4LMbQ>sq6fVkjyQV8Drc`Dbl;t7RES@@X4+` zO3bY#Al1ML8iNClFyaPF20Elux}QZ);bslK?8kpqYa{;}5w(91px^6+=jc|PzdlaW z2tvlV{;5WMCuX|9&Hwj{|MahaJ*TIeM6coZPn;FjZ{Lbi&cEbxwc%QohSukuM#S}W z*{Y{s`_)CnXR8Z_KuYtNjVGTc3FbUowm>&lr7qt`JH|d;GomvT~u_8M*$apuaI8n28!LHJff-8|ckU zrT?El{%!td=jQhhzL$giqHSU?=E9t*QKzXLY5(<}7Y8SP75(@GatOD6E|95*7keYvi}%xb6JuJ!WfH2&-JPIs4G-$ z^Ap)>aCm@0EC5~F*p13a>`Tn-NHb7Wd?a?l=#i7F{<7B^OJJk}&jI<3N%ml)8))A= zgDwZuyI4eSlu!5E3H&H=_SHE?@r)8vv(ad8=UnvFOeB(ED1EmzS?1Yll3M9aKx*Cm zVtFRsC0eh!0Yn^)lxL}+3%Jm+h&tA$jh7QT#`j8k2sY%;qd8vaj^_G zgN1Xc&t`Xibol1uQ?yD-92E4(p6=pE@bmu)4Heyy^2>WG(i)@pCNCNSSP6kFGke}E z*9oo68v%l$SimEQr^!;e_Q(yG>zaw=B2$CZ?N2;xP<^JdQ0(pGqbwSW#U{5>6wr={ z^V31W)?yfhF_2~9WA7n1fRwhA$!AxW(Ia-#l-Ahhew6e%$K+XNalhRgP?l^?8Jq1C z(s!G>ebLZ|NoO?`B$7oU-P$UUBBD%R0I7+hXHg^P=`feq;Kbe=fcDJj1q-VTErSy< zK4)-CC8w#hnIhci9Cr>O5v{c9Okqh)(5dQbf5m{qiY}fY>&?ZNs*JOlLZR;COo(5k zX*`w>NsW=-&*YZ6fRaQif4l0o6TpqPoiwq5y$wW&&3&ae%-9b5WE#LRrZu~^PuL8f zPkd^{p%?Ex&oME3*&k2jx(5x9Za1w+1Z`f7_}1VqD*qKgq#?KMr5M@*d;RIC{)6O$EpZo|j}=8bw(S=uVq zT3YnoL_Juu9SZ8^05Fn>Ffnd+e-!VflfqM~{xP_OGtnoUxlV<;ig`d6or&WW zo9U>aS$$myHWSkU?-`sY!ar}W^~tc4+o=gy$fZRnFgYSdBJizQq@8HggU5Y>55y|V&@;zVo z9NLDmTTSlRyY015JGth1aS2)1SM3`vhrRkhZVA5ZaB`ta2r=<3kH^>u8qn^*C?yGL zuk!J~^77~vlRl3ln*n4_MS{DTl+ZX~J!^I-JRS!#mC;LogOsRk?fdOv9LSljAIv4O zR4dk8!gp1*u9UAW2wBE1K(@0x-Do1uMN3u|^$^=_@StSfOZkwrmvA0=8MNBPja#_#X(PoF9)>KnKHL}BiEp*ROX&N&?7_! z?LG}Gl~~R7rYi7mgKo$kZ5^H>$X3Vlh=fP#wB`+I%2+bu#Jy=I>5a*B<_9tn5`vJ- zvou-O*N$Fyhmc%P;U1w~BNUeeK1v%B%sc1DFiQk7PAGSeDz3eaZrEgry4{O=SPSP% zOf6|yFqz*(uVb@PTnpcwf(Nx%JDR*J$_?!Yu@TEy!uojFWA>~FN!B;Wj5Esl0m8KP zt`WQ*W9?>=m(4e~U*p`7n(|do73lcvh*Kv`Ge&1iSD{gkBdU_`WW&;NZ(6s;h3&t- z%YaMt1WV^YuHmFRy|skRiq?1Leu$JZY4c8TvAB!oXKQY)Nt>f5P*HN`tO$ZWaRJs99=&0<3Kj*A5**X`E0?69FlOOF^>ion|Jc{}q zC_iBq=BatMA&dl$5rgQ$7Ux5PKv#BM+03k`uRXj#pq-Aj+5vI#AWyI+_bG^}lD z&)|^wW(@mJv8_Lm_n@#C?C?geJ7pC^XC#QEP|h08s-92goVqZTi?|7JiUdQI4@MuE zg5Y)O)BN*%BV7}7%1ldBBY0DuSpRZeXzh~v^*)r8-KNgMF?oWNzgV#^rV6v^=0cx4 z)OUBt5GG9lepdl2=Zh#Bip`%!#c(^FooArvngYf-0!qT}#7lQ-F$Obgw#|-vgwZGx zG`C<|$KrDM!ac>_^@0222g`YDMR1rS>%h%%j0XHSA%^WiQ$Ms}3*b~4!9Hna;+-x- z!|wl;(HPKLW;Kp`EZ`g*i%VT^25!z^xd^E(Q(<>ZvaVZ|QaX+-@K=cuI5OiYNop8mZwX9P*f)2o`*rCHRSP%?D^t?Os9}xgGk_2asp^g#@ z1gRay^mMB=99tcTVe2d#NM2XM+>6y6zwn_vHD}ek=kuIPBn-2Cfkru(>0phBxWfu9 zmyFMD7g{?G99LE~U)^DE4AHu4bYy|>sDHP@-{%E}_4klj4qSI8-jd2MG(@UiL5#E| zZ=jN-@xy#7(a2I9a_a)Rq6tS*$#+wV;ZY5{S;1Pxk?DX_?@Y(tyuCivGQjM>)$nV0 z9Pi~tXG~Ov)|H#wSW~#MFo}R6PM)+2Lx6R{i8%pl4G*)$qW{>=66g^2X~i|=s?*HFr&8O4RxfrGlsfc_(udl#L(J$Fc^6b~yYpqtj! zqlq(}am6w?q2LX^m--+78)wo8;v(!FJ5;h5{SIU?fMB4d9y% zFqu{j4$z{-d-_~8Bm^s7ABiP6L1D7IdzT324#a%H@O@A30fXuo5^A=j(~!6X7+(EX zE)7H2|Vmi!s$HE0cce2XZGC z6>Sr#n$OqLUnAvZd$9rIz%k=ux}G9dZ%I4d=l*KPT8#(biMb?B@6R-USE&JqzGZ;A zgco|Uv&Eml%?4DJ&z0cL&92EJ7M$|PD_>BVRNAj&+`pl8HFL5$ z{C+jJwIx3L5@lSuraZH9vcX^~Zi|hM(?3MSQIaMQqhZC%93R7@lnzH=uAz$&)+(}v zSd|uw&AbBintc2}`J}cwrtK!P-4NrLM~VppK;4=6M9v-v)K~1?Z%@{728rqE3z4y7 z6A{1!`h#U)?u-;T4*1eUkn=JXXm!6EmMt4wO~la<38!(0L6llt?9Bc%D2?L?8n7lH zh+cYK2E*=NCE2V_o?}NQtXw`8h8BW(mDPK7Kg~DPuAF48NT8V+>uT*rju$_#Cb_Wt@x8Qm<`VR))URhN{s&#_bjvyn> zs9j*!M|@vi1SglC#kZ3vp5MFnNJ?*Jboci2oelbS7D$l#R=K@Nsb8bP`_=HT^J^Vk zLEbS0*{%HOF^iJj674PNu-^USk9W>(oTsQlxs-BR8TdtN6u>Au<@C?{9|@*8`gg-X z**U8a-_p^L$W@2!W#)85?kE!<7MqUNyuv+leXq~Mo~OJYAg%~`EO(&Yf~Gr!pCitI z?5ELMYF<`1KM70>N+Jk^Km@ai{F@ zKozet86F?F3)h9l`B98bQNb2=eD}agK+{a@_Gs^88){E%PJ+x#Kk}sZO2}fDVU60uk@ex%JTFe2u+kZzaf3>B3->53M?8>j=i>+OY19hf z7q^@k)+imabWEf=L9&HIxSe3QTX8f-q}<|?UpgMZu1=lGJ}Ib4HT*aqe4RKIF1TtK zOA>xt!Qy6uY4lZU0gZNYvP_PLfEwY8_?{5O$BQUWwyx}r3|&VD;OO!n6g=WJzrCwM zqsI#$^xa48*Vo=eG(pP`TWVH~lZ6o*B?V>w@ z#+L+>uZEd1j5B|M7N}Wm|1v!A_E9=M#xB`$X_O2seyTM!C(P_L#LSST*Q!c?)zl~d z)Bhe3#=l*~xmj$A8Vb5dJ*>72?Fn*Y`^HKOF5JCPyWd)4((K~KDBdxru`5*K3Vcq5 zL*qTLYoo6s8CLHN(1m|fKBAt~?$PC?59Ku_F*Y_$r;bh|HXoag3KdGs%9uK>vad zRQXnk;dYOQ(TA9$6bzy?y2L%5K$$2mE5-1y(E$lK$gSzn5T;$c6jNKu@5z&S?0m#Z zJzRNv(jr}cwOhfwdGSm}?FcsYHnD1J03eg5fFWL4?XY**gtM0 z61ESnAso>cakqHcp)zd!mdLdkQ{ix?r_Fx)>x)RYYZA1C$o8UW9Z8$>buX|Bg&qZ& zTnd{8R-G+ZB0XE&t%R-%)9sIU%87~Us(w96XMa$SSrjh1`gd57Bc( z!A$v1_OX+7Rcy}WF^p)mEPRb{b%324`05I9;LB^s||_Eri-lBnG?#he)It?myVFc*6GG5!w@vvPrOS_Gx^S5; zku5cNeRK!gak4x>9k?5^6$!47RZNq0q&IWFlp)}& zy7N3An{FSdw!;8V+&HCYK6jS7zh7mPce1?EWOBWx;F3)OSZhOOTefA_R*0+Trj;#u zOcT^foL~xTsSgLpN+}WeXCJHC_7hW6hOpTXBBq4Xc{k^lZ4phhFH27fjkH<1cE@n! zd~_J9+HzZ>!C1>Wvbh9qqykvjOd-0%L6o=1EjaOb*bI_Ecq66|WF;R-PFj8&>5e%g zv%bT}chSscK%QG%%=EPnguz}EVC77Ln{W>>_hoW_Pl$=Jb%Hq&2|R!B9?eyzMg%*=HqD_j z(^{k0Nn}>KD;7bqcQ;Md_FIn4A1`}IbHy~kiXN6{wb=%yVL5kcDc>03p#M_a8hnQE zucF=|lnfrnt!RwX5kahL59fujstP&wBbpE4aRNlcO7tCO=)=ChOE0vk^ach%PHFa+ zpoga>gt1=xy_%i`5WoN<9w|6WuIt4uCXmE;G$d3PeI3)e@{&vUNY-)nmGjla1dy-C zdF>bTqm&p0C=23>=0a*XmS~Jt+ZhF$GoZ1k64E_@k_ zp%$>}4cL5-+Tze8oH5h`vD9lGyWOhr%Ncos5dc|fEN$dpXO2US`kIvxG2pA}lt8kF z--By&Sk7u45fTajej%dam-H0~tx>J{5pBvagjRbtA5P%1=}7t*9W*G6oam***%C>! zlf>G<7w{1i`U@y*ENnDul)%3Q#c~$tERcb(;}J#rKrW z8+eQ)Ee|oGm7{(nG20Z5#F{roe`Bpl+SrFk^)6m{h2uihw{GWwK^HHPpM$0^gj1&a(lS0|k-hyybj+ zm3t=Z5epbZoKK_tLx(2NeTpR%k8X6|g8q?>ZSoKRT_7YDe^h)~&c05^$WJr`T3pRu zzGm>P8F*v%N|6dU8T1qVG51WF?%Bz#puxNO$gOiP&!vwbIPU18trZU{agpvIwHJ?B ze}WO0(MN_4m+hXijtC}dTg74hAb|bK~>i0`vH{OjRwv*?C zypc3T%#l5clu-NNy-Q|tnT+Ti-)X4>W%pQgHvx2epl}7(==me?m;_AgB(;SDI6{Rp zTXPzN_iCxw93DlF7XJH|Bk^}j@|{k52j3MfJ{}vNk7QT4OJFX0&Ju)S&t(*peR$h` zj6c&WeDSX718u^Zw2IQ(>8{x(zr1Kea>uxk{}o?3xnCE8NDk08kCnGlMJN|G*yF8Yer%6MU8WfcJP zEXQz$&RBsRIijaxk9SOfZ)3{jbr6=FoSL9syd5oJv)*xms>*M_Rp?=;NwBE8Dbfee z^uJEq|kgYNkLmC~%a;Mne+d1hIhI*f$>h-7hUzj`4{lbm=EU`iI z6jy9aB&;OJaRoEvCDSGn&fnfijS)5&X2eHJ57+qeY8&p}WS!YeNCA%C=V;ukI2l}6 zK>U-{Vr#U`?T^e_9}fEr%vwu_{@XZvKxtXPcL@)Nhk_MbdJ3BcQD}=s9~AnuCG=yk zf2?mO^JQxCWNZSh!{C*7SN8|V(x7v|;TXbTRt(;>so$J(y3Mou z>{HVVfBIXEj*)Et?rMM}&g2<`fEezU7XOnS)l4VT&F4_x`5maUmE!YL1>v~YX8>YT>A5?m)ftvH?tY(VCVAct@&@Sc8IJnV!pF2 z=u6CAM&l@O0=govuY4*4T5mhu8OO)4{Pa|WqKJ7JhV`u`beEj!7^0a`dxGzO5}9+M z5PkJU2ju}Jq+_xyVEfM~h#9;%i!%sp$=J;(8^c3io%&xNBHN(Dp>Lgc(-S!m#sOdy zkZc;Gre>0_@k}dc(v6J3;OtE~O{vq6dQCoaAfWZV5b-a%*-gZBq+jg5R#DEve}XZW|B8PgciJ5NOU2dXXm>{L?Me44iSf zMr-mh~SuaOHj89rv z9&asIPmOx?u)`&=U$IOJu!|#JR0c75-5I7K!Ms}u|^CuX7O!TKqDlbR4;?b%&YCZDS!eQwmA1#H8idwTs4J;KD%{XnG9w= z$s@a~&ybB4Mb5E7j67hE$!3D0t_ykqLxRel3KnTZ(F~6wfc)|{R6;IQqU3d54@V3E z%PLAYkJ@Ew{~O14Pul-`4xQ8Xn&9iS5>6>qjN92FOkjea+^dL}KSWu@&ZMM=C_A*NVftY7g$Lb|_UsKg&m-+p;&+xGJM*w5+)L4a`;qOLuPmq{{c!Z9; zZk0i-sVxY2=RB_9iiG4>>#$0ucXx93W!LIk{`8>TQi|9n+9GZ@`VB(0A`VsJ$HLd; z$+yM@+~Lwm`)IXxZ5g>^jzIOvPlyzP_F#AXf`4dsIB`Rz1UejYd3h|tB$=!#54rE< znC_|Yjnd(kjXeJWRBz^lWG9HgDG^1E%@#3GoiD_uVFpD!8TJB+oAbl~v!yowBT;uE z0~XJu&mMRC*oJDsQwK?!}FzD_sMfh^5c3{9^X&$TQG1_Qhz0LF0)hH7d zO>_;`Oa45Ejj$2?V%hIOE!rAiAHH#_5*y<{9G}UTACtQSW~)4AEhIsHNb%qZ%=QlM zzLD2V^AENvkMOJIcP!T#h|mZu$HtbL3g<5Q8yygUg34h`waatPz4n9aqlQzOoFH%L zt~HU51ZcORg7VRf4dHjQsE0>4noYO8@BB}JKBlJ(8aZZc4v@&n#!%E++F~m|^M+2V zE;(&nxVyyN1*t3iD>-&58;;kl5^fSD zS?sG^lWJjNs|I>IlfKra3Rvl;m_PamTa2-^TiV)fCxuzR`iS9%Js{z9SYVfA9CY~| zU;OP$SUS({B`h}I!tilhHaiMUMxD%c+rsklwdH&V;DnlY-L&(M3`W5a3@sft7W4;= z#2nKh5lc(KP7xbiGS=DvwNk@=scbeyt*NrDeDvLR8KQu17EsdZPC~~B)J5zyJ=5(X z1cI>o{Ws<2bB(|hfJs79=z{Zv0~z+hg< zk%z>=h+nweo?nfDb$q_l3Tk=13|GQZ2xeL4YPT+5P#W~5<IIZkg&s5h?cxQYb~Fexq|aURhM^J{JB6SBrO#)5d^He$80Cbt4RG}^ zWvMa{;HD)F1hr2lODbUrZ7;o@7LGC$^DhwglR z(OoNT4OtWDEG*vm;~kg2Ym+-r-m<}zfUIi6cg1>P-%dm@qe9-(mARX#dSvyezMGnA z6@0ktG1pd(O2Ou=_{mda}b7^>oHrTTKCJTSD}a?`(qVrigo~91+mS zT!`M7YDGrWA({pu#I-K;e7g7&?}!}H zm(YIXw|ICyk(G=G&Cc@IGG-tG=uFskSwRoATOlt*>3HJ}PD!_oC4X3suaD-nfMKlOoRS=>sx6aR zHkqD?NZIn6jK5@$jy~;VT)HR6)v0xQ`Udp!rZN6Hr?qSlk1EeC{=;%p2Z+hodx3wj z{UJy&syd|^T3^)LXf{6FPyafPc0>!i!mn~JVV9U?e-#Y> zli~O}n?d0DJa)Qhv??%!;rttSWf{j1)-DZ6Y~5L2I07SF%1bm!3SlsnY=5SdMkA}E z(Q#+d!(i#06LTIsF^_L0dnyJAVnu|(JKq$)mEN^y7CbElabfcem5;{w&PqD{_H*J+xz^zf>m@5u_G446QxZ1=5= z%mD%dtj{MfFQb&>wIk)J8?+7n=Na7eDBo~kH#2o71-^Zn8CTG| zpzx*r@DiIjy&ahziQN*T9S0?!T1~Zk)<@@0Y+#%Tw_Vo|7F)4O)MWaJerMQ2x*pBM zb-!j8*!sf|SGlF7c!au}RAK+#fRr`zR!R=;I2wqHkxCeukzKjIZ|k??pdHlxR$Nl} zX$+5~HX!W{28_O#zT^>CmPf35IG~WVr%clG5(kcQ-*Ic{0!C~{JVA4W&mA_(6>2WM zTWR;5)O6jwXAY?mU{r((88{#D_ae zKluzC(Rvk4276W&14Vj55}>z=pO z1b7?5{+oK=b|nzGff*}u<9^!MrL~@!13;`DRuWku zCwd_DtKVS+Ob$*S7b@4^~ePbA*JnOmjgP<&+gLqqMR&*UQlLOtLvsAMi6KBO+aY z0V0?%c_x#k6&`xnxNu);*&m2`O=hXJkz%1I^Ae0F)C4wBnx0vU1#6s52PC=&@ zV%6sCZ7NuM#Vk=ET``*lBow+3WHj!Y{QG4v(&1>{3+H5nd~*uv zbAnrJs@0AN13Lq7)>-i-wD3kxUkDi_nIWc_^6sKFe77%hO+rGMbG;dRZ`cB6OhIHJ zcu9|W^!BB6IQG!`T}#a_+L&p$9Zt#+-H`N_xH$%tE+dK3QvYrPcOSw3$OC3qfQoV>-wZWI-D@Sw_JrB*|%$2UDPHAi)Bk;|oq znX5BMPz#F+JQ=d2oRHpQ!I3FD>7R>)6b>W+4o*(rMH*yg%{`D8$}80sy{X3J>++)& zv+=~(Rw5CHTdE?YW}P8M+18PI?d?m?2oisi9+yX#1wYC$Vj;tBta*xEiRh#A@?qj5 zdErY6Xt`qpIMh)!oqh|`9lf}VcO&!jvCW%+m4zwQ@Yv>l`=5~%%xdAR{Abb-;GBB! z1u^(=*lrpp6yb7U|IO-nJ6mZ&`y9HUbbfHFJ9_SZdw;a{rd7GJD$pjpKELucL$s;5 zelqI0c>i{>dNpb!8uo_Os?OHadXMw#J%Tz*C!+LrGU@ctb*B7e9rU9v-1HWT zu4_M%(DJ3#1roU20{gi$f>t7FbudpYU=nq?X!{nW`ntgRUw-9hs}xQa8<2_&PQETj z+PQ7WYY>gozV*B@`bcf@IEZ+;?8jDeCE(m%x^O9~{1Ujfk&n+ReqmNqM(^kHu$*@x z=eop|H*R}h!$sHDuiOKa8k;#Kd3GM;5e_JZU`3{ZA~jNavEWIBV`hZ%(>LU!7JaKrJxw#J{BB-&v~z1<9w*(F(N&V#jIhWWreH?Ao*Wu7SPS_uKA2T=)@+ zNqb)V@{4$+>U{T+(`CzH0aQPCGSkA|g3TaBF`xL;}nRmhry8 zZ~s$N2$@p=r}yV`bkQl*T-#|zmfkh)wMDBmWKz{;HSuvktQpo|36l}iAqlL^F;Clt zP$X;!XK?B{TFgQZY;5E8d>?^(mJ%jh-e#U=4q}`{YX|dSOMl=%0N0w&Y<5Rxa0Wud z$TXIQjC03eo{vm88kGjKYdvXQwKcfCKGB6If^?GI3c(N77dpPk7U#OXaS+fU_2L(D zZtMBZS@MvU7}w}_5??q@cEYcieg5E2`?fO^uP(vz-Vq6Y3JDdPRvnJiSRrLC*s0wc z@nw4&R#Q{CmkWzML-x94#}@O^=^muBh(wbiqTO``OA z40gEb21o=}X;|4gr9%Utl3o@0UWghHt!q@D6m z9hD+`NIno5G=Y8@|UO77@jq{@|3GxM*4Q&RT6W zJ($P{Y{HgmWx%XoqgETHtL_dyTxukN4a`l3R~4?T z?%L=NX|$@~{e8D%4FOx=5X}p-mp1ZVkUp@pV}5Y!yIy)9LzAudDl0}gso6``wowyDmmS>vlF>?%!g?+bp*txdrwbuXNzKJ zq;(QjgEgcB!VJll+Qx1o*i4MBZH}O${g|}>9-Wnv%Xso7ud{s-JO{G2-NgH-S`rfl z*T?_b(q;3d?f*YXZy4LgnWuRcOC?T`76X!^y|md`R8b|Fj4dxsc?dgh;HWaCkdmyC z<=(VoWdW)w+szsB&Q2S;oi7X0DkhRg3QDv_vD)&i<;YU!&}mSL!s+aMI9i()q}VZL zti3+U>;dc~*MI?MfWhK09~OhXU*+aQ(micUWU*N9`#%5Y`8|ghCBX(k*lHf!PNN!6XXx7@w|RZVYNl9ZZBKJ& z*l;wv3TJ=De(z=0>hGw#<&Qp=ftC7_Ai{hJht@W+vI7F=*|>c0wakjc{B(x8y0~>SvIG;DZwa* zZ~p#bxVZ^hLn?F^A=mJE$ESkUV0g$NMOSQ5dnBcY+}W4=y&ZQwo|_C}z7MI!OmekP z5lX_8?6}YRV?f6oW&&RvYi$?06T-d8U{8pSr(04mc=u*y)`$6EO5mSB0-lwB^53GR zVCD5CJb$p>48df{{GPFC&HKdOD?=X8y^~6QAi0UNPh>pY;IS=ug?ZsExDX0Q{}C?{ z26hdG&goBZ%NgUw5#6h}x28s7cX9`9h}gl+C#KLX$xHIVN^tH8vwLz}x4kyQaHJB+ z+e4hQb8S8~7<9isNea?^Q|2?|jekDCv2QcoI2kmIK8Lmxiu!$ONlO@!_8>BiKo^B1 zpX*z0{ndl_@ral&znD~CQ#K9d0|FOSfkX&9o$koy!AN7PN<V7t?7#ytWM~YO7u8Xu{gpCLuPa5eFJ-l_kH)cGUK8#Wzv7tsWFAs(J zQErQx72Z`*C&~;+YV$s3OgbtzUIGKkgAspMRfP)OAnuTqRPg^=zF$!b2T?Fm{(kO) z1~HW&Hd5Hdn){{XtM}dm8Q+I$ZXiPqAK??$xs-lQ9c zD2Y`{VzTGtz58v!yU8;6>z0HugA0RTh$@Mth?gzJ+C2m0_PZ-`3x~kh95!r~T_6)Z z>Q91kkLrexMH*_e%I?yZT0b8Qa-jt4<{z6zR{Hn8bjiY#P>;6$X-YH)%^-7TX4^*Br&QB7!H+YAIG4{6GhZ?4|6)8H92rh#L8>o0LYoVd8+m3QcMdVyI$Lh7ogA4DE!fFr zi>F6|mmab0lKbd@rw7a5Q@7`G$8J&Tk=#2P-i<#4B_|I(n&U-KVN~n*-fI=TFJ@cM zf$ranCGcc<)0J+p16Bxo&OSoMkqKB65rGKm{`^&hO?mow`cK65cSsph2eDM+Y&TnJ zzQI5`(0F%tK^d45`}#qUdBJTq62@K6KU@?a_(s5b^H4A$7>vBP(jQ)U8^NXM+DaxF zVJ(}viQ`YMAHp{7V1F4RG=$-?ws8CUyroF()ED%n?F}#v5|b6Z+I7B63mgr`)@;2u zooQhfCS>qh{rvnH)p%HdDVl7vE#vb_yxC?jKksDtuhVLQ;SJrJWH^xstD75{@=*N# zr8hQ(tymg0-H|fK4>@-BqP`d&<;wYc`04Cd->hZ##Tgi40`!i<8Y3h=HA!cPtI$qX z8;?hg%>QDTA3J5$=XeL3oR|7ZXBhe+0me1crd2!N=eq2?$_vxAPr zjH;Qqy(p^thhH)~l1;MoyF$CTt!bxi6L?dZ*(b$Imy2`v$c?P#_BYK-{E!@ut~wCOJ%D|>~) zMz3!iEjFgCWl9Y0xziX+Stc(fGcXz&Et&ACLd1^J*&3o zri+~3&lyZaNLVLk|2n(8F2oJ@=N>vFj1N z(N<(J=q}Zn+&&A`(eAi(L&yX-2T!+;Mm)0&I8M6O@juo(>2%Kg>;Ln={m*r{cdF&G zF{tKKgFf5baPa2xr1*B|KF{Ac6@F}*>AVQUIdwalvimNr?95}!9J{>IzVGRlmq(|V z>W&?u0{A9fXxX;NOX;n-#a|vbs}XbI`QwgA`f4zj2?m!>c-vw3YXhJBt``NN#~AAm zet+GmjizRo6_;4S7Od04DfO-9g&&_?7(D&G1ZH?=fR+(gB6Mf}#`P%>CYhxnDzbYw z6TZ{?-@8v5Q!qZ2a}&6$tV&V~EQEiD_oq~rAGeT8xFB8VUU|Ue(or&87raV1f4aSA z?)MiHC{+7N;KO3pljrU`-#K zx}I%(=(ZbISM-?fEOxQU!h2$x6z?XjoX!lrbw(}5^=|eDn)QW)4=l-zmv&@x!AW$~ z8r^am&RxAc_w!DmF}u#aG~Zcb>4~IJS0Y>YCTm!$-nlPi`w>;fOcV6Ldn?+A=bQh; zK~2nPaAgti4mg26LZlzwcq}`f&Kt+=x(%{)#k93zi`r<{M+2&R-R8crab`4UMITHW!Ikb6rJ72$+qPBp$Hqb__K1s1oc6VJoiIFf#Kbz#e3!~yH&`aNfHoM z#sJ(a%3ZcXb=ncVT<=Z)z6YneQ2I25% zKo^s(UjHJbkga<|={Bgi#zWkpv=6LP17aVgZDlyu2s+VUzudlZ6Te}!^PdO2e~eB{m#j-&omuPl0>CnMCm(4M7Lc3r zYUg5@34E`_anni!T)J4C$xluG{CuxG8psfv()fe*d6>V+bRhF@<5XMN_1_KB-3&h| zE@mEgO&tL{mJV>@tV+)l>eXlZmIxa-IQLR(VqWg4Uc0eeo4R^vXuAqM3P%EA0xG!D zX8WjhSl+H)vjRQQRy?+x_4)ejJDBmUuem5{Xd(Ywvo~2YZ02`tsr2{W3|g5<2FTX5 zS^w%fy>qt*v3dF&gb`6-Tz~vEVKI3G+lWsaqLa1Q@*dOAM^1 zF#x3M)EGuKNwajd_9YST{iSN(JBX;8b4?OA9T|QR7OaW#UtLi^K z1tQWvOIbB4O`VV9;${aN#sVJ0>wT1FYo`L~CU9DjG|`|@&WNYm@j2`u6TCY=$no}U zsFH8FP&nH$44qu79GCALd1?ZN7+!ICKYbwV zE%0cjp7ZnzG%71$N&k4ze}B1~O-3|EMtV*6eq(NVR1XQ4m%cI#Ol z1yw8WC+vM_?pE7?7vXgnLs(xJPFvs&dmp!fzBlaI`;mu0MS?z%V3f{mf5})|>ju2T z0Dd<9N74;;zYX^NJ)Nh#5c#sb2m2+d4rz)wo?>4wC zt6z7OgoErLSoBqP15%9UZQO%%gTx8^w3pH=;->p0d2gd#pqqz;4a3K8Y~ZwP9c7a-RGl`vY)u`(Tma^bj#1Ww zD(c?q2u8B#2@^uD!G9Mx!A;Nj{ASR-V1IBtxy*ULx@H@lSjI_Uo2v$&7PQgz2bxvH zKA}hZ+IF%72}td0wvUEZ*lxo=OA80}O@F_4{G!-)kZs5UZBjAdnO__QNRw|-b^sV# zrqwmqCi|z@4e$CnoGURU;5hS4sBdkJC&msL6&JN3h%UK_Tm+#U{f%8g)l+@Qt}T#x z{MlYrmByZJT}Wq|jLnX`ZE(UJf+Dvzy_UacMDwO*)ezQ?dB9i0jpmbNbiw#_uqn#} zyc_yQa+Th+{U>=AF>nb`Qb>_SGQj;2XS%@(er9&z{YiFdHoVNPp&({2z0m5p2T+pX zVEWZS>h?UCIR+4QyRZquTEU>JSS7pIfdE4h%#(R`2RNNS@IT? z;L~1z8^Zlh=CTuF`2L0MCn2)pg;`N<2Iz#ef6xlIWIUew!Sc2KoMf!OLx8bY+{rFs zVbTtMuz8{UJ>zuREA@iPax{+8y)d_l9uY@`pe|3W38A?TpA3u*@1Iu54ZNW%4QHh2 z)oii`rnLGXa?l&{#hk*OVcdrinlS-GTD2MUrKQNlb3J;tx1#(PK^*Zc9OIxKE==My zh#O-VcRkw|RD4d~SM%qLPNH1FvB2q|K*mYU zR16=qzUPasc$Rxex%FNib zM6s0=g&uYLN?Ag6YcEc_st;IgT{oZGem!)#*SA;};^o9Mvcr^ev=rjr8z*i9&@|1; zlzE)+>L$$yeuJbD?o=Wccd<8+O_fdt$-BfL(R<~0gDrl>5CY5&v;wr}9l`JRw}`Mx z^yJ6qI~Fl`)LG;x_?%p@=&jSD%%0dXzBPJ89%wv=Q6Ex$(k{ zE9Kf7>v`{_`@lVSF93Nd`94CUWFJup4DG#(={6<1%ef-6n}?otux0VIg5p7gJft?~ z`WJII@^C1%N_&mIZ!oyb$#vm=h|?e)R&l{za<3DB4_0QS(AB8K1-REkG6@&L zf@y1FRhW!~#!hQPNxvh=!7>onWjEay^tIO98@Y0yBOox;X~aC`@3d= zeR;Qj($p_x`>DN|A3OZh$)Uo>zIY7s(oGC!(kFym=um) zT;W@^L#wCXU7&gE4Y6g|%%Wex_atkOkUnaTiW%dZAj zT`R_7brvU~Fj8(ENc!D&c?Y@=9Blbuz-DO=7#cLUfb+GEV}WDAbev@d#u36jXBOJK z4H4boi`v`!;g-PW%+Mz~qMO_6B`p%(GA1MxJj#A@Do&`jZpu z-xJPlb9}1-Q7H>B)02nO>=F(^fW~ubPb8yY;Gl6J*v+^??!V8O2+D+un+`uNI=m%`lx_3C*X98#392c{=93+gmyf4f2 zs1>&62d_J?{PN2B+TC7fE&!+!Gm7#338FwQ!Uec*AzcOUR!i|GQWQS@!>Cv-ULkcPHr}7EE|l7J$9}{)VSs=qA_eoX*$Mf!ea|EhvR}X@GMR z6{^}6!A3CIVE@G?MP&Pyg4k+Rai9-D+_Zo2-G-~M*1hf#7VLY;QDNT?7!AQ3sRT6ThML|ji-9wyUg z{J9Ae=^@i}puXH%*&Pf=etPota+fQ%Rrr3OExPNUBxn2h(w5zFWBA#XJ2FC)J&C>X z?);YAHd~#U@h#MqYwxUh%1rP8fJ^Dq@M>erv(nfvA6fhTLjKFHg(D>Ra+S3;8hlDE zX~$|_y1ijrJ+toG?5)###`WIG)?(wK#InP&vz09>yE0Uo0NxY3hj-IXqlp+XvxH>n zXnYz=CYQUo6R$k$Eu>bN@^0B%`BSsPz-5uq4m#Ha9QO=6kMyyw!G^zSi~II3J5KS! z#l`BGqU{I~s25Znq7Y`;TC+>_+oD;Z8Z-M{ZfB>=Irl_mC zL&5lVQr}+45*p;VoI$RC?SpPUbD!PB>yg6dob;>B{)XR24^CvN+pDO|wt^nRh~FGG zE!Sf5hiaL5HuzH0LN*$7!6_7*0hDepXOMAYmAq z-F|G|_r*Db(YwBI@EnHeqlQF+Y@G(i()uOe=yC*WGlVpJx?MK1Coqrbo#Nlb{)K-1 zWM|m7^==1dj>_v!V@5C~LIc+=(^7N`-TrO!>-qL#_aFYuY8-JxYKYEQMPsEL+6&ED%>~*$(drcv zKNb2PG&6Z*?C5eWouiMPCh%Ym;-!Nm`|bg+;I%9HC6*vU4&;8~-jASu=0=kGrZN=D z4^c;-TJAQ)7XQa?>N8mIn{G>t6nF|<=^I8q%(O6in59oKJL1*16i1EhCFQ;$F%U_& zdfClXc!|0GWK>dendNwJW;!x&)-a2tw%G5DK25Uf`k=_)IdY#$r??YN1*J+(%p{@8 z%()~C&;YiB5AcF#utreUv*i&-+lJ&ba*e@PfKG_G)m78v8SN+KDL87Z8aBsKYKusR zJXPX;!+l}CS@0?mZ?dz?$IX&@@3OIIwNl`=^nUvjm?9i<9br_qeZQ^&sm7zCDMmK| zQSj(*ymu(&DZuG8ttFiOgark!Kv(bmW?z`?CRN z1K*#xY0~Ea@h7W;1;XCkUm~e_fc-a_q@i=eD=(`}&7hy1^{e?fUxhpVqgi z);_VxjC*XQ%jFjW4GK+}n&G86T)2yE&Vsx51uXC{W#Cl~r!D?{H>`T=_c{PnypZWql4O|@Lg5*sT zm@)UaeuhDmyu#QPE#JZ@2;^MuAXGmt&Z0wJoU#g~ zgaFfCw96M8IQPa5E2yxIn4ABPbM}wXhH_?Q|7NULfW^(M*xW_6DDNsLA$+yyzum>$ zG7hVSMKtx51jD)9YU;5nDyI7+Q4^21zE$Wh@b0mo0QP!T=$f6T{M@}gIN>VX9h^X9 zwnd;!UyZEe>FvpH62bh0>-m>e<1YS~wmrYQy4G$RL;#789defu?ckATcoF@gv^~eSaCz8sOA~&?*LFJc0)5fnZ45ng<{BY!v|;k%XJ%*z z^ZA>^N4+d|@eYpR)^GA{*1w6a=9wMjCn)OUmKrxIckPvUb=p`A@5SuE+!3!H2#a<= zznp$Si8azwP*kux5Pa%I1wscGOHj}mN(=v0Bip)4T6pKE3N)fAAkW z@O)eW_c(*)=i3c7hHyGYyuE0#RNH?(5Ee`qTk)ML`%*JM(XD{i6Bie5Muhh_+DGHC z>At@%s-Mq;Ge)Ell8p;k1=cuKVb`^>CwG_G{^)4dI>~58$+HX9ekw#cnFf7yunJ7L zvBfs43hoYy_Ie~;ot!j9o1&@6b_{q^^1k@6A)NVU;{j_78OK7Ol3EvhW${R#fN}&7 zAW`s@8Q!-wGqxkyrWd%w9klwNkL4kj0t&jI5&4vl7ZSuS@wCO2I+bb(;1&N+2{4BW%K zrmgnlASlRc4gSekrPchcu3#-l$zSeAE`Y{C4YeUzVZJ2&40<`ZjACLkjUkE(J|*sD z(uO^tpe+qSGm}-r<`9lZ1~wF-YMM4p3#<8*>`M-JmodK(MJ-}lCRzJSTQqH`7ws%v7P)6LHxXQ&Mcdo7reCOP;)Y3 z2_iwQqT5qxgG@RpP>agH6Z@jiDeNdEc1V`D057Wn z)A+8n34~N)M3!5ZOdky{Wk{~(L-G=+U@7PwTG4dlEt0JTn!gsrzoREJ z_E7wyS`|v{kvs86(4_ABCfc36JxqF8=7QCg-?$kIRN5T}GyKeyvpMAZ!=G`_#Fsl$ zOY>h73fG{>S{w{R#MfoHR%AoE8BwCG;a~*+MI(vphQfP-JzA|70*Tx6hky4I{1r(U zGWdQlzdHfINdhj1mV5Y*2$XsHPUm|_N8W@MT3%*8>ER~}+P=6BBx4e63KByZvku=2 zCB8|ptC#duU!Xe#8X-EbPbzBw@I|b5MLCqg6cEHjQbB*eT>F#zb0)G^Vg=-)B6{HgHtSvD^$ByGhKe}kTYtt=Yq%MR+hp`;CB%n>07u+Ml{$X_`Gn24)a z7dE+a11otD%k@7x1EcQs)~5ANNXMd8Qn*QN{{z5u?t`fzS&B~Oq0 zSfKVKLATLEJ3n13St-A-=DqI^yp^~t7MM6X9)DJ+cd!Wb=_g&z z(r!7DwF=JaA95m3oy;3Xv{ftFn#OL}&=U*_-|9d9tFcCb+W;@b`z*Y0PHXAP8Shu~ z>Zx0g7UyY(_QJTtbMw9%Hsx&={a$4hX07vRfRnJuE@j8g!J8xqDJ2}P zMl0Z+w(k<+s|^->R|m`}sSbFXy?0wcxYgmSwod`UA_oty8M|yAv|H*)OXWBf<8fFj z6^N)A;g#>BgWZ>ZCJnYR1Q6LBbw9HgyKJS!`R_J5ktBN3Exq&8`-^j5TRmV3B(%Cn zy8>YGSeYHd?C-v6v96V}rooEPwL3RID5ywkUNDo+e}cDYk|s>E!FSC-W}Bur?nQ zr@W)b7yxV!w5g4BkMLvz;V|2GlVhQ)sh=sllC`kNi}| zw%EebMW8j;b_uhEg8swc>qkUQIH$1WdOczvV7_4R=GpM09 zJy2s>071fG3rWi}B+8Ruu>p%upMf-ytUC|3B{=FAX)5(Tck6a{*>^!tYx|Z!9cuBi z>j!EQW>%iGf-#g-t=zxU zL7vcBm{)`@KtY)GhL#Bkb+yW+Aovr<^pDEy2g3Lr9XTi$Pqd%!<={}fV+aP*!}dki z2?4r6bw3-y{epAP(01G&1u;aFSvs|1B!uy9nSQmm&;8;C?kU~g7<|i8d1iS@G&(BU zD0KUAwtT~~l<;MWdi)t}kroz$C%Iyb1z=3MJ*3%qRUTazc)9#vMsufI02`Say)9~w z5np&aDf9YbEVU5Px13lA*Qum0>uyvYx@Q}9ph*d~r1V(-nv`-JQz*O4I2Tr-NtQh6 zPA^-mBt{dv>e!cJgr!0~Wy0;4p5?me(U4T8ZcLYbPTHOuH{(&eKH8ST=1`PwvI~7b z)Wg4QPFuB&Jpk-dm02QqYXn+xsE|L6OBUnbQQ7h9p=W$yD%x0+QZj+z&+3J#`x~}Y z@;2WF^S+S$@huoULq^{eEr4pK*{(C$SPw(y8OyaT4_&^Y9W0pCtH0a`qGHwVO$tvb zt3=F74o}^{MT;^L=F?(tBH^1ABIO_|YnbhrRy2Z7m(QzB_uSqjRdF!bPIi5q2%-E5 zWO%bpY36g5>_(SRK)KHiB??4e|Nmw(Vo5pn@?@oY3wU42#wk4#J4m^E>bY}v&|qfd zR<+9alX1(OBPDH7dtaDKVO{?+j}SXKJ%?@XeMIX|B-2j>v$K0c~a zo-Ptd;EcmJEFUmr4DDv(8U0}{zhYebtXqxl+P~fSJ~aE%iy0%n+3}O*pLgybo$xW} zv3dx?g|nbKBS|N7`uBc$W%yTx=$&P&O1y<*)Ta;hYWLtiD!S<CIM;6`&Ugdi~_53ca!D0P)N7Y3?dEaAgrcVmiy((H*=Yhsjc8 zM?97#=j*Pi`Kh_ikEJv)FkAN_@}JFC7f>GYAriW;oa(}Fvk8pDA5V@$M2~hhclcms zvyJjQAapFwR~X}8eU_YL?FgjoP31iF(SHBlhZF$NEnRIr`pM_-*XTJ~ErB8@`wDoZ z`~Al)j?=p$Ev_@R+LJjSEm=oFjMl?rna21eAseb@zjf2AfgeS?)WLUp=OodIu?(?a zGmGU)7-hB9V2-j``6k*BPJ&}*)+MD8r?i@X8FNViME4AhI-B+YSiVn9&ehl6BmmhUHVOI~?N88B1Nc$)43k#ctDw zlLHy)HX+Tuw~bveaP_2fC;K+I%0m$CIXgAR8`Pk8-^81LT0fYml5bDCt zQi1oGTrwFw1yXz7`1)EaI2>q^Ha&JPcg*wt#uty-{8p}s<*}yZXdAGwgnzMjJ>OK` zwBO1)O62n{v(4aP5rS$PGIrQw_*QSS`AMMC+P{ZF{|CPc4*t!W=wjmE2QI`=($h8me zKc4fcwR`UB&6NR^F0C;cM{?X8l(sw22HBauAM)r23Q~E-)a#Q&R~HN$BNH{}Wo^Sl z^4(B&&;c)PACky&Ep>7RHG}rM*7`xGlDOf%J@l;1?Ov=UMFCqUXG;3qrER)dHF6k+ zUY@I(oZtKEp}DVFFvPYSW^&?nHB-VuurO5cDF5_tR3!+ma0$}8o=pEuPnxywCdZ8r zDY7ghhKrR>&c$)BmudOG+~OJR=@GU<;>Y)Y|I1~1whQeCo04&35$S^^=ReMyM~laK zu)li%2RXGLjDF;U@q$5~C#Ev{p(923=K;^CX%Bs9vlo6{uNxLYY5DQ5 zKi?SWc|O-IzMz(@U1S~))Oe9Ly5mQ z_<+MHjTv}j+b;eEJH%XDso7u`nDdpp?IQ(k>d2yF^8&*VD-)U~0;;vxrGnu}+Oib} zCvks7RbNaGt+W>BZ;!9EVPqR`$HruSpa*B-c3)wE))H&MTns|B|uy|DkYr~Gl} zwBoZ@5{JS<^Wc#ij}R_w+}s6eW5&tQJ<`7F2f8IEtGCogpQU-b*acgggtMz%$kB@^m~DjGt^y zzPp0iTNZLh;gMp<0UEm2JzQ98S=uNCMOC=Z;7H7jSc4*EN?6lsX!QJM)ll=L={yBs(5r;$ zt{JK~1shestk8Fr(Rhp~RIk@Q3-oG37(uowX%_r^!fkH?AR*LmKbn4MX%)<#aKBXP z{do%f#QxNN1PupiJwGjVwAw8G$&G;tAu!>(@ce{*c0u>&81O=3D8vC&%CqBdTCxS@ z_7+ZfkA4yM2)tk0^h36WiYtA3Hz_b&V~B;LrGZaVu6(gs1+0hS-H3^&aiH3tQYm41 zSrCPef7)Kho0}63GaQMCwpdmYTjniX7nQJd)*)e6Y@^1ay~r#lu2U0a;UQpfa67V6 zS^-mNR}|3UT8)b&PF@T&JP-G8^^&l#akT=J4^`cDn%Y3EkLGfV_68VH7H2URceW7a znor)jvYwwF3Oy}I6u`z18mOb#+d6qC-^5mjNmu>Hw_I{t?PNDBa5{8jvapXYOw7*I zsA=nmhyxieW`p}#>p%-_La^Y{(p2PKN@=-E6_CnkIMHF6i5ukGM4t;g0~EWGSq zb4ZnN)&a%^V~|vKh)vcIPh(6d`WK=MX*8hFFTHiSn|oDY}y-3&!Y}g zx#TXlkQE(agLlo!MB=+GZ@9`Ai_CGVL()r3h1vA>&m7FDD0JdC}j7tw0@HB%D@Q^A*1QjK{c7=?+al z)YW3p8QYxF3u`RXZS-8Xz;(d?_$Quk_P*R-p7!{e!rKa%jE3crpws&vZf9;N? zRb0T{DCYs#qlxWo3UaL7CdXr({nLhEgP%fyBfE-GsaK&f(xyity2$~@(FTSWp<*M? z`oY|Ih}?)EP6(q|l<9}3Ln^u4Nj5h9*Kk8V;@2VqT@aG~(Iz4|)8|OV6A)m)FgBfB z|uAEIlSP z%P$6&2Aa;Xd29*Q0H^jQp2ZDwu^0P@*KUz&<)Ulp#?_UzAXARY{`DE3Cym+H7KE5k zofS34bdR$8V6zJq>cQALr0i;h+XB0aV>*cKx>A~r2-Nh|l;TXM;iG2GLD=97tn8WB z)rowuxz}=cLskT>{M`v$jHRdWB^K#k8J@8>^T+xF4A;7dIgko8?$RH|*j&rq*(eqse~I&(ghxX( zzc=xZZf1v``MXzUSQ#4C^K^Is5-Xo2$E7i=0ph?Ou+m8dsTn;luwJ0Avb&eVJsKm+_=aP8J*UDL2^|;$3vT$F0bV3=$%;6gE zuw#gLNCTKf@)~5Jems;s*;#>pm=!Q&??R^hN$s>@FnOVbgs5R0V zl2&Me#hF(2Xc(Lpr)(4XeK-QaoMr^|1xKPQ9U@MMMy!f;*#dA84>I<9SoXHIvc%V* zG!QOM;8>|ax}^aGG>JV|%pYr|)tH70>a!@$spf4}V(M0>1W}ez;afU>8G(=ufdG}8 z=(N2TOm%eS_x0EP)ZN(|ADU(>j=IVhLBbLdf8ufZ85-K5xfDcRB!wxiRu*VVEaM=BPxMmb&_3QT){ z<4&(m0pIBL)UArzbz55{AKZk)_2NW2Fu{iKzYpMo&$R(mfqpfcWviSC(Be`@-VyfE zZeopu=I0ng*lRz&b!p-uvkCdiMQVC36qa*S%suRk=UwX_tN*wK{!0NRdIVo|1K8RW z8wmWzHV0lZy2UKFOdybHEG$&-7BJ5Y*WdM!5wkToO=CV~i_AtWouQ8`r*W%}u{d#P zw&EbU35F!ooX+jFLAp^>H*!-HA8AC!w4DX{Fx&p>L-mxaE-V~Sdypa|3=_yrGnN{L zN|VHrEp`D$TMh&6($$|eZQ7&oFiwCAnJ{d7e~gYclG%Mvvl6~{o4)Y2 zVIJRv3O4bO80|TEaUsSroAgd4uV^so_AUO=`QpU$>xs!naBK?|u5qesp<^Kk>wy}bA#U@D#&1Pz8ml}~ef(h`n3+uJh36GrF^ zQ(%qHY7;^wD9y+1>e1Z9nX-n&yEV*laKhBT4o?of>Cv44F3YSd$oyp%P<&}r$}%Bw zJKc0Su&g?I5{EvXjJz#R%AO^m$IzyRX8FTj=H&-5)knK_KKXp(3>Xm)sh2A;yeQq^ zJlvhTtkd!C6;BccyM&0RF}rWMKWEB4H)wjA7xOWgSDVzCPfrzPTNt`(Giv7fBf7WU3c&O7gaL^M|ZON{dZ9?C+#*^ zi5JT53wpU^SS2fD9u5Y`lDG>uPH-=Rt>5oI{W{|&W)BVw1nFCyx8j~O9!=Uge!e%| zMq`{ft&iXE0he|fiAN_wV?**3*%rNgJb2f65J?>@=Q4?$F-X$_hJc_EhtV!sh~2q$1xf5QDR)Dp;avkMgDNf_+I|! zqk5TzIDKpRTDbVS70~ht+dP4=ouH$rJNL}E=SE1y%_Fld=W}rT+qBUm5rQ!;{}Dca zcD4|@1-z%cmXz1tM$lPuIyi&Cr{Z=uz^dGN#BC$omu^4exXJuY)0%;$n!u>eKyGnF z2A@{3^~THbuO5eNejnQm#Z%5_$T*jUxA@R)&e0D<$*_L@rXNgalL!R_!RsN$hmgU3 zQ#h5+0I1NRjDk0#ZZ|~`fp5opJ_jeFEP>;2V7Ac?($8Kx8@A1P6>f|IGdj#v&J^OF z<+IR65gM&Nir4r(W;HRF9Kjz$ZU(yqH=dRYjIfE2_zdt<8&dlJ4neF3N@F)PC0Kdr z5e=>QTR4H-I478S7A*}dRqbAq!<6}yhmyZaNFMA{PIo%+4^J(ufP3(RG5YSkgSTG$ z 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 ^VGA+7QR>12R+K|2_u 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