From f98edd4a9c2921f629827fe2384654a332eb6f27 Mon Sep 17 00:00:00 2001 From: zainalabidin10 Date: Fri, 20 Jun 2025 11:17:28 +0700 Subject: [PATCH] first commit --- code_alat/code_alat.ino | 118 + lstm_prediction (1).sql | 260 + lstm_prediction/.editorconfig | 18 + lstm_prediction/.env.example | 59 + lstm_prediction/.gitattributes | 11 + lstm_prediction/.gitignore | 19 + lstm_prediction/README.md | 66 + .../Commands/SendSensorDataToFlask.php | 64 + lstm_prediction/app/Console/Kernel.php | 28 + lstm_prediction/app/Exceptions/Handler.php | 30 + .../Auth/ConfirmPasswordController.php | 39 + .../Auth/ForgotPasswordController.php | 22 + .../Http/Controllers/Auth/LoginController.php | 40 + .../Controllers/Auth/RegisterController.php | 72 + .../Auth/ResetPasswordController.php | 29 + .../Auth/VerificationController.php | 41 + .../app/Http/Controllers/AuthController.php | 36 + .../app/Http/Controllers/Controller.php | 12 + .../app/Http/Controllers/HomeController.php | 32 + .../Http/Controllers/PredictionController.php | 42 + .../app/Http/Controllers/SensorController.php | 132 + lstm_prediction/app/Http/Kernel.php | 75 + .../app/Http/Middleware/Authenticate.php | 17 + .../app/Http/Middleware/CorsMiddleware.php | 33 + .../app/Http/Middleware/EncryptCookies.php | 17 + .../PreventRequestsDuringMaintenance.php | 17 + .../Middleware/RedirectIfAuthenticated.php | 30 + .../app/Http/Middleware/TrimStrings.php | 19 + .../app/Http/Middleware/TrustHosts.php | 20 + .../app/Http/Middleware/TrustProxies.php | 28 + .../app/Http/Middleware/ValidateSignature.php | 22 + .../app/Http/Middleware/VerifyCsrfToken.php | 18 + lstm_prediction/app/Models/Prediction.php | 19 + lstm_prediction/app/Models/SensorData.php | 19 + lstm_prediction/app/Models/User.php | 45 + .../app/Providers/AppServiceProvider.php | 24 + .../app/Providers/AuthServiceProvider.php | 26 + .../Providers/BroadcastServiceProvider.php | 19 + .../app/Providers/EventServiceProvider.php | 38 + .../app/Providers/RouteServiceProvider.php | 40 + lstm_prediction/artisan | 53 + lstm_prediction/bootstrap/app.php | 55 + lstm_prediction/bootstrap/cache/.gitignore | 2 + lstm_prediction/composer.json | 67 + lstm_prediction/composer.lock | 8200 +++++++++++++++++ lstm_prediction/config/app.php | 188 + lstm_prediction/config/auth.php | 115 + lstm_prediction/config/broadcasting.php | 71 + lstm_prediction/config/cache.php | 111 + lstm_prediction/config/cors.php | 34 + lstm_prediction/config/database.php | 151 + lstm_prediction/config/filesystems.php | 76 + lstm_prediction/config/hashing.php | 54 + lstm_prediction/config/logging.php | 131 + lstm_prediction/config/mail.php | 134 + lstm_prediction/config/queue.php | 109 + lstm_prediction/config/sanctum.php | 83 + lstm_prediction/config/services.php | 34 + lstm_prediction/config/session.php | 214 + lstm_prediction/config/view.php | 36 + lstm_prediction/database/.gitignore | 1 + .../database/factories/UserFactory.php | 44 + .../2014_10_12_000000_create_users_table.php | 32 + ...000_create_password_reset_tokens_table.php | 28 + ...12_100000_create_password_resets_table.php | 32 + ..._08_19_000000_create_failed_jobs_table.php | 32 + ...01_create_personal_access_tokens_table.php | 33 + ..._02_16_115226_create_sensor_data_table.php | 23 + ..._02_18_153726_create_predictions_table.php | 25 + .../database/seeders/DatabaseSeeder.php | 22 + lstm_prediction/package-lock.json | 1758 ++++ lstm_prediction/package.json | 16 + lstm_prediction/phpunit.xml | 32 + lstm_prediction/public/.htaccess | 21 + lstm_prediction/public/assets/css/style.css | 104 + lstm_prediction/public/assets/js/dashboard.js | 0 lstm_prediction/public/favicon.ico | 0 lstm_prediction/public/index.php | 55 + lstm_prediction/public/robots.txt | 2 + lstm_prediction/resources/css/app.css | 11 + lstm_prediction/resources/js/app.js | 1 + lstm_prediction/resources/js/bootstrap.js | 34 + .../resources/sass/_variables.scss | 7 + lstm_prediction/resources/sass/app.scss | 9 + .../resources/views/auth/login.blade.php | 40 + .../views/auth/passwords/confirm.blade.php | 49 + .../views/auth/passwords/email.blade.php | 47 + .../views/auth/passwords/reset.blade.php | 65 + .../resources/views/auth/register.blade.php | 62 + .../resources/views/auth/verify.blade.php | 28 + .../resources/views/dashboard.blade.php | 167 + .../resources/views/data.blade.php | 72 + .../resources/views/home.blade.php | 23 + .../resources/views/layouts/app.blade.php | 30 + .../resources/views/layouts/main.blade.php | 34 + .../resources/views/layouts/navbar.blade.php | 71 + .../resources/views/welcome.blade.php | 133 + lstm_prediction/routes/api.php | 70 + lstm_prediction/routes/channels.php | 18 + lstm_prediction/routes/console.php | 19 + lstm_prediction/routes/web.php | 39 + lstm_prediction/storage/app/.gitignore | 3 + lstm_prediction/storage/app/public/.gitignore | 2 + lstm_prediction/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 + lstm_prediction/storage/logs/.gitignore | 2 + lstm_prediction/tests/CreatesApplication.php | 21 + lstm_prediction/tests/Feature/ExampleTest.php | 19 + lstm_prediction/tests/TestCase.php | 10 + lstm_prediction/tests/Unit/ExampleTest.php | 16 + lstm_prediction/vite.config.js | 14 + model/Dataset.csv | 1738 ++++ model/app.py | 95 + model/lstm_model3.h5 | Bin 0 -> 427792 bytes model/model.py | 172 + model/scaler.pkl | Bin 0 -> 743 bytes 120 files changed, 17015 insertions(+) create mode 100644 code_alat/code_alat.ino create mode 100644 lstm_prediction (1).sql create mode 100644 lstm_prediction/.editorconfig create mode 100644 lstm_prediction/.env.example create mode 100644 lstm_prediction/.gitattributes create mode 100644 lstm_prediction/.gitignore create mode 100644 lstm_prediction/README.md create mode 100644 lstm_prediction/app/Console/Commands/SendSensorDataToFlask.php create mode 100644 lstm_prediction/app/Console/Kernel.php create mode 100644 lstm_prediction/app/Exceptions/Handler.php create mode 100644 lstm_prediction/app/Http/Controllers/Auth/ConfirmPasswordController.php create mode 100644 lstm_prediction/app/Http/Controllers/Auth/ForgotPasswordController.php create mode 100644 lstm_prediction/app/Http/Controllers/Auth/LoginController.php create mode 100644 lstm_prediction/app/Http/Controllers/Auth/RegisterController.php create mode 100644 lstm_prediction/app/Http/Controllers/Auth/ResetPasswordController.php create mode 100644 lstm_prediction/app/Http/Controllers/Auth/VerificationController.php create mode 100644 lstm_prediction/app/Http/Controllers/AuthController.php create mode 100644 lstm_prediction/app/Http/Controllers/Controller.php create mode 100644 lstm_prediction/app/Http/Controllers/HomeController.php create mode 100644 lstm_prediction/app/Http/Controllers/PredictionController.php create mode 100644 lstm_prediction/app/Http/Controllers/SensorController.php create mode 100644 lstm_prediction/app/Http/Kernel.php create mode 100644 lstm_prediction/app/Http/Middleware/Authenticate.php create mode 100644 lstm_prediction/app/Http/Middleware/CorsMiddleware.php create mode 100644 lstm_prediction/app/Http/Middleware/EncryptCookies.php create mode 100644 lstm_prediction/app/Http/Middleware/PreventRequestsDuringMaintenance.php create mode 100644 lstm_prediction/app/Http/Middleware/RedirectIfAuthenticated.php create mode 100644 lstm_prediction/app/Http/Middleware/TrimStrings.php create mode 100644 lstm_prediction/app/Http/Middleware/TrustHosts.php create mode 100644 lstm_prediction/app/Http/Middleware/TrustProxies.php create mode 100644 lstm_prediction/app/Http/Middleware/ValidateSignature.php create mode 100644 lstm_prediction/app/Http/Middleware/VerifyCsrfToken.php create mode 100644 lstm_prediction/app/Models/Prediction.php create mode 100644 lstm_prediction/app/Models/SensorData.php create mode 100644 lstm_prediction/app/Models/User.php create mode 100644 lstm_prediction/app/Providers/AppServiceProvider.php create mode 100644 lstm_prediction/app/Providers/AuthServiceProvider.php create mode 100644 lstm_prediction/app/Providers/BroadcastServiceProvider.php create mode 100644 lstm_prediction/app/Providers/EventServiceProvider.php create mode 100644 lstm_prediction/app/Providers/RouteServiceProvider.php create mode 100644 lstm_prediction/artisan create mode 100644 lstm_prediction/bootstrap/app.php create mode 100644 lstm_prediction/bootstrap/cache/.gitignore create mode 100644 lstm_prediction/composer.json create mode 100644 lstm_prediction/composer.lock create mode 100644 lstm_prediction/config/app.php create mode 100644 lstm_prediction/config/auth.php create mode 100644 lstm_prediction/config/broadcasting.php create mode 100644 lstm_prediction/config/cache.php create mode 100644 lstm_prediction/config/cors.php create mode 100644 lstm_prediction/config/database.php create mode 100644 lstm_prediction/config/filesystems.php create mode 100644 lstm_prediction/config/hashing.php create mode 100644 lstm_prediction/config/logging.php create mode 100644 lstm_prediction/config/mail.php create mode 100644 lstm_prediction/config/queue.php create mode 100644 lstm_prediction/config/sanctum.php create mode 100644 lstm_prediction/config/services.php create mode 100644 lstm_prediction/config/session.php create mode 100644 lstm_prediction/config/view.php create mode 100644 lstm_prediction/database/.gitignore create mode 100644 lstm_prediction/database/factories/UserFactory.php create mode 100644 lstm_prediction/database/migrations/2014_10_12_000000_create_users_table.php create mode 100644 lstm_prediction/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php create mode 100644 lstm_prediction/database/migrations/2014_10_12_100000_create_password_resets_table.php create mode 100644 lstm_prediction/database/migrations/2019_08_19_000000_create_failed_jobs_table.php create mode 100644 lstm_prediction/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php create mode 100644 lstm_prediction/database/migrations/2025_02_16_115226_create_sensor_data_table.php create mode 100644 lstm_prediction/database/migrations/2025_02_18_153726_create_predictions_table.php create mode 100644 lstm_prediction/database/seeders/DatabaseSeeder.php create mode 100644 lstm_prediction/package-lock.json create mode 100644 lstm_prediction/package.json create mode 100644 lstm_prediction/phpunit.xml create mode 100644 lstm_prediction/public/.htaccess create mode 100644 lstm_prediction/public/assets/css/style.css create mode 100644 lstm_prediction/public/assets/js/dashboard.js create mode 100644 lstm_prediction/public/favicon.ico create mode 100644 lstm_prediction/public/index.php create mode 100644 lstm_prediction/public/robots.txt create mode 100644 lstm_prediction/resources/css/app.css create mode 100644 lstm_prediction/resources/js/app.js create mode 100644 lstm_prediction/resources/js/bootstrap.js create mode 100644 lstm_prediction/resources/sass/_variables.scss create mode 100644 lstm_prediction/resources/sass/app.scss create mode 100644 lstm_prediction/resources/views/auth/login.blade.php create mode 100644 lstm_prediction/resources/views/auth/passwords/confirm.blade.php create mode 100644 lstm_prediction/resources/views/auth/passwords/email.blade.php create mode 100644 lstm_prediction/resources/views/auth/passwords/reset.blade.php create mode 100644 lstm_prediction/resources/views/auth/register.blade.php create mode 100644 lstm_prediction/resources/views/auth/verify.blade.php create mode 100644 lstm_prediction/resources/views/dashboard.blade.php create mode 100644 lstm_prediction/resources/views/data.blade.php create mode 100644 lstm_prediction/resources/views/home.blade.php create mode 100644 lstm_prediction/resources/views/layouts/app.blade.php create mode 100644 lstm_prediction/resources/views/layouts/main.blade.php create mode 100644 lstm_prediction/resources/views/layouts/navbar.blade.php create mode 100644 lstm_prediction/resources/views/welcome.blade.php create mode 100644 lstm_prediction/routes/api.php create mode 100644 lstm_prediction/routes/channels.php create mode 100644 lstm_prediction/routes/console.php create mode 100644 lstm_prediction/routes/web.php create mode 100644 lstm_prediction/storage/app/.gitignore create mode 100644 lstm_prediction/storage/app/public/.gitignore create mode 100644 lstm_prediction/storage/framework/.gitignore create mode 100644 lstm_prediction/storage/framework/cache/.gitignore create mode 100644 lstm_prediction/storage/framework/cache/data/.gitignore create mode 100644 lstm_prediction/storage/framework/sessions/.gitignore create mode 100644 lstm_prediction/storage/framework/testing/.gitignore create mode 100644 lstm_prediction/storage/framework/views/.gitignore create mode 100644 lstm_prediction/storage/logs/.gitignore create mode 100644 lstm_prediction/tests/CreatesApplication.php create mode 100644 lstm_prediction/tests/Feature/ExampleTest.php create mode 100644 lstm_prediction/tests/TestCase.php create mode 100644 lstm_prediction/tests/Unit/ExampleTest.php create mode 100644 lstm_prediction/vite.config.js create mode 100644 model/Dataset.csv create mode 100644 model/app.py create mode 100644 model/lstm_model3.h5 create mode 100644 model/model.py create mode 100644 model/scaler.pkl diff --git a/code_alat/code_alat.ino b/code_alat/code_alat.ino new file mode 100644 index 0000000..c7cb4ff --- /dev/null +++ b/code_alat/code_alat.ino @@ -0,0 +1,118 @@ +#include +#include +#include +#include + +#define DHT22_PIN D5 // Pin data DHT22 di ESP8266 +#define DHTTYPE DHT22 + +DHT dht(DHT22_PIN, DHTTYPE); + +// šŸ”¹ Ganti dengan nama dan password WiFi Anda +const char* ssid = "Z"; +const char* password = "zainal123"; + +// šŸ”¹ URL API Laravel +const char* SERVER_NAME = "http://192.168.38.96:8000/api/sensor"; //ganti sesuai dengan ip laptop + +// šŸ”¹ Interval pengiriman data (5 menit) +const long interval = 300000; // 300.000 ms = 5 menit +unsigned long lastMillis = 0; + +void setup() { + Serial.begin(115200); + Serial.println("šŸš€ ESP8266 Mulai..."); + + dht.begin(); + Serial.println("āœ… DHT22 Siap"); + + connectToWiFi(); +} + +void loop() { + if (WiFi.status() != WL_CONNECTED) { + Serial.println("⚠ WiFi Terputus! Mencoba Koneksi Ulang..."); + connectToWiFi(); + } + + unsigned long currentMillis = millis(); + if (currentMillis - lastMillis >= interval) { + lastMillis = currentMillis; + upload_temperature(); + } + + delay(1000); // šŸ”¹ Tambahkan delay agar tidak looping terlalu cepat +} + +// šŸ”¹ Fungsi Koneksi WiFi (Hanya Cetak IP Sekali) +void connectToWiFi() { + Serial.print("šŸ”— Menghubungkan ke WiFi..."); + WiFi.begin(ssid, password); + + unsigned long startAttemptTime = millis(); + while (WiFi.status() != WL_CONNECTED && millis() - startAttemptTime < 10000) { // Timeout 10 detik + delay(500); + Serial.print("."); + } + + if (WiFi.status() == WL_CONNECTED) { + Serial.println("\nāœ… Terhubung ke WiFi! IP: " + WiFi.localIP().toString()); + } else { + Serial.println("\nāŒ Gagal Terhubung ke WiFi! Akan Dicoba Lagi Nanti."); + } +} + +// šŸ”¹ Fungsi Mengirim Data Sensor ke Laravel +void upload_temperature() { + float suhu, kelembaban; + int retryCount = 0; + bool success = false; + + while (retryCount < 3) { // šŸ”¹ Coba baca sensor maksimal 3 kali + suhu = dht.readTemperature() - 0.2; + kelembaban = dht.readHumidity() + 3.0; + + if (!isnan(suhu) && !isnan(kelembaban)) { + success = true; + break; + } + + Serial.println(F("⚠ Gagal membaca dari DHT22! Coba lagi...")); + delay(1000); + retryCount++; + } + + if (!success) { + Serial.println(F("āŒ Gagal membaca dari DHT22 setelah 3 percobaan!")); + return; + } + + String jsonPayload = "{\"temperature\":" + String(suhu, 2) + ", \"humidity\":" + String(kelembaban, 2) + "}"; + Serial.println("šŸ“¤ Mengirim Data: " + jsonPayload); + + WiFiClient client; + HTTPClient http; + http.setTimeout(5000); // šŸ”¹ Timeout HTTP request agar lebih stabil + + int httpResponseCode; + int maxRetries = 3; // šŸ”¹ Coba maksimal 3 kali jika gagal + for (int i = 0; i < maxRetries; i++) { + http.begin(client, SERVER_NAME); + http.addHeader("Content-Type", "application/json"); + + httpResponseCode = http.POST(jsonPayload); + Serial.print("šŸ“” HTTP Response Code: "); + Serial.println(httpResponseCode); + + http.end(); // šŸ”¹ Hindari masalah memori + + if (httpResponseCode > 0) { // šŸ”¹ Jika sukses, keluar dari loop + Serial.println("āœ… Data berhasil dikirim!"); + break; + } + + Serial.println("āŒ Gagal mengirim data! Coba lagi dalam 2 detik..."); + delay(2000); + } + http.end(); +} diff --git a/lstm_prediction (1).sql b/lstm_prediction (1).sql new file mode 100644 index 0000000..d5b122d --- /dev/null +++ b/lstm_prediction (1).sql @@ -0,0 +1,260 @@ +-- phpMyAdmin SQL Dump +-- version 5.2.0 +-- https://www.phpmyadmin.net/ +-- +-- Host: localhost:3306 +-- Generation Time: Mar 19, 2025 at 01:00 PM +-- Server version: 8.0.30 +-- PHP Version: 8.1.10 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +START TRANSACTION; +SET time_zone = "+00:00"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; + +-- +-- Database: `lstm_prediction` +-- + +-- -------------------------------------------------------- + +-- +-- Table structure for table `failed_jobs` +-- + +CREATE TABLE `failed_jobs` ( + `id` bigint UNSIGNED NOT NULL, + `uuid` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `connection` text COLLATE utf8mb4_unicode_ci NOT NULL, + `queue` text COLLATE utf8mb4_unicode_ci NOT NULL, + `payload` longtext COLLATE utf8mb4_unicode_ci NOT NULL, + `exception` longtext COLLATE utf8mb4_unicode_ci NOT NULL, + `failed_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `migrations` +-- + +CREATE TABLE `migrations` ( + `id` int UNSIGNED NOT NULL, + `migration` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `batch` int NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `migrations` +-- + +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES +(1, '2014_10_12_000000_create_users_table', 1), +(2, '2014_10_12_100000_create_password_reset_tokens_table', 1), +(3, '2014_10_12_100000_create_password_resets_table', 1), +(4, '2019_08_19_000000_create_failed_jobs_table', 1), +(5, '2019_12_14_000001_create_personal_access_tokens_table', 1), +(6, '2025_02_16_115226_create_sensor_data_table', 1), +(7, '2025_02_18_153726_create_predictions_table', 1); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `password_resets` +-- + +CREATE TABLE `password_resets` ( + `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `token` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `password_reset_tokens` +-- + +CREATE TABLE `password_reset_tokens` ( + `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `token` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Dumping data for table `password_reset_tokens` +-- + +INSERT INTO `password_reset_tokens` (`email`, `token`, `created_at`) VALUES +('mz4191384@gmail.com', '$2y$12$0OMpbkIgXmr4rhK1dYUmnO.bX1S0rMyZ4jCkV5l93yrucCrgGx8/C', '2025-03-14 06:27:49'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `personal_access_tokens` +-- + +CREATE TABLE `personal_access_tokens` ( + `id` bigint UNSIGNED NOT NULL, + `tokenable_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `tokenable_id` bigint UNSIGNED NOT NULL, + `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `token` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, + `abilities` text COLLATE utf8mb4_unicode_ci, + `last_used_at` timestamp NULL DEFAULT NULL, + `expires_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `predictions` +-- + +CREATE TABLE `predictions` ( + `id` bigint UNSIGNED NOT NULL, + `predicted_suhu` double(8,2) NOT NULL, + `predicted_kelembaban` double(8,2) NOT NULL, + `prediction_datetime` timestamp NULL DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `sensor_data` +-- + +CREATE TABLE `sensor_data` ( + `id` bigint UNSIGNED NOT NULL, + `temperature` double(8,2) NOT NULL, + `humidity` double(8,2) NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `users` +-- + +CREATE TABLE `users` ( + `id` bigint UNSIGNED NOT NULL, + `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `email_verified_at` timestamp NULL DEFAULT NULL, + `password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Indexes for dumped tables +-- + +-- +-- Indexes for table `failed_jobs` +-- +ALTER TABLE `failed_jobs` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `failed_jobs_uuid_unique` (`uuid`); + +-- +-- Indexes for table `migrations` +-- +ALTER TABLE `migrations` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `password_resets` +-- +ALTER TABLE `password_resets` + ADD KEY `password_resets_email_index` (`email`); + +-- +-- Indexes for table `password_reset_tokens` +-- +ALTER TABLE `password_reset_tokens` + ADD PRIMARY KEY (`email`); + +-- +-- Indexes for table `personal_access_tokens` +-- +ALTER TABLE `personal_access_tokens` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `personal_access_tokens_token_unique` (`token`), + ADD KEY `personal_access_tokens_tokenable_type_tokenable_id_index` (`tokenable_type`,`tokenable_id`); + +-- +-- Indexes for table `predictions` +-- +ALTER TABLE `predictions` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `sensor_data` +-- +ALTER TABLE `sensor_data` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `users` +-- +ALTER TABLE `users` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `users_email_unique` (`email`); + +-- +-- AUTO_INCREMENT for dumped tables +-- + +-- +-- AUTO_INCREMENT for table `failed_jobs` +-- +ALTER TABLE `failed_jobs` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `migrations` +-- +ALTER TABLE `migrations` + MODIFY `id` int UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8; + +-- +-- AUTO_INCREMENT for table `personal_access_tokens` +-- +ALTER TABLE `personal_access_tokens` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `predictions` +-- +ALTER TABLE `predictions` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=496; + +-- +-- AUTO_INCREMENT for table `sensor_data` +-- +ALTER TABLE `sensor_data` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=872; + +-- +-- AUTO_INCREMENT for table `users` +-- +ALTER TABLE `users` + MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4; +COMMIT; + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/lstm_prediction/.editorconfig b/lstm_prediction/.editorconfig new file mode 100644 index 0000000..8f0de65 --- /dev/null +++ b/lstm_prediction/.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 + +[docker-compose.yml] +indent_size = 4 diff --git a/lstm_prediction/.env.example b/lstm_prediction/.env.example new file mode 100644 index 0000000..ea0665b --- /dev/null +++ b/lstm_prediction/.env.example @@ -0,0 +1,59 @@ +APP_NAME=Laravel +APP_ENV=local +APP_KEY= +APP_DEBUG=true +APP_URL=http://localhost + +LOG_CHANNEL=stack +LOG_DEPRECATIONS_CHANNEL=null +LOG_LEVEL=debug + +DB_CONNECTION=mysql +DB_HOST=127.0.0.1 +DB_PORT=3306 +DB_DATABASE=laravel +DB_USERNAME=root +DB_PASSWORD= + +BROADCAST_DRIVER=log +CACHE_DRIVER=file +FILESYSTEM_DISK=local +QUEUE_CONNECTION=sync +SESSION_DRIVER=file +SESSION_LIFETIME=120 + +MEMCACHED_HOST=127.0.0.1 + +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_MAILER=smtp +MAIL_HOST=mailpit +MAIL_PORT=1025 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_ENCRYPTION=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 + +PUSHER_APP_ID= +PUSHER_APP_KEY= +PUSHER_APP_SECRET= +PUSHER_HOST= +PUSHER_PORT=443 +PUSHER_SCHEME=https +PUSHER_APP_CLUSTER=mt1 + +VITE_APP_NAME="${APP_NAME}" +VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" +VITE_PUSHER_HOST="${PUSHER_HOST}" +VITE_PUSHER_PORT="${PUSHER_PORT}" +VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" +VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/lstm_prediction/.gitattributes b/lstm_prediction/.gitattributes new file mode 100644 index 0000000..fcb21d3 --- /dev/null +++ b/lstm_prediction/.gitattributes @@ -0,0 +1,11 @@ +* text=auto eol=lf + +*.blade.php diff=html +*.css diff=css +*.html diff=html +*.md diff=markdown +*.php diff=php + +/.github export-ignore +CHANGELOG.md export-ignore +.styleci.yml export-ignore diff --git a/lstm_prediction/.gitignore b/lstm_prediction/.gitignore new file mode 100644 index 0000000..7fe978f --- /dev/null +++ b/lstm_prediction/.gitignore @@ -0,0 +1,19 @@ +/.phpunit.cache +/node_modules +/public/build +/public/hot +/public/storage +/storage/*.key +/vendor +.env +.env.backup +.env.production +.phpunit.result.cache +Homestead.json +Homestead.yaml +auth.json +npm-debug.log +yarn-error.log +/.fleet +/.idea +/.vscode diff --git a/lstm_prediction/README.md b/lstm_prediction/README.md new file mode 100644 index 0000000..1a4c26b --- /dev/null +++ b/lstm_prediction/README.md @@ -0,0 +1,66 @@ +

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 may also try the [Laravel Bootcamp](https://bootcamp.laravel.com), where you will be guided through building a modern Laravel application from scratch. + +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)** +- **[WebReinvent](https://webreinvent.com/)** +- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** +- **[64 Robots](https://64robots.com)** +- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** +- **[Cyber-Duck](https://cyber-duck.co.uk)** +- **[DevSquad](https://devsquad.com/hire-laravel-developers)** +- **[Jump24](https://jump24.co.uk)** +- **[Redberry](https://redberry.international/laravel/)** +- **[Active Logic](https://activelogic.com)** +- **[byte5](https://byte5.de)** +- **[OP.GG](https://op.gg)** + +## 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/lstm_prediction/app/Console/Commands/SendSensorDataToFlask.php b/lstm_prediction/app/Console/Commands/SendSensorDataToFlask.php new file mode 100644 index 0000000..e47b48e --- /dev/null +++ b/lstm_prediction/app/Console/Commands/SendSensorDataToFlask.php @@ -0,0 +1,64 @@ +take(30)->get(); + + // Pastikan jumlah data cukup + if ($sensorData->count() < 30) { + Log::warning("āŒ Tidak cukup data (kurang dari 30). Pengiriman dibatalkan."); + return; + } + + // Format data untuk dikirim ke Flask + $dataToSend = [ + 'sensor_data' => $sensorData->map(fn($item) => [ + 'suhu' => $item->temperature, + 'kelembaban' => $item->humidity, + 'datetime' => $item->created_at ? Carbon::parse($item->created_at)->setTimezone('Asia/Jakarta')->format('Y-m-d H:i:s') + : null, + ])->toArray() + ]; + + Log::info("šŸš€ Mengirim data ke Flask..."); + + try { + // Kirim data ke Flask + $response = Http::timeout(30)->post('http://192.168.38.96:5000/predict', $dataToSend); //gunakan ip laptop + + if ($response->successful()) { + Log::info("āœ… Prediksi diterima dari Flask!"); + + $prediction = $response->json(); + + // Simpan hasil prediksi ke database + Prediction::create([ + 'predicted_suhu' => $prediction['predicted_suhu'], + 'predicted_kelembaban' => $prediction['predicted_kelembaban'], + 'prediction_datetime' => $prediction['prediction_datetime'], + ]); + + Log::info("āœ… Hasil prediksi berhasil disimpan ke database."); + } else { + Log::error("āŒ Flask menolak request: " . $response->body()); + } + } catch (\Exception $e) { + Log::error("āŒ Error mengirim data ke Flask: " . $e->getMessage()); + } + } +} diff --git a/lstm_prediction/app/Console/Kernel.php b/lstm_prediction/app/Console/Kernel.php new file mode 100644 index 0000000..2bea97c --- /dev/null +++ b/lstm_prediction/app/Console/Kernel.php @@ -0,0 +1,28 @@ +command('sensor:send-to-flask')->everyFiveMinutes(); + } + + /** + * Register the commands for the application. + */ + protected function commands(): void + { + $this->load(__DIR__ . '/Commands'); + + require base_path('routes/console.php'); + } +} diff --git a/lstm_prediction/app/Exceptions/Handler.php b/lstm_prediction/app/Exceptions/Handler.php new file mode 100644 index 0000000..56af264 --- /dev/null +++ b/lstm_prediction/app/Exceptions/Handler.php @@ -0,0 +1,30 @@ + + */ + protected $dontFlash = [ + 'current_password', + 'password', + 'password_confirmation', + ]; + + /** + * Register the exception handling callbacks for the application. + */ + public function register(): void + { + $this->reportable(function (Throwable $e) { + // + }); + } +} diff --git a/lstm_prediction/app/Http/Controllers/Auth/ConfirmPasswordController.php b/lstm_prediction/app/Http/Controllers/Auth/ConfirmPasswordController.php new file mode 100644 index 0000000..3559954 --- /dev/null +++ b/lstm_prediction/app/Http/Controllers/Auth/ConfirmPasswordController.php @@ -0,0 +1,39 @@ +middleware('auth'); + } +} diff --git a/lstm_prediction/app/Http/Controllers/Auth/ForgotPasswordController.php b/lstm_prediction/app/Http/Controllers/Auth/ForgotPasswordController.php new file mode 100644 index 0000000..465c39c --- /dev/null +++ b/lstm_prediction/app/Http/Controllers/Auth/ForgotPasswordController.php @@ -0,0 +1,22 @@ +middleware('guest')->except('logout'); + $this->middleware('auth')->only('logout'); + } +} diff --git a/lstm_prediction/app/Http/Controllers/Auth/RegisterController.php b/lstm_prediction/app/Http/Controllers/Auth/RegisterController.php new file mode 100644 index 0000000..c1ddd11 --- /dev/null +++ b/lstm_prediction/app/Http/Controllers/Auth/RegisterController.php @@ -0,0 +1,72 @@ +middleware('guest'); + } + + /** + * Get a validator for an incoming registration request. + * + * @param array $data + * @return \Illuminate\Contracts\Validation\Validator + */ + protected function validator(array $data) + { + return Validator::make($data, [ + 'name' => ['required', 'string', 'max:255'], + 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], + 'password' => ['required', 'string', 'min:8', 'confirmed'], + ]); + } + + /** + * Create a new user instance after a valid registration. + * + * @param array $data + * @return \App\Models\User + */ + protected function create(array $data) + { + return User::create([ + 'name' => $data['name'], + 'email' => $data['email'], + 'password' => Hash::make($data['password']), + ]); + } +} diff --git a/lstm_prediction/app/Http/Controllers/Auth/ResetPasswordController.php b/lstm_prediction/app/Http/Controllers/Auth/ResetPasswordController.php new file mode 100644 index 0000000..fe965b2 --- /dev/null +++ b/lstm_prediction/app/Http/Controllers/Auth/ResetPasswordController.php @@ -0,0 +1,29 @@ +middleware('auth'); + $this->middleware('signed')->only('verify'); + $this->middleware('throttle:6,1')->only('verify', 'resend'); + } +} diff --git a/lstm_prediction/app/Http/Controllers/AuthController.php b/lstm_prediction/app/Http/Controllers/AuthController.php new file mode 100644 index 0000000..6457607 --- /dev/null +++ b/lstm_prediction/app/Http/Controllers/AuthController.php @@ -0,0 +1,36 @@ +validate([ + 'email' => 'required|email', + 'password' => 'required' + ]); + + if (Auth::attempt($credentials)) { + return redirect()->intended('/dashboard'); + } + + return back()->withErrors([ + 'email' => 'Email atau password salah!' + ]); + } + + public function logout(Request $request) + { + Auth::logout(); + return redirect('/login'); + } +} diff --git a/lstm_prediction/app/Http/Controllers/Controller.php b/lstm_prediction/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..77ec359 --- /dev/null +++ b/lstm_prediction/app/Http/Controllers/Controller.php @@ -0,0 +1,12 @@ +middleware('auth'); + } + + /** + * Show the application dashboard. + * + * @return \Illuminate\Contracts\Support\Renderable + */ + public function index() + { + return view('dashboard'); + } + public function data() + { + return view('data'); + } +} diff --git a/lstm_prediction/app/Http/Controllers/PredictionController.php b/lstm_prediction/app/Http/Controllers/PredictionController.php new file mode 100644 index 0000000..5bf443a --- /dev/null +++ b/lstm_prediction/app/Http/Controllers/PredictionController.php @@ -0,0 +1,42 @@ +validate([ + 'predicted_suhu' => 'required|numeric', + 'predicted_kelembaban' => 'required|numeric', + 'prediction_datetime' => 'required|date_format:Y-m-d H:i:s', + ]); + + try { + // Simpan prediksi ke database + $prediction = Prediction::create([ + 'predicted_suhu' => $request->predicted_suhu, + 'predicted_kelembaban' => $request->predicted_kelembaban, + 'prediction_datetime' => $request->prediction_datetime, + ]); + + Log::info("āœ… Prediksi berhasil disimpan: " . json_encode($prediction)); + + return response()->json([ + 'message' => 'āœ… Prediksi berhasil disimpan', + 'data' => $prediction + ], 201); + } catch (\Exception $e) { + Log::error("āŒ Gagal menyimpan prediksi: " . $e->getMessage()); + + return response()->json([ + 'error' => 'āŒ Terjadi kesalahan saat menyimpan prediksi' + ], 500); + } + } +} diff --git a/lstm_prediction/app/Http/Controllers/SensorController.php b/lstm_prediction/app/Http/Controllers/SensorController.php new file mode 100644 index 0000000..52596ae --- /dev/null +++ b/lstm_prediction/app/Http/Controllers/SensorController.php @@ -0,0 +1,132 @@ +all()); + $request->validate([ + 'temperature' => 'required|numeric', + 'humidity' => 'required|numeric' + ]); + + $sensorData = SensorData::create([ + 'temperature' => $request->temperature, + 'humidity' => $request->humidity + ]); + Log::info("Data diterima:", $request->all()); + + return response()->json(['message' => 'Data sensor berhasil disimpan', 'data' => $sensorData], 201); + } + + // Mengambil 10 data sensor terbaru + public function getLatestSensorData() + { + $sensorData = SensorData::orderByDesc('created_at') // Urutkan dari terbaru ke terlama + ->take(50) // Ambil 10 data terbaru + ->get() + ->map(function ($data) { + return [ + 'temperature' => $data->temperature, + 'humidity' => $data->humidity, + 'created_at' => Carbon::parse($data->created_at) + ->timezone('Asia/Jakarta') + ->format('Y-m-d H:i:s'), // Format waktu yang lebih mudah dibaca + ]; + }); + + return response()->json($sensorData); + } + + // Mengambil 10 prediksi terbaru + public function getLatestPredictions() + { + $predictions = Prediction::orderByDesc('prediction_datetime') // Urutkan dari terbaru ke terlama + ->take(50) // Ambil 10 data terbaru + ->get() + ->map(function ($data) { + return [ + 'predicted_suhu' => $data->predicted_suhu, + 'predicted_kelembaban' => $data->predicted_kelembaban, + 'prediction_datetime' => Carbon::parse($data->prediction_datetime) + ->timezone('Asia/Jakarta') + ->format('Y-m-d H:i:s'), // Format ke waktu yang lebih mudah dibaca + ]; + }); + + return response()->json($predictions); + } + + // Mengirim 30 data terakhir ke Flask untuk prediksi + public function predict() + { + // Ambil 30 data sensor terakhir + $sensorData = SensorData::orderBy('created_at', 'desc')->take(30)->get(); + + // Pastikan jumlah data cukup + if ($sensorData->count() < 30) { + return response()->json(['error' => 'Jumlah data kurang dari 30'], 400); + } + + // Format data untuk dikirim ke Flask + $dataToSend = [ + 'sensor_data' => $sensorData->map(fn($item) => [ + 'suhu' => $item->temperature, + 'kelembaban' => $item->humidity, + 'datetime' => $item->created_at ? Carbon::parse($item->created_at)->setTimezone('Asia/Jakarta')->format('Y-m-d H:i:s') + : null, + ])->toArray() + ]; + + Log::info("šŸš€ Mengirim data ke Flask: " . json_encode($dataToSend)); + + try { + $client = new Client(['timeout' => 60]); + $response = $client->post('http://192.168.38.96:5000/predict', [ //gunakan ip laptop + 'json' => $dataToSend, + 'headers' => ['Content-Type' => 'application/json'] + ]); + + $body = json_decode($response->getBody()->getContents(), true); + + if (!isset($body['predicted_suhu'], $body['predicted_kelembaban'], $body['prediction_datetime'])) { + return response()->json(['error' => 'Respons Flask tidak valid'], 500); + } + + // Simpan hasil prediksi ke database + $prediction = Prediction::create([ + 'predicted_suhu' => $body['predicted_suhu'], + 'predicted_kelembaban' => $body['predicted_kelembaban'], + 'prediction_datetime' => $body['prediction_datetime'], + ]); + + Log::info("āœ… Prediksi berhasil disimpan: " . json_encode($prediction)); + + return response()->json($prediction, 201); + } catch (RequestException $e) { + //Log::error("āŒ Error menghubungi Flask: " . $e->getMessage()); + return response()->json(['error' => 'Gagal menghubungi Flask'], 500); + } catch (\Exception $e) { + //Log::error("āŒ Terjadi kesalahan: " . $e->getMessage()); + return Response()->json(['error' => 'Terjadi kesalahan pada server'], 500); + } + } +} diff --git a/lstm_prediction/app/Http/Kernel.php b/lstm_prediction/app/Http/Kernel.php new file mode 100644 index 0000000..8afafc6 --- /dev/null +++ b/lstm_prediction/app/Http/Kernel.php @@ -0,0 +1,75 @@ + + */ + protected $middleware = [ + // \App\Http\Middleware\TrustHosts::class, + \App\Http\Middleware\TrustProxies::class, + \Illuminate\Http\Middleware\HandleCors::class, + \App\Http\Middleware\PreventRequestsDuringMaintenance::class, + \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, + \App\Http\Middleware\TrimStrings::class, + \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, + + ]; + + /** + * The application's route middleware groups. + * + * @var array> + */ + protected $middlewareGroups = [ + 'web' => [ + \App\Http\Middleware\EncryptCookies::class, + \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, + \Illuminate\Session\Middleware\StartSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \App\Http\Middleware\VerifyCsrfToken::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + + 'api' => [ + // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, + \Illuminate\Routing\Middleware\ThrottleRequests::class . ':api', + \Illuminate\Routing\Middleware\SubstituteBindings::class, + \App\Http\Middleware\CorsMiddleware::class, + + ], + ]; + + /** + * The application's middleware aliases. + * + * Aliases may be used instead of class names to conveniently assign middleware to routes and groups. + * + * @var array + */ + protected $middlewareAliases = [ + 'auth' => \App\Http\Middleware\Authenticate::class, + 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, + 'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class, + 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, + 'can' => \Illuminate\Auth\Middleware\Authorize::class, + 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, + 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'precognitive' => \Illuminate\Foundation\Http\Middleware\HandlePrecognitiveRequests::class, + 'signed' => \App\Http\Middleware\ValidateSignature::class, + 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + ]; +} diff --git a/lstm_prediction/app/Http/Middleware/Authenticate.php b/lstm_prediction/app/Http/Middleware/Authenticate.php new file mode 100644 index 0000000..d4ef644 --- /dev/null +++ b/lstm_prediction/app/Http/Middleware/Authenticate.php @@ -0,0 +1,17 @@ +expectsJson() ? null : route('login'); + } +} diff --git a/lstm_prediction/app/Http/Middleware/CorsMiddleware.php b/lstm_prediction/app/Http/Middleware/CorsMiddleware.php new file mode 100644 index 0000000..7136032 --- /dev/null +++ b/lstm_prediction/app/Http/Middleware/CorsMiddleware.php @@ -0,0 +1,33 @@ +isMethod('OPTIONS')) { + return response()->json('OK', 200, [ + 'Access-Control-Allow-Origin' => '*', + 'Access-Control-Allow-Methods' => 'GET, POST, PUT, DELETE, OPTIONS', + 'Access-Control-Allow-Headers' => 'Content-Type, Authorization', + ]); + } + + $response = $next($request); + + $response->headers->set('Access-Control-Allow-Origin', '*'); + $response->headers->set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS'); + $response->headers->set('Access-Control-Allow-Headers', 'Content-Type, Authorization'); + + return $response; + } +} diff --git a/lstm_prediction/app/Http/Middleware/EncryptCookies.php b/lstm_prediction/app/Http/Middleware/EncryptCookies.php new file mode 100644 index 0000000..867695b --- /dev/null +++ b/lstm_prediction/app/Http/Middleware/EncryptCookies.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/lstm_prediction/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/lstm_prediction/app/Http/Middleware/PreventRequestsDuringMaintenance.php new file mode 100644 index 0000000..74cbd9a --- /dev/null +++ b/lstm_prediction/app/Http/Middleware/PreventRequestsDuringMaintenance.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/lstm_prediction/app/Http/Middleware/RedirectIfAuthenticated.php b/lstm_prediction/app/Http/Middleware/RedirectIfAuthenticated.php new file mode 100644 index 0000000..afc78c4 --- /dev/null +++ b/lstm_prediction/app/Http/Middleware/RedirectIfAuthenticated.php @@ -0,0 +1,30 @@ +check()) { + return redirect(RouteServiceProvider::HOME); + } + } + + return $next($request); + } +} diff --git a/lstm_prediction/app/Http/Middleware/TrimStrings.php b/lstm_prediction/app/Http/Middleware/TrimStrings.php new file mode 100644 index 0000000..88cadca --- /dev/null +++ b/lstm_prediction/app/Http/Middleware/TrimStrings.php @@ -0,0 +1,19 @@ + + */ + protected $except = [ + 'current_password', + 'password', + 'password_confirmation', + ]; +} diff --git a/lstm_prediction/app/Http/Middleware/TrustHosts.php b/lstm_prediction/app/Http/Middleware/TrustHosts.php new file mode 100644 index 0000000..c9c58bd --- /dev/null +++ b/lstm_prediction/app/Http/Middleware/TrustHosts.php @@ -0,0 +1,20 @@ + + */ + public function hosts(): array + { + return [ + $this->allSubdomainsOfApplicationUrl(), + ]; + } +} diff --git a/lstm_prediction/app/Http/Middleware/TrustProxies.php b/lstm_prediction/app/Http/Middleware/TrustProxies.php new file mode 100644 index 0000000..3391630 --- /dev/null +++ b/lstm_prediction/app/Http/Middleware/TrustProxies.php @@ -0,0 +1,28 @@ +|string|null + */ + protected $proxies; + + /** + * The headers that should be used to detect proxies. + * + * @var int + */ + protected $headers = + Request::HEADER_X_FORWARDED_FOR | + Request::HEADER_X_FORWARDED_HOST | + Request::HEADER_X_FORWARDED_PORT | + Request::HEADER_X_FORWARDED_PROTO | + Request::HEADER_X_FORWARDED_AWS_ELB; +} diff --git a/lstm_prediction/app/Http/Middleware/ValidateSignature.php b/lstm_prediction/app/Http/Middleware/ValidateSignature.php new file mode 100644 index 0000000..093bf64 --- /dev/null +++ b/lstm_prediction/app/Http/Middleware/ValidateSignature.php @@ -0,0 +1,22 @@ + + */ + protected $except = [ + // 'fbclid', + // 'utm_campaign', + // 'utm_content', + // 'utm_medium', + // 'utm_source', + // 'utm_term', + ]; +} diff --git a/lstm_prediction/app/Http/Middleware/VerifyCsrfToken.php b/lstm_prediction/app/Http/Middleware/VerifyCsrfToken.php new file mode 100644 index 0000000..bb04e80 --- /dev/null +++ b/lstm_prediction/app/Http/Middleware/VerifyCsrfToken.php @@ -0,0 +1,18 @@ + + */ + protected $except = + [ + 'api/predict' + ]; +} diff --git a/lstm_prediction/app/Models/Prediction.php b/lstm_prediction/app/Models/Prediction.php new file mode 100644 index 0000000..15f4606 --- /dev/null +++ b/lstm_prediction/app/Models/Prediction.php @@ -0,0 +1,19 @@ + 'datetime:Y-m-d H:i:s', + ]; +} diff --git a/lstm_prediction/app/Models/SensorData.php b/lstm_prediction/app/Models/SensorData.php new file mode 100644 index 0000000..8837171 --- /dev/null +++ b/lstm_prediction/app/Models/SensorData.php @@ -0,0 +1,19 @@ + 'datetime:Y-m-d H:i:s', + ]; +} diff --git a/lstm_prediction/app/Models/User.php b/lstm_prediction/app/Models/User.php new file mode 100644 index 0000000..4d7f70f --- /dev/null +++ b/lstm_prediction/app/Models/User.php @@ -0,0 +1,45 @@ + + */ + protected $fillable = [ + 'name', + 'email', + 'password', + ]; + + /** + * The attributes that should be hidden for serialization. + * + * @var array + */ + protected $hidden = [ + 'password', + 'remember_token', + ]; + + /** + * The attributes that should be cast. + * + * @var array + */ + protected $casts = [ + 'email_verified_at' => 'datetime', + 'password' => 'hashed', + ]; +} diff --git a/lstm_prediction/app/Providers/AppServiceProvider.php b/lstm_prediction/app/Providers/AppServiceProvider.php new file mode 100644 index 0000000..452e6b6 --- /dev/null +++ b/lstm_prediction/app/Providers/AppServiceProvider.php @@ -0,0 +1,24 @@ + + */ + protected $policies = [ + // + ]; + + /** + * Register any authentication / authorization services. + */ + public function boot(): void + { + // + } +} diff --git a/lstm_prediction/app/Providers/BroadcastServiceProvider.php b/lstm_prediction/app/Providers/BroadcastServiceProvider.php new file mode 100644 index 0000000..2be04f5 --- /dev/null +++ b/lstm_prediction/app/Providers/BroadcastServiceProvider.php @@ -0,0 +1,19 @@ +> + */ + protected $listen = [ + Registered::class => [ + SendEmailVerificationNotification::class, + ], + ]; + + /** + * Register any events for your application. + */ + public function boot(): void + { + // + } + + /** + * Determine if events and listeners should be automatically discovered. + */ + public function shouldDiscoverEvents(): bool + { + return false; + } +} diff --git a/lstm_prediction/app/Providers/RouteServiceProvider.php b/lstm_prediction/app/Providers/RouteServiceProvider.php new file mode 100644 index 0000000..1cf5f15 --- /dev/null +++ b/lstm_prediction/app/Providers/RouteServiceProvider.php @@ -0,0 +1,40 @@ +by($request->user()?->id ?: $request->ip()); + }); + + $this->routes(function () { + Route::middleware('api') + ->prefix('api') + ->group(base_path('routes/api.php')); + + Route::middleware('web') + ->group(base_path('routes/web.php')); + }); + } +} diff --git a/lstm_prediction/artisan b/lstm_prediction/artisan new file mode 100644 index 0000000..67a3329 --- /dev/null +++ b/lstm_prediction/artisan @@ -0,0 +1,53 @@ +#!/usr/bin/env php +make(Illuminate\Contracts\Console\Kernel::class); + +$status = $kernel->handle( + $input = new Symfony\Component\Console\Input\ArgvInput, + new Symfony\Component\Console\Output\ConsoleOutput +); + +/* +|-------------------------------------------------------------------------- +| Shutdown The Application +|-------------------------------------------------------------------------- +| +| Once Artisan has finished running, we will fire off the shutdown events +| so that any final work may be done by the application before we shut +| down the process. This is the last thing to happen to the request. +| +*/ + +$kernel->terminate($input, $status); + +exit($status); diff --git a/lstm_prediction/bootstrap/app.php b/lstm_prediction/bootstrap/app.php new file mode 100644 index 0000000..037e17d --- /dev/null +++ b/lstm_prediction/bootstrap/app.php @@ -0,0 +1,55 @@ +singleton( + Illuminate\Contracts\Http\Kernel::class, + App\Http\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Console\Kernel::class, + App\Console\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Debug\ExceptionHandler::class, + App\Exceptions\Handler::class +); + +/* +|-------------------------------------------------------------------------- +| Return The Application +|-------------------------------------------------------------------------- +| +| This script returns the application instance. The instance is given to +| the calling script so we can separate the building of the instances +| from the actual running of the application and sending responses. +| +*/ + +return $app; diff --git a/lstm_prediction/bootstrap/cache/.gitignore b/lstm_prediction/bootstrap/cache/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/lstm_prediction/bootstrap/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/lstm_prediction/composer.json b/lstm_prediction/composer.json new file mode 100644 index 0000000..9e6d206 --- /dev/null +++ b/lstm_prediction/composer.json @@ -0,0 +1,67 @@ +{ + "name": "laravel/laravel", + "type": "project", + "description": "The skeleton application for the Laravel framework.", + "keywords": ["laravel", "framework"], + "license": "MIT", + "require": { + "php": "^8.1", + "guzzlehttp/guzzle": "^7.2", + "laravel/framework": "^10.10", + "laravel/sanctum": "^3.3", + "laravel/tinker": "^2.8", + "laravel/ui": "^4.6" + }, + "require-dev": { + "fakerphp/faker": "^1.9.1", + "laravel/pint": "^1.0", + "laravel/sail": "^1.18", + "mockery/mockery": "^1.4.4", + "nunomaduro/collision": "^7.0", + "phpunit/phpunit": "^10.1", + "spatie/laravel-ignition": "^2.0" + }, + "autoload": { + "psr-4": { + "App\\": "app/", + "Database\\Factories\\": "database/factories/", + "Database\\Seeders\\": "database/seeders/" + } + }, + "autoload-dev": { + "psr-4": { + "Tests\\": "tests/" + } + }, + "scripts": { + "post-autoload-dump": [ + "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", + "@php artisan package:discover --ansi" + ], + "post-update-cmd": [ + "@php artisan vendor:publish --tag=laravel-assets --ansi --force" + ], + "post-root-package-install": [ + "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" + ], + "post-create-project-cmd": [ + "@php artisan key:generate --ansi" + ] + }, + "extra": { + "laravel": { + "dont-discover": [] + } + }, + "config": { + "optimize-autoloader": true, + "preferred-install": "dist", + "sort-packages": true, + "allow-plugins": { + "pestphp/pest-plugin": true, + "php-http/discovery": true + } + }, + "minimum-stability": "stable", + "prefer-stable": true +} diff --git a/lstm_prediction/composer.lock b/lstm_prediction/composer.lock new file mode 100644 index 0000000..a76f623 --- /dev/null +++ b/lstm_prediction/composer.lock @@ -0,0 +1,8200 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "dcbbd52cf3c38d0f1b88e12d39e47db7", + "packages": [ + { + "name": "brick/math", + "version": "0.12.1", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "f510c0a40911935b77b86859eb5223d58d660df1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/f510c0a40911935b77b86859eb5223d58d660df1", + "reference": "f510c0a40911935b77b86859eb5223d58d660df1", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^10.1", + "vimeo/psalm": "5.16.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "bignumber", + "brick", + "decimal", + "integer", + "math", + "mathematics", + "rational" + ], + "support": { + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.12.1" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + } + ], + "time": "2023-11-29T23:19:16+00:00" + }, + { + "name": "carbonphp/carbon-doctrine-types", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "conflict": { + "doctrine/dbal": "<3.7.0 || >=4.0.0" + }, + "require-dev": { + "doctrine/dbal": "^3.7.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.1.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2023-12-11T17:09:12+00:00" + }, + { + "name": "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.0.10", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^11.0", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^8.5 || ^9.5", + "vimeo/psalm": "^4.25 || ^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + } + }, + "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.0.10" + }, + "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": "2024-02-18T20:23:39+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.4.0", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "8c784d071debd117328803d86b2097615b457500" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/8c784d071debd117328803d86b2097615b457500", + "reference": "8c784d071debd117328803d86b2097615b457500", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "webmozart/assert": "^1.0" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpunit/phpunit": "^7.0|^8.0|^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.4.0" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2024-10-09T13:47:03+00:00" + }, + { + "name": "egulias/email-validator", + "version": "4.0.3", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "b115554301161fa21467629f1e1391c1936de517" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/b115554301161fa21467629f1e1391c1936de517", + "reference": "b115554301161fa21467629f1e1391c1936de517", + "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.3" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2024-12-27T00:36:43+00:00" + }, + { + "name": "fruitcake/php-cors", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/php-cors.git", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0", + "symfony/http-foundation": "^4.4|^5.4|^6|^7" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-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.3.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2023-10-12T05:21:21+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.1.3", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "3ba905c11371512af9d9bdd27d99b782216b6945" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/3ba905c11371512af9d9bdd27d99b782216b6945", + "reference": "3ba905c11371512af9d9bdd27d99b782216b6945", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.3" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" + }, + "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.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2024-07-20T21:45:45+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.9.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "d281ed313b989f213357e3be1a179f02196ac99b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b", + "reference": "d281ed313b989f213357e3be1a179f02196ac99b", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.5.3 || ^2.0.3", + "guzzlehttp/psr7": "^2.7.0", + "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.9.2" + }, + "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": "2024-07-24T11:22:20+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/f9c436286ab2892c7db7be8c8da4ef61ccf7b455", + "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.39 || ^9.6.20" + }, + "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.0.4" + }, + "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": "2024-10-17T10:06:22+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.7.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201", + "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201", + "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.39 || ^9.6.20" + }, + "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.7.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": "2024-07-18T11:15:46+00:00" + }, + { + "name": "guzzlehttp/uri-template", + "version": "v1.0.4", + "source": { + "type": "git", + "url": "https://github.com/guzzle/uri-template.git", + "reference": "30e286560c137526eccd4ce21b2de477ab0676d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/30e286560c137526eccd4ce21b2de477ab0676d2", + "reference": "30e286560c137526eccd4ce21b2de477ab0676d2", + "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.36 || ^9.6.15", + "uri-template/tests": "1.0.0" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\UriTemplate\\": "src" + } + }, + "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.4" + }, + "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-02-03T10:55:03+00:00" + }, + { + "name": "laravel/framework", + "version": "v10.48.28", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "e714e7e0c1ae51bf747e3df5b10fa60c54e3e0e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/e714e7e0c1ae51bf747e3df5b10fa60c54e3e0e1", + "reference": "e714e7e0c1ae51bf747e3df5b10fa60c54e3e0e1", + "shasum": "" + }, + "require": { + "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12", + "composer-runtime-api": "^2.2", + "doctrine/inflector": "^2.0.5", + "dragonmantank/cron-expression": "^3.3.2", + "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.2", + "guzzlehttp/uri-template": "^1.0", + "laravel/prompts": "^0.1.9", + "laravel/serializable-closure": "^1.3", + "league/commonmark": "^2.2.1", + "league/flysystem": "^3.8.0", + "monolog/monolog": "^3.0", + "nesbot/carbon": "^2.67", + "nunomaduro/termwind": "^1.13", + "php": "^8.1", + "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": "^6.2", + "symfony/error-handler": "^6.2", + "symfony/finder": "^6.2", + "symfony/http-foundation": "^6.4", + "symfony/http-kernel": "^6.2", + "symfony/mailer": "^6.2", + "symfony/mime": "^6.2", + "symfony/process": "^6.2", + "symfony/routing": "^6.2", + "symfony/uid": "^6.2", + "symfony/var-dumper": "^6.2", + "tijsverkoyen/css-to-inline-styles": "^2.2.5", + "vlucas/phpdotenv": "^5.4.1", + "voku/portable-ascii": "^2.0" + }, + "conflict": { + "carbonphp/carbon-doctrine-types": ">=3.0", + "doctrine/dbal": ">=4.0", + "mockery/mockery": "1.6.8", + "phpunit/phpunit": ">=11.0.0", + "tightenco/collect": "<5.5.33" + }, + "provide": { + "psr/container-implementation": "1.1|2.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/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/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/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" + }, + "require-dev": { + "ably/ably-php": "^1.0", + "aws/aws-sdk-php": "^3.235.5", + "doctrine/dbal": "^3.5.1", + "ext-gmp": "*", + "fakerphp/faker": "^1.21", + "guzzlehttp/guzzle": "^7.5", + "league/flysystem-aws-s3-v3": "^3.0", + "league/flysystem-ftp": "^3.0", + "league/flysystem-path-prefixing": "^3.3", + "league/flysystem-read-only": "^3.3", + "league/flysystem-sftp-v3": "^3.0", + "mockery/mockery": "^1.5.1", + "nyholm/psr7": "^1.2", + "orchestra/testbench-core": "^8.23.4", + "pda/pheanstalk": "^4.0", + "phpstan/phpstan": "~1.11.11", + "phpunit/phpunit": "^10.0.7", + "predis/predis": "^2.0.2", + "symfony/cache": "^6.2", + "symfony/http-client": "^6.2.4", + "symfony/psr-http-message-bridge": "^2.0" + }, + "suggest": { + "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).", + "brianium/paratest": "Required to run tests in parallel (^6.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^3.5.1).", + "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).", + "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", + "filp/whoops": "Required for friendly error pages in development (^2.14.3).", + "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.5).", + "laravel/tinker": "Required to use the tinker console command (^2.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).", + "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).", + "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).", + "league/flysystem-read-only": "Required to use read-only disks (^3.3)", + "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", + "mockery/mockery": "Required to use mocking (^1.5.1).", + "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", + "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8|^10.0.7).", + "predis/predis": "Required to use the predis connector (^2.0.2).", + "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).", + "symfony/cache": "Required to PSR-6 cache bridge (^6.2).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^6.2).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.2).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.2).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.2).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "10.x-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", + "src/Illuminate/Filesystem/functions.php", + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/", + "src/Illuminate/Conditionable/" + ] + } + }, + "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": "2025-01-31T10:04:17+00:00" + }, + { + "name": "laravel/prompts", + "version": "v0.1.25", + "source": { + "type": "git", + "url": "https://github.com/laravel/prompts.git", + "reference": "7b4029a84c37cb2725fc7f011586e2997040bc95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/prompts/zipball/7b4029a84c37cb2725fc7f011586e2997040bc95", + "reference": "7b4029a84c37cb2725fc7f011586e2997040bc95", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "illuminate/collections": "^10.0|^11.0", + "php": "^8.1", + "symfony/console": "^6.2|^7.0" + }, + "conflict": { + "illuminate/console": ">=10.17.0 <10.25.0", + "laravel/framework": ">=10.17.0 <10.25.0" + }, + "require-dev": { + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3", + "phpstan/phpstan": "^1.11", + "phpstan/phpstan-mockery": "^1.1" + }, + "suggest": { + "ext-pcntl": "Required for the spinner to be animated." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.1.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "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.1.25" + }, + "time": "2024-08-12T22:06:33+00:00" + }, + { + "name": "laravel/sanctum", + "version": "v3.3.3", + "source": { + "type": "git", + "url": "https://github.com/laravel/sanctum.git", + "reference": "8c104366459739f3ada0e994bcd3e6fd681ce3d5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/8c104366459739f3ada0e994bcd3e6fd681ce3d5", + "reference": "8c104366459739f3ada0e994bcd3e6fd681ce3d5", + "shasum": "" + }, + "require": { + "ext-json": "*", + "illuminate/console": "^9.21|^10.0", + "illuminate/contracts": "^9.21|^10.0", + "illuminate/database": "^9.21|^10.0", + "illuminate/support": "^9.21|^10.0", + "php": "^8.0.2" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "orchestra/testbench": "^7.28.2|^8.8.3", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.6" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Sanctum\\SanctumServiceProvider" + ] + }, + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sanctum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel Sanctum provides a featherweight authentication system for SPAs and simple APIs.", + "keywords": [ + "auth", + "laravel", + "sanctum" + ], + "support": { + "issues": "https://github.com/laravel/sanctum/issues", + "source": "https://github.com/laravel/sanctum" + }, + "time": "2023-12-19T18:44:48+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v1.3.7", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "4f48ade902b94323ca3be7646db16209ec76be3d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/4f48ade902b94323ca3be7646db16209ec76be3d", + "reference": "4f48ade902b94323ca3be7646db16209ec76be3d", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "illuminate/support": "^8.0|^9.0|^10.0|^11.0", + "nesbot/carbon": "^2.61|^3.0", + "pestphp/pest": "^1.21.3", + "phpstan/phpstan": "^1.8.2", + "symfony/var-dumper": "^5.4.11|^6.2.0|^7.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.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": "2024-11-14T18:34:49+00:00" + }, + { + "name": "laravel/tinker", + "version": "v2.10.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "22177cc71807d38f2810c6204d8f7183d88a57d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/22177cc71807d38f2810c6204d8f7183d88a57d3", + "reference": "22177cc71807d38f2810c6204d8f7183d88a57d3", + "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" + }, + "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.10.1" + }, + "time": "2025-01-27T14:24:01+00:00" + }, + { + "name": "laravel/ui", + "version": "v4.6.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/ui.git", + "reference": "7d6ffa38d79f19c9b3e70a751a9af845e8f41d88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/ui/zipball/7d6ffa38d79f19c9b3e70a751a9af845e8f41d88", + "reference": "7d6ffa38d79f19c9b3e70a751a9af845e8f41d88", + "shasum": "" + }, + "require": { + "illuminate/console": "^9.21|^10.0|^11.0|^12.0", + "illuminate/filesystem": "^9.21|^10.0|^11.0|^12.0", + "illuminate/support": "^9.21|^10.0|^11.0|^12.0", + "illuminate/validation": "^9.21|^10.0|^11.0|^12.0", + "php": "^8.0", + "symfony/console": "^6.0|^7.0" + }, + "require-dev": { + "orchestra/testbench": "^7.35|^8.15|^9.0|^10.0", + "phpunit/phpunit": "^9.3|^10.4|^11.5" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Ui\\UiServiceProvider" + ] + }, + "branch-alias": { + "dev-master": "4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\Ui\\": "src/", + "Illuminate\\Foundation\\Auth\\": "auth-backend/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel UI utilities and presets.", + "keywords": [ + "laravel", + "ui" + ], + "support": { + "source": "https://github.com/laravel/ui/tree/v4.6.1" + }, + "time": "2025-01-28T15:15:29+00:00" + }, + { + "name": "league/commonmark", + "version": "2.6.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "d990688c91cedfb69753ffc2512727ec646df2ad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/d990688c91cedfb69753ffc2512727ec646df2ad", + "reference": "d990688c91cedfb69753ffc2512727ec646df2ad", + "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" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.7-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": "2024-12-29T14:10:59+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.29.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "edc1bb7c86fab0776c3287dbd19b5fa278347319" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/edc1bb7c86fab0776c3287dbd19b5fa278347319", + "reference": "edc1bb7c86fab0776c3287dbd19b5fa278347319", + "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", + "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", + "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.29.1" + }, + "time": "2024-10-08T08:58:34+00:00" + }, + { + "name": "league/flysystem-local", + "version": "3.29.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "e0e8d52ce4b2ed154148453d321e97c8e931bd27" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/e0e8d52ce4b2ed154148453d321e97c8e931bd27", + "reference": "e0e8d52ce4b2ed154148453d321e97c8e931bd27", + "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.29.0" + }, + "time": "2024-08-09T21:24:39+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": "monolog/monolog", + "version": "3.8.1", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "aef6ee73a77a66e404dd6540934a9ef1b3c855b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/aef6ee73a77a66e404dd6540934a9ef1b3c855b4", + "reference": "aef6ee73a77a66e404dd6540934a9ef1b3c855b4", + "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", + "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.8.1" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2024-12-05T17:15:07+00:00" + }, + { + "name": "nesbot/carbon", + "version": "2.73.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon.git", + "reference": "9228ce90e1035ff2f0db84b40ec2e023ed802075" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/9228ce90e1035ff2f0db84b40ec2e023ed802075", + "reference": "9228ce90e1035ff2f0db84b40ec2e023ed802075", + "shasum": "" + }, + "require": { + "carbonphp/carbon-doctrine-types": "*", + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "psr/clock": "^1.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", + "doctrine/orm": "^2.7 || ^3.0", + "friendsofphp/php-cs-fixer": "^3.0", + "kylekatarnls/multi-tester": "^2.0", + "ondrejmirtes/better-reflection": "<6", + "phpmd/phpmd": "^2.9", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.99 || ^1.7.14", + "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", + "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", + "squizlabs/php_codesniffer": "^3.4" + }, + "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://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "docs": "https://carbon.nesbot.com/docs", + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/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": "2025-01-08T20:10:23+00:00" + }, + { + "name": "nette/schema", + "version": "v1.3.2", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "da801d52f0354f70a638673c4a0f04e16529431d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/da801d52f0354f70a638673c4a0f04e16529431d", + "reference": "da801d52f0354f70a638673c4a0f04e16529431d", + "shasum": "" + }, + "require": { + "nette/utils": "^4.0", + "php": "8.1 - 8.4" + }, + "require-dev": { + "nette/tester": "^2.5.2", + "phpstan/phpstan-nette": "^1.0", + "tracy/tracy": "^2.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "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.2" + }, + "time": "2024-10-06T23:10:23+00:00" + }, + { + "name": "nette/utils", + "version": "v4.0.5", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/736c567e257dbe0fcf6ce81b4d6dbe05c6899f96", + "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96", + "shasum": "" + }, + "require": { + "php": "8.0 - 8.4" + }, + "conflict": { + "nette/finder": "<3", + "nette/schema": "<1.2.2" + }, + "require-dev": { + "jetbrains/phpstorm-attributes": "dev-master", + "nette/tester": "^2.5", + "phpstan/phpstan": "^1.0", + "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.0-dev" + } + }, + "autoload": { + "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.0.5" + }, + "time": "2024-08-07T15:39:19+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v5.4.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "447a020a1f875a434d62f2a401f53b82a396e494" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", + "reference": "447a020a1f875a434d62f2a401f53b82a396e494", + "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.0-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.4.0" + }, + "time": "2024-12-30T11:07:19+00:00" + }, + { + "name": "nunomaduro/termwind", + "version": "v1.17.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/termwind.git", + "reference": "5369ef84d8142c1d87e4ec278711d4ece3cbf301" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/5369ef84d8142c1d87e4ec278711d4ece3cbf301", + "reference": "5369ef84d8142c1d87e4ec278711d4ece3cbf301", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^8.1", + "symfony/console": "^6.4.15" + }, + "require-dev": { + "illuminate/console": "^10.48.24", + "illuminate/support": "^10.48.24", + "laravel/pint": "^1.18.2", + "pestphp/pest": "^2.36.0", + "pestphp/pest-plugin-mock": "2.0.0", + "phpstan/phpstan": "^1.12.11", + "phpstan/phpstan-strict-rules": "^1.6.1", + "symfony/var-dumper": "^6.4.15", + "thecodingmachine/phpstan-strict-rules": "^1.0.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Termwind\\Laravel\\TermwindServiceProvider" + ] + } + }, + "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/v1.17.0" + }, + "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": "2024-11-21T10:36:35+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.9.3", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/e3fac8b24f56113f7cb96af14958c0dd16330f54", + "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" + }, + "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.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2024-07-20T21:41:07+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.7", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "d73fa3c74918ef4522bb8a3bf9cab39161c4b57c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/d73fa3c74918ef4522bb8a3bf9cab39161c4b57c", + "reference": "d73fa3c74918ef4522bb8a3bf9cab39161c4b57c", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^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" + }, + "suggest": { + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-pdo-sqlite": "The doc command requires SQLite to work.", + "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", + "homepage": "http://justinhileman.com" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "http://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.12.7" + }, + "time": "2024-12-10T01:58:33+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.0.0", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.28.3", + "fakerphp/faker": "^1.21", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^1.0", + "mockery/mockery": "^1.5", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpcsstandards/phpcsutils": "^1.0.0-rc1", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18.4", + "ramsey/coding-standard": "^2.0.3", + "ramsey/conventional-commits": "^1.3", + "vimeo/psalm": "^5.4" + }, + "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.0.0" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], + "time": "2022-12-31T21:50:55+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.7.6", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "91039bc1faa45ba123c4328958e620d382ec7088" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/91039bc1faa45ba123c4328958e620d382ec7088", + "reference": "91039bc1faa45ba123c4328958e620d382ec7088", + "shasum": "" + }, + "require": { + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12", + "ext-json": "*", + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^8.5 || ^9", + "ramsey/composer-repl": "^1.4", + "slevomat/coding-standard": "^8.4", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.9" + }, + "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.7.6" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "type": "tidelift" + } + ], + "time": "2024-04-27T21:32:50+00:00" + }, + { + "name": "symfony/console", + "version": "v6.4.17", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "799445db3f15768ecc382ac5699e6da0520a0a04" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/799445db3f15768ecc382ac5699e6da0520a0a04", + "reference": "799445db3f15768ecc382ac5699e6da0520a0a04", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^5.4|^6.0|^7.0" + }, + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "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/v6.4.17" + }, + "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-12-07T12:07:30+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v6.4.13", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "cb23e97813c5837a041b73a6d63a9ddff0778f5e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/cb23e97813c5837a041b73a6d63a9ddff0778f5e", + "reference": "cb23e97813c5837a041b73a6d63a9ddff0778f5e", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "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/v6.4.13" + }, + "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:18:03+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.5.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-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.5.1" + }, + "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:20:29+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v6.4.18", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "e8d3b5b1975e67812a54388b1ba8e9ec28eb770e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/e8d3b5b1975e67812a54388b1ba8e9ec28eb770e", + "reference": "e8d3b5b1975e67812a54388b1ba8e9ec28eb770e", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^5.4|^6.0|^7.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" + }, + "require-dev": { + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/serializer": "^5.4|^6.0|^7.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/v6.4.18" + }, + "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": "2025-01-06T09:38:16+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v6.4.13", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "0ffc48080ab3e9132ea74ef4e09d8dcf26bf897e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/0ffc48080ab3e9132ea74ef4e09d8dcf26bf897e", + "reference": "0ffc48080ab3e9132ea74ef4e09d8dcf26bf897e", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<5.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": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^5.4|^6.0|^7.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/v6.4.13" + }, + "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:18:03+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.5.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7642f5e970b672283b7823222ae8ef8bbc160b9f", + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f", + "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.5-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.5.1" + }, + "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:20:29+00:00" + }, + { + "name": "symfony/finder", + "version": "v6.4.17", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", + "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "symfony/filesystem": "^6.0|^7.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/v6.4.17" + }, + "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-12-29T13:51:37+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v6.4.18", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "d0492d6217e5ab48f51fca76f64cf8e78919d0db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/d0492d6217e5ab48f51fca76f64cf8e78919d0db", + "reference": "d0492d6217e5ab48f51fca76f64cf8e78919d0db", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" + }, + "conflict": { + "symfony/cache": "<6.4.12|>=7.0,<7.1.5" + }, + "require-dev": { + "doctrine/dbal": "^2.13.1|^3|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.4.12|^7.1.5", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "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/v6.4.18" + }, + "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": "2025-01-09T15:48:56+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v6.4.18", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "fca7197bfe9e99dfae7fb1ad3f7f5bd9ef80e1b7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/fca7197bfe9e99dfae7fb1ad3f7f5bd9ef80e1b7", + "reference": "fca7197bfe9e99dfae7fb1ad3f7f5bd9ef80e1b7", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.4", + "symfony/config": "<6.1", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<5.4", + "symfony/messenger": "<5.4", + "symfony/translation": "<5.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<5.4", + "symfony/validator": "<6.4", + "symfony/var-dumper": "<6.3", + "twig/twig": "<2.13" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/clock": "^6.2|^7.0", + "symfony/config": "^6.1|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/dom-crawler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4.5|^6.0.5|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.4.4|^7.0.4", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^5.4|^6.4|^7.0", + "symfony/var-exporter": "^6.2|^7.0", + "twig/twig": "^2.13|^3.0.4" + }, + "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/v6.4.18" + }, + "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": "2025-01-29T07:25:58+00:00" + }, + { + "name": "symfony/mailer", + "version": "v6.4.18", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "e93a6ae2767d7f7578c2b7961d9d8e27580b2b11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/e93a6ae2767d7f7578c2b7961d9d8e27580b2b11", + "reference": "e93a6ae2767d7f7578c2b7961d9d8e27580b2b11", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.1", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/mime": "^6.2|^7.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/messenger": "<6.2", + "symfony/mime": "<6.2", + "symfony/twig-bridge": "<6.2.1" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/messenger": "^6.2|^7.0", + "symfony/twig-bridge": "^6.2|^7.0" + }, + "type": "library", + "autoload": { + "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/v6.4.18" + }, + "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": "2025-01-24T15:27:15+00:00" + }, + { + "name": "symfony/mime", + "version": "v6.4.18", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "917d77981eb1ea963608d5cda4d9c0cf72eaa68e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/917d77981eb1ea963608d5cda4d9c0cf72eaa68e", + "reference": "917d77981eb1ea963608d5cda4d9c0cf72eaa68e", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "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": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<5.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": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.4|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.4.3|^7.0.3" + }, + "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/v6.4.18" + }, + "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": "2025-01-23T13:10:52+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.31.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.31.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-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "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.31.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-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c36586dcf89a12315939e00ec9b4474adcb1d773", + "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773", + "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.31.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-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.31.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.31.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-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", + "shasum": "" + }, + "require": { + "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.31.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-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "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.31.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-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-php83", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491", + "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491", + "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.31.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-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-uuid", + "version": "v1.31.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.31.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-09T11:45:10+00:00" + }, + { + "name": "symfony/process", + "version": "v6.4.15", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "3cb242f059c14ae08591c5c4087d1fe443564392" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/3cb242f059c14ae08591c5c4087d1fe443564392", + "reference": "3cb242f059c14ae08591c5c4087d1fe443564392", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "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/v6.4.15" + }, + "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-11-06T14:19:14+00:00" + }, + { + "name": "symfony/routing", + "version": "v6.4.18", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "e9bfc94953019089acdfb9be51c1b9142c4afa68" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/e9bfc94953019089acdfb9be51c1b9142c4afa68", + "reference": "e9bfc94953019089acdfb9be51c1b9142c4afa68", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "doctrine/annotations": "<1.12", + "symfony/config": "<6.2", + "symfony/dependency-injection": "<5.4", + "symfony/yaml": "<5.4" + }, + "require-dev": { + "doctrine/annotations": "^1.12|^2", + "psr/log": "^1|^2|^3", + "symfony/config": "^6.2|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "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/v6.4.18" + }, + "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": "2025-01-09T08:51:02+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.5.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "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.5-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.5.1" + }, + "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:20:29+00:00" + }, + { + "name": "symfony/string", + "version": "v6.4.15", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f", + "reference": "73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/intl": "^6.2|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^5.4|^6.0|^7.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/v6.4.15" + }, + "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-11-13T13:31:12+00:00" + }, + { + "name": "symfony/translation", + "version": "v6.4.13", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "bee9bfabfa8b4045a66bf82520e492cddbaffa66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/bee9bfabfa8b4045a66bf82520e492cddbaffa66", + "reference": "bee9bfabfa8b4045a66bf82520e492cddbaffa66", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.5|^3.0" + }, + "conflict": { + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<5.4", + "symfony/yaml": "<5.4" + }, + "provide": { + "symfony/translation-implementation": "2.3|3.0" + }, + "require-dev": { + "nikic/php-parser": "^4.18|^5.0", + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0|^7.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/v6.4.13" + }, + "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-27T18:14:25+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.5.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "4667ff3bd513750603a09c8dedbea942487fb07c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/4667ff3bd513750603a09c8dedbea942487fb07c", + "reference": "4667ff3bd513750603a09c8dedbea942487fb07c", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-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.5.1" + }, + "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:20:29+00:00" + }, + { + "name": "symfony/uid", + "version": "v6.4.13", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "18eb207f0436a993fffbdd811b5b8fa35fa5e007" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/18eb207f0436a993fffbdd811b5b8fa35fa5e007", + "reference": "18eb207f0436a993fffbdd811b5b8fa35fa5e007", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/polyfill-uuid": "^1.15" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0|^7.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/v6.4.13" + }, + "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:18:03+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v6.4.18", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "4ad10cf8b020e77ba665305bb7804389884b4837" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/4ad10cf8b020e77ba665305bb7804389884b4837", + "reference": "4ad10cf8b020e77ba665305bb7804389884b4837", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/console": "<5.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^6.3|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", + "twig/twig": "^2.13|^3.0.4" + }, + "bin": [ + "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/v6.4.18" + }, + "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": "2025-01-17T11:26:11+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "v2.3.0", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "0d72ac1c00084279c1816675284073c5a337c20d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0d72ac1c00084279c1816675284073c5a337c20d", + "reference": "0d72ac1c00084279c1816675284073c5a337c20d", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^7.4 || ^8.0", + "symfony/css-selector": "^5.4 || ^6.0 || ^7.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.3.0" + }, + "time": "2024-12-21T16:25:41+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.6.1", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/a59a13791077fe3d44f90e7133eb68e7d22eaff2", + "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.1.3", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.3", + "symfony/polyfill-ctype": "^1.24", + "symfony/polyfill-mbstring": "^1.24", + "symfony/polyfill-php80": "^1.24" + }, + "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.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2024-07-20T21:52:34+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" + }, + { + "name": "webmozart/assert", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "php": "^7.2 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "time": "2022-06-03T18:03:27+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.17.0", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "075bc0c26631110584175de6523ab3f1652eb28e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/075bc0c26631110584175de6523ab3f1652eb28e", + "reference": "075bc0c26631110584175de6523ab3f1652eb28e", + "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.17.0" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2025-01-25T12:00:00+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "shasum": "" + }, + "require": { + "php": "^5.3|^7.0|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.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.0.1" + }, + "time": "2020-07-09T08:09:16+00:00" + }, + { + "name": "laravel/pint", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/pint.git", + "reference": "53072e8ea22213a7ed168a8a15b96fbb8b82d44b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pint/zipball/53072e8ea22213a7ed168a8a15b96fbb8b82d44b", + "reference": "53072e8ea22213a7ed168a8a15b96fbb8b82d44b", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "ext-tokenizer": "*", + "ext-xml": "*", + "php": "^8.1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.66.0", + "illuminate/view": "^10.48.25", + "larastan/larastan": "^2.9.12", + "laravel-zero/framework": "^10.48.25", + "mockery/mockery": "^1.6.12", + "nunomaduro/termwind": "^1.17.0", + "pestphp/pest": "^2.36.0" + }, + "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": [ + "format", + "formatter", + "lint", + "linter", + "php" + ], + "support": { + "issues": "https://github.com/laravel/pint/issues", + "source": "https://github.com/laravel/pint" + }, + "time": "2025-01-14T16:20:53+00:00" + }, + { + "name": "laravel/sail", + "version": "v1.41.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/sail.git", + "reference": "fe1a4ada0abb5e4bd99eb4e4b0d87906c00cdeec" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sail/zipball/fe1a4ada0abb5e4bd99eb4e4b0d87906c00cdeec", + "reference": "fe1a4ada0abb5e4bd99eb4e4b0d87906c00cdeec", + "shasum": "" + }, + "require": { + "illuminate/console": "^9.52.16|^10.0|^11.0|^12.0", + "illuminate/contracts": "^9.52.16|^10.0|^11.0|^12.0", + "illuminate/support": "^9.52.16|^10.0|^11.0|^12.0", + "php": "^8.0", + "symfony/console": "^6.0|^7.0", + "symfony/yaml": "^6.0|^7.0" + }, + "require-dev": { + "orchestra/testbench": "^7.0|^8.0|^9.0|^10.0", + "phpstan/phpstan": "^1.10" + }, + "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": "2025-01-24T15:45:36+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.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "024473a478be9df5fdaca2c793f2232fe788e414" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/024473a478be9df5fdaca2c793f2232fe788e414", + "reference": "024473a478be9df5fdaca2c793f2232fe788e414", + "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.0" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2025-02-12T12:17:51+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v7.11.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "994ea93df5d4132f69d3f1bd74730509df6e8a05" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/994ea93df5d4132f69d3f1bd74730509df6e8a05", + "reference": "994ea93df5d4132f69d3f1bd74730509df6e8a05", + "shasum": "" + }, + "require": { + "filp/whoops": "^2.16.0", + "nunomaduro/termwind": "^1.15.1", + "php": "^8.1.0", + "symfony/console": "^6.4.12" + }, + "conflict": { + "laravel/framework": ">=11.0.0" + }, + "require-dev": { + "brianium/paratest": "^7.3.1", + "laravel/framework": "^10.48.22", + "laravel/pint": "^1.18.1", + "laravel/sail": "^1.36.0", + "laravel/sanctum": "^3.3.3", + "laravel/tinker": "^2.10.0", + "nunomaduro/larastan": "^2.9.8", + "orchestra/testbench-core": "^8.28.3", + "pestphp/pest": "^2.35.1", + "phpunit/phpunit": "^10.5.36", + "sebastian/environment": "^6.1.0", + "spatie/laravel-ignition": "^2.8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + } + }, + "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", + "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": "2024-10-15T15:12:40+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": "10.1.16", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "7e308268858ed6baedc8704a304727d20bc07c77" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e308268858ed6baedc8704a304727d20bc07c77", + "reference": "7e308268858ed6baedc8704a304727d20bc07c77", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.19.1 || ^5.1.0", + "php": ">=8.1", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-text-template": "^3.0.1", + "sebastian/code-unit-reverse-lookup": "^3.0.0", + "sebastian/complexity": "^3.2.0", + "sebastian/environment": "^6.1.0", + "sebastian/lines-of-code": "^2.0.2", + "sebastian/version": "^4.0.1", + "theseer/tokenizer": "^1.2.3" + }, + "require-dev": { + "phpunit/phpunit": "^10.1" + }, + "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": "10.1.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/10.1.16" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-08-22T04:31:57+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "4.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.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": "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/4.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-31T06:24:48+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^10.0" + }, + "suggest": { + "ext-pcntl": "*" + }, + "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": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:56:09+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.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": "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/3.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-31T14:07:24+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "6.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.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", + "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", + "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:57:52+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "10.5.45", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "bd68a781d8e30348bc297449f5234b3458267ae8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bd68a781d8e30348bc297449f5234b3458267ae8", + "reference": "bd68a781d8e30348bc297449f5234b3458267ae8", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.12.1", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=8.1", + "phpunit/php-code-coverage": "^10.1.16", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-invoker": "^4.0.0", + "phpunit/php-text-template": "^3.0.1", + "phpunit/php-timer": "^6.0.0", + "sebastian/cli-parser": "^2.0.1", + "sebastian/code-unit": "^2.0.0", + "sebastian/comparator": "^5.0.3", + "sebastian/diff": "^5.1.1", + "sebastian/environment": "^6.1.0", + "sebastian/exporter": "^5.1.2", + "sebastian/global-state": "^6.0.2", + "sebastian/object-enumerator": "^5.0.0", + "sebastian/recursion-context": "^5.0.0", + "sebastian/type": "^4.0.0", + "sebastian/version": "^4.0.1" + }, + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "10.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/10.5.45" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2025-02-06T16:08:12+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.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/2.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:12:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.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", + "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:58:43+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.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" + } + ], + "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", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:59:15+00:00" + }, + { + "name": "sebastian/comparator", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", + "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/diff": "^5.0", + "sebastian/exporter": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.5" + }, + "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" + }, + { + "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/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-10-18T14:56:07+00:00" + }, + { + "name": "sebastian/complexity", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "68ff824baeae169ec9f2137158ee529584553799" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.2-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/3.2.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-21T08:37:17+00:00" + }, + { + "name": "sebastian/diff", + "version": "5.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0", + "symfony/process": "^6.4" + }, + "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" + }, + { + "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/5.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:15:17+00:00" + }, + { + "name": "sebastian/environment", + "version": "6.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.1-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/6.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-23T08:47:14+00:00" + }, + { + "name": "sebastian/exporter", + "version": "5.1.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "955288482d97c19a372d3f31006ab3f37da47adf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", + "reference": "955288482d97c19a372d3f31006ab3f37da47adf", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "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" + }, + { + "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/5.1.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:17:12+00:00" + }, + { + "name": "sebastian/global-state", + "version": "6.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^10.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": "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/6.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:19:19+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.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/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-21T08:38:20+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "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" + } + ], + "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", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:08:32+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.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" + } + ], + "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", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:06:18+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "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" + }, + { + "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", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:05:40+00:00" + }, + { + "name": "sebastian/type", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.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": "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", + "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:10:45+00:00" + }, + { + "name": "sebastian/version", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "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 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", + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-07T11:34:05+00:00" + }, + { + "name": "spatie/backtrace", + "version": "1.7.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/backtrace.git", + "reference": "0f2477c520e3729de58e061b8192f161c99f770b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/0f2477c520e3729de58e061b8192f161c99f770b", + "reference": "0f2477c520e3729de58e061b8192f161c99f770b", + "shasum": "" + }, + "require": { + "php": "^7.3 || ^8.0" + }, + "require-dev": { + "ext-json": "*", + "laravel/serializable-closure": "^1.3 || ^2.0", + "phpunit/phpunit": "^9.3 || ^11.4.3", + "spatie/phpunit-snapshot-assertions": "^4.2 || ^5.1.6", + "symfony/var-dumper": "^5.1 || ^6.0 || ^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Backtrace\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van de Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "A better backtrace", + "homepage": "https://github.com/spatie/backtrace", + "keywords": [ + "Backtrace", + "spatie" + ], + "support": { + "source": "https://github.com/spatie/backtrace/tree/1.7.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/spatie", + "type": "github" + }, + { + "url": "https://spatie.be/open-source/support-us", + "type": "other" + } + ], + "time": "2024-12-02T13:28:15+00:00" + }, + { + "name": "spatie/error-solutions", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/spatie/error-solutions.git", + "reference": "e495d7178ca524f2dd0fe6a1d99a1e608e1c9936" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/error-solutions/zipball/e495d7178ca524f2dd0fe6a1d99a1e608e1c9936", + "reference": "e495d7178ca524f2dd0fe6a1d99a1e608e1c9936", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "illuminate/broadcasting": "^10.0|^11.0|^12.0", + "illuminate/cache": "^10.0|^11.0|^12.0", + "illuminate/support": "^10.0|^11.0|^12.0", + "livewire/livewire": "^2.11|^3.5.20", + "openai-php/client": "^0.10.1", + "orchestra/testbench": "8.22.3|^9.0|^10.0", + "pestphp/pest": "^2.20|^3.0", + "phpstan/phpstan": "^2.1", + "psr/simple-cache": "^3.0", + "psr/simple-cache-implementation": "^3.0", + "spatie/ray": "^1.28", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "simple-cache-implementation": "To cache solutions from OpenAI" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Ignition\\": "legacy/ignition", + "Spatie\\ErrorSolutions\\": "src", + "Spatie\\LaravelIgnition\\": "legacy/laravel-ignition" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ruben Van Assche", + "email": "ruben@spatie.be", + "role": "Developer" + } + ], + "description": "This is my package error-solutions", + "homepage": "https://github.com/spatie/error-solutions", + "keywords": [ + "error-solutions", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/error-solutions/issues", + "source": "https://github.com/spatie/error-solutions/tree/1.1.3" + }, + "funding": [ + { + "url": "https://github.com/Spatie", + "type": "github" + } + ], + "time": "2025-02-14T12:29:50+00:00" + }, + { + "name": "spatie/flare-client-php", + "version": "1.10.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/flare-client-php.git", + "reference": "bf1716eb98bd689451b071548ae9e70738dce62f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/bf1716eb98bd689451b071548ae9e70738dce62f", + "reference": "bf1716eb98bd689451b071548ae9e70738dce62f", + "shasum": "" + }, + "require": { + "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0|^12.0", + "php": "^8.0", + "spatie/backtrace": "^1.6.1", + "symfony/http-foundation": "^5.2|^6.0|^7.0", + "symfony/mime": "^5.2|^6.0|^7.0", + "symfony/process": "^5.2|^6.0|^7.0", + "symfony/var-dumper": "^5.2|^6.0|^7.0" + }, + "require-dev": { + "dms/phpunit-arraysubset-asserts": "^0.5.0", + "pestphp/pest": "^1.20|^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "spatie/pest-plugin-snapshots": "^1.0|^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.3.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\FlareClient\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Send PHP errors to Flare", + "homepage": "https://github.com/spatie/flare-client-php", + "keywords": [ + "exception", + "flare", + "reporting", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/flare-client-php/issues", + "source": "https://github.com/spatie/flare-client-php/tree/1.10.1" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2025-02-14T13:42:06+00:00" + }, + { + "name": "spatie/ignition", + "version": "1.15.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/ignition.git", + "reference": "e3a68e137371e1eb9edc7f78ffa733f3b98991d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/ignition/zipball/e3a68e137371e1eb9edc7f78ffa733f3b98991d2", + "reference": "e3a68e137371e1eb9edc7f78ffa733f3b98991d2", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "php": "^8.0", + "spatie/error-solutions": "^1.0", + "spatie/flare-client-php": "^1.7", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" + }, + "require-dev": { + "illuminate/cache": "^9.52|^10.0|^11.0", + "mockery/mockery": "^1.4", + "pestphp/pest": "^1.20|^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "psr/simple-cache-implementation": "*", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "simple-cache-implementation": "To cache solutions from OpenAI" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.5.x-dev" + } + }, + "autoload": { + "psr-4": { + "Spatie\\Ignition\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Spatie", + "email": "info@spatie.be", + "role": "Developer" + } + ], + "description": "A beautiful error page for PHP applications.", + "homepage": "https://flareapp.io/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "support": { + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/spatie/ignition/issues", + "source": "https://github.com/spatie/ignition" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2024-06-12T14:55:22+00:00" + }, + { + "name": "spatie/laravel-ignition", + "version": "2.9.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-ignition.git", + "reference": "62042df15314b829d0f26e02108f559018e2aad0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/62042df15314b829d0f26e02108f559018e2aad0", + "reference": "62042df15314b829d0f26e02108f559018e2aad0", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "illuminate/support": "^10.0|^11.0", + "php": "^8.1", + "spatie/ignition": "^1.15", + "symfony/console": "^6.2.3|^7.0", + "symfony/var-dumper": "^6.2.3|^7.0" + }, + "require-dev": { + "livewire/livewire": "^2.11|^3.3.5", + "mockery/mockery": "^1.5.1", + "openai-php/client": "^0.8.1", + "orchestra/testbench": "8.22.3|^9.0", + "pestphp/pest": "^2.34", + "phpstan/extension-installer": "^1.3.1", + "phpstan/phpstan-deprecation-rules": "^1.1.1", + "phpstan/phpstan-phpunit": "^1.3.16", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "psr/simple-cache-implementation": "Needed to cache solutions from OpenAI" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" + }, + "providers": [ + "Spatie\\LaravelIgnition\\IgnitionServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\LaravelIgnition\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Spatie", + "email": "info@spatie.be", + "role": "Developer" + } + ], + "description": "A beautiful error page for Laravel applications.", + "homepage": "https://flareapp.io/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "support": { + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/spatie/laravel-ignition/issues", + "source": "https://github.com/spatie/laravel-ignition" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2024-12-02T08:43:31+00:00" + }, + { + "name": "symfony/yaml", + "version": "v6.4.18", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "bf598c9d9bb4a22f495a4e26e4c4fce2f8ecefc5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/bf598c9d9bb4a22f495a4e26e4c4fce2f8ecefc5", + "reference": "bf598c9d9bb4a22f495a4e26e4c4fce2f8ecefc5", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<5.4" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0|^7.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/v6.4.18" + }, + "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": "2025-01-07T09:44:41+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.3", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "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.2.3" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:36:25+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": "^8.1" + }, + "platform-dev": [], + "plugin-api-version": "2.6.0" +} diff --git a/lstm_prediction/config/app.php b/lstm_prediction/config/app.php new file mode 100644 index 0000000..c303137 --- /dev/null +++ b/lstm_prediction/config/app.php @@ -0,0 +1,188 @@ + 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 + | your application so that it is used when running Artisan tasks. + | + */ + + 'url' => env('APP_URL', 'http://localhost'), + + 'asset_url' => env('ASSET_URL'), + + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | Here you may specify the default timezone for your application, which + | will be used by the PHP date and date-time functions. We have gone + | ahead and set this to a sensible default for you out of the box. + | + */ + + 'timezone' => 'Asia/Jakarta', + + /* + |-------------------------------------------------------------------------- + | Application Locale Configuration + |-------------------------------------------------------------------------- + | + | The application locale determines the default locale that will be used + | by the translation service provider. You are free to set this value + | to any of the locales which will be supported by the application. + | + */ + + 'locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Application Fallback Locale + |-------------------------------------------------------------------------- + | + | The fallback locale determines the locale to use when the current one + | is not available. You may change the value to correspond to any of + | the language folders that are provided through your application. + | + */ + + 'fallback_locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Faker Locale + |-------------------------------------------------------------------------- + | + | This locale will be used by the Faker PHP library when generating fake + | data for your database seeds. For example, this will be used to get + | localized telephone numbers, street address information and more. + | + */ + + 'faker_locale' => 'en_US', + + /* + |-------------------------------------------------------------------------- + | Encryption Key + |-------------------------------------------------------------------------- + | + | This key is used by the Illuminate encrypter service and should be set + | to a random, 32 character string, otherwise these encrypted strings + | will not be safe. Please do this before deploying an application! + | + */ + + 'key' => env('APP_KEY'), + + 'cipher' => 'AES-256-CBC', + + /* + |-------------------------------------------------------------------------- + | 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' => 'file', + // 'store' => 'redis', + ], + + /* + |-------------------------------------------------------------------------- + | Autoloaded Service Providers + |-------------------------------------------------------------------------- + | + | The service providers listed here will be automatically loaded on the + | request to your application. Feel free to add your own services to + | this array to grant expanded functionality to your applications. + | + */ + + 'providers' => ServiceProvider::defaultProviders()->merge([ + /* + * Package Service Providers... + */ + + /* + * Application Service Providers... + */ + App\Providers\AppServiceProvider::class, + App\Providers\AuthServiceProvider::class, + // App\Providers\BroadcastServiceProvider::class, + App\Providers\EventServiceProvider::class, + App\Providers\RouteServiceProvider::class, + ])->toArray(), + + /* + |-------------------------------------------------------------------------- + | Class Aliases + |-------------------------------------------------------------------------- + | + | This array of class aliases will be registered when this application + | is started. However, feel free to register as many as you wish as + | the aliases are "lazy" loaded so they don't hinder performance. + | + */ + + 'aliases' => Facade::defaultAliases()->merge([ + // 'Example' => App\Facades\Example::class, + ])->toArray(), + +]; diff --git a/lstm_prediction/config/auth.php b/lstm_prediction/config/auth.php new file mode 100644 index 0000000..9548c15 --- /dev/null +++ b/lstm_prediction/config/auth.php @@ -0,0 +1,115 @@ + [ + 'guard' => 'web', + 'passwords' => 'users', + ], + + /* + |-------------------------------------------------------------------------- + | Authentication Guards + |-------------------------------------------------------------------------- + | + | Next, you may define every authentication guard for your application. + | Of course, a great default configuration has been defined for you + | here which uses session storage and the Eloquent user provider. + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | Supported: "session" + | + */ + + 'guards' => [ + 'web' => [ + 'driver' => 'session', + 'provider' => 'users', + ], + ], + + /* + |-------------------------------------------------------------------------- + | User Providers + |-------------------------------------------------------------------------- + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | If you have multiple user tables or models you may configure multiple + | sources which represent each model / table. These sources may then + | be assigned to any extra authentication guards you have defined. + | + | Supported: "database", "eloquent" + | + */ + + 'providers' => [ + 'users' => [ + 'driver' => 'eloquent', + 'model' => App\Models\User::class, + ], + + // 'users' => [ + // 'driver' => 'database', + // 'table' => 'users', + // ], + ], + + /* + |-------------------------------------------------------------------------- + | Resetting Passwords + |-------------------------------------------------------------------------- + | + | You may specify multiple password reset configurations if you have more + | than one user table or model in the application and you want to have + | separate password reset settings based on the specific user types. + | + | 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' => 'password_reset_tokens', + 'expire' => 60, + 'throttle' => 60, + ], + ], + + /* + |-------------------------------------------------------------------------- + | Password Confirmation Timeout + |-------------------------------------------------------------------------- + | + | Here you may define the amount of seconds before a password confirmation + | times out and the user is prompted to re-enter their password via the + | confirmation screen. By default, the timeout lasts for three hours. + | + */ + + 'password_timeout' => 10800, + +]; diff --git a/lstm_prediction/config/broadcasting.php b/lstm_prediction/config/broadcasting.php new file mode 100644 index 0000000..2410485 --- /dev/null +++ b/lstm_prediction/config/broadcasting.php @@ -0,0 +1,71 @@ + env('BROADCAST_DRIVER', 'null'), + + /* + |-------------------------------------------------------------------------- + | Broadcast Connections + |-------------------------------------------------------------------------- + | + | Here you may define all of the broadcast connections that will be used + | to broadcast events to other systems or over websockets. Samples of + | each available type of connection are provided inside this array. + | + */ + + 'connections' => [ + + 'pusher' => [ + 'driver' => 'pusher', + 'key' => env('PUSHER_APP_KEY'), + 'secret' => env('PUSHER_APP_SECRET'), + 'app_id' => env('PUSHER_APP_ID'), + 'options' => [ + 'cluster' => env('PUSHER_APP_CLUSTER'), + 'host' => env('PUSHER_HOST') ?: 'api-'.env('PUSHER_APP_CLUSTER', 'mt1').'.pusher.com', + 'port' => env('PUSHER_PORT', 443), + 'scheme' => env('PUSHER_SCHEME', 'https'), + 'encrypted' => true, + 'useTLS' => env('PUSHER_SCHEME', 'https') === 'https', + ], + 'client_options' => [ + // Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html + ], + ], + + 'ably' => [ + 'driver' => 'ably', + 'key' => env('ABLY_KEY'), + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + ], + + 'log' => [ + 'driver' => 'log', + ], + + 'null' => [ + 'driver' => 'null', + ], + + ], + +]; diff --git a/lstm_prediction/config/cache.php b/lstm_prediction/config/cache.php new file mode 100644 index 0000000..d4171e2 --- /dev/null +++ b/lstm_prediction/config/cache.php @@ -0,0 +1,111 @@ + env('CACHE_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | 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: "apc", "array", "database", "file", + | "memcached", "redis", "dynamodb", "octane", "null" + | + */ + + 'stores' => [ + + 'apc' => [ + 'driver' => 'apc', + ], + + 'array' => [ + 'driver' => 'array', + 'serialize' => false, + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'cache', + 'connection' => null, + 'lock_connection' => null, + ], + + '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' => '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', + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Cache Key Prefix + |-------------------------------------------------------------------------- + | + | When utilizing the APC, database, memcached, Redis, or 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(env('APP_NAME', 'laravel'), '_').'_cache_'), + +]; diff --git a/lstm_prediction/config/cors.php b/lstm_prediction/config/cors.php new file mode 100644 index 0000000..8a39e6d --- /dev/null +++ b/lstm_prediction/config/cors.php @@ -0,0 +1,34 @@ + ['api/*', 'sanctum/csrf-cookie'], + + 'allowed_methods' => ['*'], + + 'allowed_origins' => ['*'], + + 'allowed_origins_patterns' => [], + + 'allowed_headers' => ['*'], + + 'exposed_headers' => [], + + 'max_age' => 0, + + 'supports_credentials' => false, + +]; diff --git a/lstm_prediction/config/database.php b/lstm_prediction/config/database.php new file mode 100644 index 0000000..137ad18 --- /dev/null +++ b/lstm_prediction/config/database.php @@ -0,0 +1,151 @@ + env('DB_CONNECTION', 'mysql'), + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Here are each of the database connections setup for your application. + | Of course, examples of configuring each database platform that is + | supported by Laravel is shown below to make development simple. + | + | + | All database work in Laravel is done through the PHP PDO facilities + | so make sure you have the driver for your particular database of + | choice installed on your machine before you begin development. + | + */ + + 'connections' => [ + + 'sqlite' => [ + 'driver' => 'sqlite', + 'url' => env('DATABASE_URL'), + 'database' => env('DB_DATABASE', database_path('database.sqlite')), + 'prefix' => '', + 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), + ], + + 'mysql' => [ + 'driver' => 'mysql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'pgsql' => [ + 'driver' => 'pgsql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + 'search_path' => 'public', + 'sslmode' => 'prefer', + ], + + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', '1433'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + '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 in the database. + | + */ + + 'migrations' => 'migrations', + + /* + |-------------------------------------------------------------------------- + | 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 APC or Memcached. Laravel makes it easy to dig right in. + | + */ + + 'redis' => [ + + 'client' => env('REDIS_CLIENT', 'phpredis'), + + 'options' => [ + 'cluster' => env('REDIS_CLUSTER', 'redis'), + 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), + ], + + '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'), + ], + + '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'), + ], + + ], + +]; diff --git a/lstm_prediction/config/filesystems.php b/lstm_prediction/config/filesystems.php new file mode 100644 index 0000000..e9d9dbd --- /dev/null +++ b/lstm_prediction/config/filesystems.php @@ -0,0 +1,76 @@ + env('FILESYSTEM_DISK', 'local'), + + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Here you may configure as many filesystem "disks" as you wish, and you + | may even configure multiple disks of the same driver. Defaults have + | been set up for each driver as an example of the required values. + | + | Supported Drivers: "local", "ftp", "sftp", "s3" + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app'), + 'throw' => false, + ], + + 'public' => [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => env('APP_URL').'/storage', + 'visibility' => 'public', + 'throw' => 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, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | 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/lstm_prediction/config/hashing.php b/lstm_prediction/config/hashing.php new file mode 100644 index 0000000..0e8a0bb --- /dev/null +++ b/lstm_prediction/config/hashing.php @@ -0,0 +1,54 @@ + 'bcrypt', + + /* + |-------------------------------------------------------------------------- + | Bcrypt Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Bcrypt algorithm. This will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'bcrypt' => [ + 'rounds' => env('BCRYPT_ROUNDS', 12), + 'verify' => true, + ], + + /* + |-------------------------------------------------------------------------- + | Argon Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Argon algorithm. These will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'argon' => [ + 'memory' => 65536, + 'threads' => 1, + 'time' => 4, + 'verify' => true, + ], + +]; diff --git a/lstm_prediction/config/logging.php b/lstm_prediction/config/logging.php new file mode 100644 index 0000000..c44d276 --- /dev/null +++ b/lstm_prediction/config/logging.php @@ -0,0 +1,131 @@ + 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' => false, + ], + + /* + |-------------------------------------------------------------------------- + | Log Channels + |-------------------------------------------------------------------------- + | + | Here you may configure the log channels for your application. Out of + | the box, Laravel uses the Monolog PHP logging library. This gives + | you a variety of powerful log handlers / formatters to utilize. + | + | Available Drivers: "single", "daily", "slack", "syslog", + | "errorlog", "monolog", + | "custom", "stack" + | + */ + + 'channels' => [ + 'stack' => [ + 'driver' => 'stack', + 'channels' => ['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' => 14, + 'replace_placeholders' => true, + ], + + 'slack' => [ + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'username' => 'Laravel Log', + '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, + 'formatter' => env('LOG_STDERR_FORMATTER'), + 'with' => [ + 'stream' => 'php://stderr', + ], + 'processors' => [PsrLogMessageProcessor::class], + ], + + 'syslog' => [ + 'driver' => 'syslog', + 'level' => env('LOG_LEVEL', 'debug'), + '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/lstm_prediction/config/mail.php b/lstm_prediction/config/mail.php new file mode 100644 index 0000000..e894b2e --- /dev/null +++ b/lstm_prediction/config/mail.php @@ -0,0 +1,134 @@ + env('MAIL_MAILER', 'smtp'), + + /* + |-------------------------------------------------------------------------- + | 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 to be used while + | sending an e-mail. You will specify which one you are using for your + | mailers below. You are free to add additional mailers as required. + | + | Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2", + | "postmark", "log", "array", "failover", "roundrobin" + | + */ + + 'mailers' => [ + 'smtp' => [ + 'transport' => 'smtp', + 'url' => env('MAIL_URL'), + 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), + 'port' => env('MAIL_PORT', 587), + 'encryption' => env('MAIL_ENCRYPTION', 'tls'), + 'username' => env('MAIL_USERNAME'), + 'password' => env('MAIL_PASSWORD'), + 'timeout' => null, + 'local_domain' => env('MAIL_EHLO_DOMAIN'), + ], + + 'ses' => [ + 'transport' => 'ses', + ], + + 'postmark' => [ + 'transport' => 'postmark', + // 'message_stream_id' => null, + // 'client' => [ + // 'timeout' => 5, + // ], + ], + + 'mailgun' => [ + 'transport' => 'mailgun', + // 'client' => [ + // 'timeout' => 5, + // ], + ], + + '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', + ], + ], + + 'roundrobin' => [ + 'transport' => 'roundrobin', + 'mailers' => [ + 'ses', + 'postmark', + ], + ], + ], + + /* + |-------------------------------------------------------------------------- + | Global "From" Address + |-------------------------------------------------------------------------- + | + | You may wish for all e-mails 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 e-mails that are sent by your application. + | + */ + + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), + 'name' => env('MAIL_FROM_NAME', 'Example'), + ], + + /* + |-------------------------------------------------------------------------- + | Markdown Mail Settings + |-------------------------------------------------------------------------- + | + | If you are using Markdown based email rendering, you may configure your + | theme and component paths here, allowing you to customize the design + | of the emails. Or, you may simply stick with the Laravel defaults! + | + */ + + 'markdown' => [ + 'theme' => 'default', + + 'paths' => [ + resource_path('views/vendor/mail'), + ], + ], + +]; diff --git a/lstm_prediction/config/queue.php b/lstm_prediction/config/queue.php new file mode 100644 index 0000000..01c6b05 --- /dev/null +++ b/lstm_prediction/config/queue.php @@ -0,0 +1,109 @@ + env('QUEUE_CONNECTION', 'sync'), + + /* + |-------------------------------------------------------------------------- + | Queue Connections + |-------------------------------------------------------------------------- + | + | Here you may configure the connection information for each server that + | is used by your application. A default configuration has been added + | for each back-end shipped with Laravel. You are free to add more. + | + | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" + | + */ + + 'connections' => [ + + 'sync' => [ + 'driver' => 'sync', + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'jobs', + 'queue' => 'default', + 'retry_after' => 90, + 'after_commit' => false, + ], + + 'beanstalkd' => [ + 'driver' => 'beanstalkd', + 'host' => 'localhost', + 'queue' => 'default', + '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' => 'default', + 'queue' => env('REDIS_QUEUE', 'default'), + 'retry_after' => 90, + 'block_for' => null, + 'after_commit' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | 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', 'mysql'), + 'table' => 'job_batches', + ], + + /* + |-------------------------------------------------------------------------- + | Failed Queue Jobs + |-------------------------------------------------------------------------- + | + | These options configure the behavior of failed queue job logging so you + | can control which database and table are used to store the jobs that + | have failed. You may change them to any database / table you wish. + | + */ + + 'failed' => [ + 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'), + 'database' => env('DB_CONNECTION', 'mysql'), + 'table' => 'failed_jobs', + ], + +]; diff --git a/lstm_prediction/config/sanctum.php b/lstm_prediction/config/sanctum.php new file mode 100644 index 0000000..35d75b3 --- /dev/null +++ b/lstm_prediction/config/sanctum.php @@ -0,0 +1,83 @@ + explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( + '%s%s', + 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', + Sanctum::currentApplicationUrlWithPort() + ))), + + /* + |-------------------------------------------------------------------------- + | Sanctum Guards + |-------------------------------------------------------------------------- + | + | This array contains the authentication guards that will be checked when + | Sanctum is trying to authenticate a request. If none of these guards + | are able to authenticate the request, Sanctum will use the bearer + | token that's present on an incoming request for authentication. + | + */ + + 'guard' => ['web'], + + /* + |-------------------------------------------------------------------------- + | Expiration Minutes + |-------------------------------------------------------------------------- + | + | This value controls the number of minutes until an issued token will be + | considered expired. This will override any values set in the token's + | "expires_at" attribute, but first-party sessions are not affected. + | + */ + + 'expiration' => null, + + /* + |-------------------------------------------------------------------------- + | Token Prefix + |-------------------------------------------------------------------------- + | + | Sanctum can prefix new tokens in order to take advantage of numerous + | security scanning initiatives maintained by open source platforms + | that notify developers if they commit tokens into repositories. + | + | See: https://docs.github.com/en/code-security/secret-scanning/about-secret-scanning + | + */ + + 'token_prefix' => env('SANCTUM_TOKEN_PREFIX', ''), + + /* + |-------------------------------------------------------------------------- + | Sanctum Middleware + |-------------------------------------------------------------------------- + | + | When authenticating your first-party SPA with Sanctum you may need to + | customize some of the middleware Sanctum uses while processing the + | request. You may change the middleware listed below as required. + | + */ + + 'middleware' => [ + 'authenticate_session' => Laravel\Sanctum\Http\Middleware\AuthenticateSession::class, + 'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class, + 'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class, + ], + +]; diff --git a/lstm_prediction/config/services.php b/lstm_prediction/config/services.php new file mode 100644 index 0000000..0ace530 --- /dev/null +++ b/lstm_prediction/config/services.php @@ -0,0 +1,34 @@ + [ + 'domain' => env('MAILGUN_DOMAIN'), + 'secret' => env('MAILGUN_SECRET'), + 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), + 'scheme' => 'https', + ], + + 'postmark' => [ + 'token' => env('POSTMARK_TOKEN'), + ], + + 'ses' => [ + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + +]; diff --git a/lstm_prediction/config/session.php b/lstm_prediction/config/session.php new file mode 100644 index 0000000..e738cb3 --- /dev/null +++ b/lstm_prediction/config/session.php @@ -0,0 +1,214 @@ + env('SESSION_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | 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 immediately expire on the browser closing, set that option. + | + */ + + 'lifetime' => env('SESSION_LIFETIME', 120), + + 'expire_on_close' => false, + + /* + |-------------------------------------------------------------------------- + | Session Encryption + |-------------------------------------------------------------------------- + | + | This option allows you to easily specify that all of your session data + | should be encrypted before it is stored. All encryption will be run + | automatically by Laravel and you can use the Session like normal. + | + */ + + 'encrypt' => false, + + /* + |-------------------------------------------------------------------------- + | Session File Location + |-------------------------------------------------------------------------- + | + | When using the native session driver, we need a location where session + | files may be stored. A default has been set for you but a different + | location may be specified. This is only needed for file sessions. + | + */ + + '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 we + | should use to manage the sessions. Of course, a sensible default is + | provided for you; however, you are free to change this as needed. + | + */ + + 'table' => 'sessions', + + /* + |-------------------------------------------------------------------------- + | Session Cache Store + |-------------------------------------------------------------------------- + | + | While using one of the framework's cache driven session backends you may + | list a cache store that should be used for these sessions. This value + | must match with one of the application's configured cache "stores". + | + | Affects: "apc", "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 cookie used to identify a session + | instance by ID. The name specified here will get used every time a + | new session cookie is created by the framework for every driver. + | + */ + + 'cookie' => env( + 'SESSION_COOKIE', + Str::slug(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 are free to change this when necessary. + | + */ + + 'path' => '/', + + /* + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | Here you may change the domain of the cookie used to identify a session + | in your application. This will determine which domains the cookie is + | available to in your application. A sensible default has been set. + | + */ + + '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. You are free to modify this option if needed. + | + */ + + '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" since this is a secure default value. + | + | Supported: "lax", "strict", "none", null + | + */ + + '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' => false, + +]; diff --git a/lstm_prediction/config/view.php b/lstm_prediction/config/view.php new file mode 100644 index 0000000..22b8a18 --- /dev/null +++ b/lstm_prediction/config/view.php @@ -0,0 +1,36 @@ + [ + resource_path('views'), + ], + + /* + |-------------------------------------------------------------------------- + | Compiled View Path + |-------------------------------------------------------------------------- + | + | This option determines where all the compiled Blade templates will be + | stored for your application. Typically, this is within the storage + | directory. However, as usual, you are free to change this value. + | + */ + + 'compiled' => env( + 'VIEW_COMPILED_PATH', + realpath(storage_path('framework/views')) + ), + +]; diff --git a/lstm_prediction/database/.gitignore b/lstm_prediction/database/.gitignore new file mode 100644 index 0000000..9b19b93 --- /dev/null +++ b/lstm_prediction/database/.gitignore @@ -0,0 +1 @@ +*.sqlite* diff --git a/lstm_prediction/database/factories/UserFactory.php b/lstm_prediction/database/factories/UserFactory.php new file mode 100644 index 0000000..584104c --- /dev/null +++ b/lstm_prediction/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/lstm_prediction/database/migrations/2014_10_12_000000_create_users_table.php b/lstm_prediction/database/migrations/2014_10_12_000000_create_users_table.php new file mode 100644 index 0000000..444fafb --- /dev/null +++ b/lstm_prediction/database/migrations/2014_10_12_000000_create_users_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('name'); + $table->string('email')->unique(); + $table->timestamp('email_verified_at')->nullable(); + $table->string('password'); + $table->rememberToken(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('users'); + } +}; diff --git a/lstm_prediction/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php b/lstm_prediction/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php new file mode 100644 index 0000000..81a7229 --- /dev/null +++ b/lstm_prediction/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php @@ -0,0 +1,28 @@ +string('email')->primary(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('password_reset_tokens'); + } +}; diff --git a/lstm_prediction/database/migrations/2014_10_12_100000_create_password_resets_table.php b/lstm_prediction/database/migrations/2014_10_12_100000_create_password_resets_table.php new file mode 100644 index 0000000..fcacb80 --- /dev/null +++ b/lstm_prediction/database/migrations/2014_10_12_100000_create_password_resets_table.php @@ -0,0 +1,32 @@ +string('email')->index(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('password_resets'); + } +}; diff --git a/lstm_prediction/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/lstm_prediction/database/migrations/2019_08_19_000000_create_failed_jobs_table.php new file mode 100644 index 0000000..249da81 --- /dev/null +++ b/lstm_prediction/database/migrations/2019_08_19_000000_create_failed_jobs_table.php @@ -0,0 +1,32 @@ +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('failed_jobs'); + } +}; diff --git a/lstm_prediction/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/lstm_prediction/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php new file mode 100644 index 0000000..e828ad8 --- /dev/null +++ b/lstm_prediction/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php @@ -0,0 +1,33 @@ +id(); + $table->morphs('tokenable'); + $table->string('name'); + $table->string('token', 64)->unique(); + $table->text('abilities')->nullable(); + $table->timestamp('last_used_at')->nullable(); + $table->timestamp('expires_at')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('personal_access_tokens'); + } +}; diff --git a/lstm_prediction/database/migrations/2025_02_16_115226_create_sensor_data_table.php b/lstm_prediction/database/migrations/2025_02_16_115226_create_sensor_data_table.php new file mode 100644 index 0000000..272a327 --- /dev/null +++ b/lstm_prediction/database/migrations/2025_02_16_115226_create_sensor_data_table.php @@ -0,0 +1,23 @@ +id(); + $table->float('temperature'); + $table->float('humidity'); + $table->timestamps(); + }); + } + + public function down() + { + Schema::dropIfExists('sensor_data'); + } +} diff --git a/lstm_prediction/database/migrations/2025_02_18_153726_create_predictions_table.php b/lstm_prediction/database/migrations/2025_02_18_153726_create_predictions_table.php new file mode 100644 index 0000000..01ef147 --- /dev/null +++ b/lstm_prediction/database/migrations/2025_02_18_153726_create_predictions_table.php @@ -0,0 +1,25 @@ +id(); + $table->float('predicted_suhu', 8, 2); + $table->float('predicted_kelembaban', 8, 2); + $table->timestamp('prediction_datetime')->nullable(); + $table->timestamps(); + }); + } + } + + public function down() + { + Schema::dropIfExists('predictions'); + } +}; diff --git a/lstm_prediction/database/seeders/DatabaseSeeder.php b/lstm_prediction/database/seeders/DatabaseSeeder.php new file mode 100644 index 0000000..a9f4519 --- /dev/null +++ b/lstm_prediction/database/seeders/DatabaseSeeder.php @@ -0,0 +1,22 @@ +create(); + + // \App\Models\User::factory()->create([ + // 'name' => 'Test User', + // 'email' => 'test@example.com', + // ]); + } +} diff --git a/lstm_prediction/package-lock.json b/lstm_prediction/package-lock.json new file mode 100644 index 0000000..9e02858 --- /dev/null +++ b/lstm_prediction/package-lock.json @@ -0,0 +1,1758 @@ +{ + "name": "lstm_prediction", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "devDependencies": { + "@popperjs/core": "^2.11.6", + "axios": "^1.6.4", + "bootstrap": "^5.2.3", + "laravel-vite-plugin": "^1.0.0", + "sass": "^1.56.1", + "vite": "^5.0.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.8.tgz", + "integrity": "sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.8.tgz", + "integrity": "sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.8.tgz", + "integrity": "sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.8.tgz", + "integrity": "sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.8.tgz", + "integrity": "sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.8.tgz", + "integrity": "sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.8.tgz", + "integrity": "sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.8.tgz", + "integrity": "sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.8.tgz", + "integrity": "sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.8.tgz", + "integrity": "sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.8.tgz", + "integrity": "sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.8.tgz", + "integrity": "sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.8.tgz", + "integrity": "sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.8.tgz", + "integrity": "sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.8.tgz", + "integrity": "sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.8.tgz", + "integrity": "sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.8.tgz", + "integrity": "sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.8.tgz", + "integrity": "sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.8.tgz", + "integrity": "sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/bootstrap": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "license": "MIT", + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "function-bind": "^1.1.2", + "get-proto": "^1.0.0", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/immutable": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", + "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/laravel-vite-plugin": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-1.2.0.tgz", + "integrity": "sha512-R0pJ+IcTVeqEMoKz/B2Ij57QVq3sFTABiFmb06gAwFdivbOgsUtuhX6N2MGLEArajrS3U5JbberzwOe7uXHMHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "vite-plugin-full-reload": "^1.1.0" + }, + "bin": { + "clean-orphaned-assets": "bin/clean.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true, + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/rollup": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.8.tgz", + "integrity": "sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.34.8", + "@rollup/rollup-android-arm64": "4.34.8", + "@rollup/rollup-darwin-arm64": "4.34.8", + "@rollup/rollup-darwin-x64": "4.34.8", + "@rollup/rollup-freebsd-arm64": "4.34.8", + "@rollup/rollup-freebsd-x64": "4.34.8", + "@rollup/rollup-linux-arm-gnueabihf": "4.34.8", + "@rollup/rollup-linux-arm-musleabihf": "4.34.8", + "@rollup/rollup-linux-arm64-gnu": "4.34.8", + "@rollup/rollup-linux-arm64-musl": "4.34.8", + "@rollup/rollup-linux-loongarch64-gnu": "4.34.8", + "@rollup/rollup-linux-powerpc64le-gnu": "4.34.8", + "@rollup/rollup-linux-riscv64-gnu": "4.34.8", + "@rollup/rollup-linux-s390x-gnu": "4.34.8", + "@rollup/rollup-linux-x64-gnu": "4.34.8", + "@rollup/rollup-linux-x64-musl": "4.34.8", + "@rollup/rollup-win32-arm64-msvc": "4.34.8", + "@rollup/rollup-win32-ia32-msvc": "4.34.8", + "@rollup/rollup-win32-x64-msvc": "4.34.8", + "fsevents": "~2.3.2" + } + }, + "node_modules/sass": { + "version": "1.85.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.85.0.tgz", + "integrity": "sha512-3ToiC1xZ1Y8aU7+CkgCI/tqyuPXEmYGJXO7H4uqp0xkLXUqp88rQQ4j1HmP37xSJLbCJPaIiv+cT1y+grssrww==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/vite": { + "version": "5.4.14", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.14.tgz", + "integrity": "sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-full-reload": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vite-plugin-full-reload/-/vite-plugin-full-reload-1.2.0.tgz", + "integrity": "sha512-kz18NW79x0IHbxRSHm0jttP4zoO9P9gXh+n6UTwlNKnviTTEpOlum6oS9SmecrTtSr+muHEn5TUuC75UovQzcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "picomatch": "^2.3.1" + } + } + } +} diff --git a/lstm_prediction/package.json b/lstm_prediction/package.json new file mode 100644 index 0000000..9a0b5bf --- /dev/null +++ b/lstm_prediction/package.json @@ -0,0 +1,16 @@ +{ + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build" + }, + "devDependencies": { + "@popperjs/core": "^2.11.6", + "axios": "^1.6.4", + "bootstrap": "^5.2.3", + "laravel-vite-plugin": "^1.0.0", + "sass": "^1.56.1", + "vite": "^5.0.0" + } +} diff --git a/lstm_prediction/phpunit.xml b/lstm_prediction/phpunit.xml new file mode 100644 index 0000000..bc86714 --- /dev/null +++ b/lstm_prediction/phpunit.xml @@ -0,0 +1,32 @@ + + + + + tests/Unit + + + tests/Feature + + + + + app + + + + + + + + + + + + + + + diff --git a/lstm_prediction/public/.htaccess b/lstm_prediction/public/.htaccess new file mode 100644 index 0000000..3aec5e2 --- /dev/null +++ b/lstm_prediction/public/.htaccess @@ -0,0 +1,21 @@ + + + Options -MultiViews -Indexes + + + RewriteEngine On + + # Handle Authorization Header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # 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/lstm_prediction/public/assets/css/style.css b/lstm_prediction/public/assets/css/style.css new file mode 100644 index 0000000..8142f29 --- /dev/null +++ b/lstm_prediction/public/assets/css/style.css @@ -0,0 +1,104 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: Arial, sans-serif; +} + +body { + background: #f4f6f9; + padding: 20px; +} + +.navbar { + width: 100%; + height: 60px; + background: #007bff; + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 20px; + color: white; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); +} + +.container { + max-width: 1200px; + margin: auto; + padding: 20px; +} + +.charts-container { + display: flex; + justify-content: center; + gap: 40px; + flex-wrap: wrap; +} + +.chart-wrapper { + flex: 1; + min-width: 350px; + max-width: 500px; + background: white; + padding: 15px; + border-radius: 10px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); + text-align: center; +} + +canvas { + width: 100% !important; + height: 300px !important; +} + +.prediction-container { + margin-top: 20px; + padding: 15px; + background: white; + border-radius: 8px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); + text-align: center; + max-width: 500px; + margin-left: auto; + margin-right: auto; +} + +.prediction-container p { + font-size: 18px; + margin: 5px 0; +} + +.table-container { + max-width: 1200px; + margin: auto; + padding: 20px; + background: white; + border-radius: 8px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); +} + +h2 { + text-align: center; + margin-bottom: 15px; +} + +table { + width: 100%; + border-collapse: collapse; +} + +th, +td { + padding: 10px; + text-align: center; + border: 1px solid #ddd; +} + +th { + background-color: #007bff; + color: white; +} + +tbody tr:nth-child(even) { + background-color: #f9f9f9; +} \ No newline at end of file diff --git a/lstm_prediction/public/assets/js/dashboard.js b/lstm_prediction/public/assets/js/dashboard.js new file mode 100644 index 0000000..e69de29 diff --git a/lstm_prediction/public/favicon.ico b/lstm_prediction/public/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/lstm_prediction/public/index.php b/lstm_prediction/public/index.php new file mode 100644 index 0000000..1d69f3a --- /dev/null +++ b/lstm_prediction/public/index.php @@ -0,0 +1,55 @@ +make(Kernel::class); + +$response = $kernel->handle( + $request = Request::capture() +)->send(); + +$kernel->terminate($request, $response); diff --git a/lstm_prediction/public/robots.txt b/lstm_prediction/public/robots.txt new file mode 100644 index 0000000..eb05362 --- /dev/null +++ b/lstm_prediction/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/lstm_prediction/resources/css/app.css b/lstm_prediction/resources/css/app.css new file mode 100644 index 0000000..a0c7f78 --- /dev/null +++ b/lstm_prediction/resources/css/app.css @@ -0,0 +1,11 @@ +body { + background-color: #f8f9fa; + /* Warna background abu-abu terang */ +} + +.card { + background: #fff; + padding: 20px; + box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.1); + border-radius: 10px; +} \ No newline at end of file diff --git a/lstm_prediction/resources/js/app.js b/lstm_prediction/resources/js/app.js new file mode 100644 index 0000000..e59d6a0 --- /dev/null +++ b/lstm_prediction/resources/js/app.js @@ -0,0 +1 @@ +import './bootstrap'; diff --git a/lstm_prediction/resources/js/bootstrap.js b/lstm_prediction/resources/js/bootstrap.js new file mode 100644 index 0000000..46f7a33 --- /dev/null +++ b/lstm_prediction/resources/js/bootstrap.js @@ -0,0 +1,34 @@ +import 'bootstrap'; + +/** + * We'll load the axios HTTP library which allows us to easily issue requests + * to our Laravel back-end. This library automatically handles sending the + * CSRF token as a header based on the value of the "XSRF" token cookie. + */ + +import axios from 'axios'; +window.axios = axios; + +window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; + +/** + * Echo exposes an expressive API for subscribing to channels and listening + * for events that are broadcast by Laravel. Echo and event broadcasting + * allows your team to easily build robust real-time web applications. + */ + +// import Echo from 'laravel-echo'; + +// import Pusher from 'pusher-js'; +// window.Pusher = Pusher; + +// window.Echo = new Echo({ +// broadcaster: 'pusher', +// key: import.meta.env.VITE_PUSHER_APP_KEY, +// cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER ?? 'mt1', +// wsHost: import.meta.env.VITE_PUSHER_HOST ?? `ws-${import.meta.env.VITE_PUSHER_APP_CLUSTER}.pusher.com`, +// wsPort: import.meta.env.VITE_PUSHER_PORT ?? 80, +// wssPort: import.meta.env.VITE_PUSHER_PORT ?? 443, +// forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? 'https') === 'https', +// enabledTransports: ['ws', 'wss'], +// }); diff --git a/lstm_prediction/resources/sass/_variables.scss b/lstm_prediction/resources/sass/_variables.scss new file mode 100644 index 0000000..172daaa --- /dev/null +++ b/lstm_prediction/resources/sass/_variables.scss @@ -0,0 +1,7 @@ +// Body +$body-bg: #f8fafc; + +// Typography +$font-family-sans-serif: 'Nunito', sans-serif; +$font-size-base: 0.9rem; +$line-height-base: 1.6; diff --git a/lstm_prediction/resources/sass/app.scss b/lstm_prediction/resources/sass/app.scss new file mode 100644 index 0000000..df222ca --- /dev/null +++ b/lstm_prediction/resources/sass/app.scss @@ -0,0 +1,9 @@ +// Fonts +@import url('https://fonts.bunny.net/css?family=Nunito'); + +// Variables +@import 'variables'; + +// Bootstrap +@import 'bootstrap/scss/bootstrap'; + diff --git a/lstm_prediction/resources/views/auth/login.blade.php b/lstm_prediction/resources/views/auth/login.blade.php new file mode 100644 index 0000000..83c3f7b --- /dev/null +++ b/lstm_prediction/resources/views/auth/login.blade.php @@ -0,0 +1,40 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+ +
+ @csrf + +
+ + +
+ +
+ + +
+ +
+ + +
+ + + +
+ Don't have an account? Register +
+
+ +
+
+
+
+@endsection diff --git a/lstm_prediction/resources/views/auth/passwords/confirm.blade.php b/lstm_prediction/resources/views/auth/passwords/confirm.blade.php new file mode 100644 index 0000000..f8c8e61 --- /dev/null +++ b/lstm_prediction/resources/views/auth/passwords/confirm.blade.php @@ -0,0 +1,49 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
{{ __('Confirm Password') }}
+ +
+ {{ __('Please confirm your password before continuing.') }} + +
+ @csrf + +
+ + +
+ + + @error('password') + + {{ $message }} + + @enderror +
+
+ +
+
+ + + @if (Route::has('password.request')) + + {{ __('Forgot Your Password?') }} + + @endif +
+
+
+
+
+
+
+
+@endsection diff --git a/lstm_prediction/resources/views/auth/passwords/email.blade.php b/lstm_prediction/resources/views/auth/passwords/email.blade.php new file mode 100644 index 0000000..d1ac783 --- /dev/null +++ b/lstm_prediction/resources/views/auth/passwords/email.blade.php @@ -0,0 +1,47 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
{{ __('Reset Password') }}
+ +
+ @if (session('status')) + + @endif + +
+ @csrf + +
+ + +
+ + + @error('email') + + {{ $message }} + + @enderror +
+
+ +
+
+ +
+
+
+
+
+
+
+
+@endsection diff --git a/lstm_prediction/resources/views/auth/passwords/reset.blade.php b/lstm_prediction/resources/views/auth/passwords/reset.blade.php new file mode 100644 index 0000000..dccf6c6 --- /dev/null +++ b/lstm_prediction/resources/views/auth/passwords/reset.blade.php @@ -0,0 +1,65 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
{{ __('Reset Password') }}
+ +
+
+ @csrf + + + +
+ + +
+ + + @error('email') + + {{ $message }} + + @enderror +
+
+ +
+ + +
+ + + @error('password') + + {{ $message }} + + @enderror +
+
+ +
+ + +
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+
+@endsection diff --git a/lstm_prediction/resources/views/auth/register.blade.php b/lstm_prediction/resources/views/auth/register.blade.php new file mode 100644 index 0000000..ddf2b3e --- /dev/null +++ b/lstm_prediction/resources/views/auth/register.blade.php @@ -0,0 +1,62 @@ +@extends('layouts.app') + +@section('content') +
+
+ +
+
+
+ @csrf + +
+ + + @error('name') + + {{ $message }} + + @enderror +
+ +
+ + + @error('email') + + {{ $message }} + + @enderror +
+ +
+ + + @error('password') + + {{ $message }} + + @enderror +
+ +
+ + +
+ + + +
+ Already registered? Login +
+
+
+
+
+
+@endsection diff --git a/lstm_prediction/resources/views/auth/verify.blade.php b/lstm_prediction/resources/views/auth/verify.blade.php new file mode 100644 index 0000000..9f8c1bc --- /dev/null +++ b/lstm_prediction/resources/views/auth/verify.blade.php @@ -0,0 +1,28 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
{{ __('Verify Your Email Address') }}
+ +
+ @if (session('resent')) + + @endif + + {{ __('Before proceeding, please check your email for a verification link.') }} + {{ __('If you did not receive the email') }}, +
+ @csrf + . +
+
+
+
+
+
+@endsection diff --git a/lstm_prediction/resources/views/dashboard.blade.php b/lstm_prediction/resources/views/dashboard.blade.php new file mode 100644 index 0000000..3e6cbee --- /dev/null +++ b/lstm_prediction/resources/views/dashboard.blade.php @@ -0,0 +1,167 @@ +@extends('layouts.main') + +@section('title', 'Dashboard Sensor') + +@section('content') +
+
+
+
+
Data Sensor
+ +
+
+
+
+
Prediksi Data
+ +
+
+
+ +
+
+
+
Prediksi Suhu & Kelembaban
+

Prediksi Suhu: - °C

+

Prediksi Kelembaban: - %

+

Prediksi Tanggal Waktu: -

+
+
+
+
+@endsection + +@section('script') + + +@endsection diff --git a/lstm_prediction/resources/views/data.blade.php b/lstm_prediction/resources/views/data.blade.php new file mode 100644 index 0000000..12dde93 --- /dev/null +++ b/lstm_prediction/resources/views/data.blade.php @@ -0,0 +1,72 @@ +@extends('layouts.main') + +@section('title', 'Data Sensor') + +@section('content') +
+

Data Sensor & Prediksi

+ + + + + + + + + + + + + + + + + +
NoSuhu (°C)Kelembaban (%)WaktuPrediksi Suhu (°C)Prediksi Kelembaban (%)Waktu Prediksi
Memuat data...
+
+@endsection + +@section('script') + +@endsection diff --git a/lstm_prediction/resources/views/home.blade.php b/lstm_prediction/resources/views/home.blade.php new file mode 100644 index 0000000..1f34466 --- /dev/null +++ b/lstm_prediction/resources/views/home.blade.php @@ -0,0 +1,23 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
{{ __('Dashboard') }}
+ +
+ @if (session('status')) + + @endif + + {{ __('You are logged in!') }} +
+
+
+
+
+@endsection diff --git a/lstm_prediction/resources/views/layouts/app.blade.php b/lstm_prediction/resources/views/layouts/app.blade.php new file mode 100644 index 0000000..06008fa --- /dev/null +++ b/lstm_prediction/resources/views/layouts/app.blade.php @@ -0,0 +1,30 @@ + + + + + + + + + + + {{ config('app.name', 'Laravel') }} + + + + + + + + @vite(['resources/sass/app.scss', 'resources/js/app.js']) + + + +
+
+ @yield('content') +
+
+ + + diff --git a/lstm_prediction/resources/views/layouts/main.blade.php b/lstm_prediction/resources/views/layouts/main.blade.php new file mode 100644 index 0000000..9e3a9ef --- /dev/null +++ b/lstm_prediction/resources/views/layouts/main.blade.php @@ -0,0 +1,34 @@ + + + + + + + @yield('title', 'Dashboard Sensor') + + + + + + + + + + + + @stack('styles') + + + + + @include('layouts.navbar') + +
+ @yield('content') +
+ + @yield('script') + + + + \ No newline at end of file diff --git a/lstm_prediction/resources/views/layouts/navbar.blade.php b/lstm_prediction/resources/views/layouts/navbar.blade.php new file mode 100644 index 0000000..6580f24 --- /dev/null +++ b/lstm_prediction/resources/views/layouts/navbar.blade.php @@ -0,0 +1,71 @@ + + + + + diff --git a/lstm_prediction/resources/views/welcome.blade.php b/lstm_prediction/resources/views/welcome.blade.php new file mode 100644 index 0000000..3353350 --- /dev/null +++ b/lstm_prediction/resources/views/welcome.blade.php @@ -0,0 +1,133 @@ + + + + + + + Laravel + + + + + + + + + + + + diff --git a/lstm_prediction/routes/api.php b/lstm_prediction/routes/api.php new file mode 100644 index 0000000..721febb --- /dev/null +++ b/lstm_prediction/routes/api.php @@ -0,0 +1,70 @@ +get('/user', function (Request $request) { + return $request->user(); +}); + +// Group API agar lebih rapi +Route::middleware('api')->group(function () { + + // Endpoint untuk menerima data sensor dan menyimpannya ke database + Route::post('/sensor', [SensorController::class, 'storeSensorData']); + + // Endpoint untuk mengambil 10 data sensor terbaru + Route::get('/latest-sensor-data', [SensorController::class, 'getLatestSensorData']); + + // Endpoint untuk mengirim 30 data terakhir ke Flask untuk prediksi + // Route::post('/predict', [SensorController::class, 'predict']); + Route::post('/predict', function (Request $request) { + $data = $request->json()->all(); // Pastikan mengambil JSON sebagai array + Log::info('šŸ“„ Data diterima di Laravel:', $data); + + if (!isset($data['predicted_suhu']) || !isset($data['predicted_kelembaban'])) { + Log::error('āŒ Data tidak lengkap: ', $data); + return response()->json(['error' => 'Data tidak lengkap'], 400); + } + + // Simpan ke database + try { + DB::table('predictions')->insert([ + 'predicted_suhu' => $data['predicted_suhu'], + 'predicted_kelembaban' => $data['predicted_kelembaban'], + 'prediction_datetime' => $data['prediction_datetime'], + 'created_at' => now(), + 'updated_at' => now() + ]); + + Log::info('āœ… Data berhasil disimpan ke database.'); + return response()->json(['message' => 'Data berhasil disimpan'], 201); + } catch (\Exception $e) { + Log::error('āŒ Gagal menyimpan ke database: ' . $e->getMessage()); + return response()->json(['error' => 'Gagal menyimpan ke database'], 500); + } + }); + + + // Endpoint untuk mengambil 10 prediksi terbaru + Route::get('/latest-predictions', [SensorController::class, 'getLatestPredictions']); + + // Endpoint untuk menyimpan prediksi dari Flask ke database + Route::post('/predictions', [PredictionController::class, 'store']); +}); diff --git a/lstm_prediction/routes/channels.php b/lstm_prediction/routes/channels.php new file mode 100644 index 0000000..5d451e1 --- /dev/null +++ b/lstm_prediction/routes/channels.php @@ -0,0 +1,18 @@ +id === (int) $id; +}); diff --git a/lstm_prediction/routes/console.php b/lstm_prediction/routes/console.php new file mode 100644 index 0000000..e05f4c9 --- /dev/null +++ b/lstm_prediction/routes/console.php @@ -0,0 +1,19 @@ +comment(Inspiring::quote()); +})->purpose('Display an inspiring quote'); diff --git a/lstm_prediction/routes/web.php b/lstm_prediction/routes/web.php new file mode 100644 index 0000000..10c0ac1 --- /dev/null +++ b/lstm_prediction/routes/web.php @@ -0,0 +1,39 @@ +name('home'); + +Route::get('/', function () { + return redirect()->route('login'); +}); + +// Route untuk Login & Logout +Route::get('/login', [AuthController::class, 'showLoginForm'])->name('login'); +Route::post('/login', [AuthController::class, 'login']); +Route::post('/logout', [AuthController::class, 'logout'])->name('logout'); + +// Proteksi Dashboard & Data +Route::middleware('auth')->group(function () { + Route::get('/dashboard', [SensorController::class, 'index']); + Route::get('/data', [HomeController::class, 'data']); +}); diff --git a/lstm_prediction/storage/app/.gitignore b/lstm_prediction/storage/app/.gitignore new file mode 100644 index 0000000..8f4803c --- /dev/null +++ b/lstm_prediction/storage/app/.gitignore @@ -0,0 +1,3 @@ +* +!public/ +!.gitignore diff --git a/lstm_prediction/storage/app/public/.gitignore b/lstm_prediction/storage/app/public/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/lstm_prediction/storage/app/public/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/lstm_prediction/storage/framework/.gitignore b/lstm_prediction/storage/framework/.gitignore new file mode 100644 index 0000000..05c4471 --- /dev/null +++ b/lstm_prediction/storage/framework/.gitignore @@ -0,0 +1,9 @@ +compiled.php +config.php +down +events.scanned.php +maintenance.php +routes.php +routes.scanned.php +schedule-* +services.json diff --git a/lstm_prediction/storage/framework/cache/.gitignore b/lstm_prediction/storage/framework/cache/.gitignore new file mode 100644 index 0000000..01e4a6c --- /dev/null +++ b/lstm_prediction/storage/framework/cache/.gitignore @@ -0,0 +1,3 @@ +* +!data/ +!.gitignore diff --git a/lstm_prediction/storage/framework/cache/data/.gitignore b/lstm_prediction/storage/framework/cache/data/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/lstm_prediction/storage/framework/cache/data/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/lstm_prediction/storage/framework/sessions/.gitignore b/lstm_prediction/storage/framework/sessions/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/lstm_prediction/storage/framework/sessions/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/lstm_prediction/storage/framework/testing/.gitignore b/lstm_prediction/storage/framework/testing/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/lstm_prediction/storage/framework/testing/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/lstm_prediction/storage/framework/views/.gitignore b/lstm_prediction/storage/framework/views/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/lstm_prediction/storage/framework/views/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/lstm_prediction/storage/logs/.gitignore b/lstm_prediction/storage/logs/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/lstm_prediction/storage/logs/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/lstm_prediction/tests/CreatesApplication.php b/lstm_prediction/tests/CreatesApplication.php new file mode 100644 index 0000000..cc68301 --- /dev/null +++ b/lstm_prediction/tests/CreatesApplication.php @@ -0,0 +1,21 @@ +make(Kernel::class)->bootstrap(); + + return $app; + } +} diff --git a/lstm_prediction/tests/Feature/ExampleTest.php b/lstm_prediction/tests/Feature/ExampleTest.php new file mode 100644 index 0000000..8364a84 --- /dev/null +++ b/lstm_prediction/tests/Feature/ExampleTest.php @@ -0,0 +1,19 @@ +get('/'); + + $response->assertStatus(200); + } +} diff --git a/lstm_prediction/tests/TestCase.php b/lstm_prediction/tests/TestCase.php new file mode 100644 index 0000000..2932d4a --- /dev/null +++ b/lstm_prediction/tests/TestCase.php @@ -0,0 +1,10 @@ +assertTrue(true); + } +} diff --git a/lstm_prediction/vite.config.js b/lstm_prediction/vite.config.js new file mode 100644 index 0000000..dbbf333 --- /dev/null +++ b/lstm_prediction/vite.config.js @@ -0,0 +1,14 @@ +import { defineConfig } from 'vite'; +import laravel from 'laravel-vite-plugin'; + +export default defineConfig({ + plugins: [ + laravel({ + input: [ + 'resources/sass/app.scss', + 'resources/js/app.js', + ], + refresh: true, + }), + ], +}); diff --git a/model/Dataset.csv b/model/Dataset.csv new file mode 100644 index 0000000..43b1b9b --- /dev/null +++ b/model/Dataset.csv @@ -0,0 +1,1738 @@ +Date,waktu,id_mikro,suhu,kelembaban +9/4/2024,0:00,8,28.1,72.9 +9/4/2024,0:00,14,29.8,68.5 +9/4/2024,0:00,7,28.2,72.1 +9/4/2024,0:00,12,27.7,74.4 +9/4/2024,0:00,7,28.2,73.2 +9/4/2024,0:05,8,28.1,72.9 +9/4/2024,0:05,14,29.8,68.6 +9/4/2024,0:05,7,28,72.8 +9/4/2024,0:05,12,27.7,74.4 +9/4/2024,0:05,7,28.2,73.2 +9/4/2024,0:10,8,28.1,72.7 +9/4/2024,0:10,14,29.8,68.5 +9/4/2024,0:10,7,28.1,72.6 +9/4/2024,0:10,12,27.8,73.8 +9/4/2024,0:10,7,28.3,73.1 +9/4/2024,0:15,8,28,73 +9/4/2024,0:15,14,29.8,68.6 +9/4/2024,0:15,7,28.1,72.5 +9/4/2024,0:15,12,27.8,73.9 +9/4/2024,0:15,7,28.2,73.2 +9/4/2024,0:20,8,27.9,73.2 +9/4/2024,0:20,14,29.7,68.5 +9/4/2024,0:20,7,28,72.6 +9/4/2024,0:20,12,27.5,74.8 +9/4/2024,0:20,7,28.1,73.3 +9/4/2024,0:25,8,28,72.9 +9/4/2024,0:25,14,29.7,68.5 +9/4/2024,0:25,7,27.9,73 +9/4/2024,0:25,12,27.6,74.2 +9/4/2024,0:25,7,28.1,73.4 +9/4/2024,0:30,8,27.8,73.3 +9/4/2024,0:30,14,29.5,68.7 +9/4/2024,0:30,7,27.8,73 +9/4/2024,0:30,12,27.6,74.4 +9/4/2024,0:30,7,28.1,73.4 +9/4/2024,0:35,8,27.7,73.6 +9/4/2024,0:35,7,27.9,73.1 +9/4/2024,0:35,14,29.6,68.5 +9/4/2024,0:35,12,27.5,74.6 +9/4/2024,0:35,7,28,73.6 +9/4/2024,0:40,8,27.7,73.6 +9/4/2024,0:40,14,29.3,69.3 +9/4/2024,0:40,7,27.9,72.9 +9/4/2024,0:40,12,27.5,74.7 +9/4/2024,0:40,7,27.9,73.8 +9/4/2024,0:45,8,27.7,73.5 +9/4/2024,0:45,14,29.5,68.8 +9/4/2024,0:45,7,27.9,72.7 +9/4/2024,0:45,12,27.4,74.8 +9/4/2024,0:45,7,27.9,73.9 +9/4/2024,0:50,8,27.7,73.3 +9/4/2024,0:50,14,29.5,68.7 +9/4/2024,0:50,7,27.6,73.4 +9/4/2024,0:50,12,27.3,74.8 +9/4/2024,0:50,7,27.9,73.6 +9/4/2024,0:55,8,27.7,73.5 +9/4/2024,0:55,14,29.4,68.9 +9/4/2024,0:55,7,27.6,73.8 +9/4/2024,0:55,12,27.3,75 +9/4/2024,0:55,7,27.8,74 +9/4/2024,1:00,8,27.7,73.5 +9/4/2024,1:00,14,29.5,68.8 +9/4/2024,1:00,7,27.6,73.5 +9/4/2024,1:00,12,27.3,75 +9/4/2024,1:00,7,27.7,74.2 +9/4/2024,1:05,8,27.6,73.9 +9/4/2024,1:05,14,29.5,68.8 +9/4/2024,1:05,7,27.7,73.4 +9/4/2024,1:05,12,27.3,74.9 +9/4/2024,1:05,7,27.7,74.1 +9/4/2024,1:10,8,27.5,74.1 +9/4/2024,1:10,14,29.5,68.7 +9/4/2024,1:10,7,27.5,73.7 +9/4/2024,1:10,12,27.1,75.5 +9/4/2024,1:10,7,27.7,74.3 +9/4/2024,1:15,8,27.5,73.9 +9/4/2024,1:15,14,29.5,68.6 +9/4/2024,1:15,7,27.6,73.5 +9/4/2024,1:15,12,27.1,75.2 +9/4/2024,1:15,7,27.7,74.4 +9/4/2024,1:20,8,27.6,73.8 +9/4/2024,1:20,14,29.3,69 +9/4/2024,1:20,7,27.6,73.7 +9/4/2024,1:20,12,27.1,75.3 +9/4/2024,1:20,7,27.7,74.3 +9/4/2024,1:25,8,27.5,73.8 +9/4/2024,1:25,14,29.2,69.3 +9/4/2024,1:25,7,27.6,73.7 +9/4/2024,1:25,12,27.3,74.9 +9/4/2024,1:25,7,27.8,74.1 +9/4/2024,1:30,8,27.5,73.9 +9/4/2024,1:30,14,29.2,69.2 +9/4/2024,1:30,7,27.5,73.7 +9/4/2024,1:30,12,27.3,75 +9/4/2024,1:30,7,27.7,74.3 +9/4/2024,1:35,8,27.6,73.8 +9/4/2024,1:35,14,29.2,69.3 +9/4/2024,1:35,7,27.6,73.5 +9/4/2024,1:35,12,27.3,74.6 +9/4/2024,1:35,7,27.7,74.4 +9/4/2024,1:40,8,27.6,73.8 +9/4/2024,1:40,14,29.2,69.2 +9/4/2024,1:40,7,27.6,73.4 +9/4/2024,1:40,12,27.3,74.6 +9/4/2024,1:40,7,27.7,74.2 +9/4/2024,1:45,8,27.6,73.6 +9/4/2024,1:45,14,29.2,69.4 +9/4/2024,1:45,7,27.6,73.3 +9/4/2024,1:45,12,27.3,75 +9/4/2024,1:45,7,27.7,74.2 +9/4/2024,1:50,8,27.5,73.9 +9/4/2024,1:50,14,29.2,69.3 +9/4/2024,1:50,7,27.7,73.2 +9/4/2024,1:50,12,27.3,74.5 +9/4/2024,1:50,7,27.7,74.1 +9/4/2024,1:55,8,27.5,73.8 +9/4/2024,1:55,14,29.1,69.4 +9/4/2024,1:55,7,27.8,72.7 +9/4/2024,1:55,12,27.2,74.9 +9/4/2024,1:55,7,27.8,73.8 +9/4/2024,2:00,8,27.5,73.8 +9/4/2024,2:00,14,29.2,69.2 +9/4/2024,2:00,7,27.6,73.7 +9/4/2024,2:00,12,27.3,74.5 +9/4/2024,2:00,7,27.8,73.8 +9/4/2024,2:05,8,27.6,73.4 +9/4/2024,2:05,14,29.1,69.3 +9/4/2024,2:05,12,27.3,74.8 +9/4/2024,2:05,7,27.7,73.7 +9/4/2024,2:05,7,27.6,73.4 +9/4/2024,2:10,8,27.5,73.6 +9/4/2024,2:10,14,29.2,69.1 +9/4/2024,2:10,12,27.2,74.8 +9/4/2024,2:10,7,27.8,73.9 +9/4/2024,2:10,7,27.7,73 +9/4/2024,2:15,8,27.6,73.4 +9/4/2024,2:15,14,29.1,69.4 +9/4/2024,2:15,12,27.3,74.4 +9/4/2024,2:15,7,27.8,73.6 +9/4/2024,2:15,7,27.6,73.2 +9/4/2024,2:20,8,27.4,73.9 +9/4/2024,2:20,14,29.2,69.1 +9/4/2024,2:20,12,27.3,74.4 +9/4/2024,2:20,7,27.8,73.7 +9/4/2024,2:20,7,27.6,73.2 +9/4/2024,2:25,8,27.5,73.5 +9/4/2024,2:25,14,29.2,69 +9/4/2024,2:25,12,27.3,74.7 +9/4/2024,2:25,7,27.7,73.9 +9/4/2024,2:25,7,27.7,73 +9/4/2024,2:30,8,27.6,73.4 +9/4/2024,2:30,14,29.2,69 +9/4/2024,2:30,12,27.3,74.5 +9/4/2024,2:30,7,27.8,73.7 +9/4/2024,2:30,7,27.6,73.1 +9/4/2024,2:35,8,27.5,73.6 +9/4/2024,2:35,14,29.1,69.3 +9/4/2024,2:35,12,27.3,74.7 +9/4/2024,2:35,7,27.7,73.8 +9/4/2024,2:35,7,27.7,72.9 +9/4/2024,2:40,8,27.7,72.8 +9/4/2024,2:40,14,29.1,69.2 +9/4/2024,2:40,12,27.3,74.8 +9/4/2024,2:40,7,27.8,73.6 +9/4/2024,2:40,7,27.6,73.1 +9/4/2024,2:45,8,27.6,73.3 +9/4/2024,2:45,14,29.1,69.1 +9/4/2024,2:45,12,27.3,74.2 +9/4/2024,2:45,7,27.8,73.6 +9/4/2024,2:45,7,27.6,73.1 +9/4/2024,2:50,8,27.6,73.3 +9/4/2024,2:50,14,29.2,69 +9/4/2024,2:50,12,27.3,74.4 +9/4/2024,2:50,7,27.8,73.5 +9/4/2024,2:50,7,27.7,73.1 +9/4/2024,2:55,8,27.6,73.2 +9/4/2024,2:55,14,29.1,69.1 +9/4/2024,2:55,12,27.2,74.6 +9/4/2024,2:55,7,27.8,73.3 +9/4/2024,2:55,7,27.6,73.1 +9/4/2024,3:00,8,27.6,73.3 +9/4/2024,3:00,14,29.1,69.1 +9/4/2024,3:00,12,27.3,74.1 +9/4/2024,3:00,7,27.7,73.6 +9/4/2024,3:00,7,27.6,73.1 +9/4/2024,3:05,8,27.7,73 +9/4/2024,3:05,14,29.1,69.2 +9/4/2024,3:05,12,27.2,74.8 +9/4/2024,3:05,7,27.7,73.6 +9/4/2024,3:05,7,27.6,73.3 +9/4/2024,3:10,8,27.6,73.1 +9/4/2024,3:10,14,29.1,69.2 +9/4/2024,3:10,12,27.2,74.9 +9/4/2024,3:10,7,27.6,73.8 +9/4/2024,3:10,7,27.5,73.5 +9/4/2024,3:15,8,27.5,73.5 +9/4/2024,3:15,14,29.1,69.1 +9/4/2024,3:15,12,27.3,74.2 +9/4/2024,3:15,7,27.6,73.9 +9/4/2024,3:15,7,27.5,73.3 +9/4/2024,3:20,8,27.4,73.7 +9/4/2024,3:20,14,28.9,69.9 +9/4/2024,3:20,12,27.1,74.9 +9/4/2024,3:20,7,27.7,73.8 +9/4/2024,3:20,7,27.5,73.5 +9/4/2024,3:25,8,27.3,74 +9/4/2024,3:25,14,29,69.8 +9/4/2024,3:25,12,27.2,74.6 +9/4/2024,3:25,7,27.5,74.1 +9/4/2024,3:25,7,27.5,73.4 +9/4/2024,3:30,8,27.4,73.8 +9/4/2024,3:30,14,28.8,70.2 +9/4/2024,3:30,12,27.1,74.9 +9/4/2024,3:30,7,27.5,74.3 +9/4/2024,3:30,7,27.6,73.2 +9/4/2024,3:35,8,27.5,73.6 +9/4/2024,3:35,14,29,69.8 +9/4/2024,3:35,12,27.1,75.1 +9/4/2024,3:35,7,27.5,74.1 +9/4/2024,3:35,7,27.5,73.6 +9/4/2024,3:40,8,27.4,73.8 +9/4/2024,3:40,14,29,69.8 +9/4/2024,3:40,12,27.1,74.8 +9/4/2024,3:40,7,27.5,74.1 +9/4/2024,3:40,7,27.5,73.6 +9/4/2024,3:45,8,27.5,73.5 +9/4/2024,3:45,14,28.9,70 +9/4/2024,3:45,12,27.2,74.7 +9/4/2024,3:45,7,27.5,74.2 +9/4/2024,3:45,7,27.6,73.3 +9/4/2024,3:50,8,27.5,73.7 +9/4/2024,3:50,14,29,69.8 +9/4/2024,3:50,12,27.2,74.8 +9/4/2024,3:50,7,27.5,74.1 +9/4/2024,3:50,7,27.6,73.3 +9/4/2024,3:55,8,27.4,73.8 +9/4/2024,3:55,14,29,69.7 +9/4/2024,3:55,12,27.2,74.8 +9/4/2024,3:55,7,27.5,74 +9/4/2024,3:55,7,27.4,73.6 +9/4/2024,4:00,8,27.4,73.8 +9/4/2024,4:00,14,29,69.8 +9/4/2024,4:00,12,27,75.2 +9/4/2024,4:00,7,27.6,74 +9/4/2024,4:00,7,27.5,73.3 +9/4/2024,4:05,8,27.4,73.8 +9/4/2024,4:05,14,29,69.7 +9/4/2024,4:05,12,27.1,75 +9/4/2024,4:05,7,27.5,74.2 +9/4/2024,4:05,7,27.5,73.3 +9/4/2024,4:10,8,27.4,73.7 +9/4/2024,4:10,14,28.9,69.7 +9/4/2024,4:10,12,27.1,74.9 +9/4/2024,4:10,7,27.5,74.1 +9/4/2024,4:10,7,27.5,73.5 +9/4/2024,4:15,8,27.2,74.1 +9/4/2024,4:15,14,28.7,70.3 +9/4/2024,4:15,12,27.2,74.6 +9/4/2024,4:15,7,27.5,74.2 +9/4/2024,4:15,7,27.6,73.1 +9/4/2024,4:20,8,27.2,74.4 +9/4/2024,4:20,14,28.7,70.5 +9/4/2024,4:20,12,27,75.1 +9/4/2024,4:20,7,27.5,74.4 +9/4/2024,4:20,7,27.5,73.7 +9/4/2024,4:25,8,27.3,74.2 +9/4/2024,4:25,14,28.9,69.9 +9/4/2024,4:25,12,26.9,75.3 +9/4/2024,4:25,7,27.5,74.4 +9/4/2024,4:25,7,27.4,73.5 +9/4/2024,4:30,8,27.3,74 +9/4/2024,4:30,14,28.9,70 +9/4/2024,4:30,12,27,75.4 +9/4/2024,4:30,7,27.5,74.4 +9/4/2024,4:30,7,27.4,73.5 +9/4/2024,4:35,8,27.3,74 +9/4/2024,4:35,14,28.9,70 +9/4/2024,4:35,12,26.9,75.5 +9/4/2024,4:35,7,27.4,74.5 +9/4/2024,4:35,7,27.5,73.5 +9/4/2024,4:40,8,27.3,74.1 +9/4/2024,4:40,14,29,69.7 +9/4/2024,4:40,12,26.9,75.5 +9/4/2024,4:40,7,27.4,74.5 +9/4/2024,4:40,7,27.5,73.3 +9/4/2024,4:45,8,27.1,74.6 +9/4/2024,4:45,14,28.9,69.7 +9/4/2024,4:45,12,26.8,75.7 +9/4/2024,4:45,7,27.4,74.6 +9/4/2024,4:45,7,27.5,73.5 +9/4/2024,4:50,8,27.2,74.5 +9/4/2024,4:50,14,28.9,70 +9/4/2024,4:50,12,26.8,75.6 +9/4/2024,4:50,7,27.3,74.7 +9/4/2024,4:50,7,27.4,73.7 +9/4/2024,4:55,8,27.1,74.8 +9/4/2024,4:55,14,28.8,70.1 +9/4/2024,4:55,12,26.8,75.7 +9/4/2024,4:55,7,27.3,74.9 +9/4/2024,4:55,7,27.4,73.8 +9/4/2024,5:00,8,27,74.8 +9/4/2024,5:00,14,28.7,70.3 +9/4/2024,5:00,12,26.7,75.9 +9/4/2024,5:00,7,27.1,75.2 +9/4/2024,5:00,7,27.4,73.7 +9/4/2024,5:05,8,27,75 +9/4/2024,5:05,14,28.6,70.8 +9/4/2024,5:05,12,26.7,76.3 +9/4/2024,5:05,7,27.2,75.1 +9/4/2024,5:05,7,27.3,73.8 +9/4/2024,5:10,8,27.1,74.9 +9/4/2024,5:10,14,28.6,70.5 +9/4/2024,5:10,12,26.7,76.1 +9/4/2024,5:10,7,27.2,75.2 +9/4/2024,5:10,7,27.2,74 +9/4/2024,5:15,8,26.9,75.1 +9/4/2024,5:15,14,28.6,70.3 +9/4/2024,5:15,12,26.6,76.4 +9/4/2024,5:15,7,27.1,75.3 +9/4/2024,5:15,7,27.2,74.1 +9/4/2024,5:20,8,26.8,75.4 +9/4/2024,5:20,14,28.5,70.8 +9/4/2024,5:20,12,26.6,76.3 +9/4/2024,5:20,7,27.1,75.4 +9/4/2024,5:20,7,27.2,74 +9/4/2024,5:25,8,26.8,75.4 +9/4/2024,5:25,14,28.4,70.8 +9/4/2024,5:25,12,26.6,76.4 +9/4/2024,5:25,7,27,75.5 +9/4/2024,5:25,7,27.1,74.5 +9/4/2024,5:30,8,26.8,75.5 +9/4/2024,5:30,14,28.4,70.9 +9/4/2024,5:30,12,26.6,76.3 +9/4/2024,5:30,7,27,75.6 +9/4/2024,5:30,7,27.1,74.4 +9/4/2024,5:35,8,26.8,75.4 +9/4/2024,5:35,14,28.5,70.9 +9/4/2024,5:35,12,26.6,76.1 +9/4/2024,5:35,7,27,75.8 +9/4/2024,5:35,7,27.1,74.2 +9/4/2024,5:40,8,26.7,75.4 +9/4/2024,5:40,14,28.3,71 +9/4/2024,5:40,12,26.6,76.1 +9/4/2024,5:40,7,26.9,75.9 +9/4/2024,5:40,7,27,74.8 +9/4/2024,5:45,8,26.8,75.5 +9/4/2024,5:45,14,28.4,70.9 +9/4/2024,5:45,12,26.6,76.2 +9/4/2024,5:45,7,26.9,76.1 +9/4/2024,5:45,7,27.1,74.4 +9/4/2024,5:50,8,26.7,75.5 +9/4/2024,5:50,14,28.2,71.3 +9/4/2024,5:50,12,26.8,75.7 +9/4/2024,5:50,7,27,75.8 +9/4/2024,5:50,7,27.1,74.4 +9/4/2024,5:55,8,26.8,75.4 +9/4/2024,5:55,14,28.2,71.3 +9/4/2024,5:55,12,26.8,75.4 +9/4/2024,5:55,7,26.9,76.1 +9/4/2024,5:55,7,27.1,74.4 +9/4/2024,6:00,8,27,74.9 +9/4/2024,6:00,14,28.2,71.3 +9/4/2024,6:00,12,27,74.8 +9/4/2024,6:00,7,27,75.9 +9/4/2024,6:00,7,27,74.6 +9/4/2024,6:05,8,27.1,74.4 +9/4/2024,6:05,14,28.3,71 +9/4/2024,6:05,12,27.2,74.3 +9/4/2024,6:05,7,27,75.6 +9/4/2024,6:05,7,27.1,74.5 +9/4/2024,6:10,8,27.2,74 +9/4/2024,6:10,14,28.4,70.8 +9/4/2024,6:10,12,27.2,74.4 +9/4/2024,6:10,7,27,75.2 +9/4/2024,6:10,7,27.2,74.1 +9/4/2024,6:15,8,27.1,74.3 +9/4/2024,6:15,14,28.5,70.6 +9/4/2024,6:15,12,27.1,74.6 +9/4/2024,6:15,7,27.1,75 +9/4/2024,6:15,7,27.2,73.9 +9/4/2024,6:20,8,27.3,73.8 +9/4/2024,6:20,14,28.5,70.3 +9/4/2024,6:20,12,27.3,73.9 +9/4/2024,6:20,7,27.3,74.6 +9/4/2024,6:20,7,27.3,73.9 +9/4/2024,6:25,8,27.4,73.4 +9/4/2024,6:25,14,28.7,70.1 +9/4/2024,6:25,12,27.5,73.5 +9/4/2024,6:25,7,27.4,74.2 +9/4/2024,6:25,7,27.4,73.5 +9/4/2024,6:30,8,27.6,72.8 +9/4/2024,6:30,14,28.9,69.6 +9/4/2024,6:30,12,27.6,73.2 +9/4/2024,6:30,7,27.5,73.7 +9/4/2024,6:30,7,27.5,73.3 +9/4/2024,6:35,8,27.8,72.2 +9/4/2024,6:35,14,29,69.5 +9/4/2024,6:35,12,27.8,72.7 +9/4/2024,6:35,7,27.8,73 +9/4/2024,6:35,7,27.6,72.8 +9/4/2024,6:40,8,27.9,71.9 +9/4/2024,6:40,14,29.1,69 +9/4/2024,6:40,12,28,71.9 +9/4/2024,6:40,7,28,72.3 +9/4/2024,6:40,7,27.8,72.6 +9/4/2024,6:45,8,28.1,71.4 +9/4/2024,6:45,14,29.3,68.6 +9/4/2024,6:45,12,28.2,71.6 +9/4/2024,6:45,7,28.3,71.6 +9/4/2024,6:45,7,27.9,72.2 +9/4/2024,6:50,8,28.5,70.3 +9/4/2024,6:50,14,29.5,68.1 +9/4/2024,6:50,12,28.5,70.7 +9/4/2024,6:50,7,28.5,70.8 +9/4/2024,6:50,7,28,71.9 +9/4/2024,6:55,8,28.7,69.4 +9/4/2024,6:55,14,29.8,67.4 +9/4/2024,6:55,12,28.8,69.9 +9/4/2024,6:55,7,28.9,69.7 +9/4/2024,6:55,7,28.1,71.7 +9/4/2024,7:00,8,29.1,68.4 +9/4/2024,7:00,14,29.9,66.9 +9/4/2024,7:00,12,28.5,71 +9/4/2024,7:00,7,29.3,68.6 +9/4/2024,7:00,7,28.2,71.4 +9/4/2024,7:05,8,29.3,67.6 +9/4/2024,7:05,14,30.2,66.5 +9/4/2024,7:05,12,28.4,71.4 +9/4/2024,7:05,7,29.7,67.4 +9/4/2024,7:05,7,28.4,71.1 +9/4/2024,7:10,8,29.5,67 +9/4/2024,7:10,14,30.3,66.1 +9/4/2024,7:10,12,28.8,70.7 +9/4/2024,7:10,7,29.7,67.4 +9/4/2024,7:10,7,28.6,70.6 +9/4/2024,7:15,8,29.7,66.8 +9/4/2024,7:15,14,30.1,67 +9/4/2024,7:15,12,29.3,69.1 +9/4/2024,7:15,7,29.9,67.1 +9/4/2024,7:15,7,28.6,70.1 +9/4/2024,7:20,8,29.8,66.5 +9/4/2024,7:20,14,30,67.6 +9/4/2024,7:20,12,29.3,69.6 +9/4/2024,7:20,7,29.6,68.4 +9/4/2024,7:20,7,28.8,69.9 +9/4/2024,7:25,8,30,66.2 +9/4/2024,7:25,14,30.3,67.2 +9/4/2024,7:25,12,28.9,71 +9/4/2024,7:25,7,30,67.4 +9/4/2024,7:25,7,28.9,69.7 +9/4/2024,7:30,8,30.2,65.9 +9/4/2024,7:30,14,30.5,66.9 +9/4/2024,7:30,12,29.9,67.1 +9/4/2024,7:30,7,30,67.6 +9/4/2024,7:30,7,29.1,69.4 +9/4/2024,7:35,8,30.2,66 +9/4/2024,7:35,14,30.8,65.4 +9/4/2024,7:35,12,30.1,66.8 +9/4/2024,7:35,7,30.5,66.2 +9/4/2024,7:35,7,29.1,69.2 +9/4/2024,7:40,8,30.4,65.5 +9/4/2024,7:40,14,31,64.6 +9/4/2024,7:40,12,30.3,66.8 +9/4/2024,7:40,7,31,64.4 +9/4/2024,7:40,7,29.3,68.9 +9/4/2024,7:45,8,30.3,65.3 +9/4/2024,7:45,14,31,64.7 +9/4/2024,7:45,12,30.3,66.2 +9/4/2024,7:45,7,30.8,65.1 +9/4/2024,7:45,7,29.3,69 +9/4/2024,7:50,8,30.2,65.6 +9/4/2024,7:50,14,30.6,65.5 +9/4/2024,7:50,12,30.3,66.2 +9/4/2024,7:50,7,30.2,66.3 +9/4/2024,7:50,7,29.3,69.3 +9/4/2024,7:55,8,30.4,65.2 +9/4/2024,7:55,14,30.6,65.7 +9/4/2024,7:55,12,30.6,65.3 +9/4/2024,7:55,7,30.3,66.2 +9/4/2024,7:55,7,29.4,69 +9/4/2024,8:00,8,30.6,64.5 +9/4/2024,8:00,14,30.9,64.8 +9/4/2024,8:00,12,30.9,64.3 +9/4/2024,8:00,7,30.6,65.1 +9/4/2024,8:00,7,29.6,68.6 +9/4/2024,8:05,7,29.7,68.2 +9/4/2024,8:05,8,30.6,64.4 +9/4/2024,8:05,14,31.1,64.1 +9/4/2024,8:05,7,30.9,65.1 +9/4/2024,8:05,12,31.2,63.4 +9/4/2024,8:05,7,29.7,68.1 +9/4/2024,8:10,8,30.8,63.7 +9/4/2024,8:10,14,31.4,63.4 +9/4/2024,8:10,12,31.1,63.5 +9/4/2024,8:10,7,31.4,62.7 +9/4/2024,8:10,7,29.9,67.7 +9/4/2024,8:15,8,31.4,62.7 +9/4/2024,8:15,7,30.1,67 +9/4/2024,8:15,14,31.6,63.3 +9/4/2024,8:15,12,31,64.1 +9/4/2024,8:15,7,31.9,61.4 +9/4/2024,8:20,8,32.2,60.1 +9/4/2024,8:20,7,30.4,66.1 +9/4/2024,8:20,14,31.6,62.9 +9/4/2024,8:20,12,31.6,62.8 +9/4/2024,8:20,7,32.1,61.1 +9/4/2024,8:25,8,31.8,61.1 +9/4/2024,8:25,7,30.7,65.2 +9/4/2024,8:25,14,31.5,63.3 +9/4/2024,8:25,12,31.8,62 +9/4/2024,8:25,7,31.9,61.5 +9/4/2024,8:30,8,31.6,61.9 +9/4/2024,8:30,7,30.6,65.3 +9/4/2024,8:30,14,31.8,62.6 +9/4/2024,8:30,12,31.5,62.7 +9/4/2024,8:30,7,31.6,61.9 +9/4/2024,8:35,8,32.1,60.5 +9/4/2024,8:35,7,30.8,64.7 +9/4/2024,8:35,14,31.9,62.2 +9/4/2024,8:35,12,32.1,61.4 +9/4/2024,8:35,7,32,61 +9/4/2024,8:40,7,31.1,64.1 +9/4/2024,8:40,8,32.3,59.7 +9/4/2024,8:40,14,32.1,61.9 +9/4/2024,8:40,12,32.3,60.9 +9/4/2024,8:40,7,32.1,60.6 +9/4/2024,8:45,7,31.3,63.4 +9/4/2024,8:45,8,33.4,58.3 +9/4/2024,8:45,7,32.6,59.3 +9/4/2024,8:45,12,32.6,60 +9/4/2024,8:45,14,32.4,61.2 +9/4/2024,8:50,7,31.4,63.2 +9/4/2024,8:50,8,35.3,53 +9/4/2024,8:50,7,32.8,59 +9/4/2024,8:50,14,32.5,60.8 +9/4/2024,8:50,12,32.5,60.1 +9/4/2024,8:55,7,31.5,63 +9/4/2024,8:55,8,33.3,57 +9/4/2024,8:55,7,32.8,58.9 +9/4/2024,9:00,8,33.2,57.9 +9/4/2024,9:00,14,32.6,60.4 +9/4/2024,9:00,7,31.7,62.4 +9/4/2024,9:00,12,32.4,59.9 +9/4/2024,9:00,7,33.2,57.7 +9/4/2024,9:05,8,33.2,57.7 +9/4/2024,9:05,7,31.8,62.1 +9/4/2024,9:05,14,32.7,59.7 +9/4/2024,9:05,12,32.9,59.1 +9/4/2024,9:05,7,33,58.3 +9/4/2024,9:10,7,32.1,61.3 +9/4/2024,9:10,12,32.9,58.9 +9/4/2024,9:10,8,33.4,57.5 +9/4/2024,9:10,14,33,59.4 +9/4/2024,9:10,7,33.3,57.5 +9/4/2024,9:15,8,33.6,56.8 +9/4/2024,9:15,7,32.4,60.7 +9/4/2024,9:15,12,33.2,58.3 +9/4/2024,9:15,14,33.1,58.9 +9/4/2024,9:15,7,33.5,56.9 +9/4/2024,9:21,8,33.7,56.6 +9/4/2024,9:21,7,32.6,60.2 +9/4/2024,9:25,7,32.6,60.2 +9/4/2024,9:25,8,33.8,55.9 +9/4/2024,9:25,14,33.2,58.6 +9/4/2024,9:25,12,33.4,58 +9/4/2024,9:25,7,33.5,56.7 +9/4/2024,9:35,7,32.5,60.3 +9/4/2024,9:35,7,33.2,57.2 +9/4/2024,9:35,8,33.7,56.4 +9/4/2024,9:35,14,33.3,58.7 +9/4/2024,9:35,12,33,58.5 +9/4/2024,9:40,7,32.6,60 +9/4/2024,9:40,8,33.7,55.7 +9/4/2024,9:40,7,33.2,57.3 +9/4/2024,9:40,14,33.3,58.7 +9/4/2024,9:40,12,33.4,57.9 +9/4/2024,9:45,12,33.4,57.6 +9/4/2024,9:45,8,34,56 +9/4/2024,9:45,7,32.9,59.5 +9/4/2024,9:45,14,33.5,58.3 +9/4/2024,9:45,7,33.7,56 +9/4/2024,9:50,12,33.7,57 +9/4/2024,9:50,7,33.1,59.1 +9/4/2024,9:50,14,33.6,57.9 +9/4/2024,9:50,8,34.1,55.3 +9/4/2024,9:50,7,33.7,55.8 +9/4/2024,9:55,12,33.9,57.1 +9/4/2024,9:55,7,33.3,58.3 +9/4/2024,9:55,8,34.1,55 +9/4/2024,9:55,14,33.7,57.5 +9/4/2024,9:55,7,34.1,55 +9/4/2024,10:00,12,33.9,56.6 +9/4/2024,10:00,7,33.3,58.4 +9/4/2024,10:00,8,34.2,54.6 +9/4/2024,10:00,14,33.6,57.4 +9/4/2024,10:00,7,34.2,54.8 +9/4/2024,10:05,12,33.7,56.3 +9/4/2024,10:05,14,33.9,57.3 +9/4/2024,10:05,7,33.6,58.2 +9/4/2024,10:05,7,34.2,54.6 +9/4/2024,10:05,8,34.4,54 +9/4/2024,10:10,12,34.1,56.4 +9/4/2024,10:10,7,33.6,57.9 +9/4/2024,10:10,8,34.6,54.3 +9/4/2024,10:10,7,34.3,54.3 +9/4/2024,10:10,14,34.1,57 +9/4/2024,10:15,12,33.8,56.3 +9/4/2024,10:15,8,34.7,53.5 +9/4/2024,10:15,7,33.8,56.8 +9/4/2024,10:15,7,34.5,53.8 +9/4/2024,10:15,14,34.3,56.4 +9/4/2024,10:20,12,34.4,55 +9/4/2024,10:20,8,34.9,52.8 +9/4/2024,10:20,7,34.1,56.1 +9/4/2024,10:20,14,34.4,56 +9/4/2024,10:20,7,34.7,53.2 +9/4/2024,10:25,12,34.1,55.9 +9/4/2024,10:25,7,34.3,56.1 +9/4/2024,10:25,8,35.1,52.3 +9/4/2024,10:25,14,34.5,55.8 +9/4/2024,10:25,7,34.9,53.2 +9/4/2024,10:30,12,34.2,55.7 +9/4/2024,10:30,7,34.7,53 +9/4/2024,10:30,8,35.2,52.4 +9/4/2024,10:30,14,34.5,56.1 +9/4/2024,10:31,7,34.3,56.1 +9/4/2024,10:35,7,34.3,56.1 +9/4/2024,10:35,8,35.2,52.6 +9/4/2024,10:35,14,34.6,55.7 +9/4/2024,10:35,7,35,52.5 +9/4/2024,10:40,12,34,55.9 +9/4/2024,10:40,7,34.5,55.9 +9/4/2024,10:40,8,35.3,52.4 +9/4/2024,10:40,7,35,52.7 +9/4/2024,10:40,14,34.7,55.8 +9/4/2024,10:45,12,34.8,54.1 +9/4/2024,10:45,7,34.7,55 +9/4/2024,10:45,8,35.4,52 +9/4/2024,10:45,7,35.3,52 +9/4/2024,10:45,14,34.8,55.3 +9/4/2024,10:50,12,35.2,53.5 +9/4/2024,10:50,8,35.5,51.7 +9/4/2024,10:50,7,34.8,54.5 +9/4/2024,10:50,7,35.1,52.1 +9/4/2024,10:50,14,35.1,55.1 +9/4/2024,10:55,12,35.2,53.6 +9/4/2024,10:55,7,34.7,54.8 +9/4/2024,10:55,7,35.3,52.2 +9/4/2024,10:55,8,35.7,52.1 +9/4/2024,10:55,14,35.1,54.8 +9/4/2024,11:00,12,35.3,53 +9/4/2024,11:00,7,35,54.6 +9/4/2024,11:00,8,35.9,51.3 +9/4/2024,11:00,14,35.3,54.2 +9/4/2024,11:00,7,35.6,51.4 +9/4/2024,11:05,12,35.5,52.3 +9/4/2024,11:05,7,34.9,54.7 +9/4/2024,11:05,8,36,50.8 +9/4/2024,11:05,7,35.6,51.3 +9/4/2024,11:05,14,35.4,54.4 +9/4/2024,11:10,12,35.7,51.6 +9/4/2024,11:10,7,35.2,53.8 +9/4/2024,11:10,8,36.1,50.3 +9/4/2024,11:10,7,36,50.8 +9/4/2024,11:10,14,35.5,53.9 +9/4/2024,11:15,12,35.8,51.9 +9/4/2024,11:15,7,35.9,51 +9/4/2024,11:15,7,35.2,54.1 +9/4/2024,11:15,8,36.1,50 +9/4/2024,11:15,14,35.4,54.2 +9/4/2024,11:20,12,35.4,52.5 +9/4/2024,11:20,7,35.9,50.7 +9/4/2024,11:20,7,35.3,54.1 +9/4/2024,11:20,14,35.4,54.3 +9/4/2024,11:20,8,36.1,50.5 +9/4/2024,11:25,12,35,53.3 +9/4/2024,11:25,7,35.6,51 +9/4/2024,11:25,7,35.1,54.5 +9/4/2024,11:25,8,36,51.3 +9/4/2024,11:25,14,35.3,54.5 +9/4/2024,11:30,12,34.4,53.1 +9/4/2024,11:30,7,35.6,51.6 +9/4/2024,11:30,7,35.1,53.9 +9/4/2024,11:30,8,35.9,50.1 +9/4/2024,11:30,14,35.6,53.7 +9/4/2024,11:35,12,34.4,53.1 +9/4/2024,11:35,7,35.4,51.6 +9/4/2024,11:35,7,34.9,54.4 +9/4/2024,11:35,14,35.5,53.8 +9/4/2024,11:35,8,35.7,51.3 +9/4/2024,11:40,12,34.7,52.9 +9/4/2024,11:40,7,35.3,52 +9/4/2024,11:40,7,34.8,54.5 +9/4/2024,11:40,8,35.7,51 +9/4/2024,11:40,14,35.3,53.9 +9/4/2024,11:45,12,35.1,52.9 +9/4/2024,11:45,7,35.6,51.2 +9/4/2024,11:45,7,35,54.2 +9/4/2024,11:45,14,35.3,53.9 +9/4/2024,11:45,8,36,51.1 +9/4/2024,11:50,12,35.4,52.4 +9/4/2024,11:50,7,35.9,50.8 +9/4/2024,11:50,7,35.2,53.6 +9/4/2024,11:50,14,35.5,53.3 +9/4/2024,11:50,8,36.2,50.2 +9/4/2024,11:55,12,35.5,52.2 +9/4/2024,11:55,7,35.8,50.8 +9/4/2024,11:55,7,35.4,53.1 +9/4/2024,11:55,14,35.5,53.8 +9/4/2024,11:55,8,36.2,49.9 +9/4/2024,12:00,12,35.9,51.7 +9/4/2024,12:00,7,36.3,50.1 +9/4/2024,12:00,7,35.5,52.9 +9/4/2024,12:00,8,36.5,50.7 +9/4/2024,12:00,14,35.8,53.2 +9/4/2024,12:05,12,35.8,52.1 +9/4/2024,12:05,7,36.4,49.9 +9/4/2024,12:05,7,35.6,52.8 +9/4/2024,12:05,14,35.8,53.6 +9/4/2024,12:05,8,36.4,50.7 +9/4/2024,12:10,12,35.9,52.2 +9/4/2024,12:10,7,36.4,50.4 +9/4/2024,12:10,7,35.7,52.4 +9/4/2024,12:10,8,36.4,51 +9/4/2024,12:10,14,35.9,54 +9/4/2024,12:15,12,35.8,52.4 +9/4/2024,12:15,7,36.1,51.3 +9/4/2024,12:15,7,35.6,52.7 +9/4/2024,12:15,14,35.6,54.3 +9/4/2024,12:15,8,36.2,50.8 +9/4/2024,12:20,12,35.7,52.8 +9/4/2024,12:20,7,36,51.8 +9/4/2024,12:20,7,35.3,53.6 +9/4/2024,12:20,8,36.2,50.9 +9/4/2024,12:20,14,35.5,54.5 +9/4/2024,12:25,12,35.4,53.4 +9/4/2024,12:25,7,35.7,52.5 +9/4/2024,12:25,7,35.2,53.8 +9/4/2024,12:25,8,36.2,50.9 +9/4/2024,12:25,14,35.3,55.1 +9/4/2024,12:30,7,35.8,52.4 +9/4/2024,12:30,12,35.6,52.9 +9/4/2024,12:30,7,35.4,53.3 +9/4/2024,12:30,14,35.6,54.7 +9/4/2024,12:30,8,36.2,51.5 +9/4/2024,12:35,12,35.5,53.6 +9/4/2024,12:35,7,36.1,52.1 +9/4/2024,12:35,7,35.5,53.4 +9/4/2024,12:35,14,35.8,54.4 +9/4/2024,12:35,8,36.3,51.4 +9/4/2024,12:40,12,35.6,53.2 +9/4/2024,12:40,7,36.2,51.9 +9/4/2024,12:40,7,35.5,53.3 +9/4/2024,12:40,14,35.8,54.5 +9/4/2024,12:40,8,36.2,51.7 +9/4/2024,12:45,12,35.6,53.5 +9/4/2024,12:45,7,36.1,52.4 +9/4/2024,12:45,7,35.3,53.8 +9/4/2024,12:45,8,36.2,51.4 +9/4/2024,12:45,14,35.7,54.9 +9/4/2024,12:50,7,35.7,53.1 +9/4/2024,12:50,12,35.3,54.4 +9/4/2024,12:50,7,35.1,54.4 +9/4/2024,12:50,14,35.6,55.4 +9/4/2024,12:50,8,36,51.7 +9/4/2024,12:55,12,34.9,55.2 +9/4/2024,12:55,7,35.6,53.3 +9/4/2024,12:55,7,35,54.7 +9/4/2024,12:55,8,35.9,52.1 +9/4/2024,12:55,14,35.5,55.7 +9/4/2024,13:00,12,35,54.7 +9/4/2024,13:00,7,35.8,53.2 +9/4/2024,13:00,7,35.3,54 +9/4/2024,13:00,8,35.9,52.2 +9/4/2024,13:00,14,35.8,55 +9/4/2024,13:05,12,35.3,54.3 +9/4/2024,13:05,12,35.2,54.3 +9/4/2024,13:05,7,35.9,52.8 +9/4/2024,13:05,7,35.4,53.7 +9/4/2024,13:05,14,35.9,54.8 +9/4/2024,13:05,8,36.2,51.5 +9/4/2024,13:10,12,35.3,54 +9/4/2024,13:10,7,36,52.7 +9/4/2024,13:10,7,35.4,53.7 +9/4/2024,13:10,8,36.1,51.4 +9/4/2024,13:10,14,35.8,54.8 +9/4/2024,13:15,12,35.1,54.4 +9/4/2024,13:15,7,35.7,53.6 +9/4/2024,13:15,7,35.2,54.2 +9/4/2024,13:15,8,36,51.7 +9/4/2024,13:15,14,35.6,55.6 +9/4/2024,13:20,7,35.5,53.2 +9/4/2024,13:20,12,35.1,54.4 +9/4/2024,13:20,12,35.1,54.4 +9/4/2024,13:20,7,35.4,53.9 +9/4/2024,13:20,8,36,51.8 +9/4/2024,13:20,14,35.7,55.5 +9/4/2024,13:25,7,35.1,53.6 +9/4/2024,13:25,12,35.3,54.1 +9/4/2024,13:25,7,35.2,54.5 +9/4/2024,13:25,8,35.9,51.9 +9/4/2024,13:25,14,35.7,54.9 +9/4/2024,13:30,7,35.1,53.5 +9/4/2024,13:30,12,35.2,54.5 +9/4/2024,13:30,7,35.1,54.4 +9/4/2024,13:30,8,35.7,52.8 +9/4/2024,13:30,14,35.7,54.7 +9/4/2024,13:35,7,34.9,54 +9/4/2024,13:35,7,35,54.7 +9/4/2024,13:35,8,35.7,52.1 +9/4/2024,13:35,14,35.7,54.5 +9/4/2024,13:40,7,34.5,54.5 +9/4/2024,13:40,12,35.2,54.4 +9/4/2024,13:40,7,34.7,55.1 +9/4/2024,13:40,8,35.4,52.7 +9/4/2024,13:40,14,35.5,55 +9/4/2024,13:45,7,34.6,54.7 +9/4/2024,13:45,12,35.3,54.3 +9/4/2024,13:45,7,34.7,55.1 +9/4/2024,13:45,8,35.3,52.8 +9/4/2024,13:45,14,35.4,54.7 +9/4/2024,13:50,7,34.5,54.5 +9/4/2024,13:51,12,35.3,54.1 +9/4/2024,13:55,12,35.4,53.8 +9/4/2024,13:55,7,34.7,54.2 +9/4/2024,13:55,7,35,54.4 +9/4/2024,13:55,8,35.5,52.6 +9/4/2024,13:55,14,35.6,54.2 +9/4/2024,14:00,12,35.3,53.9 +9/4/2024,14:00,7,34.7,54 +9/4/2024,14:00,8,35.4,52.1 +9/4/2024,14:00,7,35,54.4 +9/4/2024,14:00,14,35.6,54 +9/4/2024,14:05,7,34.5,54.7 +9/4/2024,14:05,8,35.4,52.4 +9/4/2024,14:05,14,35.6,54.1 +9/4/2024,14:05,7,35,54.3 +9/4/2024,14:05,12,35.3,53.5 +9/4/2024,14:05,7,34.9,54.5 +9/4/2024,14:05,8,35.3,52.5 +9/4/2024,14:05,14,35.5,54.3 +9/4/2024,14:10,12,35.3,53.6 +9/4/2024,14:10,7,34.4,54.9 +9/4/2024,14:10,7,34.9,54.5 +9/4/2024,14:10,14,35.5,54.4 +9/4/2024,14:10,8,35.2,52.7 +9/4/2024,14:15,7,34.3,55 +9/4/2024,14:15,12,35.2,53.7 +9/4/2024,14:15,7,34.8,54.5 +9/4/2024,14:15,14,35.5,54.3 +9/4/2024,14:15,8,35.1,52.8 +9/4/2024,14:20,7,34.2,55.1 +9/4/2024,14:20,12,35.2,53.6 +9/4/2024,14:20,7,34.7,54.5 +9/4/2024,14:20,14,35.4,54.3 +9/4/2024,14:20,8,35.2,53 +9/4/2024,14:25,7,34.1,55.3 +9/4/2024,14:25,12,35.1,53.7 +9/4/2024,14:25,7,34.7,54.5 +9/4/2024,14:25,8,35,53.1 +9/4/2024,14:25,14,35.3,54.6 +9/4/2024,14:30,12,34.9,54.2 +9/4/2024,14:30,7,33.7,56.7 +9/4/2024,14:30,7,34.5,55 +9/4/2024,14:30,8,34.7,53.9 +9/4/2024,14:30,14,35.2,54.8 +9/4/2024,14:35,12,34.7,54.5 +9/4/2024,14:35,7,33.5,57.4 +9/4/2024,14:35,7,34.2,55.5 +9/4/2024,14:35,8,34.6,54.4 +9/4/2024,14:35,14,35.1,55.4 +9/4/2024,14:40,12,34.4,56.2 +9/4/2024,14:40,7,33.3,58.6 +9/4/2024,14:40,7,34.1,56.2 +9/4/2024,14:40,8,34.4,55 +9/4/2024,14:40,14,35,55.7 +9/4/2024,14:45,7,33.1,59.2 +9/4/2024,14:45,12,34.2,56 +9/4/2024,14:45,7,34,56.6 +9/4/2024,14:45,8,34.2,55.7 +9/4/2024,14:45,14,35,56.2 +9/4/2024,14:50,12,34.4,55.8 +9/4/2024,14:50,7,33.1,58.9 +9/4/2024,14:50,7,33.9,56.8 +9/4/2024,14:50,8,34.2,55.6 +9/4/2024,14:50,14,34.9,56.1 +9/4/2024,14:55,7,33.3,59.7 +9/4/2024,14:55,12,34.2,56 +9/4/2024,14:55,7,33.9,57.1 +9/4/2024,14:55,8,34.1,56.2 +9/4/2024,14:55,14,34.9,56.3 +9/4/2024,15:00,12,34,56.8 +9/4/2024,15:00,7,33.1,60.3 +9/4/2024,15:00,7,33.7,57.6 +9/4/2024,15:00,8,33.9,57.1 +9/4/2024,15:00,14,34.9,56.8 +9/4/2024,15:05,12,33.9,57.5 +9/4/2024,15:05,7,32.9,60.5 +9/4/2024,15:05,7,33.6,58.7 +9/4/2024,15:05,8,33.8,57 +9/4/2024,15:05,14,34.8,57.3 +9/4/2024,15:10,12,33.7,58.4 +9/4/2024,15:10,7,33.1,60.1 +9/4/2024,15:10,12,33.5,58.8 +9/4/2024,15:10,7,33.2,59.4 +9/4/2024,15:10,8,33.7,57.8 +9/4/2024,15:10,14,34.7,57.3 +9/4/2024,15:15,7,33.3,59.9 +9/4/2024,15:15,12,33.3,59.5 +9/4/2024,15:15,7,33.1,59.9 +9/4/2024,15:15,8,33.5,58.2 +9/4/2024,15:15,14,34.8,57.3 +9/4/2024,15:20,12,33.2,59.7 +9/4/2024,15:20,7,33.3,60 +9/4/2024,15:20,12,33.2,60.1 +9/4/2024,15:20,7,33.1,60.2 +9/4/2024,15:20,8,33.6,58.2 +9/4/2024,15:20,14,34.8,57.3 +9/4/2024,15:25,7,33.2,60.3 +9/4/2024,15:25,7,33,60.6 +9/4/2024,15:25,8,33.5,58.6 +9/4/2024,15:25,14,34.9,57.3 +9/4/2024,15:30,7,33.2,60.6 +9/4/2024,15:30,7,32.9,61 +9/4/2024,15:30,8,33.4,59.1 +9/4/2024,15:30,14,34.8,57.5 +9/4/2024,15:35,7,33.1,60.8 +9/4/2024,15:35,7,32.9,61.1 +9/4/2024,15:35,8,33.3,59.4 +9/4/2024,15:35,14,34.8,57.5 +9/4/2024,15:40,7,33.1,61 +9/4/2024,15:40,7,32.9,61 +9/4/2024,15:40,14,34.7,57.8 +9/4/2024,15:40,8,33.3,59.5 +9/4/2024,15:45,7,33.1,61.2 +9/4/2024,15:45,7,33,61 +9/4/2024,15:45,8,33.3,59.6 +9/4/2024,15:45,14,34.6,58.7 +9/4/2024,15:50,7,33,61.4 +9/4/2024,15:50,8,33.2,59.9 +9/4/2024,15:50,7,32.9,61 +9/4/2024,15:55,7,33,61.3 +9/4/2024,15:55,7,32.8,61.2 +9/4/2024,15:55,14,34.5,58.9 +9/4/2024,15:55,8,33.2,59.7 +9/4/2024,16:00,7,33,61.3 +9/4/2024,16:00,7,32.9,61.3 +9/4/2024,16:00,14,34.5,58.8 +9/4/2024,16:00,8,33.2,60 +9/4/2024,16:05,7,33,61.1 +9/4/2024,16:05,7,32.8,61.5 +9/4/2024,16:05,14,34.4,59.1 +9/4/2024,16:05,8,33,60.6 +9/4/2024,16:10,7,33,61.1 +9/4/2024,16:10,7,32.8,61.5 +9/4/2024,16:10,8,32.9,60.8 +9/4/2024,16:10,14,34.3,59.3 +9/4/2024,16:15,7,33,61.4 +9/4/2024,16:15,7,32.8,61.5 +9/4/2024,16:15,8,32.9,60.9 +9/4/2024,16:15,14,34.3,59.8 +9/4/2024,16:20,7,33,61.6 +9/4/2024,16:20,7,32.8,61.6 +9/4/2024,16:20,8,32.8,61 +9/4/2024,16:20,14,34.1,60 +9/4/2024,16:25,7,33,61.7 +9/4/2024,16:25,7,32.7,61.7 +9/4/2024,16:25,14,34.2,59.7 +9/4/2024,16:25,8,32.7,61.3 +9/4/2024,16:30,7,32.9,61.9 +9/4/2024,16:30,7,32.7,61.9 +9/4/2024,16:30,8,32.7,61.7 +9/4/2024,16:30,14,34.1,60.2 +9/4/2024,16:35,7,32.9,61.9 +9/4/2024,16:35,7,32.6,62 +9/4/2024,16:35,8,32.7,61.4 +9/4/2024,16:35,14,34.1,60.2 +9/4/2024,16:40,7,32.8,62 +9/4/2024,16:40,7,32.6,62.3 +9/4/2024,16:40,14,34.1,60.4 +9/4/2024,16:40,8,32.6,61.9 +9/4/2024,16:45,7,32.8,62.2 +9/4/2024,16:45,7,32.5,62.6 +9/4/2024,16:45,14,34,60.4 +9/4/2024,16:45,8,32.5,62.2 +9/4/2024,16:50,7,32.7,62.3 +9/4/2024,16:50,7,32.4,62.8 +9/4/2024,16:50,14,34,60.3 +9/4/2024,16:50,8,32.4,62.6 +9/4/2024,16:55,7,32.6,62.5 +9/4/2024,16:55,7,32.3,63.1 +9/4/2024,16:55,14,34,60.3 +9/4/2024,16:55,8,32.2,63 +9/4/2024,17:00,7,32.6,62.5 +9/4/2024,17:00,7,32.2,63.2 +9/4/2024,17:00,14,33.9,60.8 +9/4/2024,17:00,8,32.2,63.2 +9/4/2024,17:05,7,32.5,62.9 +9/4/2024,17:05,7,32.1,63.6 +9/4/2024,17:05,14,33.8,60.7 +9/4/2024,17:05,8,32,63.7 +9/4/2024,17:10,7,32.4,63.2 +9/4/2024,17:10,7,31.8,64.3 +9/4/2024,17:10,14,33.7,61 +9/4/2024,17:10,8,31.8,64 +9/4/2024,17:15,7,32.2,63.7 +9/4/2024,17:15,7,31.7,64.7 +9/4/2024,17:15,8,31.7,64.5 +9/4/2024,17:15,14,33.6,61.2 +9/4/2024,17:20,7,32,64.1 +9/4/2024,17:20,7,31.6,64.9 +9/4/2024,17:20,8,31.5,65 +9/4/2024,17:20,14,33.5,61.7 +9/4/2024,17:25,7,31.8,64.7 +9/4/2024,17:25,7,31.6,65.2 +9/4/2024,17:25,8,31.4,65.4 +9/4/2024,17:25,14,33.3,62.1 +9/4/2024,17:30,7,31.7,64.9 +9/4/2024,17:30,7,31.5,65.3 +9/4/2024,17:30,14,33.1,62.4 +9/4/2024,17:30,8,31.3,65.6 +9/4/2024,17:35,7,31.6,65.2 +9/4/2024,17:35,7,31.5,65.6 +9/4/2024,17:35,8,31.1,66.1 +9/4/2024,17:35,14,33,62.8 +9/4/2024,17:40,7,31.1,66.3 +9/4/2024,17:40,14,33,63 +9/4/2024,17:40,8,31,66.6 +9/4/2024,17:45,7,31.5,65.8 +9/4/2024,17:45,7,31.1,66.3 +9/4/2024,17:45,8,30.9,66.6 +9/4/2024,17:45,14,32.8,63.3 +9/4/2024,17:50,7,31.4,66.1 +9/4/2024,17:50,7,31,67 +9/4/2024,17:50,8,30.7,67.2 +9/4/2024,17:50,14,32.6,63.6 +9/4/2024,17:55,7,31.3,66.4 +9/4/2024,17:55,7,30.8,67.4 +9/4/2024,17:55,8,30.6,67.6 +9/4/2024,17:55,14,32.6,63.6 +9/4/2024,18:00,7,31.2,66.5 +9/4/2024,18:00,7,30.8,67.4 +9/4/2024,18:00,8,30.5,67.8 +9/4/2024,18:00,14,32.6,63.5 +9/4/2024,18:05,7,31,67 +9/4/2024,18:05,7,30.7,67.6 +9/4/2024,18:05,14,32.5,63.7 +9/4/2024,18:05,8,30.5,67.7 +9/4/2024,18:10,7,30.9,67.5 +9/4/2024,18:10,7,30.6,67.9 +9/4/2024,18:10,14,32.3,64.1 +9/4/2024,18:10,8,30.4,67.9 +9/4/2024,18:15,7,30.6,67.8 +9/4/2024,18:15,14,32.5,63.8 +9/4/2024,18:15,8,30.4,68.1 +9/4/2024,18:20,7,30.8,67.7 +9/4/2024,18:20,7,30.6,68.1 +9/4/2024,18:20,8,30.3,68.3 +9/4/2024,18:20,14,32.5,63.8 +9/4/2024,18:25,7,30.7,67.9 +9/4/2024,18:25,7,30.5,68.3 +9/4/2024,18:25,14,32.3,64.2 +9/4/2024,18:25,8,30.2,68.7 +9/4/2024,18:30,7,30.7,68.2 +9/4/2024,18:30,7,30.5,68.1 +9/4/2024,18:30,8,30.2,68.6 +9/4/2024,18:30,14,32.3,64.2 +9/4/2024,18:35,7,30.6,68.2 +9/4/2024,18:35,7,30.4,68.6 +9/4/2024,18:35,8,30.2,68.7 +9/4/2024,18:35,14,32.2,64.3 +9/4/2024,18:40,7,30.5,68.5 +9/4/2024,18:40,7,30.4,68.5 +9/4/2024,18:40,8,30.2,68.7 +9/4/2024,18:40,14,32.1,64.4 +9/4/2024,18:45,7,30.5,68.6 +9/4/2024,18:45,7,30.3,68.8 +9/4/2024,18:45,14,32.1,64.2 +9/4/2024,18:45,8,30.1,68.8 +9/4/2024,18:50,7,30.5,68.5 +9/4/2024,18:50,7,30.3,68.8 +9/4/2024,18:50,14,32.3,64.1 +9/4/2024,18:50,8,30,69.1 +9/4/2024,18:55,7,30.4,68.8 +9/4/2024,18:55,7,30.1,69.1 +9/4/2024,18:55,14,32.1,64.3 +9/4/2024,18:55,8,30,69.2 +9/4/2024,19:00,7,30.4,68.7 +9/4/2024,19:00,7,30.1,69.2 +9/4/2024,19:00,14,32.1,64.3 +9/4/2024,19:00,8,29.9,69.4 +9/4/2024,19:05,7,30.3,69.1 +9/4/2024,19:05,7,30.1,69.4 +9/4/2024,19:05,8,29.9,69.3 +9/4/2024,19:05,14,31.9,64.8 +9/4/2024,19:10,7,30.3,69 +9/4/2024,19:10,7,30.1,69.2 +9/4/2024,19:10,8,29.9,69.4 +9/4/2024,19:10,14,31.9,64.8 +9/4/2024,19:15,7,30.3,69 +9/4/2024,19:15,7,30.1,69.4 +9/4/2024,19:15,8,29.9,69.4 +9/4/2024,19:15,14,31.8,64.9 +9/4/2024,19:20,7,30.3,68.9 +9/4/2024,19:20,7,30.1,69.1 +9/4/2024,19:20,8,29.8,69.6 +9/4/2024,19:20,14,31.8,65 +9/4/2024,19:25,7,30.3,68.9 +9/4/2024,19:25,7,30.1,69.2 +9/4/2024,19:25,14,31.9,64.8 +9/4/2024,19:25,8,29.8,69.4 +9/4/2024,19:30,7,30.2,69.2 +9/4/2024,19:30,7,30.1,69.2 +9/4/2024,19:30,8,29.8,69.6 +9/4/2024,19:30,14,31.9,64.6 +9/4/2024,19:35,7,30.2,69.3 +9/4/2024,19:35,7,30,69.5 +9/4/2024,19:35,8,29.7,69.7 +9/4/2024,19:35,14,32,64.4 +9/4/2024,19:40,7,30.1,69.3 +9/4/2024,19:40,7,30,69.4 +9/4/2024,19:40,14,31.8,64.9 +9/4/2024,19:40,8,29.7,69.6 +9/4/2024,19:45,7,29.9,69.6 +9/4/2024,19:45,14,31.8,64.7 +9/4/2024,19:45,8,29.7,69.9 +9/4/2024,19:50,7,30.1,69.5 +9/4/2024,19:50,7,29.9,69.7 +9/4/2024,19:50,8,29.7,70 +9/4/2024,19:50,14,31.8,64.8 +9/4/2024,19:55,7,30,69.9 +9/4/2024,19:55,7,29.8,70 +9/4/2024,19:55,8,29.6,70.1 +9/4/2024,19:55,14,31.6,65.2 +9/4/2024,20:00,7,30,69.7 +9/4/2024,20:00,7,29.8,69.9 +9/4/2024,20:00,8,29.5,70.3 +9/4/2024,20:00,14,31.7,65.1 +9/4/2024,20:05,7,29.9,70.1 +9/4/2024,20:05,7,29.7,70.2 +9/4/2024,20:05,8,29.5,70.2 +9/4/2024,20:05,14,31.6,65.2 +9/4/2024,20:10,7,29.8,70.1 +9/4/2024,20:10,7,29.6,70.4 +9/4/2024,20:10,14,31.6,65.2 +9/4/2024,20:10,8,29.6,70 +9/4/2024,20:15,7,29.8,70.1 +9/4/2024,20:15,7,29.6,70.3 +9/4/2024,20:15,8,29.5,70.3 +9/4/2024,20:15,14,31.5,65.3 +9/4/2024,20:20,7,29.7,70.4 +9/4/2024,20:20,7,29.6,70.5 +9/4/2024,20:20,8,29.5,70.2 +9/4/2024,20:20,14,31.5,65.4 +9/4/2024,20:25,7,29.7,70.4 +9/4/2024,20:25,7,29.5,70.5 +9/4/2024,20:25,8,29.3,70.6 +9/4/2024,20:25,14,31.4,65.7 +9/4/2024,20:30,7,29.6,70.6 +9/4/2024,20:30,7,29.5,70.6 +9/4/2024,20:30,14,31.3,65.8 +9/4/2024,20:30,8,29.3,70.7 +9/4/2024,20:35,7,29.7,70.5 +9/4/2024,20:35,7,29.5,70.7 +9/4/2024,20:35,14,31.3,65.9 +9/4/2024,20:35,8,29.3,70.7 +9/4/2024,20:40,7,29.6,70.8 +9/4/2024,20:40,7,29.5,70.6 +9/4/2024,20:40,14,31.3,66 +9/4/2024,20:40,8,29.3,70.7 +9/4/2024,20:45,7,29.5,71 +9/4/2024,20:45,7,29.5,70.6 +9/4/2024,20:45,14,31.4,65.9 +9/4/2024,20:45,8,29.3,70.9 +9/4/2024,20:50,7,29.5,71.2 +9/4/2024,20:50,7,29.4,70.8 +9/4/2024,20:50,14,31.3,66.1 +9/4/2024,20:50,8,29.2,71.2 +9/4/2024,20:55,7,29.5,71 +9/4/2024,20:55,7,29.4,71 +9/4/2024,20:55,14,31.3,66.2 +9/4/2024,20:55,8,29.2,71 +9/4/2024,21:00,7,29.6,71 +9/4/2024,21:00,7,29.4,70.7 +9/4/2024,21:00,14,31.3,66.2 +9/4/2024,21:00,8,29.2,71 +9/4/2024,21:05,7,29.6,70.8 +9/4/2024,21:05,7,29.5,70.6 +9/4/2024,21:05,14,31.3,66.3 +9/4/2024,21:05,8,29.3,70.9 +9/4/2024,21:10,7,29.6,70.7 +9/4/2024,21:10,7,29.4,70.6 +9/4/2024,21:10,8,29.2,71.3 +9/4/2024,21:10,14,31.2,66.6 +9/4/2024,21:15,7,29.6,70.7 +9/4/2024,21:15,7,29.5,70.6 +9/4/2024,21:15,8,29.2,71.4 +9/4/2024,21:15,14,31.3,66.4 +9/4/2024,21:20,7,29.6,70.7 +9/4/2024,21:20,7,29.5,70.7 +9/4/2024,21:20,8,29.2,71.5 +9/4/2024,21:20,14,31.3,66.6 +9/4/2024,21:25,7,29.7,70.7 +9/4/2024,21:25,7,29.5,70.6 +9/4/2024,21:25,14,31.3,66.9 +9/4/2024,21:25,8,29.2,71.6 +9/4/2024,21:30,7,29.6,71 +9/4/2024,21:30,7,29.4,70.8 +9/4/2024,21:30,14,31.3,67.1 +9/4/2024,21:30,8,29.2,71.7 +9/4/2024,21:35,7,29.6,71 +9/4/2024,21:35,7,29.4,70.9 +9/4/2024,21:35,8,29.2,72 +9/4/2024,21:35,14,31.3,67 +9/4/2024,21:40,7,29.6,71 +9/4/2024,21:40,7,29.3,71 +9/4/2024,21:40,8,29.2,72.1 +9/4/2024,21:40,14,31.3,67 +9/4/2024,21:45,7,29.6,71.2 +9/4/2024,21:45,7,29.4,70.9 +9/4/2024,21:45,14,31.2,67.5 +9/4/2024,21:45,8,29.2,72.1 +9/4/2024,21:50,7,29.5,71.2 +9/4/2024,21:50,7,29.4,71 +9/4/2024,21:50,14,31.2,66.9 +9/4/2024,21:50,8,29.2,72.3 +9/4/2024,21:55,7,29.5,71.2 +9/4/2024,21:55,7,29.3,71.2 +9/4/2024,21:55,8,29.1,72.5 +9/4/2024,21:55,14,31.3,67.2 +9/4/2024,22:00,7,29.5,71.4 +9/4/2024,22:00,7,29.3,71.6 +9/4/2024,22:00,14,31.2,67.1 +9/4/2024,22:00,8,29,72.8 +9/4/2024,22:05,7,29.5,71.8 +9/4/2024,22:05,7,29.2,71.7 +9/4/2024,22:05,14,31.2,67.2 +9/4/2024,22:05,8,29,72.9 +9/4/2024,22:10,7,29.5,71.7 +9/4/2024,22:10,7,29.3,71.5 +9/4/2024,22:10,8,29,72.9 +9/4/2024,22:10,14,31.1,67.7 +9/4/2024,22:15,7,29.5,71.7 +9/4/2024,22:15,7,29.2,71.8 +9/4/2024,22:15,8,28.9,73 +9/4/2024,22:15,14,31.2,67.2 +9/4/2024,22:20,7,29.5,71.8 +9/4/2024,22:20,7,29.1,72 +9/4/2024,22:20,8,29,73 +9/4/2024,22:20,14,31.1,67.6 +9/4/2024,22:25,7,29.4,71.9 +9/4/2024,22:25,7,29.1,72 +9/4/2024,22:25,14,31.1,68 +9/4/2024,22:25,8,28.9,72.9 +9/4/2024,22:30,7,29.4,72 +9/4/2024,22:30,7,29.2,72.2 +9/4/2024,22:30,14,31.1,67.9 +9/4/2024,22:30,8,29,73.2 +9/4/2024,22:35,7,29.4,72.1 +9/4/2024,22:35,7,29.1,72 +9/4/2024,22:35,8,29,73 +9/4/2024,22:35,14,31.1,68.2 +9/4/2024,22:40,7,29.4,72 +9/4/2024,22:40,7,29.2,72 +9/4/2024,22:40,14,31,68.3 +9/4/2024,22:40,8,29,73.1 +9/4/2024,22:45,7,29.5,72.1 +9/4/2024,22:45,7,29.1,72.1 +9/4/2024,22:45,14,31.1,68.2 +9/4/2024,22:45,8,29,73.1 +9/4/2024,22:50,7,29.4,72.1 +9/4/2024,22:50,7,29.1,72.2 +9/4/2024,22:50,8,28.9,73.3 +9/4/2024,22:50,14,31,68 +9/4/2024,22:55,7,29.4,72.5 +9/4/2024,22:55,7,29.1,72.4 +9/4/2024,22:55,14,30.9,68.6 +9/4/2024,22:55,8,28.8,73.6 +9/4/2024,23:00,7,29.4,72.5 +9/4/2024,23:00,7,29.1,72.3 +9/4/2024,23:00,8,28.8,73.5 +9/4/2024,23:00,14,31,68.5 +9/4/2024,23:05,7,29.3,72.5 +9/4/2024,23:05,7,29.1,72.5 +9/4/2024,23:05,14,31,68.7 +9/4/2024,23:05,8,28.7,73.8 +9/4/2024,23:10,7,29.3,72.7 +9/4/2024,23:10,7,29,72.8 +9/4/2024,23:10,14,31,68.5 +9/4/2024,23:10,8,28.7,73.9 +9/4/2024,23:15,7,29.1,72.6 +9/4/2024,23:15,14,30.8,68.8 +9/4/2024,23:15,8,28.8,73.9 +9/4/2024,23:20,7,29.2,72.7 +9/4/2024,23:20,7,29.1,72.7 +9/4/2024,23:20,14,30.9,68.9 +9/4/2024,23:20,8,28.7,73.9 +9/4/2024,23:25,7,29.2,72.8 +9/4/2024,23:25,7,29,72.8 +9/4/2024,23:25,14,30.9,68.5 +9/4/2024,23:25,8,28.7,74 +9/4/2024,23:30,7,29.2,72.9 +9/4/2024,23:30,7,29,72.9 +9/4/2024,23:30,14,30.9,68.9 +9/4/2024,23:30,8,28.7,73.9 +9/4/2024,23:35,7,29.2,72.9 +9/4/2024,23:35,7,29,73 +9/4/2024,23:35,8,28.7,74 +9/4/2024,23:35,14,30.8,68.8 +9/4/2024,23:40,7,28.9,73.2 +9/4/2024,23:40,14,30.9,69 +9/4/2024,23:40,8,28.7,74.2 +9/4/2024,23:45,7,29.2,73.1 +9/4/2024,23:45,7,28.9,73.2 +9/4/2024,23:45,14,30.8,69 +9/4/2024,23:45,8,28.7,74.2 +9/4/2024,23:50,7,29.1,73.2 +9/4/2024,23:50,7,28.9,73.2 +9/4/2024,23:50,14,30.7,69 +9/4/2024,23:50,8,28.7,74.5 +9/4/2024,23:55,7,29,73.3 +9/4/2024,23:55,7,28.8,73.4 +9/4/2024,23:55,14,30.7,68.8 +9/4/2024,23:55,8,28.6,74.6 +9/5/2024,0:00,7,29.1,73.4 +9/5/2024,0:00,7,28.9,73.2 +9/5/2024,0:00,14,30.7,69.1 +9/5/2024,0:00,8,28.6,74.4 +9/5/2024,0:05,7,29,73.4 +9/5/2024,0:05,7,28.7,73.4 +9/5/2024,0:05,14,30.6,69.2 +9/5/2024,0:05,8,28.6,74.3 +9/5/2024,0:10,7,29,73.4 +9/5/2024,0:10,7,28.8,73.4 +9/5/2024,0:10,14,30.6,68.9 +9/5/2024,0:10,8,28.6,74.3 +9/5/2024,0:15,7,29.1,73.4 +9/5/2024,0:15,7,28.8,73.4 +9/5/2024,0:15,14,30.6,69.1 +9/5/2024,0:15,8,28.6,74.4 +9/5/2024,0:20,7,29.1,73.3 +9/5/2024,0:20,7,28.7,73.4 +9/5/2024,0:20,14,30.7,69 +9/5/2024,0:20,8,28.6,74.4 +9/5/2024,0:25,7,29,73.5 +9/5/2024,0:25,7,28.8,73.5 +9/5/2024,0:25,14,30.6,69.1 +9/5/2024,0:25,8,28.5,74.6 +9/5/2024,0:30,7,29,73.7 +9/5/2024,0:30,7,28.8,73.5 +9/5/2024,0:30,14,30.6,69.2 +9/5/2024,0:30,8,28.5,74.6 +9/5/2024,0:35,7,29,73.6 +9/5/2024,0:35,7,28.7,73.5 +9/5/2024,0:35,14,30.5,69.4 +9/5/2024,0:35,8,28.5,74.6 +9/5/2024,0:40,7,29,73.7 +9/5/2024,0:40,14,30.6,69.3 +9/5/2024,0:40,8,28.4,74.8 +9/5/2024,0:40,7,28.7,73.5 +9/5/2024,0:45,7,29,73.6 +9/5/2024,0:45,7,28.6,73.7 +9/5/2024,0:45,14,30.6,69.3 +9/5/2024,0:45,8,28.5,74.6 +9/5/2024,0:50,7,28.9,73.8 +9/5/2024,0:50,7,28.7,73.6 +9/5/2024,0:50,14,30.4,69.6 +9/5/2024,0:50,8,28.4,74.9 +9/5/2024,0:55,7,28.9,73.9 +9/5/2024,0:55,7,28.6,73.7 +9/5/2024,0:55,14,30.5,69.4 +9/5/2024,0:55,8,28.4,75 +9/5/2024,1:00,7,28.9,73.9 +9/5/2024,1:00,7,28.7,73.7 +9/5/2024,1:00,14,30.4,69.4 +9/5/2024,1:00,8,28.4,74.7 +9/5/2024,1:05,7,28.9,73.9 +9/5/2024,1:05,7,28.7,73.6 +9/5/2024,1:05,8,28.4,74.8 +9/5/2024,1:05,14,30.5,69.6 +9/5/2024,1:10,7,28.9,73.9 +9/5/2024,1:10,7,28.7,73.8 +9/5/2024,1:10,14,30.5,69.3 +9/5/2024,1:10,8,28.4,74.9 +9/5/2024,1:15,7,28.8,74 +9/5/2024,1:15,7,28.6,73.8 +9/5/2024,1:15,8,28.3,74.9 +9/5/2024,1:15,14,30.5,69.7 +9/5/2024,1:20,7,28.9,74 +9/5/2024,1:20,7,28.6,73.8 +9/5/2024,1:20,14,30.5,69.2 +9/5/2024,1:20,8,28.3,75.2 +9/5/2024,1:25,7,28.8,73.9 +9/5/2024,1:25,7,28.6,74 +9/5/2024,1:25,8,28.3,75.2 +9/5/2024,1:25,14,30.5,69.5 +9/5/2024,1:30,7,28.8,74.1 +9/5/2024,1:30,7,28.6,73.9 +9/5/2024,1:30,8,28.3,75.2 +9/5/2024,1:30,14,30.4,69.6 +9/5/2024,1:35,7,28.7,74.1 +9/5/2024,1:35,7,28.6,74.1 +9/5/2024,1:35,14,30.4,69.5 +9/5/2024,1:35,8,28.2,75.2 +9/5/2024,1:40,7,28.7,74.1 +9/5/2024,1:40,7,28.6,74 +9/5/2024,1:40,14,30.4,69.6 +9/5/2024,1:40,8,28.2,75.2 +9/5/2024,1:45,7,28.7,74.3 +9/5/2024,1:45,7,28.6,73.8 +9/5/2024,1:45,14,30.5,69.4 +9/5/2024,1:45,8,28.2,75.3 +9/5/2024,1:50,7,28.7,74.3 +9/5/2024,1:50,7,28.4,74.2 +9/5/2024,1:50,8,28.2,75.2 +9/5/2024,1:50,14,30.3,69.9 +9/5/2024,1:55,7,28.6,74.5 +9/5/2024,1:55,7,28.3,74.4 +9/5/2024,1:55,8,28.2,75.6 +9/5/2024,1:55,14,30.3,69.8 +9/5/2024,2:00,7,28.6,74.7 +9/5/2024,2:00,7,28.4,74.5 +9/5/2024,2:00,14,30.2,70.1 +9/5/2024,2:00,8,28.2,75.5 +9/5/2024,2:05,7,28.5,74.7 +9/5/2024,2:05,7,28.3,74.6 +9/5/2024,2:05,14,30.2,70.1 +9/5/2024,2:05,8,28.2,75.6 +9/5/2024,2:10,7,28.5,74.8 +9/5/2024,2:10,7,28.3,74.4 +9/5/2024,2:10,14,30.2,69.8 +9/5/2024,2:10,8,28.1,75.7 +9/5/2024,2:15,7,28.5,74.9 +9/5/2024,2:15,7,28.2,74.9 +9/5/2024,2:15,14,30.1,69.9 +9/5/2024,2:15,8,28,75.9 +9/5/2024,2:20,7,28.4,75.1 +9/5/2024,2:20,7,28.2,74.7 +9/5/2024,2:20,14,30.1,70.3 +9/5/2024,2:20,8,27.9,76 +9/5/2024,2:25,7,28.3,75.4 +9/5/2024,2:25,7,28.2,74.9 +9/5/2024,2:25,8,27.9,76.1 +9/5/2024,2:25,14,30,70.4 +9/5/2024,2:30,7,28.3,75.5 +9/5/2024,2:30,7,28.1,75.1 +9/5/2024,2:30,14,30,70.6 +9/5/2024,2:30,8,27.8,76.3 +9/5/2024,2:35,7,28.3,75.5 +9/5/2024,2:35,7,28.1,75.2 +9/5/2024,2:35,8,27.7,76.5 +9/5/2024,2:35,14,30,70.5 +9/5/2024,2:40,7,28.2,75.8 +9/5/2024,2:40,7,28,75.4 +9/5/2024,2:40,14,30,70.6 +9/5/2024,2:40,8,27.7,76.5 +9/5/2024,2:45,7,28.1,75.8 +9/5/2024,2:45,7,28.1,75.4 +9/5/2024,2:45,14,29.9,70.8 +9/5/2024,2:45,8,27.7,76.6 +9/5/2024,2:50,7,28,76 +9/5/2024,2:50,7,28,75.6 +9/5/2024,2:50,14,29.7,71 +9/5/2024,2:50,8,27.7,76.7 +9/5/2024,2:55,7,28,76 +9/5/2024,2:55,7,27.9,75.8 +9/5/2024,2:55,14,29.8,70.5 +9/5/2024,2:55,8,27.7,76.8 +9/5/2024,3:00,7,28,76.3 +9/5/2024,3:00,7,27.9,75.9 +9/5/2024,3:00,14,29.8,70.6 +9/5/2024,3:00,8,27.6,76.7 +9/5/2024,3:05,7,28,76.3 +9/5/2024,3:05,7,27.8,76 +9/5/2024,3:05,8,27.6,76.7 +9/5/2024,3:05,14,29.8,70.4 +9/5/2024,3:10,7,28,76.2 +9/5/2024,3:10,7,27.7,76.2 +9/5/2024,3:10,8,27.6,76.8 +9/5/2024,3:10,14,29.6,70.9 +9/5/2024,3:15,7,27.7,76.2 +9/5/2024,3:15,8,27.6,76.6 +9/5/2024,3:15,14,29.7,70.4 +9/5/2024,3:20,7,27.8,76.4 +9/5/2024,3:20,7,27.6,76.2 +9/5/2024,3:20,14,29.6,70.5 +9/5/2024,3:20,8,27.4,76.8 +9/5/2024,3:25,7,27.8,76.4 +9/5/2024,3:25,7,27.6,76.2 +9/5/2024,3:25,14,29.6,70.6 +9/5/2024,3:25,8,27.4,76.9 +9/5/2024,3:30,7,27.8,76.5 +9/5/2024,3:30,7,27.7,76.1 +9/5/2024,3:30,14,29.6,70.7 +9/5/2024,3:30,8,27.4,77.2 +9/5/2024,3:35,7,27.7,76.6 +9/5/2024,3:35,7,27.6,76.2 +9/5/2024,3:35,8,27.3,77.3 +9/5/2024,3:35,14,29.6,70.7 +9/5/2024,3:40,7,27.7,76.8 +9/5/2024,3:40,7,27.6,76.3 +9/5/2024,3:40,8,27.3,77.4 +9/5/2024,3:40,14,29.5,71 +9/5/2024,3:45,7,27.7,76.7 +9/5/2024,3:45,7,27.6,76.3 +9/5/2024,3:45,8,27.3,77.4 +9/5/2024,3:45,14,29.4,71.1 +9/5/2024,3:50,7,27.6,76.8 +9/5/2024,3:50,7,27.5,76.3 +9/5/2024,3:50,14,29.4,71.1 +9/5/2024,3:50,8,27.2,77.6 +9/5/2024,3:55,7,27.6,76.8 +9/5/2024,3:55,7,27.5,76.2 +9/5/2024,3:55,14,29.3,71.2 +9/5/2024,3:55,8,27.2,77.6 +9/5/2024,4:00,7,27.6,76.9 +9/5/2024,4:00,7,27.6,76.3 +9/5/2024,4:00,14,29.3,71.6 +9/5/2024,4:00,8,27.2,77.5 +9/5/2024,4:05,7,27.5,77 +9/5/2024,4:05,7,27.5,76.4 +9/5/2024,4:05,8,27.1,77.6 +9/5/2024,4:05,14,29.2,72 +9/5/2024,4:10,7,27.5,77.1 +9/5/2024,4:10,7,27.4,76.3 +9/5/2024,4:10,14,29.2,71.9 +9/5/2024,4:10,8,27.1,77.9 +9/5/2024,4:15,7,27.5,77.2 +9/5/2024,4:15,7,27.4,76.3 +9/5/2024,4:15,8,27,78 +9/5/2024,4:15,14,29.1,71.5 +9/5/2024,4:20,7,27.4,77.3 +9/5/2024,4:20,7,27.3,76.5 +9/5/2024,4:20,14,29.1,71.3 +9/5/2024,4:20,8,26.9,78.1 +9/5/2024,4:25,7,27.4,77.3 +9/5/2024,4:25,7,27.2,76.9 +9/5/2024,4:25,14,29,71.3 +9/5/2024,4:25,8,27,77.8 +9/5/2024,4:30,7,27.3,77.3 +9/5/2024,4:30,7,27.1,76.8 +9/5/2024,4:30,14,29,71.1 +9/5/2024,4:30,8,26.9,77.9 +9/5/2024,4:35,7,27.3,77.3 +9/5/2024,4:35,7,27.1,77.1 +9/5/2024,4:35,14,29,71.2 +9/5/2024,4:35,8,26.9,77.8 +9/5/2024,4:40,7,27.2,77.2 +9/5/2024,4:40,7,27.1,77.1 +9/5/2024,4:40,14,29,70.9 +9/5/2024,4:40,8,26.8,77.9 +9/5/2024,4:45,7,27.2,77.2 +9/5/2024,4:45,7,27.1,77.1 +9/5/2024,4:45,8,26.7,77.9 +9/5/2024,4:45,14,28.9,71.1 +9/5/2024,4:50,7,27.1,77.4 +9/5/2024,4:50,7,27,77.2 +9/5/2024,4:50,8,26.7,77.9 +9/5/2024,4:50,14,28.9,71 +9/5/2024,4:55,7,27.1,77.4 +9/5/2024,4:55,7,27,77.2 +9/5/2024,4:55,8,26.7,77.9 +9/5/2024,4:55,14,28.7,71 +9/5/2024,5:00,7,27,77.4 +9/5/2024,5:00,7,27.1,77 +9/5/2024,5:00,14,28.7,70.7 +9/5/2024,5:00,8,26.6,77.9 +9/5/2024,5:05,7,27,77.4 +9/5/2024,5:05,7,26.9,77.3 +9/5/2024,5:05,14,28.7,71.1 +9/5/2024,5:05,8,26.7,77.9 +9/5/2024,5:10,7,27,77.4 +9/5/2024,5:10,7,26.9,77.2 +9/5/2024,5:10,14,28.6,70.7 +9/5/2024,5:10,8,26.5,78.1 +9/5/2024,5:15,7,27,77.3 +9/5/2024,5:15,7,26.7,77.6 +9/5/2024,5:15,8,26.5,78 +9/5/2024,5:15,14,28.6,70.8 +9/5/2024,5:20,7,27,77.4 +9/5/2024,5:20,7,26.7,77.3 +9/5/2024,5:20,14,28.5,70.9 +9/5/2024,5:20,8,26.5,77.8 +9/5/2024,5:25,7,26.9,77.5 +9/5/2024,5:25,7,26.7,77.4 +9/5/2024,5:25,8,26.4,78 +9/5/2024,5:25,14,28.5,70.6 +9/5/2024,5:30,7,26.9,77.5 +9/5/2024,5:30,7,26.6,77.7 +9/5/2024,5:30,14,28.5,70.8 +9/5/2024,5:30,8,26.4,78 +9/5/2024,5:35,7,26.8,77.2 +9/5/2024,5:35,7,26.7,77.5 +9/5/2024,5:35,8,26.3,77.9 +9/5/2024,5:35,14,28.3,70.5 +9/5/2024,5:40,7,26.8,77.4 +9/5/2024,5:40,7,26.6,77.7 +9/5/2024,5:40,8,26.2,78.1 +9/5/2024,5:40,14,28.4,70.3 +9/5/2024,5:45,7,26.8,77.4 +9/5/2024,5:45,7,26.6,77.6 +9/5/2024,5:45,14,28.5,70.4 +9/5/2024,5:45,8,26.4,78.1 +9/5/2024,5:50,7,26.8,77.3 +9/5/2024,5:50,7,26.6,77.5 +9/5/2024,5:50,8,26.4,78 +9/5/2024,5:50,14,28.5,70.1 +9/5/2024,5:55,7,26.9,77.3 +9/5/2024,5:55,7,26.7,77.5 +9/5/2024,5:55,14,28.4,71.2 +9/5/2024,5:55,8,26.4,77.8 +9/5/2024,6:00,7,27,76.9 +9/5/2024,6:00,7,26.7,77.3 +9/5/2024,6:00,14,28.4,70.7 +9/5/2024,6:00,8,26.6,77.5 +9/5/2024,6:05,7,27.1,76.6 +9/5/2024,6:05,7,26.9,76.9 +9/5/2024,6:05,8,26.7,77 +9/5/2024,6:05,14,28.5,70.7 +9/5/2024,6:10,7,27.3,76.2 +9/5/2024,6:10,7,27,76.6 +9/5/2024,6:10,8,26.9,76.6 +9/5/2024,6:10,14,28.7,70.2 +9/5/2024,6:15,7,27.4,75.8 +9/5/2024,6:15,7,27.1,76.1 +9/5/2024,6:15,8,27.1,76 +9/5/2024,6:15,14,29,69.9 +9/5/2024,6:20,7,27.6,75.4 +9/5/2024,6:20,7,27.3,75.7 +9/5/2024,6:20,14,29,70 +9/5/2024,6:20,8,27.2,75.3 +9/5/2024,6:25,7,27.8,74.7 +9/5/2024,6:25,7,27.4,75.2 +9/5/2024,6:25,14,29.2,69.6 +9/5/2024,6:25,8,27.5,74.5 +9/5/2024,6:30,7,28,74.3 +9/5/2024,6:30,7,27.5,74.8 +9/5/2024,6:30,14,29.3,68.9 +9/5/2024,6:30,8,27.7,73.7 +9/5/2024,6:35,7,28.1,73.6 +9/5/2024,6:35,7,27.7,74.4 +9/5/2024,6:35,8,27.9,73.2 +9/5/2024,6:35,14,29.5,68.8 +9/5/2024,6:40,7,28.3,73.1 +9/5/2024,6:40,7,27.9,73.9 +9/5/2024,6:40,14,29.6,68.4 +9/5/2024,6:40,8,28.1,72.7 +9/5/2024,6:45,7,28.5,72.4 +9/5/2024,6:45,7,28.1,73.7 +9/5/2024,6:45,8,28.2,72.4 +9/5/2024,6:45,14,29.7,68.4 +9/5/2024,6:50,7,28.9,71.6 +9/5/2024,6:50,7,28.1,73.1 +9/5/2024,6:50,14,29.9,68.2 +9/5/2024,6:50,8,28.3,72.2 +9/5/2024,6:55,7,29.2,70.7 +9/5/2024,6:55,7,28.3,72.8 +9/5/2024,6:55,8,28.6,71.6 +9/5/2024,6:55,14,30,68 +9/5/2024,7:00,8,29,70.6 +9/5/2024,7:00,14,30.1,67.8 +9/5/2024,7:00,7,29.5,69.6 +9/5/2024,7:00,7,28.5,72.4 +9/5/2024,7:00,14,30.2,67.7 +9/5/2024,7:00,8,29.1,70.3 +9/5/2024,7:05,14,30.2,68.2 +9/5/2024,7:05,7,29.9,68.8 +9/5/2024,7:05,7,28.6,71.8 +9/5/2024,7:05,14,30.1,68.4 +9/5/2024,7:05,8,29.4,69.3 +9/5/2024,7:10,7,29.8,69.3 +9/5/2024,7:10,7,28.8,71.3 +9/5/2024,7:10,14,30.1,68.7 +9/5/2024,7:10,8,29.7,68.9 +9/5/2024,7:15,14,30.1,68.5 +9/5/2024,7:15,7,30.1,68.2 +9/5/2024,7:15,7,29,70.8 +9/5/2024,7:15,14,30.2,68.4 +9/5/2024,7:15,8,29.9,68.1 +9/5/2024,7:20,14,30.2,68.1 +9/5/2024,7:20,7,30,68.9 +9/5/2024,7:20,7,29.2,70.3 +9/5/2024,7:20,14,30.3,67.9 +9/5/2024,7:20,8,30.1,67.7 +9/5/2024,7:25,7,30,68.8 +9/5/2024,7:25,7,29.3,70 +9/5/2024,7:25,8,30.2,67.2 +9/5/2024,7:25,14,30.3,68.2 +9/5/2024,7:30,7,30.2,68.1 +9/5/2024,7:35,7,30.5,67.7 +9/5/2024,7:35,7,29.6,69.6 +9/5/2024,7:35,14,30.4,67.5 +9/5/2024,7:35,8,30.7,66.1 +9/5/2024,7:40,7,30.6,66.8 +9/5/2024,7:40,7,29.8,69.1 +9/5/2024,7:40,14,30.8,66.7 +9/5/2024,7:40,8,31,65.3 +9/5/2024,7:45,7,31.1,65.3 +9/5/2024,7:45,7,29.9,68.9 +9/5/2024,7:45,14,30.8,66.3 +9/5/2024,7:45,8,30.9,65.4 +9/5/2024,7:50,7,31,65.7 +9/5/2024,7:50,7,30,68.7 +9/5/2024,7:50,14,31,66 +9/5/2024,7:50,8,31.1,65.1 +9/5/2024,7:55,7,31.5,64.3 +9/5/2024,7:55,7,30.1,68.2 +9/5/2024,7:55,14,31,65.9 +9/5/2024,7:55,8,31.2,64.8 +9/5/2024,8:00,7,31.5,64.2 +9/5/2024,8:00,7,30.3,67.8 +9/5/2024,8:00,14,31.2,65.5 +9/5/2024,8:00,8,31.5,64.2 +9/5/2024,8:05,7,32.3,62.3 +9/5/2024,8:05,7,30.5,67.5 +9/5/2024,8:05,14,31.4,64.7 +9/5/2024,8:05,8,31.8,63.3 +9/5/2024,8:10,7,32.2,62.5 +9/5/2024,8:10,7,30.6,66.9 +9/5/2024,8:10,14,31.6,64.6 +9/5/2024,8:10,8,31.9,62.9 +9/5/2024,8:15,7,32.8,60.9 +9/5/2024,8:15,7,30.8,66.7 +9/5/2024,8:15,8,32.2,62.4 +9/5/2024,8:15,14,32,63.5 +9/5/2024,8:20,7,33,60.5 +9/5/2024,8:20,7,30.9,66.3 +9/5/2024,8:20,14,32.2,63 +9/5/2024,8:20,8,32.5,61.5 +9/5/2024,8:25,7,33.2,59.8 +9/5/2024,8:25,7,31.2,65.6 +9/5/2024,8:25,14,32.4,62.5 +9/5/2024,8:25,8,32.7,60.9 +9/5/2024,8:30,7,33.5,59.3 +9/5/2024,8:30,7,31.5,64.8 +9/5/2024,8:30,14,32.5,62.3 +9/5/2024,8:30,8,32.9,60.4 diff --git a/model/app.py b/model/app.py new file mode 100644 index 0000000..f2f77b6 --- /dev/null +++ b/model/app.py @@ -0,0 +1,95 @@ +from flask import Flask, request, jsonify +import numpy as np +import tensorflow as tf +from tensorflow.keras.models import load_model +from flask_cors import CORS +import joblib +import logging +import requests +import datetime + +app = Flask(__name__) +CORS(app) + +# Setup logging +logging.basicConfig(level=logging.INFO) + +# Load model dan scaler +try: + model = load_model('lstm_model3.h5') + scaler = joblib.load('scaler.pkl') + logging.info("āœ… Model dan scaler berhasil dimuat.") +except Exception as e: + logging.error(f"āŒ Gagal memuat model atau scaler: {e}") + model = None + scaler = None + +SAMPLE_TRAINED = 30 +LARAVEL_URL = "http://192.168.1.11:8000/api/predict" # Sesuaikan dengan endpoint Laravel dan ip laptop + +@app.route('/predict', methods=['POST']) +def predict(): + try: + data = request.get_json() + if not data or "sensor_data" not in data: + return jsonify({"error": "Data tidak valid"}), 400 + + sensor_data = data["sensor_data"] + if len(sensor_data) != SAMPLE_TRAINED: + return jsonify({"error": f"Jumlah data harus {SAMPLE_TRAINED}"}), 400 + + # for sensor in data['sensor_data']: + # print(sensor) + + # Pastikan semua data numerik + try: + input_data = np.array([[float(d["suhu"]), float(d["kelembaban"])] for d in sensor_data]) + timestamps = [datetime.datetime.strptime(d["datetime"], "%Y-%m-%d %H:%M:%S") for d in sensor_data] + except (ValueError, KeyError) as e: + logging.error(f"āŒ Error dalam konversi data: {e}") + return jsonify({"error": "Format data tidak valid"}), 400 + + if model is None or scaler is None: + return jsonify({"error": "Model atau scaler tidak tersedia"}), 500 + + # Normalisasi data + input_scaled = scaler.transform(input_data) + input_scaled = np.reshape(input_scaled, (1, SAMPLE_TRAINED, 2)) + + # Prediksi + prediction_scaled = model.predict(input_scaled) + prediction = scaler.inverse_transform(prediction_scaled) + + # Ambil waktu prediksi (5 menit setelah data terakhir) + last_datetime = max(timestamps) + prediction_datetime = last_datetime + datetime.timedelta(minutes=5) + + # Format hasil prediksi + hasil_prediksi = { + "predicted_suhu": round(float(prediction[0][0]), 2), + "predicted_kelembaban": round(float(prediction[0][1]), 2), + "prediction_datetime": prediction_datetime.strftime("%Y-%m-%d %H:%M:%S") + } + + logging.info(f"āœ… Hasil prediksi: {hasil_prediksi}") + + # Kirim ke Laravel + try: + response = requests.post(LARAVEL_URL, json=hasil_prediksi, timeout=30) + if response.status_code == 201: + logging.info("āœ… Hasil prediksi berhasil dikirim ke Laravel") + else: + logging.error(f"āŒ Gagal mengirim ke Laravel: {response.text}") + except requests.RequestException as e: + logging.error(f"āŒ Error mengirim ke Laravel: {e}") + return jsonify({"error": "Gagal mengirim ke Laravel"}), 500 + + return jsonify({"message": "Data berhasil dikirim ke Laravel"}), 200 # Hanya mengirim status ke client + + except Exception as e: + logging.error(f"āŒ Terjadi error: {e}") + return jsonify({"error": "Terjadi kesalahan pada server"}), 500 + + +if __name__ == '__main__': + app.run(host="0.0.0.0", port=5000, debug=True) diff --git a/model/lstm_model3.h5 b/model/lstm_model3.h5 new file mode 100644 index 0000000000000000000000000000000000000000..4ad672ea42bef0490b22c0d1b00c69e7e2c705e5 GIT binary patch literal 427792 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

Nmrud!b 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

5G*kWJLbw<4SD{2N^=f*@*ASwFqH4} zzbRO4o<+asj=RK$=#+)44g`TIXF}1E5H*@?(hVx>4vur(l&#l0B2Nmc|X?M8Zy&uCf>$rUS z7gMj94aEtvsAj#u(pxPB_qz&^$kB())5x2+O4V6mF8!(NS!mG!JJ+F9c4-Byh!;(ZL^b1^098dM{budq^ z=)$B=k!Twqg!yYS`Hylw!2`uKJo!qVoVp=Je)>pL)t7&vV)!jcRA>{bBTb~rkD_6B zKYFW9#xmodaLfBT+@HM;uT+Mh;G)M6K0ciN&AZNua((JOHXO5$^MT!z_z+sJ=~K^B zqBJ&F0h2Gy!r~(bU|(b^Oba;zGP@P&wGT*nBK079gk+?#)Sk96v{wh)_wSFQVLO5 zxV>0Sj*JURzz1tLTDm#CgD0W481v*P$uNY-95f04x z#7=3*VyCVwfLPj%>cYXWYgmcw|6t903@m0B2}{$S@H)nTD3d3}i*etCB$TQUCC<_B zV4Jfa6A|ZwYd5yz*jcKi!yuevqRWw4MI0Ns_Ytle6{UT@YuKvXQCwWq&2#XOWwMqD zlc(DiN#58yxITUy=w4V4Z2Dp_YP<#Kw`A~jCBL!_X}WN`pX3GV!mN>r(;3b}t~(n2X^THK6lbA^KeZ zCM$WZoS)yLO~UR`T>1DbOby`b9fy=in8Hnc(H7#Jv9o++T1T zFRtNgTqZ}+Li{K8%7{{*o-@oM(Hl(9Old0Jq(CM%|FIk&X@ECV9YJ={PrOAQz&u%& zF+Cs2PMGKbBTaVD{gi`D?UsU9`&38`mrp#t(2b)5k5Kie6q&YLgBXhOP{80llx_F0 zJUjFQLpR96+vB0|sVg53>Lx>~5MubC3~6z*giS)VI2f{!vEgFBK}T<#`9_wiS$xC3 zT4g%pQxFp&@tHLY<>q753xT)02i(p%L9nMh?fx+r8gy51b#OWI?)rt?;;y}*uocB`@`7a1MliINfg-E5oCnh#$d;N)h4Z*x^o(pMm>!JB z6`rwflci~V&P=%7{DB{JXbZ+xEdgO8NeE%jFh&NQpcgiUn%jFYYckJ(_kw(EdG?FV zKM=+@i|~WayQ#P!&jrPADpJ8rMdE$JiaGXLnUQ&a8rFt%!4sWN809pFY8zz0i_H_s z4&x)}zU~k7*0A82-pmXS?}6agTyDwbpxXkTfZtM%yHoUnEe@N)M#vOEQA!ZH<`#nd z(Tl8gOgUQoN6&J!m~HHPjdG^C7`%B5wY(umq@OOqA}WBDCerL(dqd*2I~r@}dGqEJ zB_JDf8kz3H5SJ}P*1rtIns>n%R-Vp`-{p=qcUNF1R~MMCD@w2A2ot5>d*E5MJ+!;4 zP~9JMXiS?rwEXU5cI!#e{r3du&!ax5euu@4=Q=R8{uswCDdc9DjA3Vm{806$rCrYJu-X z@!YIG=U98q%Ub}g<{gZvus&V5FCG-%OHso5VN~L0-i1|P`4Qjz zK*QLQ^Oo8M$E`Sz%_ooGWUMS{Y3>9j*coT{AtjLFr7xGg3H zk1ypomm9^2;({}vr{au9;@_f9fB@~4JHVQ@>k~UA9mpHYdBwX6(Pi%qSeLg(`0-;8 zq}g5ugUwe!u~LMoj%;Fzf6PUXRyS09DMbb?6u_fUk~!m53hynyLPqdi3{EP6pC_K< z$v+2BuvnDjJ)Z@YdylazmWV*ZhZ@|l{4O)Ki$%qsdGl~(#fYxM^!6o=>EryYbS4mo*L;Mwm|bRbrQ5zn4H<7 zMj9UrGb;=HU2CqI5P7mws2T5XJB8W{2<>?rj>X~JHU7eP>^M@$ z^iFQ)IN}QQiL4jflr;o%dNhbZ#X)QmRGeuff@l(o|!Y722PZAm!ES1e_J=$1AefHQ5_n+?L=E zM^ie{${AwkRKUbtWl&-Flr7nE2#hP_$-|J_sO=UDTc2EDA2kp(7(5Tc(_8rSq9y3p zo18Z+a{;S+_)x7-!}%zkVz;}i!6xP$b5h9;E!KI10g~?w{bc!`auT4_!iuf zO9%T}5wsMs!gN&ua7&C~mnsRBnMgNgS*yGemc`Yp$-q$0-IDFjNi z1|c?j5?5OnpiHw16pI^@7Y^KcP-=?a0XY!cwu{%Wvkk*9_OXogmecof%!c@>%qs-S`tU}h!J`7Q5R**NSMC05WusmCpPOT9Kxtj#y z9uBkiu?SKTznBS&{LqHAB+>N>=;c_+GvC#~c)3VXeo+EEh?oj~#}~pc%R`Wq(~-*< zw6G5`fU9Ntvo*aoxMPV4UYh+1L~HJ1p@{^U%MW9u=Kg_z;9N9)G{PDkHm8|eYcc4O zA3A9zBjXeehC76*>nRDk{$UUPxhH{1g<@nhF$c{|qyQIXg+YDs3@8eeqk41f7=z~}aORl@2FZuR$!f0V<=vUv8*-f~ zs#oXbKH9^C3HCD1hj+vCnQ6GHuLBfsCPR^gAaz)30x^pkSdZgsR4?KgMk>4q>sN<( zs!N>UN8ef$Zsz8+UnH`gEf-;{`W$*8UxFGLaXhc$BCvI>gd7uXD(^T5&AT~9-}f{O zw%-n~90wV1^(feNK!zOZdIqD%WQlpe81nv5FqYg%K{?d{md>n#KOV}|IZ%(t?G~a| zj={KZ`5h?xB}z)BKfxa!oDWA3AJoq|GKpu~n7Q98v0~mW2yz#tg6|Zt&ucxb8KaLS zjg~0%;sAd2pHGFd&qA`T4=@`uac=iHbSuebW!wB<<9um)%k?=fvXLiQasDXKKNE)_ z4tDbO$kXZ9Qur9%-G#BgXL`C6NVSMRi=xJx2xTrGfuM>I(Bs~{*1UX4>ECZWR- z4~$x9%g--l=$Be#O%-Xl!MM;ins5{)2@u+k~s}#q9?2;|l)r*~t6yNDbp8 zn%MJ70&GIZTv~TQoys&RksH_Yc}}^}aBq<__QgojN^Wk$D_?;g|51eV?ZdF?*>5oM zdxKBb+RzO8h4Yt{2K&!F?3DF4F>Qk#q`Zzrfghjo)3(1*e6JqB_7@Mh>&jze8<;e@ z9on0wyJ4}}x$6sd&7PBo{hgbGnobdcD855mG z)G1RY=GK1LSMr6~@2W*ZDh@I>0=eu|!Ov(vuL92%C-Ua8(csSY71}LZ@M&WMYh&2Y zEGwykF=g*@)~?C~WR*nJrTU@>8Tqx9b+Dw)NuW+P}d7!->%U^F9ten9hoy z79g{h{$`SRI;i#j9pmmgi>ogsWlx=~MJ>1K@OJy&v<#T*4?%J%Y*%#+fR#4xaGymJ zPa0#Tu^2i0yaDbu8DrR41$29#fS>*h;-JzWm^Hi+yxm2pU8pu3RlS1GR=cu$2e#sz zK!k%g3poD>Ps{!@+`LonQS`Q4&O4@PifT$-AhtAsuibPT(y1jADew&kBF4g;%y+O@ zRDo7mTY!zP8L1HvAr-IoLaVhSS|o5aKV@A~d0`@H*9Z2H`WCj@)|kdkY~lQk1MpR1 z8;&oShRUv+SSQ)LV4YqA_Nt}$Y%Vt!`DXzf0ZAD7l7}w8Q`x#SLF$;OKt9ZUiGOz% zfJd?vwW}*f=?{NEBEAgY%1?tA=Jw2mL(}m0!az)K>0%xjSHX|v&G=AEmW=F@BN@_M zE}?6Nam&@P?)z8vzT9&RURVbsOJ>s{@1Ia;7Q>``QpVn-tL)i|H#S+SlD`BdhrQt^r6D-~!N5D;&or}dV6|K#tV$BZUXdmc z)0~d^OV06cEW5%^OgCdszWIyJUTU=8OPAX3m!aj+2iYzzwA($Y8y9D(Egj9Fe0zLQZVGP~`t z{eV6RjV%J#u@q);agfMxAY8BY#e<)0*d;30z~E{PX8S78PwMNr`b`zmeJL$?Re4ss?YHDI)!gOK(;uN$$&;)O`ePMoi zis1a}qnOYd#?v@Iz^;u9#~<8$jMC~3m}dF~MlBUd(7X{8KCTF@Pup-(-b6gH_dd>3 zYy+RqKOjqFC&ci**wxv>%=btuh)`2P%>r{Q;=UvKY3mVeOW1}?85%rgFB*Nb1H;TE zIFOctZfA_4BV-JDG%P_{<^G^m`zW(=!yzbptw0NUf5J9*#J{BqbgbKWx@uqu;#+#~ zZMY5z&PUMN90;o~G~(UpiA>VU*U;bk2#4GAm_I_JJZ=AJMDW!kw*0U-O?J?s2{xCR zAEKIQ8kLXLZ*Ri)**};s=2G8B@m?@-p%Mu1xC3jB`9s{X zn`omUNll*w!Y3nce@=Z5a$z1YKIslqVJS!}@08&E0u_34l@92f&t^}a`OGUxX@MAB zad=vL6|anc1mldgEgw#fhTRfXjPK>&81A|pXNcJ0{Z%V5t*0ROaO-azcHe`Sd`7`X zB9sl%U&}FC{dqwvyU^#hG|ijv8^4^A0cT?qe0f@skdZcg!Ruk<$EUDXZrq&4as^_t zuN3Cms#0eBO!V){V-Wl#B?@Ed*PqpRBP|gE`d*;SMFm`(wH%g3mB0cn{xb@H zjs{UB$XrckjiN-U-LX9wC$$uQ-*bW7{xOudF$}Lu4M6E)Wm@2T3l4icV-4PY#=gb~ z?99B2O-7BF)wU1Eu3LoxpFcBR;WfB;??+4x)?gBr&u4ZOckw%{GJy)TfMK%$Db`b> z?M@T%d({K322&4HtOM}oOLekoeKIUt7=mW>5qynVjs2GP(AL(-{;XPv@4ZiBkBa~m zNR=}B*h^Ehf+(mZ1DN*3ANEB3W>;t3#u4{il#84QTh_{uV{1Z~xz1PMwCyx{ z@hpLz8OK5YN-#e8@r9l0@6RUb4zOhp7*vZs3AN6H@L2gdj$iPSX?$Y_t=rCl)r}yy zGp(2(`F#~Q2FTD=$-Q9B#Rl_-b!f(zTj&sn*d_Y~17MU%(2C|&8LE(UOw12Y7+_CcIX}xKehq1PH;03EAl`|R)Z{+o(G9-zU=#t z$)K;f2S<&iY4;dT4-ut7?*@yKgLTo&qMQu)xpXm18?3?o;tA}+`*+!BJ7cP_)eJV6 z3&Y~d0oahJMASvT0sML;?)>o9yiBzkzi9X10fjJl zeXW$gNk#$eJ)hz5D|Hai+06vbt>W?wfazEL;jf7!hArmmp6Bm_w!tyHc)b-Sy}Ql% zybqzAQw6Bhe`n8X*2C#prO$WdBOU3O_B98)*h>1S-IGSvaaz zO<}feaey-Ke7w1o^Nn~Zis>$&q1dPpf`hy<>Pr>;(!GISMN)8nlryfMFG9;lck#mY z)CrD^;&3Vbzc@M%zaGE$k8AI}X-Xs!qSX7oPFD8b5+9N+AzMa~1`Q>pl=hI8r13u2 zDGjT%i-rb@D3p;Ae)sqHAG{xr_kG{zI@jyW6rn` zSXSHx*Rwis**iO&ubd3+3Cl30Jf5qzlH|MCexhx>HaXrc#tylpU{6mRhOUi;UwZ=K zijfe9r(A+NQu6F|AD=-AR$?iMt$3gJr^)t|;;naG;I%mdZ7O=Wg_m`KByYweoyug= z69bkZx(mCElp*Y54g}ou!`&|N{GDY09`|~4zlwV3aD^wdWQnpc6@G8JMv^7%x{12G zI`BRi5H0=;I($r>Y%1n&^cIomb|Oh|Sp6ohzvYE1CbdImOdY=6ZcKh3od%o5Dmb<9 z8g5zb0JmC@hB+5Q1Q+H9V}45|bro*__YgHkg)KDRYykH)`q5Rpo4AEXyy5aCMfS8n z4RZq$cwbv09zIe7R?6zkZB7i9zI({)jGJJ6gbyr9(`M_Y=@2eim$Zka;N+epuo=9F z=1ZL+y6h{=3R1y!^CzO&EDN&xTq(Q`wTGHDjX2tF8ol4X8JExUgV0+!ZYaSb>-jyR~-AO1&6HUh?mP>{I#(idcK6= zfg>-epE>^xb^HUpep~U>Z7-B)n<sT#Vf?922_?vIFU0%j7}5 z){)7Kl1KfOq*6TwV&}ID*UhiP z9M4i5vJc~ozHOkp`mW*FV;|wZb2IcsD`CC`pNrfw2nFd@U^w#~{7zd8JI?K-87hrEz$+(}tVe@CgMjMgo|hj?+h7f%V?u zFt4-?n(pj_j)%WsR^~5mlEy3GP8q_FG72%yl`taT2ZEn^;mhO*>_2`Bf);MT2<;Tk z^3q&7ag@0r?Pw$C6f%GUX-RevrO2bB)mYW$gB`p2_{_%{zF(5>tr)Mv2JgucJJ&7f zRh1*pBP0t3+epRP?BA z6F!ib17@q0vAA{<-Ye*#b=kcjP<;xfhgBhb<~FL$pZzQAk+*}G8N6@p&7TA7}(2Pu#owK zQ!VRZ>hf<8uptc8=ETCA){oqOk)Ckt-cwo-g6qc|MzGdp zYKFNm`rLiGXk!VU+!qJImUkg#=^VIj!Rw#$Ls;8%i-w<)gI!OGpk}NzJYNw4Gp;-m z{3_D}+rz2CTPy%gJ7@Dp5J+i{G#Jh|Ce#ktp)35@0o@y_G~ zu#~=x`6PI_)=i^GFvQ3^T(?Y7KB?gdRxhE3#AHT4?8ShMG@X1hx(NpfOgB zrM&0g0S`HLVe2fu@7M_{izZ;K?_;nYFV7Ce6yZLNVJ`Gt0{BY=;SMW)=1Dz7w~W+f z(@(sDRR5EZxo0V+*J!bjb6a7d-z+$yAjNd0FVT{%ksOu%1Z+Yid^xB}9!wnrR~n|_ zZ3`z{`yh(L~~1Uuv9%l&8-A!ckI7Ty}k_KNvH#4jJACVytuoG!&g|3@@ziVc0- zy9^$j{s0cqd{ z^~teLXRzGRh+fBkz+T@y_%&q_=e%apZP@2ohiJCufw&j&c&zl!9Lwg?Fwv(UCv zDg}Xu~o%^m`Kz9VEaX%VlNa>x!5ThT0*HRUTNx^xv%3gxA9&f_H=gDxn{Tc*Lcg5SA zO2J$|0xaJgf(ydAG=KI*I^6#gPc0v$RsBlrf?g9;-P{jPXNRNv>*bglQh-`xp29$< zF(=t^5mKA)gJYKjnK-f$tZlW}!GV_`m958oI+fYPA{kO(ahKCK)@B()6FG6K(GYWV z5xO>{V9K?*5O(Sp==s>N+jCp!SAi8Qy_`y)mBxYV8*e($<^o&it%Q(@m5}hvn7tQ_ zqW67r!O7qN@5gdPw{CeNbM%McV@wEc>A48Q4;0Au{a*x}f`OO0jN4^AFE=yj9 z?Zq!&+hG6l2rM{j4BW^8*z;10T?^cRf3^nUzR_Fp*T*Zu>1XBGQ?n(QW$l93-rd6F z?gx0^;U8ByAj`?TH)Sci7UIMTahRuO15Mt1)^Z36`NlO^P*N-` zT&%}NPF5x74(CH&Z!OF)Q)WS()%dA;7wE2d3=Rp?QEhf6OfJwtjd3;@v$qQlXlar> zht06nag5-l_!u@;sfc^RXZ6;6PsPc;VHh(n7e8IlLqqXyI9@np+jvo&&-O^LfW!sd z-W@^??py~^cWD;j*&-aUsQ}@BE3qiog8wbw1hl{+91J=8MNsA#o+46u+XjuXNdx~&L+8~-0U*X=K z+(thrk0i}G5~Q;EE+=d&!rhJ{dJ{J(OY3VkoHXJ%MMqYuJ^p z!rrGffmNI~TWuMR9&w^fO(YgWs}nIrV1v7k?8eoLRUqns3kKRJ(-JW`;?r&q+b-vz z2=A&@PZNi${B@%Z=6kZIh4 zCpU$I#>!E|=Cc+XwNRBk*cXaVlk|v*Qv#fsd>sD`@c)0i68RCFj1Rs>;sK@xXDZua z^D1LzJ1djV7$}mfPO*5sFASwZ{o#_$OmwX4Kx(}dCqGFmyl*yN=yD_sH;>RK^71@; z;(*#Xc8z;wRQ%SaPMLCG_ z-=WMYL2#p}68jTA!`~I5Tqu_dD(=Q)bqmig**}^nU9E)0CmdmImm7Y4QvzZ#+qreI zO%QecBIc|x0)y6TxIue2p8YRf5VRu?qKx$LgOn`T+%3VC3*y14ncw4>pT)JD13plF zEjYd_o~{n#wU7F-d(3P1FbNf<>5rfAgGw>M|B-}Z_%4+oKuV%^YXun>Q{YX#Lq@L zSbYbZ%ay=*y%rOEID|KLP5`TteweD#1$P1!$r?u$(m!w&zpfT%2H6H=%|;EjC|QYR zzU@M#U*6pBWNAn*x`~_WufWId+c||d$Bl4oaJwXw}LD&w6p;QHn-@7P2LbVw_E6~ zc@+X)KZgBM{m|H{%Tl~XG5s~u$U6H~+&9+_bh=TEmgXP$F1ZFAzgPz&=U4EWu?O!x zP$9XehQaTo8gY7Ki8uR>Lge@g2-%=bic)jIb^)xupCOr)|o|wy6D3Q1JlcyC<=z^o6J%JBiQy*J5i* z57-5tgrTY5xCp*)(Br{!ILT+(Jtjrq=7kY(EF+M9I<^Xw7c8I~(F?!d=%ZF+{=*dg zT1+_}!R`H&gmcDsqT$ncFf$r~*DZcPQ{O^3@Vt|XCyNo^Np3j*+$*@~$@gAD4cK54 z%v;h9KV{CtxymbGkn#o9H+#X0z1MKs(Jnm3`vM>2htoSVP0798@tlc0pXn%U0nejP z1#xA;`0Q;vbr6U#Tc02<{^uC#KDVAO*U@KBX9a*=SUm?ym2k%WA7*v%S%q`_duT9@ z^@vAsr?>avBwi=;`(7`!d~Pm$Q}zK{6?$RGk1FhbCcwUxnJ5}{7lH>bL8jsfsyWMq zFv%-mk>E{#bw=7snK`4!->Ycu`3I6uR6?$oC{r5G@7hPmk*lV$So@jpYuuUu;j`t~ zHdP(cC3JzyuP@}Nz_ z`706PRwc@~397`kAq{7js>4{&|V} zdP`_ZKocI791GEPpFbuOP3KXW*bxjvudQs z*t5%F(eDsAe$)!ihdjrC0#R7kqQwesgu>;-IH4es_bfPHgZ|I}2;8`kyZN&fvUwlc zf7c7S&yPaj@n#wFdZ`Rq9%l{q`Z=)bmpCJPvS@V4bx_}(F0>K7$ffVS!q1p~xYJ&g zc6DAsM_sG~fYlSJ;CspT0tB`Xl(~(#jRQ{D)rE7I5dQa~hl9eNL)enR|a=Z%IpA9Mbk4C@ff1PRX@(2$gbhEtwlc()N} z-ChnhA@#JD&)6JsiNq6O-q_guj-D6!ihHD|5k>ED!)AFpZ2_Op=TK0E!hiuJoAAX-@;#; z9q70w7dT;e1))xh$wr=q8^5Z!>GG1?ka;T{DTt@~sy_J5A{W=~^o91RvGl6d4eGyB zf;DgCJyo@J82((E>E1MhWa|XjwzV6+xwpW7i9BQFr7ZKBqQlm@KZ4rh5g2MW%v~_Q z3JWLYakbeOpr))5jHbll=X2)#{$UWuPu>HKtM6jdNS-}m{0NK|J_5B?bJ9~RL)ur& zLzxFMaCJj8+J8e>xOoOP^`&w7Z4r25pDPGfg<@`LJsO3I5sx$G#PI~r&XiNfKAC!| z9m4B+A(Tp)Y6^P{Yr(~jqUEx9A*v6x9V)qz8(oJmWs=w}Du~1c8t1Y_STphe^e^3vikpWoLY)t!p$PPQ&>4j#q2?@O_R&bIJh&s1WS ztH)OMU*~hz{es7%PuWJKYmq%3P4tENG;rCgOC&;m;hs--urO~3yA)#azjhI_HKK{@ z$j$^`^N}QHgb}qfe*t={KVhBPV+gLk1up5<1u5hxz2kSbNO%j+Ak2G86;e6 zF#;YPBDnp@Fnpa@245<5$UMCwZpt<@n0fLcekdDD_RZ5^Khmu+s$(jOdmZonyZ3_#VxX{ffM6@?Yiblcqr@Hsw;S_`#FoMe>XtA0GEbUTKV>XaZC zb6s%b1{;iwRAoFWo9G^r;8Fs5g`4GH1>6n{d`VivmCCRZ-Z8KDr8vL0T(Rv zNz~`*$c*-2`{-6`>Qh$O-_r`;gUev3{{@~a|HFITpW+LrI=XCu8c}|d2G45vO!PGi z?myK(cxXt8&?CpWsLl`^zrF)zE_j1`qSG<1Ary?iTo*X|k0hNpbXkV;P3+HZE|kBx z3j<3XaExOWP7%+hj!71<=x+_Jx-{%ucd259|8|%hqsH7U>jl{lK0)l|o$$AW(6`N^%-B8_U)(-L zgRd*X=_R~(L1zmHY$ZvCXA(|0h4}Mo9H!sb$9F{`U~iX){i`c&tDnZ8y1f+n6>uKR z-*|w!_Gvh8Yy>r7Zm`!_f<#a;e6@Ntj`&=Se!m`4c_|fA<24)h|4?VrUoO%z=MO;g^No+;`d9xVDyV?81!xmEN!$QxcfDXdbb-z zFqF3RoW{MpXJO8O8u{1u8w0P8XO;J(U~0QGd%nnkIj<2V$@8PQoH-3x_*{+kx+<}* zd&@99Vl+E&OOJ3w0j52ZB+Ji6qxZH6WckRuP;mV;&VmTMdPtXq?Wp0>Q|6$;^GG~- zMvoYslO!cQD#TNF2sR0xLLYw?#D*P%?zoG%Grj{)gy+zW)*s-ooqm2XuS+ax_QXwt zD`{p(Jr^$QobWlDE4J%(`T-Z;vZWQG^rj6MZt6y}dPANDzegL;= zFR9m!@l5W0FWMf~1Lfp6)ErQ`0w{IFvzB%X;_4AIPyZ#Ee-BpB^zrJ`nF&7rM z7h>y=HB@w438+Z?<6LLtQf-ZYXwRQ9p%dQGsm~j*Y06WOKcmRbsi;!Z0Z~$ST$WwG z{1;vvwj{DVb7;qydT<-oBKqDEcB`&0*>#mbfep8VJzZrtpb&)uGT{do7 zE=meRmf>l>%Pi=JCRy;X6PK!t6}sNF;ToNi@J6>ZTW%-I?(_V-_$*KCaOnq&|HeV} zfHxO^R0Q@_DL_rc3#j9{F}oWRar|Wq&}|z_yyryV(`Zk)aV!=#UOCBCE$_v+RTkvR z_S@iGx(N-B+S1vv=W)HwA5=;xhnvCTLf5MknRm>6cshv#i|LDSjm-k)nvl+&P>RK0 zWv>Mlai%EpJs*R#&%=S@Xnga{3nFiKajsR%u<6q^%!`mB4-Mtn%qwH@-1|vPp68Fb zdq#u%GjFP~p$t;=8t1~gvCXgNo9|RlA0tk*0C)(@WU`6RQ?x=bP?sfSFF2!bKouwppnH;7>^f7*< zytmaj47t`1PWb5Z9Qse+ z8mIKPa_c+{aL1Ps(0WCm9Q}@vQap*YPoIzPUYT;!VwyQ;Uh_Lv{uX|hxI)wJa1>GF zyVHXc>3ru@NLdz$g=`cn-V~1xaWN3GekIp$J%*h8$!u4|enY+0GnmIZg7fm837)Tr zhxW^#aR0znI3unH8@ITCZPozlP1gs{i?s!5Wmj>$pcRKFci~oEYqt%vWYBxBk3NX$?niUyZVAPc|%v~nWj!sD6`cDnO&wND~ zC=udEjeii+xfq%2Von(9$lj`W3l}SXM4wYzoRi|}%{4~!|VL&>GKc*ubW{|b(5)bzhpv{o3T6_r&qsPL>Y#A1`Fpy{PT*a<6o7f_wIUG^Bhb!N{=6)xPW}(^q z9U?MKpsF2)A=!0k{?r}kYz~5#8r9rMVJ{p!XwItIqoB=EpIB(7L6D6cm@l=)evKkZ zGEU;A=vh2_Ka@@;$(-lo7WlbsJUJI-56c|OU`2%zR`UGI(RH0va+Wp=xzd5HPowb` zzX!`wQYUl9=RioyD`76Q(H{rJSb=QM!r|9IByG*NcK%Yb}v z`UX*41l<2Qlgzl6fo7F?u;!dRtE}mOha>Z0pIjau_YZ={>kP==TUA)(`vxs)zJlL@ z>(s7mH`s674tWzFfCg3yR5rw*VXp$&8CMMxvTmWmJ2@ir>^yv58Cxj*_#5U`)Ntxw zY_wNps9O5pi86o?waXbE>%#@$d9uvjMlgM~aA*Ns-w+AMn!Y zVtQe&FDwp92a^-dSh{8yKR)Tlg_=Tch2Aypt%p8a@wgw4{4*dKJX`$4A#JkZj~}$* z4_NRn5D!=f!2**QbQaMg$JXDbZnqv%n~F)Wph20SzcRU-K)^0%6@*LG@^jBuTv>h! z`kI9Jt9=7(=kH=GJo0V(=48;<$H#H2@;zvt=UFT`2$1+)iaE?vgn4F8g$gr9u&n|^ zHhq4IV6G!zvilA$*;bn+_{QOKo*Uw2@E2FKi^JL}y3x zu1L#-TRiD1cjP1E{KAaL2^n2n70QJ7-OFsXf(+1eZ8`q*XoC4C#^Z0(OOVrdUEuk~ z4?~u=;#HovxkQxDCDhJ>o7`pe$-00`_?)jmO_!+6s=4DtZJ@+**G-^VA|Y^LSd!!{GA55Dmf$8o6`Z4^ z#2l_&2XItl^NQ0jarP^LbaOSX+C~(c@12ZipON{7D#g{;gm=6e3TWo@JV$&=alZj&0mlRxohQ# z-Eje)n3yXd-byrArW9{)lfrurZTPon7!qm&VN}F^a0#mcIc+WCCaq4Uw)}$JtT`xI z#?O!8$@nL7E*w~I!H%q~g^HKj+!Bj=XfBf{Wex^xlENBHvd`c-xKl7$KMg%iwZQv< zJJl~~hq$ae7<1tk-Z6II8f*^>^SWe+Qf&}j=JyxGtQW#CUWL!XOfW9)#Vv)GF-)Ms zRFsTJ@5UdT-oY^Rb@!n@rQ<=#;uz>(=I>ye6f!ABjU zz5F7CU9@QPs8L1y|aTg;zQZncg2w zDC^9I`IGj6?}x8ox=5M~Y!PMi zJ3Qk7@xFGN&|a$nobUX_^(rF7WjfD#5*rWyOf^`#_%n<-W6P3T_?>0hOibufW`m24 zWA_RE>>sVn{<~~UKF1${QcIpqY_6FN}h?L@NJZ8zxpmvVClGKB|Z3cz`xB-s>Jh$8OQ+zy^y zlIbmjfv8CDcK{mAbBFn!hU|5v86BD}O{BJb=1#lwemkKwOuntd?uN*7J=x!3wZ{)| zEON#t?GCVi)+VZ%R*TLlFZoxB{(Op;tY+D=F=U#-NH%G8>ViF9GxrEDS&!MR`E2)YI z&uqGH$~J2WU9sL3etZrBIfH(bJQ67Q8XXF*2FbY5cc_pTj#2DW zHH=<5h-v({(V}fS?Qkf@8{7AS=p84)0_!yH@FH&%9v!>7hr-?8ff}R3JeARP`|j2w@4{c_WVvltr^#^E=#5S7t%o0);{e{oYn3Ah^KEQ0Z0+h^*MMwS_OXz3-n@^MB@@6dz zCarj3vJ~^QYyd?*FO@Jk8=~F1;PTBf$UB(=??gYrt(q~+I93kgep_;TI!CaAYuzaR zNep`*zkrVW%i-NeS@LaD6g}UkK%5R6k=fU@VdddjFn1x(X5l&4`M>!&;|t^VFB?lv zri-v+u49?=f?_Ni$1^(Q?{k&=?!g3`99aA$mCY|(OiLJCjHd7ZuuUN|O8)@+{)XRb-ZnAR0A zCCwLiO4ZP(?e^HhKiA>863o6i4}A+p!q)CIs<7@HciMFlzB33ER7PZjMbl&cE+ay6 z%qiqd`2*rOL0AzH%^iNgXRL33029yoD7h;H!tVsrfV5S#u0oT%E?mMrKUl&o6jvnV zvN(tGy` zPDKtJhbz-W$%;S?qWRtqPHQ-692^TR8V0e~ePmkRYCLapN zunm*h%r}u>JL(x;m}vu}_-{_>q(X=zLhzXq4s-up#E-jlIJtk8tOZihRw)Y#<{!Xu ze5Xah?t?JK`wkcU?*yF^I)aRFY5|@m$m!ot=d2WTaSp#PlUv@6TRvaq_iWif>Ym}y z^_RHr<919CzXRWV-q6{OJcqUP9LU&6lk}l#%-k`GgveFW122T2;L(D!l2*Vzp6~W~ z(le+$y&v-=eQZ;iBCOqW1XRA>gb!E8aDM50pU&qDdgxdgke`Qf%bsh3gzYvgR;>zu z%&x)#pLY0ba|hH99iubjW6}Lu7)Jk!rY;*>kQ8u?d1#SB1Ad?PoWRA}Y-rgP#r-r( zqK8(?(REdN%x-fHR?Zra(xYBLmAn@&cRB=AT#wCYc?Z3BH-O@l+`_mwR{*45a!x6q zxUJ{-`C_U(`7d$`Sapww-Fd!L^kW+;a9z0R^eAEP*;t;U6BW{kM%6N6p{Vfq{s zxY*qSQb{wQ=9Cl>6*r|DPuJkHQOe9|Y8$sWOAHT6J;TTiBHS!*(ZWz8dzg4if_ zqfjH^Bx($sFgSFDyYnvyVlUl8g-Jnz@83q@j>>x66xD&(h1yK9xEzw6wNvjYMUY|t zp3f0i!lXiRc5b6KUS4fZsCpE45tkvmRe@)MQiMrEBDkbZhuK{;WtO>y%sfq$Jbu(v z5V2z)4BXD=Bzu4H8sS5%98reWU+)QJCF*FI(hqRBQG&0B#M!=O6UoP*e)OAULi6rF z5mxA1VYqn-COW3m30rgE?C&(V5}`o?FYV^E3)Nw(MLD0Vw_xvA$8fRsDr9f!3-}wI z11rtUVPMHqP%sJLg4{IlV)94aYSoCpB7L|{KGP?C!k8twHsM6M(OgQj8TV)epL@5_ zAg8uo7k>Y3iK%ldVPuUD@71t^b-|*rLPeaq-W$O#K6pXr)hy$CoN@~OHmBi+I(L{S zFU<~~5k-wCNf?n64V|@0%uiN<x5IV)|I{)*if^J>l530}zy+ z%k8dc$DKW!c}>Y2{_!1I)&+drNJnB~EvX&$iuRtvU^j1-(&IF+^6IME04 zm8kf>0PXxmh-k1Cp3+t1dBw|c;<*@z@ls_`{4VmpfLbW+b_Z1>eVBPri8&v22WN8+ zZYAGU;uGhACyR|(yxB`!VL`Dlr~nNLMA-3IefT)b2yHz^5ueTiu3pOtX68;I$=kXh z=b$>=lL^2l^$`#t=ZCx2>(J_5t0CmaXZYh*0Q85l=E_B_%cdG1@z~#zc&~lvw zTM{QkYwh#Y<>5SHEzZBUBW}T~X&N+p@-;mBOb%^E8*vg-x8vbB4b0gP1j|ZZ(E3#Z z*yD5>9i&TO)Ltca&_Il>JC+Nllcs>L<5To#E5@HsZ*jg`KT+4wNnFzMOE6_3!p0>U zY)xA<7><`=LbW2)>0N+RpGuSE8z!>4l4(Ro#vg*)ZHT{=3H*+HL1%uSiVa))uwv^w zobK8PK6f8Oo}wo0$>O;MX34nTJ^)6vC2-A~MTlRDGOHEp5+f^rK2s@4dR$+^k<*QW zfsoC(MLb6U#e)zYuOj??G_i1_@g@{CoJh1IM)2&j*__pKK1cWMJ}3rF;*LJp4du^o z3ueCOdko}-xYgk{PI8LzQ0t{c>uhu;8n-Iu^GJ|QTpn+Tt!FM-#nH-e371w6xd z5_OkN5!M&4gZR^CFr`+U&7SH3_M@b@2j7!0w|oZ|)!>C&d_@JyAL>Al&xPsQXQENo z3_RUhPp9iYhua&Hkc@eQhL)+II*HF_@qCl7+vR`QeWMIGkGo2^gtYlu8l{PV?1~0eh^hKuSJI^;_Q@C zIBxoRQ}8Iekn{Te1jkh?5?lA@uq|^p9^0aeIv(?czmDI5WieVT+~+$N6Uwt)2E!rF zKN-W$3c0KPZ%}<)4af@~;2SY7v=Na8v+HXGS*}HRb9FCFs8%6g>@z@1WGm-x>&b0- z6hv$4#zOt0JZyYB9p>?Vz=pfZL@6U5^8)|k`Fmpkc>U$~>jwOq?*wVtUs1=H?~>{E z!94yvpS<1(<`iE->8bHTkJM23{jLZs?My+w!W~+Tcfj-W&Dgi=3nz6-mVA&I!_LJH zqTHL==vo!Y&ABMW&h8jX<}@plC|RDFtHJxcS9?R^0&AG~Vu*Xm^X=1yW}~!^DzRLj zh=D_5q;h9D{NY<9`^F7%vkvXStrx`v-y$AiWPvivc0U2znyg{2vMf2%8pFu+HD?C~yN~~%_@lD`8v|q{ByUZ0Q3yV9zO!g+9=P$xh6&p!)m?9A~ z6=5efkH#7?KRo(`!~W|{!Y{K6;B~S*5%p@r*Zz-y6%0_j40X~XIaZKu{ShO>g7I!% z798G_gDnlGxy%hk{LZP5v!13$ma2Zkz1myh^ZbpNXz>arM)}~OgW5df+6SAeg9ObN zoN#PqA}aL$gfk0dSdZp$en!_OPMj4eNyrg%RcXOJp4n@8z5;hvyo2a1X)r0o5TY|% zfIFT9W3>|CF8|+dU*tkhTT8)0&uScQ(IkB08A`@|;_@B%oq}yQPWZkGb~}86@r4rP z*;U>Te^QERNDaW{g(KJj|2EJ!Y=@530xs@$4hTxlz?;AG(EY!v|L=ntOgMnso_^*A zV!8!-TbpQDodlD$X2OiM`lu9L#I5ABk>%&Ma?_H<+2;Lxhnuz$2{-4T-RG%zUayv} zbl@{EoexmTsRgg++=nU6&U}6`4QIM~!i$KX^uruQ^1)n=Dp~jA0qIK!L2BfJ$rzGw z<`?}GEDKI;;w&o82ZU;#^gZ_yKBsNRHK#hLq|l4L%X$UseFvc1z#2s#g~BS!$JAjx z5vrXL;MwF+JYRVcdVBxE{^5@}=T8G@UeFO7bat?H3IC59aPz~HvAoCkZ9MD_s^ONF zyoSNE^>~`!*V~Ly7pfev$E7-U(9CztHjW(xX;E)1-sg%xd%mHuKhGIBSOw2TmD#<@ z&tUMb0u)mkA(`*Ko#b>Dvi1i<^i>-W9UTd=kzIwOrpe&<4k@twX^NgT;hbD?1DsKJ z!n)j*cxpr#h~JlC@3JL{)zL~mqkM|%UoOvDI`UESyf}N9ZNfSHXD4)fJBYb&d4303 zMk~a>bMH42ON1madMl-Bf?SOmKZo}f{y;S@^6Vz(r^V1t|7dYD|Q1{GS z)cTYRUbpYSlUM0zkTVRAW#q_#-ZwN*wU5pke1LuAG*FQwkjoV#%NJdSf6zk^S_P7r&yYfIuSCNd=O`w5G zbMUsnMGzcV1y+LZ@F8E0EeREaz&3ZD!RW@_JpBn@)!m?%LlZ#JtrpW8b>LK02-?h@ z4^|`9IjuJt;OuBCuz7VDi>hvbyN&|sIiI$FPd@t0Ql8f3>S&($H z0X*ywr;0tpYNayTr(n)`8(DzX`xkuQWEkYU^1;KxRPNgnTRgIrK&eG2JiK-R<%dsl z-W8Si_Xui7=-!aP7=sYqwh%}d8oZ$ydARYfK>pv5l4C=spW zyq@nRM#_zO4%4$7p-25_GNkes>YBT;WVsP`DaLc7^iA14pHfJOV9>u@f*Bp1jyy}4 z`n+nu1Mj5Re~Clz&iXv8+|q%iC;oAw7qXD`ou#Eo`fRw-lpDE*4%=U{cQ*z>p;5U0d?DRoyM2n;$HnW#24FM-~>?)+&*qZDUa>&yY3~F zysQLogYBUF?Jk5=e6E4*`U9@Ncx1cuBLazx*Pwb*AWP#FVJ#&0{6gAa5|w2gVroY6OR^1US>=;d0xT% zk|=IK^B-P6w-L)+Z(?@nE__ST>@qmvq$Hfb?@GSZ?WlQ&Y? z^h`7sQ74O1HQ}9IFVA3CWY4X`;mF!@Fu0;aQZ`!C#Pwp#P5eIEG+x7%hBxUSvuKc? zu>|iA?1Kq$r*M4Rc5c^nNA`d0y?HoQ@Bi;_E>q?qQz*%h6bk!(ElM(!5~WFVDk=?{ zl!_8EG?)u1A(5ehV&AWY5>iqLWhxO0C21a<^&URgb-w3!oqvA6-*wI(=PcJ{?PV`} zuYK=z-)r5k*X#Lsp66*YuXn9Nq2@x~vBW^!wqA)X3Km57xGEfa+zZoZ24dK~JZf>% z9G%NA;hdur(B!TlUVhdOEw(yf`s4)$`p7bS6&9f3>MZQ<=D0mC@&V>Hz|-e1&2PWv1+r;aJkteCT8#h?d_e+ zXw9r9a-OfL8E*i&q9-Wn7em>4KlZC`Crs&d1^Xh8l0BCvFu&ep;Gw;x`1WQf&X!q? z4u*nkq=hK2S5$x<(^-nguAU~zMa7W2+>R}7-_2=*8$fbd5x8>mhI&m;^lVPy|LoFW zOC0904J+kPI^r2TS4}75xVp2Q(=I^tJYn`zwK>}Jl+h^978`vWFjVV0$4Lz#<6_6N z>+~N{E9oKJB*?J|jtt<_3FDb(o-eQ|O^1cqzF>1)hUrriXN)&=f`myQc8gZRzPiy+ zc5yNW@6ctg^3H)}S|(=xx(@~iVnF0)2Hm*E0QSdb!(A0K@D1pOS9iTJoU6Z3GnOD9 zdJ9l%QV~ofU%)c;3igY1!G?rn{FK(j&pp|SPbQh*3;A4>7SKcQZ5uK4$qFtH$@yFv zX|f{z74Wk(2j1AR&{!jhnIqRwzc!8hm{d)|`&}^fh6)Pk{J`YId5|+G&$tW7utD#| z*_cbpw5~&p9h)K!8*i=W@%m!m+2%DcuE(75UUCd}W!C|3;xku3nI!Vl z3G&85f_WZx2M6r6LCEz6e%x{og6<7N`eJqF$k*}A^EF=d`r8vIxq`*9ODECSg66F6 z#J3r!T4IW)WjGAF74Iu0bj{%(c~$e*JxPEoIJSCW09j%Oin6>yiXao;%`YvKG%HHqRU~3*; z;Jmd%VB*qN+Ly5uHK+{J@wKjuK$7sNiT^sH@5E|6k`WJ+_oB* zQi~P_O(e)tgZ1-R1*+XU=xR}UtTcWG@9h#%t?npp|CWqO*oY%S93S>+DoLBB1Y;{@ zS$`jO+;87RJ`DcE8;Bz@nyPJ=E4>69}t(58yVdfVjM!f6^Y_yMr zi*tOTRcr;XYy2aG2y14eUnbl%oxt2|mw<<7F2N@8Uuf5*%39B}hSbo>#C&BGwcIL+ z&l5Ued*)bX)%{*Hoga;(t~TSurCg5NL7Q1ynFfoAjQ9=qzQo2rf-L=X z7yex1IJRqY@YG&GnmOK>?R%Zfx7%?KEoR&Ea&JAw<{VczT=xtbK5-r$R?eiTt`7U= zKBGst@BX{9GIM<19*mJicy{CuEPe9|e;sKCr}78rHCl;jsOIVzIsWNv=?Zj@lEa8I zfZDuL-oU~_yt%!^T2aCQ%Dxq0(%lJ6rDg=QJ(p&y^oBrGLyx!S9OnZZYsPxdKaMM- zxtv1VMo3aMqH|n6K(E|&JUpyU*ur%XQ+)^u6MtdzWFxvpPLZ8ja)EBUeiNm*xWv+# zYV3ZFpPC_T!0bzSh{ZNyOyiU&80PahcK&`myjhHKQ%o*iTUG~P8i#|@FLC3l9Gveg z%GgI-fU?ml=qK?EDrEH8YEyk!#$5w0rD_rH$(-Nq92MqUu`c`Fv4WbpNP}MEFn{@X z4K}eQ2bpd~MseeQSSETOUzy3E`}ZKL1o6v2tFGhgG9f1E7w6Tn!IkvRsOGrFfsl5J z%LVR|XD^NJM3Y3R#<2T2XINLH4b?l<4dSnZ(doRnh9pcy#M?L8pQ&BjjS5MBHg=6EZ zWL{a|Zg?>@jJy~n&7AodfQvL<5Z`qydU!nMuW>4)@gu5m;F&w#=st@&yZ9w{l~~+a zIFb7Kam-+4mYtD=cb5KC7u z-stQc3nv`caNogl=z1}OSyd~@%oRySs~fIlk>f+mPB=rJKg&SL1RiOb-~gMiq>?Nz zG1ic)mv#2<1byyWW8jhp4S}hUYxogdpBM9&zTby(r*FdI#G7PH5tk!zU4vlG(xN~W zj_KSB&h;9s%B|;EHgFO)dkxW8W-h33xU^uCPk(ig~*9trmAG6ut&xH*fIJ1#0d4gx94%vPI|7{0I!yOIQ1 zy@R4eX^AzXu|AmeIPQn7w?rAOw@Ku6l_oQskWbP-bMf%i$MBw554`^_$eb6oC(R#r zgDiKwADAQ$tJM2AzspdFU&j+3&MvQkD=RC zjCoskohq!)#ruP`I536Nk$ObKqQ=RLOTGZB{!*T`93{#gFAV^ffE#EqV+&4sD#>^? zsDPbCA4m^OA#)8naaUk61m`HQ@7;EQj8-6AwJt}Sqsr_-_tj9Pd!4o!pC-qX?_tn; zCpc5Z#faue6C2ABSmNXff{#W~es4X#_0~d*>5F0a^J0i`&4dPnN3>~z5a<7yfLqF2 zz&?El4?kTCU8AC?f15btaY})06;34Sk6vPcK>-A=NW&KYHcU28pz{1^{IErcjV%ts zqLE${*~akhXL_MuoDQQMbr4dLs-ZGL8a{GZILoNwjBA=rH3BqXWTL0Iy7 zdcs_lNa^(lG*~Qjg|cA(`4Cj&d(%_FU&k&(tyol<3V@(5V*K)#fvkni{sKOG1O-a zTYAnAO}A*E&-Rbd^O)0|o1K7ts>g7#^%Wv^A`5$~<(aQ0fnXk0Kn2&e(a)?JMrvxZ z@}D;0TIWgZ-kG6rjceYLP_KgFvmeuNaf$u&mLF^-hc6Jiz*jbiL|&2av#ZYUG!g)h1N z;G>d*a~E$Rdk?>+EjcK2X$kz%?4-vvG9j_Al$0+MV?OAN zW)B!EF@1iaWZLv)aQ@LTu1-E36K)B?QO6r7Yo-Jm#$1hAM;6(us=?LQ=rfBz8GgHW zV)*$IsEU?gu4bg6JEsW>Qq-e*9ZxxLs?iKxJ`uNGF2-B)FTwpqU+}X?I{m(vhE#+i3?D0ei>!! z`Na6#WSsg=hBe#Y2bB%Y)P1)umyB zHo>Nii}+gJUrC6ADHrq3!oWKs7_RpfmmWAuoyVs@6W4dzJugB20t5O=_zTP|ng- zI|=I@-66nIjvCusB_;RGad+Mb9((-}Ma9x+%oBM=RQ)Ih=qp2*S^>9>LFq0#te@9T)!SX5&29jGb8(=KuQ?=*(=^q|OR}*GjuN4lzoF@IJscgQkH#ai z?8i0{R%Co4zDw)|j_$_@a%|Sw7m9FuMIBip@Df&-NwL4)a+>t_0_=>4CffK;mfbtM zmqyI017F2NGI!`hiIblz7IAFH<0f;h6L!BxbVaz_|A9Ps z4GWsp=shPx_5#P(=v^g6PI34B)9nO6JxU)`1eDqHdz~<1ZzOc&3?j2&J@#+EOE=VC z2GgP~U-VN*K>YIC~xZSDeKo za0!M?+Hg`w9~SF=AmW$ni`zTYQSewcr$Y$9gou;qHYm%cTpEocIlkC%eJZXyqs|O( znT>sFqHLV{4r(A@tXRy+KHNHLB&)U7hmn$0wIJCzg>UBuIGB}Md>LZR-Z)nU9iQZBZ*W-cN*&~DS)?J6yVa@0$M+q zg10_rQq3=xxPJC%#(Y4VX_DZWP~zE0EoS2^D>>$M@k2=47=v@dZouQrO}O4g4AKtE zgVU3fFloICsebtZnKB=|r;~$~AFD8axdOAixsAMeHUo4-Cct-Yt`+s%5Z^ROVvMyW zsoh?V5rJJeeM19yapTSlPRrf1$rh%4Z6qNJD_~vB3(P1@hB?dk;+=^T*x=&=tl$1( zFfG)DsyRvMI6nm9Wy|1DNI0C@q{wzv+=OqjReZPS5-=^}4;7aj$IeUYzb#s_tMEEXx74&9|}VTo&AwF=5vR{=xi$2qLv|JhT5jMcZJm?t8|I z8C&ceVci8EWMx#Cg~gA{;QEs!m@CeCrC9Kac^NC< z<^pwQy2A;$pdSOK`HqTX-k|MREl0i}le@atl1mNye!q=~x_~3f``-pv3Cx?yT^0X zpNdA2KCt9&6RCNhfx8WN;tu7zm|qzKp-&!@_?-&u_O>HXUmHt=<7L?D)3V^PvH=(V z;6s+fd0cd(0jnN=M)4XGsFzb_qE#1w>(ped*X`gdqoX z3wBZWntE!u?h~g~bLQW(x2!b6V*+4=Jh@XEX?23q|B-Nm!X`Vo1iy}1}S2OS5i z3vWojgd{69rvxO7yx^hqClLG0aXTxDiLb^qVjB37XME@vk@CF)8Ya(>@9G88J)y+= zA|-b@Mt5HW$E4O1V~>U}L-`iY@5_7^(W)JWHP_2z0|0*YY*hqoWZEW zqgc}tKN>!c;0vv{WTXFL{7QfBP# zM4+4*h4DA#sF;5@NLs(MENGsJ8{GGkDKagX6mkL8-U_qjjh&nxB^tGNjlct=m6$!F z3zobq!Khh1JfG9b{H3`LBr1#>C-N?n`z13lw3!cme>!lXgcA9xgSV5mV;-TE9lJYu~zH7jJbQK^P?^H@*G^n zSo=r=x_9|lR$OEq&Y2j3@}_3w*OG1M@O(7Wzb}XGP_)N&%M{tSDv-3;!! zFUyFp6J-N*%Seli0Hf0C3O?^f(E5oOJNx-(DE5+MnjVZ|{ToDKgU2n9{(X)A06)Rj zf?lxv5Y0Dfc!>wDa~{5#r%*9io4r!H4toxU!`;~H7!^CbmgTPlyjhC!-PdZta%)p$kSl_GMrJ%$p=fl zI^fW725yMs#%j34(xQ<336n&6@Y;%J{AfEts{dAveNaA{J@rkaWVZZi+*Pi`R?jyl zJaIkxnA7G~&b-X~dRT-Vv-1hMtVxCqm!e?(gcexPJqOMuZsL8knFtSRZlT!+XL!bG z6ORv$V%Fwwh27yQ%=X?~T*oLFEkOa{zrVkKT0uZSmizf@ z*-`h;(Qp3u_!ha@+yC`&K6!o`>x&Q<@eVU za@scB$o1D^D_|}uU_SD1Fa6Ir@b^>y-LL;yKXKeH^!HxX|GcfhKmA1Tf7(y7{QlYh zKkf71y~Y21_nNKD((-1_Za!J}Kdt`i%!@Rc+u=~?a*mn6W zM5>Iyo%DMcV6MbA9=QZ-7ZkwNdAgwesvhrmX2P-hT2i-Hit|%bp^rPv(Ovc`+W2!^ zubqe=&QFHdQWaDm&7n^&0>+hor4Fkaph&BoC-Rt*&9;gVx`{^~=$)lS zx%ctgoin^_Ni`hJx5G*Do_HpB8t$^Tz~K5?`fQp7opwh8m*<+H?jC0}isDn-{S+;H z-%`5>dDgw(@7P}c;b5nWoG-%c_<~UP7eI8A+>_TG~AoxtE*YSZyiC%dG{I33nV!$ zav{jnzoeI;3e2;dz+vhG$nv8^Wn%(-Uw#q-v&Uic78a)(xWSVI1zgj4mdg*6fX!i5 zMoI)|mirN$F0dJ-$AqHso}>7)&y)3CR|ff#-|%it8ov2CioG)~f{XWb!S#px`7e}s zO#Q-O*3oH%JomamD>)X8z@N71RGR6LHt9F6mYJ;&9GQd=@%8pY{> zQXCJtj{X)JA&1?o@W(cpl5-7`%z0wWb9Lx|E1CS zyJ&v?AgwyMkS{ek1%9q?q4m~6Jil-*f9Y_Be=?(&FW+_&bNP{2v0^K%ykW(=a%m-B z`tD8ov~7Ubvt>NfKPw0kt+l7Xm&u+W%G*tsiwLue-D5FB>?d86uLJQyr*WvL60)RxVT0FC5Ee3}gV$!` z$V6i%Z0bE!JaLk)OgKtiZ0xaOy*m4|_!I>0P64sn&2X#Th0dX}@HkQu1k=(X&#n{( zE?vb=b1DAzoDe)YB^apNU0%`LPn-|M2e@@!1*_6t^24KK*#*L@NYiFlFiQ!=SXP78 z9=uNr&WtCCHc@1kk1^H%wgn5{ABUZLm7%FimBxG>pm)E$r@kHn`0hYeN$Q5BXw$e3 z_PXoAbw-*IKG8!mqlU;h^^3e!vA4n6)&XV8gov@tbM)q$pc*$9{G>P*Tl%KJd5=xl zxy=&a$12m`5(UIgViSEgy`A1lE=T>#!@SmCA`o5?NP~7v#^DPE(A8nV)P8q@6Sh^< zGifxbQ+PmsZE}N}EnI$R?E0kp1e^J+BZX z^onRXF@W2HExe7_Ptnz*0eaAj^u3UW>0ckg(~%yi6x|8)`h>7NUzR!W@(6g!h2R{H z-xM@;HNCjQ8iIxnV?_Bm2r;Uq8GfAa%FWZfjcf&K@kX&d6MU#nOF!{Hev1s`GDN$d z(^#mh!Lr~YxG_h9R2Hbf>}fu5GV(pF9b5#u>2?@oDax=}qO79n2`F6t5F8FJg~J&~ z@WjAeaAw@0`}7)W@h%pmSB8Q_+yJ!I#?T|JgC&*kqT$AUXN*5-g9olY#ZsHgkKuFDXScXVF%^eei_c=yJG?uE2-rllr03Kbx)xC z3=5q(&aCUKrqmf zRGVCah5fBqbZ#g7RCYt38eJwzYb};YXrZXzCYp6>F@NohKDz9UI~1L*pb1%LIUdw0 zzLL#6w&dhG>+>R#Bz;OaO)=4D%?o1qBaNIF`Sd7o2#$jVi{^sh&pULN^h{Ram=xr1 zEJE{{V|hwrPf!h+I;+r&-LS`U9QMCW11NCjbb+$0QT%AuMneZP=cMC4dxAazoPR}w z7s+y30=0Wi!i5McNSw^T{k2|}3=@L;-n3wF5})oaIR&)`IR5VMVlr2AKAg-6gN)b^ zG@Y=W$hpZgN+ z`Ildjgr!!@)gyK&FufJTo(REKJC1!Ff5Cd`E#z@e}X0?-~>J46B(on|D0^4|%dloQ;wyE4gI5 zo$l5z!Sh~U@aww?Ov(_uIA zA2N;Os0~*ya!dRom3>hH3jK3IU-<*|(RqnU8->ZEl*Nq63{m!*$r+SY`wDxbJn*pY z8=768&E-mt<2f4{)T$cA+SZ&RyEqPZXvK7%sE8Rn{h$Ns7R5MlM3VDDJxfN-;n;V2 zK_q3r71Y<1!k#DY5a!y9^RmPkg|k0N-qs9yL4G+zeh|RYAR*>^bp?LSYa!$OOt9jM z1Y35Qi>sf~V*G=|L2AlnQd1zn)Z7|Ni*7pO;8PPuIe@#KEwkg5yuO3E$4n8tX~-q{;OKaoDJi_v?>u(?AGAn zHDfR=b~nZ+-lpG{s-ao_2l`m&1Ztn^rBfS&;h{dzl@bA{By<`~=l+1ev>i0|g)=Ep zx`=N=Md8;CaV-8S4GU+LQioj@AjsA4N1Bc!R;gpy(aR{dFEB-|Kw0AWED*~t*1(Q! zd{F%pgNr+~z((Q&y_wyNk7sGXNlt%Ly6hu%Jv;)U?|jIqk!pIKt38YTI84;)bnu*V zC^fXW$6r*`h9aldgY?#FTK7s_jL237OjD0 zPCA62>`tUjqj^GJJybBjjNOoZ166oY;#VhQfP zbQwxihDpJc1g!B&gwg9`armGRcpjRHSCwXhRM{XcA6bT%nJctJPKAwsBgj|JvqZhz z1~6T00Uy+B4`Bfkeo@@Q?`gN6-+7 zD)=pyU_Ej$4@gxVso8%RM)(_Om)kCQBCdej4ZqOBudc*&o^bQJBE?Y_UT~wJ_kC4PGF=%4Fv2n;f^VdoUeb0UltW`_c?c| z#Zeh1R9c9gF{_$mvTL&KoTg#^k4Ip@@vW;rhJwn~U&P|e0jLu7AOVl2gRgKMWEBa~ zR4Wr)e_aGxE;rJ_y)k%1R*)GLn2HCk4Wjt2d^n<31Si=F`m40qisJbNE`omFndQVR%S6-4?kMzFNMZ8u@+rCg&!L5|mnZ0X_E@@eVt> zp~skVx;Ay$ZPrO2Dm@*jwLuY`?EH{+IVrF~_6uQS>m4*aC&~u88i2)vNKn{#g?>s! zh+h95?!NS(t6CJ9`m#H;wEiZV^!t*{3PnZhp_WUAWI)#}DTNdK${@cWi7ft6Zn1-4kcJao3jx4!BXF|fq2z2Lk zy>sks!FbjH{WZCQUf?*qVVsY){1P$h5jhL^u{N-|R|CrraCNqSPJ_2*4qkPBOhiPh zAi7)$w=SJWD~r2`+uj54sH+Y1&rISkTCxabHuORKM^1M?`3-1pdQHCeC7_>Q5PXOl zgZp#FrP1-I6v%%HMV$&Ul5Q1*)33(il6RbrbF4I^e2wG#(wDS$^-0(e zKOXruabS}q59$Xwuk&M8^yO;_EWDsiADvvz|6ss*vX>4MyFn+`d6gcXT9$wlCTGLh z;1ehw@dlft4RF+$7V^X;6{>f=2Aiff+%stmEzOn`}jte2R3gu!wJswZEECQ zn5}#deH)FC9=?FvzT~1{PZ!p|n~9O<*HWq{NcEItQAv0isHwf9)sp8aPwhExgYqW+ zxKH_5lOBd=x5j|6Mh4LytzP7Rem@kc`LHAtk=C}*c>8^o0YH9R{dN$ zeYY%=uD%>L*mvJq7sGj1W1Kc+3+334P!w2?Y(_@blYfvU{@_ zww{-Pd$TIwTy`M*-fYUq2#sO_zGPwHVPS|rOd)*B8h-7)E=-y2Pu(kyLiiKJ+iR0h z=At3O9vf7zzD6Fpa(eyAtvrJ~3(iyFH5^&<9-d6xLF4b|g8%hK6g63lS=pscO01o^+_p^N)X&a;oxeXjDy zKYT?hI7f*&iqS;jTbA_#<3d#Du2mfkTj3X&!hI$Pgr-aY)uJ@AB>g+hT>OpS=`IG| zKSTK(APg--9-!9Yc$~{|0FrKpz@J~+c>DL=C9T0Jq%mL|>nI=3fB5P&Ev&o5pKlRE z?<=Ii@9p~Zq_#ZlHOv83rir{<)eDo&#F^bX>R8vvF_uWtFQY4D={H_>_Z8P4rkfYtln0$rp=o~`8A#V_BG zlad#}z{(%KM=s=8(*hjtFc!XFe?u2+dquwg&Y^QNTrk+m6m+f%FtTEvOvtJ@>qq<6 z!s!hwNcoLivNN@t4!X5N{p0sk-Ljv8!7SJ{&lrPJZd0i()5+?ROOUhlKKYn4nS^x; zGG!6Mcp{Zxv*0hZ;BCOc701b0okyfUb3HY*%K@wBFGze$0L<{M0KbG8tgTifF0^_~ zly2GL=9e0*&Ea!oXRQS;(z%9@GUG|NqZo7j$0DoA&Sz-N=dE~W^bV2}Da>q6oCGJ& z`0|TQj?sC~OvzAcG%mHwz%K!VSbcvo`)t!L{_@UJx`WkI8CI3bNT1OyP)ihIQr_%Cf@$RXm~lD|6^MtHlMu*t^Hj6 z_akGdXw!hXPtW6n8{u&K#}VB6DH4Q(KjDpcPS7f9z$U+Kht+5QSjYaZ$Jj%c@Z#&Q zc&$i)DR{MqhJXCU7ZHvir#80nB_HJw5!VJ@&EvQ5dUO)3^m)(el3UR4S18={nTRL( zQXn{83Nn&KIA(VxJndUaoQHz&{OKav%aKg)^`9eKbN4|RS10x2{bfs{xPopskz?OZ zzDAs177=ZZNiR4dkTPReK=K+T6!#dQX|CGL(V$3R-VkOtKIF;d717l2Nn~N4G83+t zg6^@lWJG-p8E^QFCJ`-&TmFO;I+dfJQ7}0DSPZh8M$s<|s^FneJcQb{;gX;z{>l7m zYP#tb{yNmiX$#vRH{>2Ids2cy4`$-Pt2QjC9EW>f`VvFtG_~AfN7u;L)1&jp(2Oxo zL_2s5344$Y)r)~Co28BHkT|HUmgR4exC%+*UPE{7A{5vY4EN;qxms=uI`|-(4mq8( z+HfNP-`(iqXTMzl-I2!BGcginvR+bet3td#y%4z~5n9b@^R9js1gCdv;dX5#9B#P> z(ub4Ld774`v`khFLbFt1 zyvk~hZCr+zze{52gedGceS|U-IM14p6JWs2=^H+CwQ);gO2Vd}p;6t0%rj4fXh~W2 zu~Z(!DObWX_kDaVF8-DLXB;bcEraUMJPzB~KzO&fj4H&LF#;*QSbCXHqIJJP$;|Pv zJima`Y5yVaH|06`e>PmPZ3fqE=XmJ@Ysi4S1{e@;{2nbSxg{sR>uh1hydjgjiV4#yVFpnl!P)}@2eII`LnpRR7= zmA>SBo?W)#94Q^hy)Xl^cWlIppUt#|aYUY`E$m*-aT*gg;9Ko$CC5)x!;O#vkXf|` zbm{naEd_oH}3XehT?{=ONV?>zflQ>#i9{rEhk{yC(@NSUdMdV-P zt_P_gqIv;SE_Tt9)A58^s)4mv;;?+{4_a2v#nq24hnwHd(X8YUA{6=2LpZzor2z-I=3 z2y$bw-!FJ2JxKjT8$is@fK>dp1~Kz~l2TDe?}zk4Ootix%U98DT%0egMS=<1*a3R8 zK7jls5o*}3K*h#y$Lh~5bPF|O%@59kl3E?6Cq4s07sbQzpo8S;4L>ZaFF_^CPTGCN zo1~l%MUNRX&|OQ2HQ!K;^b13?zB%*#E#koWVK!)r)zh}N6x1Bp#hd#^ncXhJkk5;S z$t3@Be6vxH*`a6vXyY?Y&Q*RF6WDw1f0O8i9scon&$-$CH{+*~iFlJkjODgjEj_F{wb0>+?j2xcEI;CUW=jt$G@VC}eY%-}dc zndkPAeRn^?t@=)I(h9=37=QZQ_a{tk6lH|8Pvf7piy&i?G29Q+z`zAjaKL{#)U4Km zV9Np`=ivnn$#dAJ;cuvX=uK>N@24}2dAP_<9qrCM zG+)fRV=Iu2R? zMZkBzjBz)z(X~YfSABEF?q+pt+ttcbvd_WR>ASE#{sP?ongrod-;gI8NG3ka!BmB< z=(%7W_D?+tLGyCJ!!4EAR{4;7;XP!j?_1u^r#h(kb21ZECkwaTf5G9JxwOG_KCGJF zL|T$pbG}nINZ-UV{JG~khS6l}hKIl4sE8AoCniwkTMTA;pN81++c0u@A$9QiK)k+R z$KP#&Bu7z%S(7vi1r|<#2OU57-eZ=6rKKS%b;jY^!ABH-=)q{qO8h7{hhsnZQ^S{M zA;c~feM}Ybsgn>SsMgS*O-(R660qgqv3j@H6Dv zi3i8XKeopN53jw23Sm{`tY!o{29C!WLxC{v&V6WZj|M%9P;$mD2}Gje=y}h3uzo~_ z&UUcC!bt?>UnTN+U);d*`3S$}qd(Y*FXt@~+s>UkE5Nu(pZ(w?!JD7=ht{e;q%|Y+ zaL)xzoI7SRh`4Ov7r(9+LeF_(=^y8o5!-IEhA(gOc=j(SK(OKC@>zb=6{Ga z;}}U}@b}Chl7Dj?8C-q=GIVFsZTEV~D{j6JbzYvfnS|nulypp;w+Nrxw2>c9@4!{; zJcg&-qz|#vu9-6`{RUx|Z z;tC>sQ=~???6n^DYt(rVD}8k!IXpv=VrE%b?X{ zG`3rF9w)3WD!TeWdgW|99%;bo^ETocuD|Dw)nZo#MB|RSkLZVvO=5O1<`B~-G zkb)&*0~YM{3bom{@HA7VW(}@vVf`e;ChfxW{?Sg&E*6H!rw0lmb(pUIgFICy`!t z$E``VTr8dN>sC#{UZ*f{avVgN2ZC%L&xi^3eh*Wn&fvT!>GV=^HdzvU03UAZg?-*! z-SiP*b^%u}A|`)|J`8vYUv3OjYvW@WZ0N=K={ONJu}D(>z==OyYd-kz^}rmd3^M7b z6C^y8V~s8j&~F6?VBn)VJlS>&PW6hST7D_qI(dOUd|nD2?K(8vI3MmDy}+^Aq^PCE zCzM^%Po4>dgIwPdaxSL^I4J4#{*36ZJxzMs`qK_;m-4b$bH!?Ror8qaE;L?kJ2F%tT&N0lFNvgXeA&Q0?Az z(w}>ctX=(u2Ihov*M)hIHeVI4#4e|EE1C%>NadOBHG}0zwIr}zo~=szMeIbr(?L58 z=r+kk_d}P7{kPYoNoqgJ4QfMGvKT04vXFUin19JC6USXy1s9HlL;tpJd|NaR8yxd# zs9+{cIywusN{iq^F&}tUlS_WQtKr>VEKYm}l8D@zQPj>e1796hBhEEX32^6uR~FW~kH+_I^d*K|Ld zh6cHy)0z}?3pYWxOU)QvVL^@zA0|bOPHgszUgG1vlYZ`x!JC_E=q(pbHtEa~~o z-u$YC=Yev#ZS`V&w{sWDa(+AUbxQ1HwMx>__nEH$p$^{^v>5B4*W|e29lT*?iO0=@ z$l>iJQ2UhQyf@~+$}#sqZ)liC2i(WSx6k3YE?H*faa}kj>OuE9HIlH^<|y$}95^or z@+E%}|HqBTq+KhCEbWvlS*!kq`qVl?TW%<%uI(keuZ^I~oQd>vl`rP=WEjg6a!`2x z7S0$vMw40`dGkFN;i4{1OOv(%gg9?&Ufw-04$X#c|K+qNT@F$L1E6E$VoZ#wq4hqK zXw6GyP)^E+rg#^k;Aw{v*R+WoEfh$vI} zZ z*_weSUMW;sECN@^o`-cI(YQNi4DEU+46{nbn4wf#9PUja2|FW5rFt~kk-mg_MM{(D zzZ%J4Oboop$i>H%8}PqTbl&k;y>A?sJyJF;qoIT%5}x}yq@|>ylBT9gJ4w^tBV>z` z85Kq5xvxV}Q9?#rlKPgFBvPq<=l8Fde;&_q&bhDa^Lf8T-BJb2v=MrN_j_mGKS#3H z=Ay@#cxt1-_nd13NStdDE?*>tqfgrT_u;p2Pm=G6+Zcg%OB7!7tflN)DaN?t1wGuT z192S@c*15PY9tuJB*#Q-Srv#27j?naWhNjI7|%8z8Ut?^$iSC^HaPQM7F+%}qV1lo zm^S`0#&_N%4OcSpScW%>%-;Yd+x3|P|LMT(w^QMryfK7a&12QQv)Gj?JLq8xVP^N_ zKt+aZe((E<=w(w(Ull;Qh!AIsC-76M2BcZfW>yaz z!ozV{;5-@+D#PAbrQrlY+wThOI<&YGi$rO;KmRV-ZGlT8K7#h_Po%7t1Czx(BQURx zlzETg7N`009seftI<4!#)iAVHst-k0KcJF3T(PE{=SjU$;=Be;q2bRYE@3G^>G#`I z!{!$?A+mgzY#36M-s9}I{uq<10z+y+s)jbQZ# zH72{A=jrIG5M0@Z(-Z#)E~-6;g`xa8)Wr^{|{=s5HPD|M8qiZzQ#(+oKoelF#82FclYbEYgJR3N4`4&Qku@v|4;lZUhwd)cg~@SzM^Wb!-PGZSqDBUoA+8FpopqRSm48Q^ zPAPHiChLpdP|pHa@b_ti{a17#e&z<+$vd1>9z+r6g}zw#cQK}xcF@ftgYd9Pfvr`V z#H@b43lv5y;LnCRba}ZlguVSsg~sm26BQ5XEtl~Sl=0X6cKiVM^nc0Q+eVtM$p(-NAd@Lc!Bi)f<6CfuAU%N(TRx#Gf7G?Gi8xi%3H8?6cz z=Pt4qQ=H8k`vwVnw*|Jh=VQZ&lP7@2Vp+tN#5ez**?Zi6`P zGefNStVBQfCXiJ(ETGp-4r7ydqp4jz{W~m-2W#DNJ|F(U^6_|LiZXZG zD+#XO3j)yvmr?pv0$JOliPkq{xht91+23UonR6e4@kZKW_-yA*1C^iPjT+u}AC|;= zj&H}8M;CJvq59m<41l~ieulZl7K#o{!jkSl?CveWUmT+~ntu-gAS|r@{;yeZPaXu^nm8dx(u^Ua_@K zu{ieUANWU%YYWbAf6pmv~3AG7k=BhK(mAars+?046i=}DC=WtA8 zI`Nw)0+NptNn^GXkt~;ht%vmlr8}$X<1_(W3vfZN51K?#_%WnTQ6gKXQKXZvf<}Wg z3Py6VVv8u}sAJ9rzLONpvIxf()$hQ5AXMG-4=JCw2k*QR=StH1(88mP?W$`p@A*%d zRMs7Zw7~?nCrka&QQWDX=ejwbaLYp}dxDR!O`1L(4d0A2 z*E|-?e)a?J4_SlT{2X|*k?+6h2%&k|H0X-?kKd8_9`mg@7~Bxe>0w2^WzH??2E(o`&s^tyVE+_srvH)wc(aH9g1s#xp=> zvm(hn&nqLh70^ZZghA=#STbn+2=m$<@nYjB&)5Eh`8kQK@ZxNG?0X=%jg*k+)-foa z^^2-`_tDei%HZrjPZ+*rjVm-8@kC}b%R-_j#Z4$3WO$ z(ZPO5*a=-nO0Z;{DA(t531lwI^X!SGq;^vX#9U|~O{L?Q>p#OOPjMnUiyGnjbvydu zQ!G()>m+aMc)!Qnllb`JR$QQH%=tg;gMOg|6v?@VW^tAXwjES({y1J}UWci9xzOO_ zOQbSFdDg);c6v{!fYG-lxw3`WT~D|O&uyR@nuN89Iw~Mf5zKz2PXq zhs_9j6PD41l|Nv**mCxHa35ZhY9Wk5BvI^YB)*2GaCOHTwpwv9F4@#cO0G>r>%D#C z-{s?|@pmdNUCKMC52lfwJ91&#A2+I*1zPm;UUDF-2z(_!$%C%Wk9 zIDC0M)m-v`5d1NIO;(2eKuM$HVB|cJ>2Z&NM*KyqH_u}H+Fz3DF(2uCE(nL4ZqvT< zy)ahm0$%Xj2!TU^FhzGExpO>%*vu8-T>eGCH7!0LdhR$iiSpuFr`b|>+ka&2K`D@} zPJvzWBHXEa5ila^OQlc#h5H)g!Ewt5ZjtMEXph{_de@gzUtNCoG+`U{(0oIOD{p|` zzB#yQgBkQX#<8Zm^2xa6HlVX#2%bDRi~i4VLQRi8oJl3*x7=f}GW%xwZ#Rc_uJ6jv z4u60I*91yMTETN6??kzk3{#Aqak*qU6;qMN>b61w_pO9{-(8L-8cXonyDTXBDnLgs zFIaFf3o7Lwg7<4lMtxrabT#b3o!Zm5EDdXDJ>!TIBV$nU=TyEc%(K_RXM>)}Bl>}# zch!hUGC>#az%8C(!QQWCKNfcjj?2h%8Ao;Cecvo_aPVNsE)y77Tf*Tii(%LOK(IC$R*_d2y11A+_eydr2E@sG)i0pL@8jJn zZn7U1?-4|N;XUJ%pTn@M7~caC#)>3anpnP*^t#RG+I?!srN&3Z-L4Ge^ip`PD@!&^ zaKuk1c3{p>9_Xj?_ch;2$mV}n@v1n}Si2HzpUU8I*8}*caRyE4SPkzr_R;*o34;9S zez^AbA!$;22}&CdqEF3`;MCnY(=Ws#-Uh$cH(>!= zj@h#2jE?tM^4(=O^?5e}m$^tV-+mX8Z12;~Jr~KBS{d$6f(QAncZ8cJv;r}#lRnCP zE3h<=mmW?<^gEaZx^96mnAVNI;5|I? zN}}n#x8SGETy9piA|wW_gn98-X~^9a%zBh2@YuW@q}VWE1MG>OZ5asGz2}+XK6v2f z2iz1L33ENNc$UdG!MJ>1c)JVm%xQkcJ>fE^lyX91rjJjgT4qOBqSs zhn2m)g#7zJqhOBtC7p4!z5G zzfP4T*Jz0(Tg{M?bqd_7N1I62-fVhcYAu>}pP)nGd1T7fc+x(78%hZL$Tx#LH2QrF zZybCEA1&{~niPG(*Mezio_-0>f4_^0)1ASkA`S}{012oTW{df~T$FAN-WndJqnGq> zyx<}3lM00JXB-x|=0fN35SV$v3O+2njQ8{w9g1P2aY!3djs@c8r`TH0$Q z$oPB(4D5N%Pe&e{)?AFnXIx?RpC{NhBnyn+MCQSPmF2UxHb6A*1-`OP4A1Tfq0b`B zAZBnZ5VnMk*7n8INBG`Tb{eUj=K~270k)fOBM%l{5=hVN!%|j``Cg;KJpL<-V;@(; zY1{4K+ep+K5c zIUZ*Fn#SWKJdc+?l;I3FUpji#g*gu{;kmeBio_w1y?VGT+SBx33 zdw~N_u0i#uQpi{pg<)kW7&yEYHvf2qUtT)FQ<0nW=2%C3g{=Y;=hf_DcOj`s=JkXFKU%kY7ykEO z9=-N4m`>`lXSDs4f!Qp><=wrGuV20-_dS-w`gwdlKC++27NpXD7XwMxtdo@E^B&e> zhID9B4SA*Yo>YDv!yGU&Cc#d2#PePyaZHJ)WfLn=Hmijs<~ozImOgZ9R_6qTL*PGR z2{E@uNQgxj)@^8qq^CTmc!w1;ypbc`*%BbO*A~~BIGB%*pDkE*2hr?8Ce84WK!La; zezi)b>%XmoyGEV-EL?&y`*w*+=BHsDKO?>`s%(Dywmu$KR)@c065PwkDtNXig&NPl z$!2flSw)wY(hC}gXn)`-es})>-Nu|j#@`BbeoTQOF#~2x`4UXiio=*-KTP-Nr7z!H zg-C@08KNWDN{>`k{^gUp%mQEl~M#oYIzu6BH8ARAfHR zF1E*C8AC)~!3QTDt07s!%G?dUyEt*}4~&Wl0JhczJv-!qTP6*mj$@b;SykXLqCwZZ zxXO39{Mn)7|ACFeK^VR|6Nlc+M)U1YNP%T2U0*f^j@t1v<|y71F9^ekypNFgN}d}j zGNpG7J`n%C$I)COhOBy_z@?hGVC>Zi%%A(u8qKS^#llV(1qN%3q)vL3Bdb;OudLr30$rN^`#ox(`1 z9K%F^ibAtoVNR*%C4D|-D$d-r2QrvpP!TnQchX6?4m9b#9xo_%T- z04Wb*@!h2(IJdL{^1J`TJ8=ncc&t4v*t>^1%xWSxWG}&J_gK8@EXpc4@vP4W;p{;5 zEcV@tR#KFz%k6u&77jUX!$(hE3pOnsr7mMc@z~C0$ao~e<*Lr$GABpF>KsY%Uh|Rm zZ~lol)+T^jLlY5PoWQ8~e}Pk#H5i}j2m+nmpw53@Jxf2Tdux#VYzTtFj2u!kqn&9x`77!#8Bv2FbG~e$#gJc~akB&18v8VkuxE)$2xFAA7-#rcs+pW2OYyh}K^b?bd z6Ns|3FYVg(1I~Z$WxtP(K-TXja465mnOB;iz$=ytc}t?%ac=;f9==y|j(*+zl?(Lk-hKS4U%<))O^5N( zm+{|MX$WrihBczP@cP#kC_m6iCiHzE1AGQqj;<}9e9nwq^R!GWl9Ie1SwB62L4y2&@A`&-TNugSue79-cT=Y}*L#m+2Y`zeO!nxzYAW4<`6Gv&d zP!O2j^}{~-0J5~q7l=;1K>Kqfd`VLUIpz&{DY^z;cXUzDj1D?o?;c&=GM)d9yx_iX zGHp}hS#B#{X0kiy1$EQ8{tY)sGE zjJB_jqMA-W-g;jR+{4p?pLr5o*dApJyLAW6-=9GZ{=1D??uk{>@{Hxe`OGSh)q?6= zdDtz;;2o*5__m-E`ZYvR>ChrlcIG@R4NU^I6&(LQ%WPnoAR@O+=0*>`BVf38U zn5pb{a=Z`Vo}E4HCP!fM!m*fEI|5V@FQm_MiUP7X26}lwQY*DJr;EHi!3ypQ1#p8JA17A(*%0p~Dwg*5L?vbSg4k z!WZ%E@=uU?Hj1R%tcKl%*Wh5iJd-uW4X@fta`|y_82w@^Oj<01yH-$gs%JN@i0eRQ z3o*7oI{tSYYMb~ z`P0rI z0u{}y==u7Uust)K91*(5XYlU8ef1jJmMYAqOq~J~H)?VEH!ZO9Ais+$FGb=v4jVtC zV7cuaWK0(duF9z~hC)+Ge!(l6wjqw(KmGrF;bZ#XcZlE&e}9^n7R^8F?}CQ<5?tW0 z3?4Km(}e@$5Q7Hk$C6d$=YL&;9=!%=oLodk%T<`|<0w9G+6*d%*KsrBMud%T!1Ehx zAx3;W{&^Qc_EcO%vnj>6f7b|Ev{Z<$_4Or%&nDoB(Ru8t%1>m~A}{!xm4odw@6zSp zuMow93Lrg&=emV%X4V&Pp%(|Ez~5dRSNC^OhXGf7@$CpyW;=tJV;D%~htO2DV3KV7 zfb>d*!I8KIexA~R>KcPoZ16U!@>!T!Roz6UqYK?8=fek0B}VE;EZTLs5gn!;X7=-0 ztK)!;tR$Lf2hgk^mDDBs1shnspU!z>Ml}XZfORUxo`?Uz?2SM1IcdX@fFrEv=3=P$ zAVl9x6yo-I|05ryx5CXQ{9NjFH&{6uk}oOB81HO~ld^M($fZ&8qE!z@;$yL?>^teP z&_Xf(T(~7=3f{Z_oJ@P_k4st>!Tcwg)MU5-CD%m5iCj76U)Xin=yV(n-na^)&lp0r zn*q%B`b-Y2YQ-h{O33Cb!LZs|lUs06iB&)0g@+I2!KktbIluHeIXzkq?2Azt$xsHX zpjxnB){PbGZE&mL5PWK8%sanE!mq0Zpqv{`-FG{(-%tF8v9VV%&FT`II+q~$Wl=_7 zTM9Enx*w@x;6;pUx{s3I_M-a!yHrtgDp|Ts7(RA2!2D;cX!-E7xRxO7Hqj}JyE`w$B3PIZP1FLpyJPzVeV4`HLQk#0sPi`7 z+8+aJ&oslw?sY^$Ka|f8Mbi1~5nL>X)G$UIjJJniqG%j^->?VK7hflhvhk$gE3q^vJ+XN%Gy?}ijJ5G}93J@pQ@uRDQHR$s#%Nxo=uSeg_36hSS%_bo4Jg<+FF zp|fE;e92kL9k-r{F`Be|<&`j)-m(G}mTsb(%*=4d?Thf_Sjz9JBzK(z>3UE2 zSGAm$+^Qnm`LnqspLG?dj%XhdLZi-(g<|JM+TmGGraiVN*Lv=OQsX1oGWH_Mi+qIa z>L#>0B}K_G7H<4ng!vo7h*hUn`J;7L$;pTJX{c=q9=H*LGrQNI%3VirT|XK2jPRLx zS5c5Fa^^eN>&d~j<8k+?Ddf+yVdCdjj=PGLa9xKTW=#@@IG!^&eEb2lkJR)19!>7X z!)E%;=^dV3+>9ra)VV*cEoA53%V-7wctD_Z ztl&qnB{7ytAh$k@Ve;}RnL5UlCQIKWeMhrN(;o-!r`lCe>*Rf(GwsOufGKc$St0xR zgf=l$_knY5^P%x}E_Tg73GQYo`2FKo^W9F7Z1K};ASlSkTQfTN*;_nL*trw`z7)fX zz@O&gUuz*mmS^e?Lcqm1Nn_T@0COsU_Gz9u#{i`oD zvBVx-C4J~~uUNr~QzG1f+}|W}TMCAcY(Xy%hN`trU`>w8LfGXrd{tEs^*@7A$BDNL zrmK_B8I<+JRCXFRg@S6n6xc_NcRn2)8299_lP+kYo7yf|iQ&JFKKe?@g$7xr1a zJ$8F;W>Vx-bOD8#2M}AXqvWBbf-25{&lMH1B0H~P zPt|7H`*RPztL>x)?YXqJl|Qm6>VSm&SbEzs8Ba6WxZOgGxfrnoJpR7G%|hy|R*5`! z0|p zUhv(+2zi)S+WiOTC*^74!_?9yz*`sDyyZ>lmHGoMha z(W%^+J&yFzn;xQFG78!U&huIDD6|fnM`JRd!HN+Z)GT-nV#-c*$R?hy8vh+5&&uHV zXBprpt4g7Q2i)??r;%qxF=)mT5MQHBH$FXzOVn?Z`fPXFrqv8$9|~}*#0{J?hwq4e;k^n~ zyTC_}XH;aQus_af!o@MS*%f&zkXW(?)-D!fed=9l!uiRNYpy{4)xRg)hR>u-I1F0l zU(&-vV<6|2FLtaM1f|eq&=>uW$`(gKmgHsgrshoI>6k?9PKt4|I+5U9e+t%wEAVrg zS%S?QzF_*i3iMpK9fxdQVZ*RD-xJz`TV+_7Wa|WJLq;(FYYX|i)QTk71%lB%FZSk- z034W7OM;*hJYkn#q#)v5GS)EBzE`!O`c%Q8(S0>PT+5?JzHpK;hbj&A*O5?dZEWHvv^!X^VP zW}B)BOy0bOY>iTc>hm8UNYVy&iLRn;Q-|T$p0!{&?}os=cMQZ|IE)tKBk;3NI?lSi z7Xy5L@O!sORCSjM9vc-azw~Vx#NWxL9wo=IY?lbRdzd4SeD(pqyTdDMg`sU^8ave2 zi@ou8Nl2OuUcI=(O*zO);r%Okw>?|;aS}@`9>)U9~VKZ5kfW{E5yCa z!eNJ~Ir_q7eAOn*SgiR=bRNiX8;4%O*-KrdW9207gt$09l#HUeN{8@`YzWmInoPxB znUUYN;Uvq^ACFDD#yd40!A~`+bvk@lIK#1%srysJ!hZ8QV!%?_}W`3TBoL)geTkYkBj)Mv_g_#33Q3^Fhw1|7Da!6j8xFu}kbqfd6ik~c>g zub^sFiBQ6ahZUFtvm93LfeLk4q5-mWE=X_o#dG8iq@5c}SL&CRxjo1cq}Dv7`@8eO zwsZ_kTN_R)g+=g_mj%T68Iv7m4`J`uT=>!+gQY4@>HO14WbuaCsPH8Mo{p~NyP0B4 zT&x&$x@ThY&sli5=pOwhp+F|-2r(wQlWA{zI6D52VjgBDkkA+PR7qko3VElXbzUyr z`c4UzR*Nv&Rm14h`JB|4n9+4lJ?Yjf(;!!*m)xn$fjWa3%zN^bMjch=YX7dFp@TD+ z>%EaEyFrn8Ff^V!oKPuPJa7oE*geB}c4xqA<2W?TiG`dk`b4OCn0Q88(NnWepaOrE zZ~KfmZBq^g)TnaVUd1SBKZMo^4Ul?hEZ6eI(%f+opM^bEM+EXx+&jl2Qu}NwO!Q4) zyS1!f@0s&>VVoKs@%u^HfxYDIXK(nCD2zS6osgfukIb&w3F|i}@jIt6V5D$`)WwCu zpT-{A=$1)N8S&>z{|kg_?WFw9j?-6&7erQ;K~!ZLR_$%2RhK)kDn1>fpDAIA(0){Z zbrl!-90pH)TYO`|2?iWD(#u|dVJ`4}oEg7+NwyYcbPx&@EuNh0k3lHG4s9I275dke;4ya`+&bUt~A{~W#P$%>i zr~jRZ0o~_WAK$g6N!dB@Ue%ZyB#q^AZbZ}bKW>r_(Vu9!doQeRs=*<}M9|puiwX}+ zgTnC%WMY*F-G0%83oVwTzl`VMoBwzh=_VlQgi_Bd;PE6?~J8`-X#+6+mkNYdhzBTFi zKxVI?WOWS8x);WZhDAV;r6v@6D1zQiCo1$=4HpTdNLXSQ{XMT7_H2&@yHkWDZj;11 zK2w-AZ86bpET;A6KM~yMfcGkA(OaiB65pmm9OeKXdF8?_*?5dDn?mze*25dsyEN^z z5G=j*7Cm1n({l%w;p|IcptfNtybfS#&Lt&06m|_%EJE>a);98R;x0_skMP@94xZnX zWBSeh;!9g0JTqMa?S@ZdOl={*(}^H5)vlm8E`WX>UJ1$TOVF#W9d#W;NNU^yf#v8H z8m=FJ5^J-8ROVydD~6oBnJX~gp;KP7ei$|17m>zSO3cLZ-nim*3%TBBjJI-Jag|3D zeUfPge&g#fdX^bDc|QfW*hEnNV`*M_Y7e~=GM|Lm8*}ZMJ3y|7cYdg|AT$sQtDe`B z2JKk*e774`XdZ=<(jwS36{&OMMR*qW0M^}^%4iR#vC#wT*@-3Pg87~=VfxTzl$Y2_ za+_OF*WoEj73+|RH@D$5K6fQlFAhzg48TsJknMppDB10WJNTS;b6*NMGR}*xG#rBb zRlyiv`Is`1rEu@rE41XBbj4$Qz;?V#T@Qm@=Hvs z;B)!yDHq-Qh?=reK4;ILy!tArHMOP}AlE`8GL*xNn-z9I$Ai?Q%=7;_ph_X=}@! z{+Wo6mz9#^OrGFACJD;@v`|Bj*9`j}FQ1Wl2p*ByoW%1A$jb{ui@sJ?|B?y{%N?aY zJx)~mNiDq*cp5CL%VBD(G4&dI0habR(uU(Dn78>B1Rbn{+YV{aa{C?4{G!ZB{7A$U zB>}El^@8+jkD|Umg~5;YL}Fk)UA62X>5zDdFV`!=g6$Fbkmi%6weRu4*I&?iY8SK& z7L^z5%tGg;<#7EO&!32!iudz`;lBbgLF`Q-u5M3q`M!c+_WqP1G+VI%OWK#fx^b@hH;Y6Rou$|^%y-qw`Xa9?Ox=qKaL-Hip zZVP@gGK7K98@!)8lFkS&Cz8KYX_B}OT2$P}mDct6`N2FmV?LQmwB*6GE#q*{hHWUG zm|K3Af0nG9KS0!8uBU=EFW3;xgD9YrA#CSnI3TZtN7Qr~6@E9p!blH?7EYtC&U2Zr zPcyh({m!iWm^rxU^b7iCo-7w67loT-8h8$A9kE$6lO21>hmsf;VjdVUXU$mN-BkoR zN^0~>bsUtmy&+c|PQ#ZsN5FDZB+NUs9GoW^VE^bD{FM;JyFaR6zQ=yHXLdb*)`*6o zl`&*XP7WQ~B*xAAXN;x`q+n<}?>QYh&$afw)S!m z{?`U8#uTH$a($F-Wbyrl7B>H_G|@N~KyO){68PVarN6zOfDP=$P{Wn@_Ei>YC(R_U zqA#JB4nvpz>t{s<+QIt94m>qMo9q2}8x@i%l-35~_dr=F@RZ*JF-2OunG z665aogXHsh+v!^t(s8HTNmAwz+T>?q-#JC5vzb3H$R&_yJu!j$D;=hxB@`dYG3XGG zhewP2q3d7-wR}YdM-8*erv`Y^^47Qb*P)z_m9)X*ztp(M#V7GdRXFN3+5k3$0Drl_ zm$IAi^r$nnt+@iS)7tSMw+5HAN8!&eKJcm15Y)f_LOHceJ}KxpnZ_rfH2ZHbT-03v zGG;e$V_z8f44FXI3q7>AF+iyZEm(FnmC79XkG@$g3HIYAP?v%GXwXqeWOeV8@9Wd~ z49*f*@1us^saxTN2ulxKD1xYwD*ES>5^i+S!Bs^)7#k1@pQWP&FnSltEFX}(nQACG z(uX?@Zep3Z7_^^1f&~?Y^xyiwf}G#?$oqJ8^f|$?ucLXNeV+<>xK0n7eMRuAgBIt1 zaszB%?E%w6CNOUw=wV9kRa9`_OlHY@g7Ebkc516NJaO`2JO(d7^sylH^WBf1&+!?B z9&=nIo`mO@^-{wCCGv1oiZsNYB<{OUprP4x?t63^o>!_Dh@moiZWG0fn+q{_T?pM; zaT!J@sR2Y6)9t%NnOXN!OclliQ|Y8nR9;M$o{CF>jVieQ?ri9|eFF{!CRY8k- zreeKqD)_rc(G{K_G1EhmdEXyMVq4?jgsVU8atcPR+X$^PYG~wi2EQLThbP`HfXbeY zc+TViozY(lYxLU$7x>J<^)5-~Zlni3Iw`>&b6F4ndDOyCl@Ryf_tvtCt5*cQQ)glJ zs+X|m>26w;7f0<&T49bqzorihT*z{{&=;D?K2Mb# zoVgoQ<+I7};7jPHvJKtm{U^XFg zTb-cnVn0e5wo&tDz*T$WK{0m?9CUn4mL|7=kj5Rz*pdtfCpDwcgdVobN`w>Jb*;joITIFC9Y5)fX9iR$?+$Ks{0Zaw@8OSPF#-E&F6rGYMh34J zlM^!YInb!4y3zS4aw|??;Ps12+eEXfH=m%2Rvp=t}$-AwKn*N~*w@{G!3E3S}?gN4z&Ps%V5s((KR-_S^qbPXpj z16-h_A_U~(#-jF=Zo$v%eyBglGozuI&E;p+ZD-2RSvn6!8hqeFnFITue?R((YLMc` zOK`nomtaEhMNml6AUcWBxOMAX_;GG3_P#eIiJ~rLQDUFSl3;Fc=M7;iBF#pGFxn*LL za*&>~o73O!2WG{Ccr_}SCGVYK_Sy;L+rzt1KJ_UmoVOxR&s1USsxWx>dnTMnw1-6L z8>G9+l0I-uej$~t=@;iL19`_>?Hy!hYs;x=n(osuTAH4=zji)g)GxE{qst>hmP-CPGBB8qK5m6qa!u_2k zh4;T4A|8d6_+L&Fxf8~-9u6y$*LNn8)2aP*T=7ACZ?%e62IXL*tu9rS;(JJXAL*_7 z>r~2YGOgmfVRAA>=r-z(XSLqJ+PX3-&*s9%+CkFYkc2k!<>hmPePWpMpbqJ85F= zc+T~6FogV&#X-ekIy)zuCiQl(vvlX8g|`<5*c9N2)ChFeYcHR@p20F-o~`B~3=*`O zKI3db(kFvN2wg^p^C=*?sDoC?Ud5b!_sG7(F;wn-5{j623*J4JhuF07WJKizO6=wY z;|9OaJlt2nU`6DwuMt+X8A4L z2|{pUK^MN;`x5PVS7)f@C<+XOa3t0jr3yJ3A<+jtSJpwNw>y-6%O;DTO-C2f1-TQ% zxW_{$=$xh)h`tv?2hyYP_NJ-0_2?@4ZomaE8i=E*Q9AqR@^UiYHVEbC%aQdX7jQPGj^XXurg#HmVO@x!jd7pBWnTlO}E1X>m6|QmMm~H&PRimckColRnA1aAH{7X z!1>NKbQAH!+7riVRqHgyd}kIdXupR3+wJL@%wb|Hz8#lyd2qmVKX^xt#nt7uJj;~t zEFFDH^XzNTpWT2%i$C*y#UvnSM9Q{jd}S}(lowoi@Q1X#T165ic`n{&Df7tNcVPA3 z05Y%B3@s|HQNPIwvK5u-<&$!SZ!=7+KGJ#~LOEWqW1DHRshHNue1D?Vq zI5YGF-hH{jc5zYk%7>41I9!vfeQQocJ)eS4KrJnt*hO0oUS%7)Coy{Gf58XcenFPZ z5_C(H!!s619o+Jr(YpRV)ltN^wG^3XE$?FcB4gOzue+Q^gnq zW@?ctXnwSU1*a8JB)lGl|7*g&r*gRLa3DBjo`>THJit;>8TMPhAh(2gci)X>)a2*$ zIhEJ&MU@L)sgopawUwCv${XIXcTl!U5yymSarYeC*}`?Hq&06N4ylD=$ec?MY3fbf zx_G|3mk(C_n8|1LA45b|4oKBs#7CkDXuI=nx%9VUx>aljSdLGGSz_^E5?}`l#Pir+ z8;r>OlWhXqoB_y7>StfNrGTmzM~vHVW0ia$YrkhZ?v_`Df8pxHQdEbzeBdn=mNx_O z`Gt7XB@@E-7vbF(OW=O07~IzyC)nMyj$58^sl3gkjr18+;-5K97#3noJUgD_&7A2V zduvtA#YcRmfKxRDxc%Bim1wn2_6ruh0MPS zP!J))XdP}r`}*|)n+H6{v5OMh9bWi5(!@MWNf@U_JSTVGHIkW+UtpVrx4`blN!(VT zO-!zcz=~sfAldjruweN_oOnVLrC$b-UtWJeCU*zS%5%ocf2VNQP1G>|7z1;27C{F; z@C@zZ3uRc#*Fy<3U9cOj9ycU=T!?Vr%C)QcPx z633;k17zDKS%z7$8b4i^2e(c`ys1z}z66GY=KI&AaPK~P;#d_~Z!drri$JU&nTd7h zF4CAi4`Ka`+3=XTLfqLB(o@S&i&}SaH#S`}bIl$!tDE{ap+&pzJCpjd8}k_hv%1$tIrb zIsi)BV!{3-k9bxsh2b`Ni2Al18uMc5zoUG=Fm@I-+_wcRf?_aS2}a8Fw&9rG{;=Nznp zc4?kPw5O6Z*fH>G>V0^=!+==W8!;IVyXdkn@o2tdEHnFE60YWg@sda_{yW|Y8~x`q zhq3+z6#9qK!Du(Xswf?o@%8U}1XbeZ;~d!fkn zYHFRg3w!wdS`7&ztv!!nwZ$c<4Uhvbk#4&9QZOFT-v?HO!(_+)3>X*cj7rmt@QG&^ zEEq@!c@hp$fBli0kwmO~6(Ksj9eQLUIhnLTIMDO~bc56}U&sWXFc}#6NLpZ&sENeO zo6acIaxIHwz$mta)b*E==|_st=uaVpuGL2!n;Dp&7K?lDj=|vfx3FaFHZXi5 zBG7sC%Ur|Km&{%Fo~Sm)fy>+?P;-7M(EJff0^@#`|1qHSzvIHpoE3efA@#4|`^?#V z?yU-M^rgVphuKv5)?2t8t<4?3;Y0`jJjbjxE_g}u9ekG(g-IogaPaG8h&g{5#UF~| z>+E6jG^vhEzE}*Fmy95*>I3n+_Y7rn765K9hl3|pVc_=>$kY&JuKjGI^XleejCBJx zHG9I$;a)uKCd|FQ6ki_nEk&^N%~L9o^FQ|911gH8YZoSifPkWapn?)aK!q8Y8JOB5 zD5w}wQBhIMA|hfAhzdv)0R@quh$s>yhZ$gM4@m^YfT)NG5iwyxP|Wi8c|GUebKiUK zd)NQ1b^rJK*7|3ynX27Y(_LM)ySsYV-p>;(ZZMxr%`XfRm=&lCHXQp-JwFc-n9NZW z^c^;a9?Nv{VthRA=}^b_Iveoyg3I`PMmrhe5QD1Gnv(h@$Hgq?cQj_tds6Ke4!>#_ zfR$k+B(&wi`Ik))JNzAA#!HRLNX8M1ayPI)QpT6<>x1)^L(nLCJm`506+d6*LdF=Y z;?a6NsI$?5$e&?k?O_4Edm|nTr7!$z|pU0!t!hyWvnb&uvCg#q?>}(G%3Mcr5JF~ z9!slceGt$66-MQKq8Wd?5rW{wo;Wso432&_3MY+lg4`807(4$ndCCbw$JhaQ^jVzU z^F1HYc`Rz7~r6%E^xeC2BlkviOtO9%9*F$<0UE z^wz{!!e2cJy7r9~+lTD|eVKY(^CJUU{BwA_IFtBAJm?!Fvovt8-D1Aw%_gy3r4nW;$w-#^3_)if zPgw7M2P9jW_llLwnmFUz&Mx*qnQ?}&qCXOkHHJdq+$yqbPz}zrXdn%$_i&8VZqyj@ z2s@ffa0oAvjtTk#6MW<(`6aty=1)t3LH=NzQGK5b^?LycGO5%qdmlc2nE@r)Pcc_M zfVw<>Cho01M~+z}K=rz*0u?72%v7wT12cp0BJ2?7ype~8~6%A&7iO8L@ z9gR<2hPtZ(SkJHFkNY+WzwH`IyLuMD2IKuOli`D!GT%_JaCR%Q^MYyZRS(QwItJS2 zCW$x32EqD;Bfv5~3^HbX!gmUzCEVIE7~CnQexhTfOm`cqjl3vs(N~q+)zOlyUf)G; zu&0CD6n#l9!=j`z%pGp4763N^e%D*@=nViI^~@5HF5MP%I85SnV(PD4vi(&;IdP#!BIP;9Iv%L?)-jogKKi(K)@taEU9 zy9s>HEGFm2s1W^Wp)|>TGT%bJ0Qnz2!g^-D^c3%cruzm=c3+4edE0Qt`(9W*egG7y zj}{-87%sk3J^@LN6_vC+C5Nt8qIr%be2a>}Q5!E2FKsnJQSb>~uFXLx-cp1mrrXh6 zdw{?pLKX{j_NVr3%;HCvdsL0^$_r6*T$=CKGdy=+f`hgnUCOZg2CN~kq>5Om4&=hEs zETKK(bL8Ya3GQ0R+=rK)BE2PYIGeo+gUyzZqn!sKkE-D5L9fL_q8OW>UoeSCU5l;> zv0xxKf!fD@fSUBfMDOtjDkb|3G)I-8mxToQK?c}+Sw=8yMHMdPGHXjkI$*i=BAklW z!lyL{vFi$hZ`{y}X^dZG-w8vgsIa1=A7}`SD|AtQP6k{X8IJFbrQoZK3TpdZfK_vU zk?pT;;)RS-T&W_5Ihso(S5`@**|NjrM#UOjVD}W_zPkWppap7r97Wt}X3c6IuGh9A zGdi2`N&6RwGjHQ}|0<{T8VnCr5Es1m`O#N>qa`K2k5T@6DgW4I9dx)XrXKSZNW%p! z$(0Oeta2IvA!Ay>D>f0{H2UMRuW9^%0rqGM-}#4QKhuaqfrKT^Au2PYp=YlJ`1?kZ zY5o^sQ-ZQ!RIZU=wVE%~tsOwP>ozf%ip}KHsWMF7?hmmyv+@40GEmXwmnZK(%a3?9 z4DtqNP!mUK9Oi!vgNuGbu38{<+I5lSSN{S~v;@n{4e-2i4E7xJ?MRLzujB`2{l8|x^ zbo6B7jjNOz_#c9ePju0t{5?G|hX+7^ z<7O#APsk4b%hNnE`>Pv9)u%(Bg9*Oa%F)Xufq`O@euRma^ivmfpV5VG8!MDvx(Et2Wx+;OnT$Ndk$jNOL$75z5@QA{ zj#tM9-_;`oXPvciI$s(CzKo+&&LqH@y7%I5hW(_pIt#w-c*MNh--T$FA?{foiTSUu z<81jzd@#C;e%yEi?KL#ug-Z$O-CK-qMcKA0{5T>P9)KhFM1%FC2I%&gg~nb+kZhg- zr+Pmyw(uJ?z`TUcKk0_EhfRP)i%5nqizU8(qZAr{F&yX8wYXp@gSR|J8o4Z4G<$Ii zCY{uP>Nmr2Ma>hk^we@%!d(Ibrmn}+Mc=8V$xEnOk;JbR6cX2oN$@l46)YX(hrMD3 z^O7F~>tY59YVOz4%LmpHl^fcUkj@R_Z_5Lyp?0A7`lCDutbJGEXLy*_4049J&56`w z=~Jo`&w}EHOkyNC2iNZUqUx|iAd}mM_v6yYT~~kf{`de4TVQz#HT*nUY21K2p6+DP zNlS6g>YotNJ6ux8=-K>gWhf5VOdV^7Ncv*iG4o?LKZ|`3(^c(hA;+GcVDRUyA2J>b zm)4=;qxIMr_JyuZ|3-fdord>!4}ob$H_+E_fMn$Qu`v1i88T|i2pDQT6|074A^XP} zTlp)4VEcC=WG8A#>W}Y(@%JPU?aUIloZ3np>ra5sxw$moH5IpB4yS9bjTE@uyGac~ zI08xXO?+;%o=(yTBd2{`pkVD!GP;hzdGcrRbItXMAi6z%_6g|qw<$d-stL@;^+HS)HDqLN^{>vg%9J81-DTJmAm5`DqFNG8UC zdEUH_O{Cj=F3^*=2a{9BxAEt{pTl?F=1f}Ws)PS4B;Th5W-2Vgqv< zn6NgSnfE$D)rcQt0V@+8Gu%j_M>Hj~+`d76)I^ATbdSV_EhU+|;_3H2jqrfH7avHx z2zN$X(tx7J7}Vj-zZ-vs9ClZbc#iQR3Hu{3v=?y7zP*Bb*&*cTWO>2WF9)&2@CaJp zTrBufHJDERx(qxTVsZJ$8&KP`4rMbHP-@^RaFh$CgIABoUwdAVy%X)w%ElFq*UXWm z8EJ!}ro6y@jmYlIs2xl!=wQL5(|c&eNM$^ z7`wTIM$JXctK*_r5`;0lN$8* z_7aKOf0o?jcY(hs4mL1r1u75rNRDb1;G8gLSi$(Bz6;g|DqaWgFRUhQF=}YyU;xV& zG!oaM0qFi@9WC|k;=k64q_cLX;-W1nFnN!(=!2?-U@uJiL zkbG4}67f(;@Kaa=TleVU%Z+hp@ahA(_pY7)URVcZ`zv9fxQ0k+dQY z#Vv9|Mh{2Y3im%Du{spK_^-sLZfsn=#S>3-s)9_!3~;;6gm)Ktk-7bg@drHsCpCW& zgNIGD**uXfQ62zBd-BPW8GX!qfdVL-_7l5$RTR%nWMb4uqG|SLa>pnG#DYG%_8akh z8QJ6fpTYb279PgvxH}nrnRQDUX=hxml}>uM>41ApJUmT_!bOX@Xl;Lk{Jda^-{SLV z&g{+D!uG+r!HR+%9%Vp#n0TItH$XP(4GEuo1APn`EcM5+FxB)k3B7R^CT`vdB!>Xt9%B6RAq-afHSFj=2L4YYa4naTB`Z(S zS?eRAbjL1gm>LVI9g4U-c9396(|Npe+8n*_Y{g;kPm%K1fnrPh0(=tYC(d5Gp0cZS z8QA$r66?Wn5Io^LbUh0tvl?`N}XX_K{@u>&Vw{RDde|y!nT)o zls(Xk8mTZinniZtcPo>KYp=j_#s;_R>3zDu$^u)l6mJ+N;@WK~xNjbhCg(+qw`%cm z?5axem2DB<^Y=x&U&<1>yGO8hf-BtEXby>&hVtdsv=9zA6_@Ot3`WiYu>7#9U=8aI zUY*lTK3sasKYU|1EWORxdIU2i^O#ub0G}n$@3RW^Zq5UZx+O>^uS5^W0~p+Fg^4e% zh_hT74SpX78CO@LT6YjMxopAG!$VNNQkgE*pGwLTufVnMQZRksE1G1~4_}?5#6>Ho zfn)qW5dR1PHD-?q?Je=XOJW1GfDatMTt>m4S6V? z1h>_S@z%9r0-PlRJC%pv)AAa(`Z%KU08PQ9R{}yv?2L24iy_Id?#388@B>RQV#;<9otzEc3zrcC#bNN;It#wvT?@5W-jH`M z1Ig4FWx?XRq4?Ge?~YnZq( zf4@lh5g!9f`HATMMg$H$1vqxyLz4Yq56t@f0WU`%AxG@>C2@z;(Bu1T9QQUJTl;(< zW8G4+)8ZzMY1s^Qy%8|YJRT-pyMqpU<-uPE=&R@YlJR%ez}&ohApIZ;7gVIdlu3#3 z>SQ7vH?xypD42y8rbZBhAHF#M?pNYC^D*=q>eAbnQc1zE44AXMlPWOg*XQ@GplJUtcyBRF zLT7~G(s`$G`ZotyGsX*+UDd_DPiMsQ{1}|S;fn;g^)|F}9)L$u92tB0JZZgRhP&Ik zFiRs4OLT6brRz1ab!$F(k)Dz5xF7R14U7*IG$u-z?>F6}%^ zxA)9MwH1`#QvC%kK01atB~AQkLKRJX+9d9BF(#xSm&7pd+*4DWv19KxJf(aGre6q# z#?*b#kvN_77ltx?zHh|2_h-Sp%3OFIr!9FnZya1*y@mAtQWmf-%VCGvQ`)+wgfNUO zSQ1%>6EgX*{%sVA9PA_*(XRnfF}ZZ<`4P6>*79(%w+c+cbKw0-6NGdvdT`_uG7M&; zI9*_8ptD`FAz z7t_%;(jBQk;Lc&$Sams&zfF)1jAJCY9Mr?qzEfnn=~BMxU~C!yBp!OR$2z%pGPEjzpdN}&d) zRo%rN`&{B5eH+5wDWF)CO}9L=1C50PB+J^Lpzh>C!d0Dx)eTaDT1_UdF1d^DOiPFA z4a-4)M>}qBdBg91{X(pBLIcMSHAT;BufcRDgF&-mHU@eb^V^jaab{F{MKZC3ee5U{ zZZQX$EleC2-lV>jIn4E|LSLk@Bm$`fYN2wQiQC_VVuy5`^ty!KTfPi7dfddm%XX3z z6WDlvle{VRqG)=%=Gp9&QO^H;vWXSFBLe?uzG ze>O;P+-N!sP}7Hy=jWlw(iUH5XOU~M?!bvrgSN?$5L~0q_%lSnfOk@YkjM3))#51@ zk6wt0%ddfLl@sBOD`WzR?C3?ANcv^SL|Fag2TluBm)M@x#q$xyf~k_JC{#TP)0Wua zs6EGU-`iOdSGyXTGG!3%ZqBq8X`r%Rh?PS_aQ*x-I)==Ft7DtU#>*#2*mq@#--So~0_9$4x?BORvGv%z><(XNzz=NIA1U#E zrAExpn8B|shM)QngP+>I9(_0Lrr-9j#aUYIjf59w2kMRx|WgpicYNT|H)t%v*^SZQcSc{Je0&;A#KlBLU+PbyZu(%nYgl0 zSkpNi+!xQl#~zyCq5KWWg#f`5pBQn>c{R*AGa56-OeANgtAV<`HW-FJw0m|_9glBP z6!;H}!-MTf@XGHre6b*81UAw2VZC7MJrbm&51~r+Vt82`jyhkoU`=f-_D{Dba;^5b z^gDyc(!gQX#WsSQ%zpZ7QZ*jb94pa&c@29vcGG=%pTu{@okp7pLs8Z(iVm2p2fHH2 z2sVr?CcjpslB~T0LA%}xM$fi`y*agT+%Fp(6m#r`_txOVdMQD(qfngkg25mkF&lT} z=7CsB13uo##?;EML_FsfIa%um8B#;>%AQ~bT`OnF?O?v6#r2*X9>34TB8;79U$7;b7I{$Q3!=X^TD-xzy} zzTRn%kw2N|#8bvb6rBQl)7)TK{2D&FVogl^yP$k3gU>o)Exa2y4nN*+#-8CLiQ2&X zxV9}A+y*C5=dp_+{klGh*nJ#XdphyRr$WGW31B9E295U7{J=58XkL3e{%}(jxc2{m z)N{7*?9pim3mA4BhZ5!;FdsGS@D zN*TK1N$RdN@LrDCY1J{%SLx@=ylg}Nn+lTKmqv>XznXw)co6LI*++2r8JvDymv#=g zPtzMKVdSclWS+-p$kN-1(JB#OCw8NWpMYPV%&b57+EKTSN@d0j=Te`65_Tl=z#&3Y zU@#r+*HH~kpZdXoSSj%p~Z@j%6o3E-(HEBL~CkJ(F@`QDFUxUqjL8FfA$ zWv{J-agJJomyt+9`kUa<0d2TCLR%8m`Gx=8!T^HfzS_CG(3Lz?wFk~22e{X<2vp5) zL4!CSPCb1CPiEZ)ldvXydfiI0X!AYfF27~hl<&;Us}AGo0~P{Xb|9?jt)TbqD0+B5 z!ZWus>GsmM{Ko6A`ClKsqKi-L#aAi}N6T1QNM2rtZ^kc%MS&-=c{LmTmJPxsronXg z=JTM3*I`rZHhNz)1z(y=V9Kf{K08hURCviad8UiU76LdYi6bJO%gMY{{*c7T?@p@Pe#u!JF^^Cn*G^&$ietZJg;U=VYM_|g@ z-U=1Z(U8%nE0EYaNY2d}O6<|{?4I6%1b6<2th3 z#g9g4wZP8riEv3Z6Q50$gLO88BqrlV@Gm|H;kQJeBF9V(phOS{3+^)5!qfZ7!N4x@ z;|sCq>*7s6)HOniw=T|{UVvxcOM-p;*nt@Ub}F=s!n>*kr$fm&rk( z{h5br7VSq@zsr;}H3;h8m6L0F-!Ml*7cV?Y!^Yu^y^M+T8NOPxB4Xb{n9?^2+jCX0 z-aVvj**sG!v0*r_4xNI=JEoE&3LfIZ#vimq@ErE}ZA4Rsk;W`<0w2df-wc!aBFRs=Awrfdtu;1edp_9Pq zLLYv3Hb~t4wuSuCS_3gpAJVAk)i|co32t5SLaD%y#C=H+SagrUFF)kq;l^K(l9Nbl zXPzP}QqPn3({|H+-=?7cf^-HySr_lUdSdtXvw?sP&H}1ahi6z?cy{1f&|G^SR&;-) z1=nW4X5;Ntw7h`~`tboum0}1OZ6d3*7U1%x7SelG8S^?y@aO2EG^y<>nz9a&j__LX zv7?D-@-Yf(9({*K-5G>kwiUQl41a07C4Zfo5}sGwj|sUksJ?R*F6^9(n!@9F^{%|c zWXBt#=>D_pSn++aO=dLyTrip}y_<>mb2KnD+y`V9jTG!yV20H#Qcz&>0=;hSqUSC9 zF=p3rNIaec2F+XGv6~E77AXk|^V9{#){9W{mLKG-Y@o5@w$ghpGLrYL1vEO>6ihIx!@S`dpH&a7|+D=l%Ck5_1}}rX-T$)+jvJO_1-%aJ!^OqWRhrNG8;QrR+=^ zU}_=h-g*pkx(#qsrlhWCNTKNJ7}Ifl&m!M5nmWki>r)O zsCuV9!+Ez6Q>B+<{>~5_H@%rEG)KcH?M0Hb!G+Y@W-m6HCe!T1xmeHojQL4Bu-H|C z;W<~~VN@yJttiIbvsOXn_ee5>I^g?b&G`O)6d4rihQlnE;?N?-SK_I!MDoxG!aPoc zm@dIDuRI03$NskTP$y|kkpcVNMBr(L*NP#g2_IqEt>YA+7>0Y3K@sOsvrB zafKK+`VM@zRS_)ozs2A*Y=H0CzcEcr;& zCy$jJo2i3t^}F%Z`e6|C`2-X(Hj)l6Il)Y;mE_FVSWx-KhCybb{F$N_`e0`yOnY8r zJFnM~q`m)vo0l_~%|p-8u<&9A4~%(tI-&_YQ7Jq;aST(f3h_|Z64W@c8>b1kK))oG zN|sC0gHKe&V;mAuYQr>ilJ>(#+JoR+{vjNHGMQ}JGL)(Z-ld$Fr5OD9YK2#;Hi_3A zE%40CAT~~!=+5};?713_D_3RU$H{gT`&-rcv-_*W6IQK^mV3bIjI~z3KXJ{qhlVe%fx-iCu^%-`=Iq`ddI!Fcf|JcZeUU z7lQ3<1xW{$Arp*(QQ9C0S8rk0Iw`Ccvoc9{s?hmIc^jG4pfz_~5 zxd1I5MFQJ%Gw!|^jNvD0(SJ=1l)(Zj2);=tOxREF-%S*2_v{8%R50CK%%;sf=p&x8lXuVBk53Qsra zgInt<`qYx5J-N*IDV`v2e$9l{xs6m5(}|larjUZytKf{rJY1AI5^dGS(U8&k2AqE2>znbBvlvff=eES?*Myn(7eod~62jUrpWLj(G0C$WJLGXer zSny;TmtXOPCOuYwHzVHSaVE}x>dXz|6sIes!}S4Q=IJr$ieWI}U-aUx1#IXxR}%O? z8!p+sY!+TyG#B^OT_<;=fu9peRZQOI35pyhqz{4_{hP z>Yi^v_^XPBf`EuZDH!SK+8_ab$OY4K^n+oKs6}3A^wbjrwYX?SWzB zgCUy=WleEJ{T<9+_KvEYyolM%IF%=KL(?=SetEq-Q0FZm(K$l?PnDLh~|T|P@Z;42SO zPh0a3cF74YejFoKnLG;zX`c~y4;_kM0cbOGK72td4)<@O+f`!Wh<84Yc5otF3wwzi ze>0?nUcnxQ`}s~>CVo>E5+!mKhCJ&duU*REv)NC47WtVJuj-;Mrd#keZl;Qp^RQO> zByP>(;hgc={9mt9=@4ZdG+Dm^>vClzzMq!h&Hb79;(I&ERq}$N7Y>pTug%DsxfM^y zN}=(d6udY&1cj$hl0}w!l5KMCkkZxw2Sp9gBE?{&%AZ89(Crxcc?Z>3d5?>F)CKq3 z%xK>f2RM5r2jktRqD}t*;3WT`e!X#IfPXs12CjsqSvgSS69~fG`M5aF7}l05(6VzG zczQ@Jj_mlte|Y*ARM>TZljBS>S?d}3QerPid&(x|LA5kBLtf%8pMtr&?i0h@0B{Rl z4YC%;K-=7sK2J>o3kG|)^6@K@a`gv&oZv(%*A~*5nt9@yu>u&yaA;?&%Cu!0dk7xt ztt3QgnP9hyE>us5r``2KprJb#H{VL8-c?HlHtuie)ioMfes#ZIJGA5QV zX)s>YxJ*xZUcxMsBn)a;1Wm?`qn=URZ_m*rb&21V+KB9@CGIp4TE|aZNVHzFL0eU7&HZ~r6Kq`WfRjyLB*-!HL)(Ukm$G5^&7X04TfQgNpUuc&yX}-(Ppa3vUl& zhqbBifFet4NK3Gb%9N@3`7p}0K7EuZ0p zOrtM^8t5Q>8dSAPY3sdcUqv-eE939Hk;?6B5;vs16=&=lfR?LfP{;JxiY-;nxI8Kd zw&lgaDDR)7!u1JW>{Y}~(^}wm%te&wpClV6HNnOK$LU#!$3#UZuyeixa&bG+-Cs%Y z?WrdzuPvjd?+Wopd?2c6uY@&@4d5GHM_@DKcV(u*PfpRpV7Ep*&>=1Pu-6RDAE*m9 zg*c&hs;anarxU(A>5WStyOT-1ED$!%qh~c#B*VNzD~>n&F>zGZ0@IN^Xlr6gd@lm# zcgRc1Rym^lk-d1U)tVYI@qDwlbLoJy-Jq2A3iaP@1ihy=bfr`TczhZJjmy2@z(^I6 zKClk1ek(v1Dl5rRyo;7cgv4n=G`w77f)nm^!5Qb_(66b4QyG3LlQD_ynAt0k?Wjk(NG&XSA8ohhi(p`rtv-)U*V< z&&?FPHRy+#m#;#C>OT6e^c<@Buf}V|OVMQGM*36c0a3mF67!#ZpvPaD5qDM#|Mf8* z8sCY)&4H@Oo^=n^9!A(DhF^m*Z*&Erm%d}{;B3C9xgESRn1Rk$#|aKz(iY@ytcKU;%6l=Rx1-#W|-nN#cm9e(t_kOF0eG{ zE5FR;8UN^0NtClncl#fr#*x`uKf@00PE$FtLr{EI+;r<=%#nr_1*OOWO#| zZ})-Ge0jlAg)+E&ga<pod58$ECl%)!u=DQ;4HH?9nm+Nm}@05zWQ0>w3T+a_vRGRde9v8-ai7F zr%hySX@%Xy)H(Pi_Bb;JL%@IuS5kNpN6R9q*ypkXvPOA=(CIuh=!fCY)9tu+YA%{s zXOkAm_7X$+!1-Bx^VXkMHk)D*drpN?Q82r1cL;O6spv?GM@D_r}poGWd_I z!5=?TQlpsf_&+iRfBgJT{w|MTw(#ox+x{z)Fj$d-RA*Zn71kCE;E zRzCcneo*81-4|5|^3pS6_K zv|azYp4*?-Mb+kieO(;r z{?eX?KimG#vMh6b{c)lFzwa;4J-_#5|4$0A``_A2(rO2VF0=Hw55Ju)TVgHGd;DXk zQ0du0;ns2Uxt=?ImJX^2E%jWT##wfHg=oKBns8xbok;r80PdZ)YCN*8OBfTY$Ne?; zf~YL#9M|OiWYGtiBfRr^N4X0}c#ASO^p}P-Rf@(Rd&@o6qr$E359MCvdJ3-#jd|R2 z?IL9(?J~JtUxn&cS48onPI65pUS$n_L(59yR&hJ_KH#oPH{~wp%;vqmF;^6kStOis z{U=xH;zCi_>vEfIMUmWtGa7B`!u)uFWmUp+ZRNtrH5<6)4j0P~S=#ZoF3A;I2s1c! zJ}0@USJ^i90gp=7u`RirAG<}vmyH%VjaM#vQSHhNs*B-03{Mf7jnw0Y%)6LW?)_?vcF{memS zSFIO``X2U(Jj!ozpIk^P%X`KxtM56-^{BGoeK$PLoxLcAXRvIRC^h?dsnpKFJh`3? zqRu92vt(H_S9VqeC+P8Qo>8chNaq2++}dKgZQN$hijgYKc8;R6Ws~!QE1a4$ZFR3M zu^s7@EUNB{u)Wk)XzTT5pq;X1zir&@vlT`q1I4bHC%Ea8+iYjwXtLEcRjnv#ykEZG ztG!~~%Zs*h*Ig=ls{?s=b|%^;UNN@gUu`Vk^@LPh|DahmrTLxR9?omq#;6^|c1tQa+eZQRHh)Zr~Qet5{eqtbeS;-KX_P)U_msTb}=2IOt3Y z?~Fqd*ME12D8%x8sRHk+X!_9(?#Z>v+=j>1+_hmRgrtnk`=atmw8ME|S<2=KB9mhe zMa?5las$@|l`WnHC)S8D|jLKvqU8a+=MTke{vVzpCj5`EXVor zGmPtLK8ADMEQ^;}%@YOar`Rkht`QbgeGyGc{lIaa&lS#iD;6E>yvIoK;V|IwnsfP*Ev{E@k9$glmyxz`9$zLqeNL(T^I{sML z-EvHHZ~GBWVv?6|c>G|l>5A(%C+)gKvUl#-Sc@Kul#SmB)8F3`g}mD#+;mJ`bY?|5 zr^g^vWVWeVq_Qhbm|7$fatKG{=_bt;_QZ=S$PrQNy*b>Tc(HJL^jl#&SC4al(FdW_ z>6b!-8eL(&tM+0N6t!)ps1VtX+nwmgPA zgm-Ao_VN|yN0k>1&9&X$*;aO_$FAHZx=UnmrLAoDy6mz{$=oujs6O8C)!}6iQ}+nhy?Y@X z>HkF3pmtiw8LWC$&uTx|vSt!bUwpFC?=?usBV`@p!f+w8r`3r5_ z@9LM0w;IAJoHnIQ{gSQF=->lU!MCo`;dLK{TMq?rJ~^0*_U)(<4c=BF^j=~us?uFA zYTswV`RHFPn!YSe#0s+GR(PKhPCwT!G{~#ASrDu%I<&Y#lxY!Wb0d5US8d&9?yoL) zPSG@F&NR++uC3fgZht^0XQb=|uC4M@PRgmm8Su%ypAL!8LTx zw&@u4*`{T?F*kMW0ImUNGH03m5srVi8b{9ho=tc1IPU8+S===;M{O##Y&aXTsyP1T z*<9YGft=opQ#r=QT<*{#vfLzlUyhTT6jwQkP-*#q7suk&wz6c*KCwpTWLZi-{bk8{+sS(HDZ^@YT`2p+><3mlMYmZG zmwB^$SbkQ6_3~La#u%~M(^FZcDJ|?hRfpKxtHdmm+DU9}eF1x)f0LDZmBsR{k74CLOJ!9VtYVu- zKeWtiIcMekQI@Tz*>2_GW#I!Jwcg$Z-@`ON5_lpyTaIt&hoa}lY$N_}F+ihLc*{&03LyF$^# zI?+JMI$7rl>u|wDw(%TO_Ry1uSqgK@tbes{VLRD8XY~s-*}cI-*u&HBv8zKiTWuOY znHBiLfgMvsSYf5t*k8|ju&ZvbX9*%|tm8Z7ZA#Bg;WYWr<**wIxR=W$T&sg@j`p!4 zZc~Q^cX%h|4j&w6lhCVUqf`;et+7<*vcn>|AI7cXzI_9{(}$e6`kw}ItS1RM-s%rI zy{TE;3?pgY91T8qg2r5KWr!Ddg=QtEXx%Z+=)fRO&$>h0@mz0isJc(*rG>Ubj5XUeE8`@q^xRqCF@#%;_sfSWdZ`x{J8$K2~vmG_21hN;}-mqlFp$3a$SRNYv*bdL2KmM6KOuQ^i*EKPs|Kh5D*op_)1Y;X;0 zN}n9-Q<#Z$)A*09RdEAZ%M6aP7PK8_iBi_E#|#^2wT%e}=q~=o(wcP9s;1J7{Y0^r z75C|<6)WVR^`f1z);EPgY+1K@Rwyru{dDMct0U>AY`Jk)*jg`Nuu8M;vk%SKZ5dZq z$Wqf=YGpQ@urBSM#JUn@$l7QqVIMG>$)5iDrzQVxKI^2T4tv4R7WR=sPiuoWt?bT; zBdnRlf41?$5LWiSL9E?JhOx)SC|GYupUCKUob|zFt5{s9W=+#GXODfY$I|RS&3d}4-fRUQC6->^VD?$LL@R|34c7Xxr7Rtn+br#d6js>l zVr$)bJoXZzU_CB8Wv|uFUAAnenaS)xg@e{}Ss$#~SA49C?;W*{9&2db zdFKhMuq=Xg?M^wn>g-wT5yo$Y0d$H9loBScq z*sf$Ox8vMZ&eD8UUX$(!-n2<>ob(7SUed61?yiBhy#7NWoE8z`6t*wmnU{uhHwm-2 z`^Kko3%nzE4!ND&)W>EVvQ~!s@cVl1drk>AGt7=Rr96sjMB2D(CU$W@3{&Mc6`632 z?wWBmXGe3l7k%Th9CLVUv%0y<+*fjs-<-pJc5WP(j5Fct$xh={t-ZdT2p@{Y3Y$5CGdo>&5Mec0p=LyAC`NxYcZHyAG zyVPiN*(al9XF_4=rd3KdLg&2F?@JAfU0w@Hmd2Zx{{<^PAFGY{+G`{H;d zNxM{1Nz$(UGw05fRH77p$(E&5l8}%j$(B@-Hc2X}BuUyobMH)xBuNNK5-maqA$}wY zzy6+o=6UA1bI*CdU+;5(lD$WD`)0Y+~OA$_aw;xjS zElJV7*+hS3A|-a4f|)-qv%x7!=G)YPHM3vN<#11WW%#~W~mcw+|-4~=I;Z@X7&?w%x^A zWigb7$QVSFlnaJ!6<}!I9o(9850>l;!^1~{Q2tK^_-5)%#^;$(ix$LSR`Um}3!e-= zs*+e?pEt$-ya4N(gm}Rmb@D9R8HQndGG? z>|QhO`*aR({~?JE${S+s2OVtr?DHVDyp@&8-j1^NUSb!lE+I0}R%q;u6n{AFJkwju z65~WkK5*46y0vEtk0P2PY@VyZn$(>lB&Z%%oW$(gHP>;0-ze46lZ6xeR|^L| zhOl=B=VFZ$x7ZTf%h*2uVr6G>EhYKZlU3WR0C`KZa0`75Lb+pjA=HCNakE9@avs;% z?V*^P!C38U1#Ej=LfIb*#`cyc%v;kRZ zy_pKyDGk{lqS=wV5-6;_342~l!(H(`fbGq&pT<&lf0zll>$R|M2fjlK`ox~NpTGtb zOoWG3n%rNl9cXIVWW4H>G&yH-1-F>(fryzSgakn{%G>D}tkISHr zS!eOV&TK$W)ya*6+K82(Lb9q@RCwni1W%er_`-Jr>q|38`1FlvCE5c6hpcfnWz80@ z`v!^<3rYR13SxL=KVEfZKKYv>hoZXL$TjI=a-9lU6765c$Je<(vioI(O2v-w%0Q8p25>vuT^s ziRj_0ig687ncDe3eWJKN4z=yS3{12>EI)8n;4WK^=9FwAzsK^(HNz+PgS0bAtFu9+ zo&O`5`SLH1Xs49?oPgf?dV`8Okm>TJLK4;4(u5UL}h2^F(finhp`;!#gzxNB>@hyW9 zYqICRbqDdx+d3q9-^Qx*!UQJDahP{GRLuRJD9;;IWH2pVB}}cQKJVFMUA1QDG?Td^ zm=1OA;2Zk8Ik6fYW~bdcK5gp(eqgkd#O~GPEx&A`sfhbb`H|zK<@`cc<6j5GZZhDO zuHTME?{cI>L|&PJrYp>i|r zN$*ez>FkWe_Yb*}4RQNEh+9!p{2%8AJQBSYOZuRuQzFC_B=$MBGM7*fl; zi*p}juz|Nefm6#wT&#H)sSZrR>u=MTY%oKX=QeQJPa05%MkK2?XaqVd&5_LCo1j@h zv7`MJAhLEEG0Yicol*~y$D5SU$Fc87!cl_64mLt_k0aTav=KS^N|MC!=}d-}@hF<; z;niU$@qyQoB#soI#j1~Bm01>=vc?w+t+Z*|m~+H74wI%OYjF4DIMSBvhaSzJ!JW&f zA*rG+$aW%!f+XxwQn?C!P=a8E9pcnYm5b==S9!9;+y!DL`=Z~2K~PrbLPtEhKi*G7 zW5=As$nJXr*E%9af4z2%4Y;6+E~UjFa@-i{ zqCV@|%@KM94aicryk#}M_PfX=VXrS7Cm;63GBnex}_ReQxxTRnaz%he4n zuk!ah$N20&%xG=%#ILdzGjX>yn58I>Nx7cScr9FAwQTGpin*ld+O*;~20vtI9nwsp@!IKO?p4Fn{*gTi)Qe z6Fs{82yeZOVlF9ITJ2q)LPu1)<5G4N^3I9moJO7?DTzmH_nZPa%DW;(>v!;eU=ur> z{0nBWG%?O_!Tx+6@l97nodLS^nJaV1#FIs^v@edF+Zl<kZ3D8k7^I_6+QjnnM;(--(DU;)eTsNL8I3 z@_6wS?KGSc`AwU+Xw*(A*k5=G+c;GrWd$0{zM{%*J3k-hv4)!_@ zYTljHE7Fw3cg46mUp{?^P zkgQC_)pMkY6sB*;#%C`8tvQ$QvGO*!oO>9*hDxO7 z{SXR^{PEorTiMV#h1lY~GD^)^3}TnBLY3GOp<0zYdKLZ*bGp-sPs>d=w6BFtO?lxJ5crZVQUh z@_p^pgc)~9^+R)dG+Tn-IBmZB%vH4F9Y44@+NBB81j zkbSQ>D{<~E`!r_**uO8SjJVZX{zo>8Qe5DJC3CG=d-W^WJ$Dg2J3kHa0V-Jis|uV~ zNX1X)oPin7gYbg7UFf6PDJV5$*?|vctb|G?uJ!2#IYT+ftTKmCCq35M_A?M3t4`~S(3E}N5(B69=s%Os)6cP>iI-;7UN46xxpzCcg4F1EQ@ zDe!ka3(lUB)E>83bnuX}prw30>pV@F(#rcwrdJrE5MNPz{D2Z^kMe_^3DZfyh%(za zB8HiF7ck$BaFv%LdElJQjtJI(w)$y&-+d<>zVHj*yeoo&`^NB~s|Qlenh50!77z*W zqKZvF;@TcV6eg+zK5EU_t5TB9jq9Ykl61*^`3&;w$zdGnra=_D?!X1*%fwmk9C_ZV zLIuPZLgyBHwplM4EnjC$mLL6w{T|Opy>$e8UDLoPZ)QVrk^wd!^+f?ivRKaL0=qW+ z616Hyl>0DFy=={5u++P!SkkN*R(-H0L!Cha1KVWQ>X|35&A)@(l75d%rT#-8;|*GV^YFP`hEo0Q zg!)4aiR$YpGJA0=wq7Gkq)S9mz=mRCR8~mx0yId{ zvEUq2d(o0}`$vTKNt=Z8W5hVMEjp-kp#+w6u_U7hcfn>(g=jAoXPw{7!kNB>__+$; z+2Sh1pl}Q8)7MGGE9c_>$Oh1uFG`di|AO;1(nO|V4vO%9F7UfEj~Gr(q7;W8;?H&J zNK8`&T;n9j&Ynu4c^Hpt4=Rxqt90`HWH5g3rbRMW-vm}RkBH=5A{TB|3EC85;CpKZ zD_wmA-E46rq)&pRXIi5Vt1n}5r%{%x%Ys^y#kg4259vI7!&Y5S7yf;@2#Q-;AYYnd z_dd^~guJU}&W^MI{}Z6K1+Q|VQ4f>oU< z0g|;3*mxH^(0M-y&PE|%O#Z^Zdy}xizEMHYiKncH<2{SX;d;pJ_6F8(g%!%*Q$~q$ z10bB;PiajVqym;Gu)#xa5aZJcih0%$|Hm0_-%NzQwI-}n>G4<(% z0r(8Q5Ojt+!m7*Jpy70za^CS&_)a_q6rQL;`Q{)Y+xv!^(JF=%bkivnZ+ql3_kThy zzaZEhDj&`Rkh~^KCuQa{Ln~24jWo{Eaz{gZoY>0-IZ(TI9w8?RWM*61_R@| zLH@7~-6#GNk_R_(-!qRPt;ltpd7>rVVsVw$ij<^%4r`#$N*^ww`!q-WOeZpLPtfM? zROzvSGn_pq$0>c+=4vhG(oS_ET!bJ2iP+vpwQJNF6Z3_%M(rWugT9jpF^ru1_H*Wb zUSw!^G9Bexh>}Bl&<~nLBBn~<)6_{;nmTgLC$?|{yAUn%%L|#FY^D{awW2?>#Q9A! zfpp;uds^gFj3BjNpSCx>3+c^cs4u{TG#*_`JFK;5FG?iBE6Zb`+R6&fM4zHGeASS~ zhV#_gzw$_Revsw9TgM=*{Hb85C5akvx2JlXR)M#k8FGu8&Q?4=$*MkGP4$HuvY9rU zAl+^eYC8W26t*|RXtXNUUND{Ax?(3=PqGDn=B-3mwG!Bk;b&22jhw)?X#hI4I7;0( zpHeU~6H1=Xr9vg{!m_0f;B)yB%r3nIBJ_Kzq2mQ~o_qvOeiLx+{k;@S)r9n~iInFe ze;~zH$W`$&We{4-KAFD&&j53a389wt5PwVS#4+l~V0I}?Wkjyx6CmwpyZvSRU{ zld@PuaR%{UtpMAV&Cz%7gZS3dxHj}A3U6-&(R@+Tz4WrsCua&# zYFmWv5^qS3c|^HrMzQ(%)~LbElC1AbBLADV1bV~1*@0sH(LB-IX+0$9Ej}Oo; zMQ`%#$_cVZ{whYncI1VKDO%Y4mUNk2B_fiq;hO$l6pGJ-`|fwB!9|?pt?|KiK8Fw- zyM|+xOj(C{bC5`zgypV38g${%19qiD6!-U50$p~$kYD&i->Tt%lezkwMm}WrAG&qw zHhOgOPtx=07X2huoOxFgz<9dYGTPpvRq+Mut45|Bpuf$uVJ1Y+X10Xw;obL3@#6BP zRib{X%)#&~zGh1_N)GR)uO2wT4Bs{6XLlau?M;6}zZh+`biNYfyS<+;os`LW2TtM3 zU&Jv>wJtIi+ zr?InC0C>cl#gcy>AVy>nXg* z@F*^~6=A;ypTW7<5BoWL@m`0dKaXc41LMe!36rU@ z&$+l&)P-7Ab{6-(ioF*p3F<_Jk4EQG=q-cT};Qu`E#u@&UC#) z6Zp8Ep$8^Z0`sZ{P3T~Vr2ky(tHR)j z`|mB=T@vy8L;=yv%)~Zf)mZCqHx@a*PeA>rPx3cSBYSL4fUmJQmelaTYky?0%`xSe z|L#QGX4~Sr`AO6R)*T1_uN=iw>ZIklH8rsMpJ0N{UToRRu*t{01l7UhbO z*DJI!5x;`x963u3Zdydd2fxBCIWFA=rZZ*DCz`jZ3PvRz6^VXO(8MuHqzq4hNs}qQ z+tu_@uCgwq>&PIVccZxc$5mwZ%LRQn^bud{a3ErVEZ&fpO%(oH4iQ(fgw6A3k-IY^ zA#ZgsTjW2CkEpbELzC7@05Qb=+RDswnBNTxCcmllPxBeH=ZabDV*{ zB({Oy`%R0nY52q>c`o7IZ@uEaltnTM17=LnWDVW}-=$0Ln=npCMaf`5HC=scD<@xa zjGwhumYfRBrQBB?!c(ucAo)G|s&s_t3fs7%W5 z`fsRsu?mxM27TSqRq!riIxc59tb)MDY#kC>BY9(~{qCc2zYVnUI3K_5tb|Nx>S%Q%KQBJRbOP zXgm|K1{xuf9npMSXzo zx5{|Z69>|~vYTS;Ruh>gNy4mCo3Pl9&6pB6;liJtSnrq%4oX;nBkp`O9qnW7KZimYo z4r6MT8mci@fTgcjlGY4e5V4EFSqF-6>+UUN*V~&oA|o3QZpEN=!-?b>#}R+WTkJrM zF@zjDiTQJTP?N4L@jswT@|WAA`)lXpw_f?!%lIsm7Uy7ogEeB*%y3q6KJjrnMs_~Y z=8J2anDf2zTwq5R*ViG7hE(#n1wRgR>=Zd#Z{9yzF=81Lxb_*{A$NsedifpS_ehQj zOqOP{XNWREvjuz@b&xb(Ea%OKEa|mZuknxT*K)~6W9h*}Gp29&HK*`!I;W-f6NNMB zOuNoUawXMgM}) z3^l&fw3{1C^WgLxFK`k37?$yOVuB_Fb1!s13Vz%@iVrNVCVsaY!1cQl-fg~}Xl0$F zY7V=Rs0)e0_3Kh`{{&wgTWy5>zTLu}cjjW(q93@E46stBi$UUd4fb@)hyEX;L@RYS z)@Zwk#dj?rf2*wFL$EL2+T00plG&8T*#o4PT|*6fpCdyCWq8A;lSJRe4ZqHQh2O3| z0_WeXBA0q%Nz?ZMHaE4OZSpR`rB_AJ1Li-{u4zP6S4>6K`k}Zj!2v5>mV&QSvaraT zNOqy8HomqdojPoM3}?NrMb~|Fh|$pnl=I$q!mv+ixYLMZeOs3ZO!HN+xK#+~xu;Ou z4tIiji97BUTSNjcn1gn=5mp`KAvXIVHrL+=X-n$KwxmyZ!gE)Mswk#pd^^GY%M_wp zZH|NW-s80W$Hs@Z9VH=|pP+Q77P{tDNYy^>2j{9fy!g@)bd5hePOVSAj+YmHLBT%$ zq~d1`_4TbIj^6$n7fxD;W1VLSF1YogKGRVu5o-d&OlB-EH@MZw(=h=45P`Ye<%)Z^d}TH+hoRXbs};1*~D1fT%1x4WnaU z*`n%c#A{$8R*0456r!EkE2f@wgUxx);Z+o)V<}ekVEq2*FuBUq#!ukWzSVJB7cEie zOpdcOI>TLvR^{IyDSo}yEv8P=#7cEv8|m9VnSZ&rk28O7$z-1RLC49-SS@f>;InEs zGJ*_cZvB#M&V6td@02}8cP|ZL);BC8A687SdS3j2YuCn1+);{F|M`|qD_PC=Wo+ax zZbS@aE@m}kxSQY7C&DZJ$ztB&WlXS&87~$r!ce+)%r7*1tg|LrzcUD09=%{Uc-_Nhd+xAKvY$wt$qH)Zf7zDZ%db;=28>ZswA^^jevT?# zpAX5O+J$cS%3*1&qhRP=303{~H8o_wQQo1>5T`Q{*bXVM*DItvH|4O&8<#?{sxIDn ze%W}RF-@2|^8mHsUmv=DeUC?gmR4^_fd{L6E6Pw0&J9Mq4T)jzVVy~ zRk>LkMi=ga#b=7Bh`{B72&Y}b^73V@uSgt3Tw8{PnMx4x$QRpNlu_EVY>~xT5j@>l z4D!y~Ip!v1-p4E5)CVsgs`9I_RV+l+0vH*bq4mZBF2{>lr#I*af98UPXLNUUIi= zwv&NRy|lyGC&=rCJnd_9oHH40;6xr?6udpH!nEwLv@qHgYKqUv{Cp!z3LP=8Sbn%_l%eV4sZ=6)Kh`ppW~zU^mM&zKGTZ&fhY zuz-<@GRU9P%+^c3qWC=%aQe$}PUZD=IF*+rj2mY#WO@|90-nRps_|Z0Yz{!%LiVLZ zCE&xYAer4j1szPKRxQ5y=iDS$h^;x}1TTJ{w}Y^%Sn~ttE+T zK7wAYGcYn99->o^C@AxOPCom)|AMI5K-aJi&K~Yw@Pl|lP*5^v^Fx`_L{0* zlZ)+Fj_ZITyGg^6FI4_M3s`OX1h;ZGsdpjzR5AUHeMk+!70Yq`NqRXd5zfQS=i@A;y3YU^Y+o|&d+f&HSDWy$z~9u0 z&(UP`gFABcPCzAdVqmh~5~P_SLF`3dqwnVmkjIilj8gt1?n;;N0+|-_sPG@et#<;7VNcgg}t#ktk2X#g4_jVRM>)BEOkf|I!@@rv?KaBb&@t!NNZ5YrGj1d+ldNt zSs--tcV&|UnuJlS6sTHU1+x~#VVko52^>;mA^r3kw!QBdyv(^Mj1u>!LVV%`VN*W| z;(a}-hOv{ZlGSuJ-5;~Y_P5!CQ-i4NJFnQPhw9*C(oJ&{U2`J2)=P-ahuxKh38 z3vl8yPd0Gx2~hpDk`+@=0!Pc0ROqDBP`@cxpk`e|#T+%q7fzT!dG86JektPeiVv1i zIX9`WOH*;F_&T^8?+K#KG=7jPLx~o~P${Q>vBe9bsrawCEIEJ!{%BP72cxp{O%7e$Kx%G2v|k0Vo#=IX|E*q(2abaPD3 zxKH~N4y8Ru5uIbyXwY49(3T;^2VV+zj+jzAH1B|DC*Ydt;ev~fN1-=hOz0YB09;UU zWhsA>I`C#ERex}^#m~EosO#Q;g=M}hrKvAZ$+Vwiw;qzBw(D6q%^-vuSy>P;eWaIG1ndcVgu^;Oi7Hx+`lY7BKLw*?itFDL6JX@TZ7 z6{NG)52GeWv|(&I+df4O{yoru#;4mrP5l=PPr1#;R}SMabyY0>@(7-Kf1KI;AVJov zW2k3$68qFA!m;Cf(az&yxbx~|Fbp&!QhyiX7$kzcgBn?pvl|6zj<29ubuW5be+mXF z9z&hqKm1KG5^bFmgU*!&V3F)oxYhd;6`^yG`1o99rgg@3K2h-(n(R20X?`>~uHnz1LqD#hv$kt+uZ}(9 zVlN2z_90ho5nKUZ^n&vE69Hh6*NCaXXi#o5@VN`4HV* z9>ZO$naw{~-%Z!1pQ2k|R+F^5`TTtbI7>R1F*32C4@-v84)O-P_ky{6i-i>Jb@>)k z_(X)S512ty9!nXA6PjGn0YmOsmpEha{5_qYr9m4nFQ@sN=45b`3sE%<9|yckj3$%C~YK%)jDg-I;dO0`GQ%bV52!gA(PNZ zlM1;#ybo50O$CLhHF(zL#gKfr0I#>604t0?u@PM}klV>u#H}w3m5NGJOU-1^qub)B zSGWKrFMnP6hVO&dA*onoNu6czi{Cil;S7{A?+NOjwhiwMUJPFK4J4^5tiXrvZUp! z67m+wBQcMD;lfsg5*iXww4(rxiQYgZzVdL8Ediep3p9G+816IAg{=YubYe{@kdG>~ z`*IIpOHHr~lIvy z`%`0Ny~mvPSvG!UWa6H(KFl}O@8J65vlhQGmKsBx1BVs(S)Z~A#)eyV_5p{>vSTv5gI@|IQ} zM@O(mo_v)|)gk8R?t{!i)eMyKWGW*)YZ`4eO1g`9nSx(4zs-c zHNBzDo&RmJig)LiRLyGK&xC(g;`!pwwDYEGG?$UY%+J>4H+Mec%P%>i!h^f4&U)K2 z(;LS4t&^p>Wuh~A=dY(2bEQb8ExmwOodHz~i)xs(%Cn5g@27msvOeDO$R#EsO^W}p zBY`)lxguktIMkT)$x%u`|;@{rR&L+b9R zRpf#&^p^@6e0~>qEIY>TSv`;Bo6bPULxuhvnui184Pi^cY?3)u8!@i}*dIZjwEVw( zl>1E_&I>N$soIvrMSmsIIGqI@E^knvy%P>!=s;^+TTJR!cHp-bMeMG9rX+Q6Cc1j8 zjm)ahB_{diXij_uDlc(I&*V~xv$!9$-RH{lMvJs&1GX0i=5URr_i_Di5=l2qv!D}YN|C2{imRf5dtLz2rMvWi+)sVP3warzT;C||gc9lm)I`73i!{9qoq-+slc<;D3f3Y0ZI{m<8MI!#-(jwgO zwGBJ^mBFC*UNTj*6dUz^fJ`ZEG{2!0T(&Gjt}hQz%H#gcy@jbTDbNVJOU{B{pG&~; z!*b}?<&clSN4Tp+hU;Yx(|bKs`0TuB=HhK%?0R$q|FHto9TwHJ!RfVV^R~6Lm`@cl zIN(j+u{%RgH?ZMX=U?OfzRGY}y8`H9NrrxYJBfQ+#By1I8T@3;O1k{Rf83)=OS<%d z9zD|1LL=t`TwAXpuUbBv#MZFP6`e|Y;d5I)IUmVxENp8Y3$iAmNNk@h zZtzT?Ohu04Y5H5o8Js_r!P+J0dgV7rk8PyVcYI=pc7;%4-8u2dYd&o zo{1vG%COwx8Q39b344l4#;%i&fToZpKLtCmc2hQp$V;Oorz&7#krj&E)g_R@6)arz4-BFE1ZA zyzB*+^HZoGp%OK{} zW!lgKzd|H2dnrCvr9hHJ3fPgla&rFhEablZ0eBehCOhvvg`mDFYB;A4JNLIzu|*Xm zpk^j0#*9&oviq?;GNvb;Nh4kccF>t~2xjg5iC1)wfQa-YVRGhq)@Y0e6S^FZUk*T4 z2lijOg6aqSg<@rfXkFJ)vfxe@ zW^z)n%JkC$Kh2v&Pbm;NoybI2Up|3GQ)d(`gQ|w` z8Fb}~X2$a35ZBB~a1nF$=%|4vu3weDcLesp&9{Je=Ewl8@pEUj^0+h zd2lSF+$+U29k8-m;H}JCKj~r=HlM@iorky+QfYkm2P;OhboZ^?lwMKCiWu>pS(7$#j{@$S!60oCYVReI$Z$ z9cPM`jQ8i}H}-JuGw<`OzPv-H{w7dEy%VtGAsu?QrVkPQstVOhCZHhyQtVg!0IH`? zp>kzD3Yv5Jz({-{DE2NyuO#Ey5bqgebbSfD?1{pKrKaeCzXlofmOzyxqV_Q=| zk|j5VZ7-&yFl$GWL9NF1PhU~7_NSg zlRxVc;d^uh4%GP#Ti#3{+lTK#Yxs52onMa!&fEv`RFRs!SsLw~JCCTkdSE7YI<5>W zq8|KmBC6Szi1`zZ9vxf)g|~H(>atNx-Q>_Uw?dI~nXtwf3(7vRkwvPtoaKJcC& z2zfe=B)y;lV#~V)=|1;ypPZM#f2@=QM~gya!e0s|Uciz+)aaW-$>gfL2t>$lrz9l5 zVsTFdK2{2r=27xEuM@+}#83#|=!&9TPvBQZH%PLm6X*pW#d|8uQ2U#?#Bc9qa8jJb zMP5}S_w|+`XZ5Yr8(s|=Xa*8doQ~t?$&>b_VN|xqW1_jm3u*QqMZ?!G!$DD7v_;O4 zD5mzKQR{4Et@sj8G2KPtJvco3VlUZc`U$AzQZOfME1@bm$U1FEy^_`-Vg4HIRKYZ^ z_qa5?ppMbT*HX9{PcAa6qBX0|E&GaG&(|{zWk0z5yaU|Nyh>zm$8vJt{>RC7t{s0X zYu^9XXXbwWGOKx3Cfw*AGyb99G=AjSM&?J54C7+1YgLpZ$FKZTz^rZMh!WqzsrEsEVW&;04j^o5m^$cQ&1bmWX0JqGJI@!Jh{MRpFT}wMt%b}-8=-wwPONJkVTs20uuLOHMU`9Vkd>`RLgjVEv6sP?A&8W zYUO4~+ay3oB!1#Y(A;GL zk-*2;?QgcAc+U%R{i!J&RNKLpc-?~l9gHKE7D1_UIhEu!9T~*>gV@<6DEsi{%GBH( zSb3ReV;?`GM)FJ9>oQLvuw@r&-Zm98PwE5_!;zIEv(8bHN2{sonljYZBa6Og>!U|! zcjBdk%g1xMj$kzP33XRL7Kx+(vHJxCjXhh5SESm)`zIZg&WcIctjH1E#<}w3wNv3* zRu{~1mq)Hr6HsdIFhq#3AXE1Ol9hoPJ1)lhB}YTO!hUFX$^<*Dc%-8y0g7Jb><4pM zWVy_Tn8(Q?alNlpzPAmE9A;tn?|3x7+>|Xk-vwD0qj3HQEjT!T8UD1q1tR@RP|J~9 zxHdJ3a(gz5jXEO(5e=^_?XBLT@3QOB=O4$=_`(@%Zg3GdDxHC}TQea&r4c=k^Torz z|DeX*->}y12%*^mBS>p|h*i#KLuj-wQK*z>`!A`Y$eD}Ku^k4eW!%?`IZ*{&rHW|a zR}(dlDC3;m>T!;g1GK6g^42~=19w)z*i$*q|L6_++xs8f$fkLW_PCy2>>bJP3=v_R zWQ~~B+QxL_?XC0&tjdXe%p#+_HQlWLfUCTFjyLbQ#o23QA(7@12cR+j429=8B43SE_?Ph?3P%dUP=!`FzI8SZOWH!! z<%QtX!d6hMWl`(BL)a(sqovBAF^>AQ04z_7!LP8dXfVMIWd(nLLCI*GbmBa=w~d5= z1CwE2%w?qFuZrKxNYJjm#kkUV9(?e(rxKg|a8hm%sD7VG*7l6wSC2d3{)i)rubqxs zid>LXQ43@p7De{$+VC|zo}E^*3$`X?fsH&1&WnGb^b_~w zKB;|TfWpF~NV)wOo29o4)oI>hKfj!T?lx{Gdu6ua%6v^!tt~>;#|WtK_iIqo#18bY zr4TlCyP-Qi%EVpRhn`=#j}n|jv3c1oEScX%^{g!>#-9Sv#8MNK5*|aQulfu{z1yJk zTssbF-vbS9aYRGL88n-3Q1%)J*^nA@`r6G)gwBqDCPNFPa<3Z~$(=+Guo|l%Hyv~Y zXQ1v&JA8Yv14(}U$@WVmkXDzoY~As493St6x-EASr7QoSr&E$^eeQ>;=q^-oP71$? zpMmQ9lZi=SE*{Z(2&(ss*uwo*WKsDBq_?IX{k$cGd{*0`@SyR`=9G`f*Y`Er_$C&o zP&Ba*CBnvpArev(jsg?)k>hw;k+)2&-CaL>0fyq;+Wuj#y!51cD!_1DtR%H4ee zzh2jyzmw|7A1F;`RDQJ4GSZe-KIgu1twhu+^+^rVOdRG0=BD$rtsIy<=>?2dfgzc9 z)4Xcwj){EJ!%xhe{j4kZaWg`AZ{37Ngt-bzA} zBq5bls3esfN>WMAAvq->Nm4l_%wB765|U6!k|Y&!C<&pG{KY%(*ZDGY&CIpdUh8*1 z_aj26EiI!@M6n=1J`XwhXv30HHS8vB0)<;lu*p|TLe$g^=D!=E$;YB_YHTMqowEZq zyxb1=UuooI9M*#(ew$$Xv$rs5@ok_z=mh7ykiZ(hI^m!}ClnZeM)z@(kp6#S;C*Ng z7VM0I6`dyVw0ef+ z2I+8Zu+m@=Af)$U%Xdb!kOEP z!C#iTIB*LCM^_vGcX!0%ah_Y``F2BG+ZzfU8$y8f^HFru$dnFl4F%uyPGJk3Uc9!b z25pi!g3WKK!hqNRaA|cnHYkJw48*&;0FB?x~%h{O%P&p8rT!{|%< zOOegm|4{FyI4lq*0_1ZaLcZ?frJccrAbTnt4?evJxn;BH{hifhwMHE{u$qqvT0ct= zbB*!WADIx06@zLO0pvI3P7KY@hTf*(c-`S=_&*g@d{$&H-f6rIs!s_szSUFs(A*dx zddUw4&I$mxzvATCr{}OttrFI~Q3ThD521;UYsf=z9UM64fqIO!$%M#DNMtON314AL z`g*@-!-jVo9w~KZ>{L2g%A=iBOIv`s*UmAuiLK;Ym)(@d&mu}*I*ih|vZ72!JEknk zbC!&d4W;TnAESOI@^J7-nI0MZXNt35{2vYD6HVkyI<3rK$*9eqA9IGpgMXH zNt}EPLvO^Q(E&Z~UU(WERJejClTP#acxB`uYJvH>-x-u^df=9y1>7$c*N~bUKuQHh zXhQe_>gX=yao?jzO|hDm-y#n%hl^O*>tIvf6V$x_8u~aLfhwH6@wSXDfY7r;HpD%U zTLB3bty5T~%!|;{;jzlrS*ZB1A3nkQBH^p|(cmUYutbD|g&dAy%f?V7oFax&6>E@> z#yjxqwl20DmdE(_95`^}2%4L75p|zhNyydTLatIZ^yvIesQK_}uI@w@S^}-{R(~I` z+GH>Kx7!HwSu8eaN=w22nHdoQwme71ZGTR-Rt}OEVGzsbg(mCbQPwtpU>jFY#BTb6 zYBQe!_g4oHU#t<)@UIdLYI>nDFRO5mktUYiBMXmy?4Z?p zD|qkofH<-LDXJE4Bpkv{p~+w;>~Vbs)86onvA7>eiL4T4Othb2+k28s_4qHwW}6$+ z9sV1XJ4}*%t5#7~Pm9T%-F~b`P7>?+M1bn6e@j;Dd?43UEMQ$vRDsmDjx3*$Ff#iu zpMCl`iCN&XgG^mJLfU5EWYl(d!frPg=#jsOat!o{Al*MTGkB4xQTpZU*{t;R{BaRy1DWRB4VaVyr z4K($AJ2qLC&D{|#18fr`ko-1VFmR;>1s++410wmchoB{1vimSFN*ki-yQe{xhz3X3 zDH&VczeiX}y~I6+mZ(0%8+Yq&L1U50sHyKI5ve7JT|c?wN`+9=n4gXI{Od%)QaT_f zXd~Wgr-QR>n!)~0B&x}BL&2VpOLv<;L`El+aUrRXzNy<0eEY)aYkrfk*p=(za;9J#Lc)Ge{@^YSzIjNPdtC+j=XHNAxUasCie-@FZqJ$_;hq@WfIgsc!thiB>;ss zTVWAdU&QAeTPkDvsdReu0M_}BfG>6j!;KDH@coe@)T)_>N0TdI-LdNsw|Jr;$z_|_CaYgqhLS(z;V!ZSjO2S(RN{d%9EvwyF(H046iTg?_%5)Jvq9#(t zZg|Zo9b&2JH}T}j;ZNi(?jhCepN6Fic;)clsyIJvkQD*0(OzNX$6e;nkpXc*f zO08UKOckH$ffYQLeu|6WQ!1=c%lJ%9fT9772&=)Z-DWVwRqGo6DZg{AT-|GMsVXiKwP6CB1VTawoSz2`>F}^itRuc^dtSx`b2wj2WNb8F2YBC0I93Lh;f^B zQ03u0^mAS;9yBch8T0NV0e=-}rLToWy=H(>;R1#^u8hYtvVn(qEs^hG290b3u@qk# z`s@7(2^Ie#oVhpgpri-fJ?}1Loi>1M=Uwocpf2`#ISzXiZo#A$e%vs!2VdEK4?PHI z!3JMPL0FWWyc+=+H{na1}9ZV_u^mVh%a=iuwR?8xBuCalHt zbE&oNqiyf#VvifzG~e@Q`ZICYk$r(6wA>R8tloyf!oE?YF)PkA8}i&fFB!D=f(u;y z&=*T&e+D`?4l-HP863qigip(4fu^eq+~jo=yLq>v5tEC!{__u_3MetgJJO)~xs~d)g|Bt)tx898ncR+b=POVQK2j0e%-&|Bf;1ntGWM&Nrr%1oj!KE!@Tu)(wu*^l&CchPa`3Vn%k{T;z36E@VgPZ<)RCcg4} zm{9I`iA0WVBtQG6{^PGePJIh;NNyWkBY6^++VbubFNx#C zU=>hqa1S?0T!5xY*-+z6Fpxia0xk;F!z#nVWKuQ@d-%o?f1W>nV%LJqE)3ukuY}0YswOsCKWAT^avw}?0c^YnkXu3#Gsu1=>9)VrWt z0@s1kL_fW+;w9Jh`!QnKL=o~)en`tK5XG<7*#dnJ0Q1`-c$|C?ILY>-??1)>UvLdN zV)qd4EvN%#bTpEByp0|UpN}&)0@$~C7brAv06#y|bd%pksJ~YSUvD~xmlvv`*&Jo; zkT3~2;U&0J#vkAHDg;6bQgBey2I$2l!?Nyr1UJ~C&BqO4-?F>NBzKX)4vSa7)xm`G zVQoHK`1TDwXxdLJE9ZjiPIAm4i!1P#UKg!DwUlPFhCqN&4&B{nR64qGC6GN{hBTWu zB9lN9yjw04w7FHoPH9t=6UNKhTB&2%Qe7AzbPrV=QzRe%QHJdc7h(UzTeM1sA`WkN zgYo1w(9x(2C1h^UO$%PY5`}&Evd206u{H|nit?Orr&hpxygRDDYK?SyGQR1MBecQ32toy?+DBz|_ zv7hHtjy+r0cNKHljnRr_uB#VNL#vWm5v6`OyRnYkTbX zkfJ8Up0npOf|*4o0<2G)A7um*sd2Y;>{PUJ*#)N%szr5xoGve5ua1-KQ~Na(*|(52 zf4Gn3Gl$&J*-55!CYH4LTR`zWb>)1M&7k9NoCdr6#hJ~!oZu!Ch9<^$puTJQK-9F9 zcHGp=mAI8bQA4G{e0 z{pPOskbb2Vz5A3H&RwAkHx=y!2?=LGXGj~Zd37z+L99^@9Bp~zP6WxvfKShtA?Kg=!0g{ePJ-|xN3UoTnBIAm*mw3O zkSV%K`(F=114D|y$Z`cTa}EY&QI}DnM-u2%U5X|AmC*oqE6`UvY_Ll73dpf-NA~~y zpdCvXqW8f(!Y|ka?X_qCweh-e%(I5@5Uv9M`jU}SlQqmR)P(CUDhdA zf@ne-%fi4EClN~&oJBgrZ$a>4K~CtROdusDjIUqNLbhK|(B?s*23Cs~;xg-D@I^!i z7S3A^G%mFOe#IAPJjM@RleK^uYr{~4OB0%Ic}45I-;aeamVv5$=D`0IKh~(;3^E>{ zCq9PdAYsARoCJ|r9BdarjP3jk1&)kkjZZSv+*>!<;>FjX^c9jax#!L(9W20MLOHNH zV>u&lcaovM4=~{pMa+!dN$Sh*mlO<_;h9Gf(`c5;xD|XSg+I8F4VkwoH_uq+t}aP+ zFaHlky|7_YF3e>;oASxbs?Q|5mB;ub3}=2E-cFVCdT$QM2avWpB5W%u$EHv@ zq{p6oYWD;`ySQ}$)67p&x5WdacDg9l}%IZE+0V7W*oQ0Pwr&G%Qq#;=(m;b8_4-n9gDv=*RqA2gxNR$1(@ zY!&RjyAE}qa0dz1dC^xNzP{HUo#+eRFPFTWBnvZWI$q6TpJ z1O=xh`_Mq^6L`>}1s?t^1Wfj;(peAMLAHD-cJYmchx0t)&*2ap(9;Pj7gd8`*9+*x zxi--J@;P!Bxd|eRO^NFL*FZ+re6pJF7=DiPfi=7g1H8=8!h{b{SSOP9w5$g$n?*qz zR{#chSi`L4lSH?AA{tm#n_4#;L#4wTyGgi@pUpyy2~c=i_q`Gqv#LBF5i zi)u?Gzd2M%&r|6f~K zC}72|SrA5z9@itA4+k&MgjA#MH6vj_K=vL-TP@Y5#+L+UJtP3P|>iL>{p(&vI~`?**6ql^>P zyu^@dtb9WHJ^Db7-U@^=epgww%4u>u>kF4U-w33GrAYZ#YFHxO7v%O}=vwlK&Li%^ zFnWMPxJ`m{Gv$D)3I^fZ)SzEsJkZ&&2D-*B0#+H>$mfL&9J>AsZHO`Ey;ccYRe2t* z;v^VVnTY6j&%pXW%W%WpVVZbY1E2dHrBjalhRenl!H*w4!bOM50nJaq^o|!uxV{() z&a^|Lok~D>k_0cPKS1KA30|vq3+lCn!cf!wIALcE2-m&`!kyQmInz9UPwjt1--bH? z-|(m1zL^4Jg>s(1P6EoUv!Pj?6Z9{6e-IG!m(xFRmHQ*UiIwfq~xms z<`yWx;Z28-sL^upyQ2i1GG)M2P$UZS&44ik2GpFb=!*9idNQ{OeXQe$L0{BB%IXv_ zmvf2sxnc&JOMj#M?@O_l^AnmcsvosK%m<;`A=spEDehSq2*SoEK&=A-#&QqCt{^9* z__LJ0uw4Y6U4IfeU0g{7%()FhudO25_r$_u0jYG$5=8qfO8_2o`fx?pCK$IXo^F?W zLgc(+fJjm+Au303{|woKklU%~eCc9zqE8xM-**@sEl7jjUxJZ^m?rQL_=m{#eDGc3 zX;fSHA3Q&@5PF~PK~f*m>D-zkLsqjeedzLPBE+pLWb?OKZOr0F65 zwe)N_7mZ z|5im?tyIhZnoYvX6Qdo{C+~;#rjiZ^*iNkz~?c4cxLcjVv8b zBfpz2qKId+|0|!{PFKMiCWsoed`JaHj4bt zM)uiIZSj@l<)(}5oTnlkTn7D;*cZiYi-9G$pt zAGlHS0?)L`!139OwAy{ZeZ||G)mC{D=T>BJi2-5I6MYp`H$0*_y)(!uN*(+Of4ueY#`X z8gBR~fZH+^@q^>@QHb0GIu&*Yl+Iqpja&oV7Iy$xuA9$eG~9v1nzK+SVmJDD`Z!(w zObkkGJ&vZFHxhh;*&xZ?h3Gr;5H30@g-lfD&^`;x=ow``rt_sbd=8f&D^pus`$-FE z@w;HDNqO(Z|R8f6aY z;?WopnlEw^6lc){z4R!Ey}c5b-qeQ{=bBLkz7F}+C%JP(S~1&Z3f$>>q?Ba|`SxxC zeUb)PY5N$#xAHaNkSc){J|tqh^daXskn_T!NHS7rF3pNNH9}E#f>@e z#=|{$=Yi$eNdGVt?7WO7c052@mtF$1&TGigBa-u8JWyJ$T1n30=xyV=gJ*?4X@m`13u~^2M zPo7{pG@mp2QX)`lVKg-!dx=R1TgxH7u0!G)GuX&g8oJD1f~v&Ny5SQ)A9xrOwt{E*Y?vmn4^91Y&-1->s;are(ABG=dtx!E~l zkx^9;|KL8Fx-AXU-To3CvuCi?!kZk+#}~2EA3@xU@^Rx{p3}NS0q6b1pzdr6HuzA4 zv+K{(d`{Jz_8ZYirqUY527BX`OGpeg459s>9MtmM9?AH+gMCLbk>fx%$N(HPc}o*W zHGVitmv0`b1;i06Eev}qT#`*#Tkjo(H6*Yxp3wE`&m z){DD-hr%<8`S8H=SfFfj48E@AZDpNv$$*?<_^*!-yX}v`+{y_g`CjjUe6X8^g zKR#-sM?P)+2=^{D!i8GxxccoTEVtQ!Y2pc)5~gG5vp)Iw_b*W>ul@QFSPJY9CP0so z%N#TM8LxieHK<*B7mJ!|!`SD82F1sELEFz_pmkgZe(>w&YQ8Q2)1o}T4F7qqUvdk& zn|}kem*&F`!zeVz>H~39JPn=i&H@#54$Z%Q3XYF(pktRa7z^5rbo<)S)5v~a<{kj` z@+qvMWmwQ@n4CR6{5Vj*87dpN{cLaWcuku!KiS{&@bNC#r zTJnmhbG`!Js#k$WzIMnUZy%7{_YTDH{17^e`(gLoWR66iA+u<41{qs!!Mcs)QhcAD zBfZOU?DXHyq-WDt(q#B5e6=f%l)62SOuBlBEa|N#iT8eNV$c|?|J|7R_aKQ}x6z+W z-%!Q`tB*2-&{Ot%OBXp|AIt3N+(~vHa3dFgm?2kkt}@d{_OM!+PI%~JKjj@XNbda+ zzzXfD!ogGJ%!blAl)jcKbx&QNt-DUM)CxfLF$&b3>dowbm7eSu+hvrL+kPhWv=rNT zN0Ce`N@kv~h#^Du9I52{s-&HG3w_o05m5Sg8GjNNf`hS1+;wif;NZGwP_(iOTo_O0 z>Re0(h2^_ZYAQedZfOJh!(+2t_g#ZUMw9eUzBIydWeE~sE`#aQYYE?@AE9N`VwmAq zL@c+EMNgz&pxFE};A^@76u&(KYwLc{+D1=cvRNmZYT%&Hk_mLQdLb%tj|Ff0U2uYD z8XAth57O`J!96c|K9HCDVZ?3;P?{0~rT_!le0ce*)#{)RX7D&Vd*I#n8CpAJ(oak7 z(LPlYMDJ^92G3f+MT@nN<0@5rEH(_d|F;rbD9h4;uSHPurN?Mw!~w;v(#4JXMYN^O zbznopp|p%kV6~?rj`_71dh$Gq?$t4{TX7X=kUWCdEH5BFz7WR^PdCDCedfG;eIwc! z$46%^+5jZ$*5cXMMOb`i8iGn3+-xuaNHOC0+2D@H#B|au}VljDfZKTvS(c1bv}IVLtK_jxM}d#>p-+jZ`-!OA)0Xj&|;(6?Y>Om2~y#Ve`C zsc353hz(`qEmZbbYG>I2=g;J-CpMJwtP!Q&63NE!=G_^$waSeDd?)iS53v=?pWyM+ z{p8_^SZc{neKuch0~_pj4OIJT8SeNaL@her!!G#mITOpZ5Y!n z%RCoCC8&syR;n)ic;n7Gztdr*svnmY;*Y-Vl=FB^y_NE|?vE$Vs-CqfOhQA@Dbeb!l zaR7}Xr@)jt8=UL35Z}Gx z0^`qAAh&V$dR-Jdu(eZ(0hZ2L{`H|q!6SIILQ_|L=rvg>K;;#1<2!#9v3 z83I!GNzy0Uj)Dj2El5i(hnBg&3iCCWg2q)h;N!$L^he_Ym^7byqgfsw&JGWcxy>bm>I%vBE|Dri*;tA#f5 z3g0Sm%aBOflW%s^`z{TNuVFt*ubM}t)Had@Yxh#R>zpYGYl*V%?Ga^sp9aB6IV#)Ns8WliKMav=mq)0YiFIUgEHBgjP#B)gTg6DqMMK}B4BB>q9ng-S3w76A z1GPIB)5)bd!1eQQWb=L=N?GWHuRY}5@osqoVOtLxaB=}=#9I9ElpdV!xQE;e^~g0I z?l5629SMaPq7_Z+@B?Wl_;h_7Sfd>X1%~v{1FJvKE%Fd9EIEc{Uv5CNPwjBS30cU0 zeiRoyy@Hc62SNS!SePCq24|UX&_*N}xo$EijO9I{W^Fz4doB;Q>#0J^^^oUzUq=Sn z7SQ;TCY@}d3wF7e;8!`CFh5t1Zco-j&3{gTeLW#`wa%83HNUnKEBp_m$H<7j9aoH0 zKko%6#KqwVJwy*h+XLPcC6aG12LHOQAg!V(*!Lj|xD~&nqY~EA&cfx$wOI_7uF(NC zgOZ@QMw1@peQ!fo-lBnnBp$q)MAxRbqwd6)px(#}XP?l({JgAp)T&khmd*p8>UToW z5s4nCsiG)NNx0+DZq%&h!=Y~#gQz>H99@IcFt+Lk$LHHQT3<5^$VzwP6LU_%cXxwn zeWM!MU*Qo*s5#C%w{Paa1AO3lT`2mQ^^xvP`G@>|Ujx*-1lTQHMZc)@0eUN1&{1bW z=x`(h{nh&fh5V*K`oB1Y#1rY+JMYlTCJ5Efp90CU&q0L$1h?5X5{}4A;lb@2@vm`V z^a6=s?jmLtm?pgY$QQ&broyWE_s~e-T-0E`0y^{rpwSgdoHe}n zi$$))?s={7PQnGkd_;nATd|i+x&c{lzGg~P_bLuPdX8;Xdqh&Z_md??^>{}?An6+x zK(2i}k5YYDPp+Q1&Uz}%D@$w8Ar-dvk(M8dNv|uC>~voe!{_#nHSm5~*WC80}7`!&r+wR-OoL=Y6Fb>aUXq6VYsPJ0F9L(wG)s4t0&!1(n3~Gq;wv zv+u_U%A+@q3_5(A{rt0sDOLPKn!qkbx17w{!hy z{@wFnyu&z3Tn+Ju11#;AI)(I{Ui137qH*xa^*H1QZ$7wp08G5p0G?BxaKlIj5(-j6 zlEKoDTJMYsJySRr_dMV+Nv)gR1&N4lP4d6kx31jf8H9>ubeQKD+aUo z88gB;PIz3Cm)i&v1GZdm$hR>A+c-T!)~nXyq+JRi%w>c(1HKH!0;*tnV=zdL4TYwi z+puw!GlUs23beK(TJ2A?h`lTtrI6WB1yyOO0^o~ETchO zP97|nmBcCUjhRBHE}&Rgi;71Rpleq;w)#2=oOIKewHu3Y-!tXrvQ7$gix}>6@2%B3o@P)&$M}l5K7C2NKa#VHtdDCp?*wM znPwq}tjpCmR1xBJd>Acf&xY~brDOVRpe4x?q4{iUZaUj!WMi1eAj80OB=a&Pk@Zpv zV2^4)q>g_HqY8@?4c)%SutVSwyWu$LN(_hZ|2auvjt=nAj)6UBhJXwP9rqy8vp zyP=14)l{L_uo`orI~`up@8$-seG1;L5r<2PWuSVL7#%EE2IP3|!x1qRx=Csst~Zy1 zUP(Rh;BSPUb;N<;HB$It?h@GD6^;^?TaXiNr(klnEbz*XL`|3ManrzAcr+>(gnr3| z8awTgpM@-$_4g$HwfYd|Z0C7z4s6AslYpO-e_=`FjZNMf!>_{`ut{q@oUQu~D^_yp zh zGLBpn3>WO-FqdEEVTGAXP)KM98hwg^>&-RE)Wy6x&8uNB|5Ys9L(akZ!9^fRClvbd ze*>P=(WLE$SzMOL1vbu>2ROUBNs?p&ieC@AJb<_-z z`Zg}qtLO--HATIw^lV0%lHnD`-Nu1BhF4RUS4FY*I`Qo8#pla5WrR`@D$(q(>mSI5 zMkz{du#j5kWXs;6W>|-2d1n5H1VaxZi8?i|TIRy*B~00Rh}9h{rMlqCUC>>)Hx7*ZMHonM$!%d@9uTN)f}t1v^OdrhUl% zx&?H6y^+b$EQZF9Bj^DYIr#m%Cj9YqDGcj3p%b?8!&}wT_}9p9dMY;rXBsKOp`$9~ zjZHt$IfauzBiRLOXPd)LEp7B-uMZh1k_iJeDrmliNvQ3-A0GP_3~#9+u;FhztXU9( z`s9tt71arNi<=X^w>TIL%|C_bZ!?92w+z#!n~c>?t$`2LR6|BHp6;x#z$VU=&TmVWp|722#s=yhtP0noJs<-1Gi z^li6@Ic5tuDj)5LyOJ%$>PQ88=gIfPN@*=gil|X(Bm#7H z(@l$IKzu)iF6_uc-PCqE;gAUu2wzW#bm*b32NZaHz8-01Gjvq&4U{zR1hFS{DbTMd zK^7g~XkmFD!cM!K!#6jww0nCTFsb2#quYWxPWGYTuWu>(ohS}1qsPG66Se3-!7RP( z#7%mE(S2mPHVlZ|76j|Vb|RroFNhC0BOEua{)pj{!4as8Brv27bX z-BH81+!_N;HC$3Pp%Ux1mg6GdSKxTzU1Y3NkJ?+y@X(n&9*4c1q(kRWmK|nL<#jr4 z|Mwpm6(f5zv7ycDx~+oe6pB!V;YqwKy!#H zS#h}tD0F;)Rll?Gx7*&#zIRv9ysFEk;*K|H=9CM}vww?%8#PKAnghY3oBgzUO%3rv z92sO;~H zvS%eq8(2*6)>UxhO9UG7W$8E@QL8!cto2zM8>dRc;MF3SRlCSLo6CWg|LkxC5l3{~ScspRTf_g_w*b$P zCglA{gLV}W20CIUc3fYa{4Rm7r^)ufz4$ zCfLn%K2ErM7#<#ILPwJcB$xRJNKLLmO0^duUbF!n4)y8Ru1H z2j2!#Hmo99G*Zb{2gEX;E5xa(`|DV8&tbM_KE+h#@Ua@DN~D(qqQbM?nTTOon(sD; z%VsJv?TPkKX>R+&p?HSO;ASZA63dR%rGQ2dnK&D^*jt0LFJE zAm`h$fP0q5(sqf%oC+BnuILu8?B0&NfF z5do2^xbl@Vv4nT;MII7|Kemej(cibwWjPMrJ>E;$E?1CzKWK+W?f z{p(i+$9BK~4xEz0mZU4rm#Rmr6u+YNUY%eHr{bgi(O5)ehFDW706jLc#N!n=;rB2x z{OW!tirs4lRhup#ttwtO5FZ1UREVO1wHVe}tVdVgnlsg#dtlH|5c}VaF{q3Pf0*Z_7&|l&jcZ4KQsq(uWVrZEHuJz8 zM&Up+Gs3@-I=elFN>};DNHz(SO$@@S^ls@b9WF@n> z?IzQ``86!I3!_TAgPF=RDs=U>z1)5GK42Lq3CJ-Tr#mYpv2)y75WJk%aYMi7dKRnj zd`ef563>OJ<|T-Yg_h7+_k_TZuRjtjSqqd$`_V-9Yp|{04T?Fl81lWaE$x|9$LFub z6WNND=&O$)JX^sJ3e`U%{RQLPDAh!C!D0?R!5@Mhzn?~$w}f&0{5M#)qvK=00b{<9NKjQJw9-BU_n|ca@mMjxm?R!kA+;?jso zJ#ozPGVX`d7?>`73Anb~@H(1hum#%(6-2qP?Q=9r$d$#G3$p0<^ULu}&?x93`-8JOqsZvWN5cO|8Mf$j0Ed$KfWQHNq*Akvyl;??KRRy(HNkg5;Lt2u zFCq?e|4MKzLzC&{O*~I=C*sW)&%-4XeyCiq9;xdrbjMu=vLveQXFFx5r_lIS)|Q>qyk{wTAP{t{U%t9SR#83gCPHZ@iiBK4`ae zBhHZ(CR+=eq4D_-=$zX*T=?e#+S19-_;^zAmR1e0TW}Shnf?UI&n*Ey_W+*Wl1X&H zWsHpdMNsA#Px^_3F2OP%lQYYZ-?mCSEboiYr;=qC~dX z%!TzAU1TVzciJ$MEoMr7?qxORS+KVkU#3JhN>Z9<%nWbvdI&^U4pO6^q*0%-Ap1i8 z20QL$L5WX?Q`O?TP>zdbS#8NO)=7@v(9NlqymoU5Rlt9fmGXMResM6T(ymweGeB!D^l%WgPD<~?^rEHn4Iv8BM7f4`dl`L zTprBhKWdi%TYeenr(B9&zUu|ICgu~ag<3@Ff0ICAWE1!(-~f$WTj;(XZ7k|q0HXe0 zLvQY{h30pb;*&#PHv5s6p*N;uE(6pF0u_tQ$1wxGm>Ea@H_<6p#XnLcVcAe`kTQF%EdKrwIgy zU)BHdd^@ORZqh!l+BlneXZyz`p+F#4^Z)-BdcP|{_$FS#527VnuWpJ5l=vJ z(h-mtJ4*}jlj!KED{%b9CEh;KfUfB$X!}YZ=vAkV0=h_UBwk6Zz9WIU9d&?|*L~D2 zGQ=gFl7N%<8?d)82?X)7jPEKnK+uxyV8V+7#OjaI1N)UgLh>PCk*xtT+IPWrQI^Pm zaGWM)AMn`s-FRbaKfsrk6ZugufQ@bxII~9*E~lHg?9Fsg7-fp|RqHtmv;5Hi%K1U8N{QMMLtk#Bw)r&!o z!zG}lybS~%6+wUFcY{}a_kad=2errULL%TjA=lc4)yo4(fvImy)YBc5#??ne!I=&0 z$o_}q$UqY*5pV>m{B^m_F0 zt34xLSxAN!#FC=#$C$%ccCzXgf62(O5wg@qfStR7!|ppZNNNR&F#fAbnR`ad$)u9~ z%!%v&W9ZDoq58r&P9ghRw(QAL=ALuso_lAIZ0$;tN=SBEloq9^>}1K7HKde8DCXW7 zOQBFo@+(QSC}|}sl}h@}-}B5f&vWkFbI$v|-|y$^&YABi&t2mp%t0SdS5mW z7Zr5Q$%!@!T|zFZ%|?>TE2-lS5>(GmAu~Tfh7Q&{NJniACBIJHLvq)*Qu0-$ygK`G z$};c>UCZ$!L?+TPk$p?(d+kffJ+3n}*CL)5RC9`CEs~-F>=+Wy(53PgZzs>^CXn~m z`jG6(EZ$cSZSvWnL!_2qEh!pXMM)l@318PSVlr$m9W2#Ld%c=Xoc}`eP>UiHwlA6| z^Uahww^Xgp^-U0cr`&`$*ZH-OSNodR_b!E2|0T(Yta)4O^)(J%ah9NAM-TeEYdqTv>OrZ?*qJ#+LJ!&L|%mwk^w zVa{ie-qBZetH)!QgyQ)mH!Ys=+Itzr>k6~8w3pNH@d?zQQBk)_FpI1?)kCikzeKmp zJx3pk>!C%S6Lm9JKG25}W-%dp&O%m^Ze8Z1G&UfObA|RQM z#?73N2P&MYWBMHEyPPlEY0D8&_a=Md#QCb@iv{6QzWh^1?IIdXr}uvv5PM z*~2q@uDTmPWPTI<`>P>e*K~f~=#K2c(fU83a_6E?3?wgsZ)z^7L^5ulf)IIuQ%>wFp0z)#-E2+ho z#hEF{<=eg-C$IOn(2I7TqP~>mG2%CVk?W1J`AMB;8QX}H)E^HQGWu{L#oa2LTPTSz zMhk8*SBN#F??pHM8?l=db^IpP()E*+aVVwqRwOYWF57cfp8G)=4Qyi44Bs$maT^%t zQ7gX0m^>vC;a<1AyI!cJ(55CO!+6PQDNOv{6|{{^GXGbDBDv!GDCd@>h9D_U!92tu zq5gx#LXKfLH1~AaEf`&{C73%@PDN}o5|$g3085!JQW|+?i_=T*t0FYHCwa zeeA7dL3tn7{O+}BPUx8s?ta0bV6)Ba`oG54xtbqOnGaq4Cg}W{Ab91iZ{E<`!DUI* z3py;0aQ!B_xj{=rne(_i_iwI*;Kd4^`miS)X5{lCaxg)fNsA5UXdeWl!EBvDwmfU4nYV zQyt=+UDRFo+j|L}KaYo``*@_v@;|)khF$3BMlIUC6p~+__Vc)XIHedKLKZNGd7e!x zct*-gXkYmN@@QxlN-d5fkN%V6@s>+a<>Kq<)(Jnl$vdlV-Ow`HYLy(BSvN@g>^(}S z6iy+@YGL2h@h1|KeNQ^OXz<<)l@J#Whm(w*knO%I1c`sf$k~6^pi}3xsMFR9h}OTB zyfxRX$eN4JO!lM8}uJ970T9cTIq z?FlfXQbX3zVp;1^lZY?P-oKZWAO6gn);>v1C*B}$trcdg24wQs<34nFU@BR7r4t#} zkCUqWK812_0vW;0m-qO`2Mamtmb>vw zf=cD@##NTbg0S7YW{-ldJUtfr=;>ge~+rg#?)pC_%_73ic_ag^o^MZZ1ynkO0m6BXd% z{N0toRO%<8r@Zns?UG895lLE1`sYoANaTZSH~t+J>LDv=7vp72zgQRg!%LxBrkm>$ z)m%vSLoU-4PEj94GwEH|L^(mDrDUJ%73N@FHY$;pVDv6KQ|AxuC7lGR2=7ZHw9FGI z`wWUHJ8*(|)%=7u&sAYsm(8Iz{BB~N6`p5oO_!0B@V>MvL7rUR&_NZ-sWYz!s_AOo zoz&glVtQ4mDQ)WZk9;;LD$I?Xq&&Sh&_F(fzxl5|N5im4u);*mTugBuf6vyl0%?&V zj)>o5#5R)SUueqZEQ(O$st~)m-iIu?AH7Ef6>Qu3_f6TH=#MzJVv!-YPcu-+;rYZ@ zP*bm;G9BQYXl)nRZC=HEd(*?w{uau8dR|>1!?P3E6jacz`!vm8=gi^0UnA5Wn(_E0 z90`H{*HEtPKq=R#Usa&4s$Kv2a4>h)cTbK*cAdb%Q3iH@=29u}|Yh&hdd^5Orzz(yS6b!U zJG4f~wz*pE%t_c^%7o5Er1WPUN`XB_FKtnx#u+tKvi1sLbw-NHj1M6v-v(2tMT6E9 zvTbsnG?1J8AJU$$)>E2`T^Z%aY$~WqoUa)(MR%X_r$k)-)V}}aN|}`BGUZBT^u);| zr1a<c>%K>5J`1C$#cS=EIzxF*L(UL&SN8_JQhzEhC1TX)e?xic)6AY#bIIQ!#^ffxfEH=p&DrDriuo#Y zf}BuhNOf0&Vfh8(0?!dZ$haM31RjPKJ~lW7#y zn#a5fQ>LVpcJag1)-Wm905#Nlt+pX~7iCt_$b?@Up~LLP>2d=RB5_!PFY)oL&=>NA z%HzsYiOZ8H=M&M4sE-L}T0xA{lBUj_lc;3M&IxGNheiC6E&f#Gi4WxcM{P{HpETvN zMUT9_F@ouu7P3vAqk1-s_f3z!Y5g8Cn}=CaY}%rBUJ<%^i43&M_s3wGV9=X!cra*x}cFgFQt z5h#n#GoNf&$UN&_D7azNEqIw5$<5qR%WdHwWN!Gx)_0XT3T(cZm>1SeaJo&MxW*X| z1Oa`Mf`7)*T&vkp=GL~|g1^<{{4J@<=6M!txs@x93w{qIasQNEMqGG~51(92xxAmIp9}rX9c2(jzUgFl$7xcw z{!yfTSv*zRfoMB!B;$0ym%MnYnVuNkOZ`xDWkiG=%;Du?d{^{@wkzowni^bKhYfwf=}ArGEJW^HF9FWi$6U(&#r}TK0;PftDJ4#%MPwcK8IFyKaQ{ z>~R`%2wWo_J0A0LQ|B>x$yJECuEVf~m(}?->(j5zwCKCzGIXJTE=}B&p-rwD(CL>; zcm`4n$=7+A^qudSWayO!x+SXsP0Y&RaZB_V7fYL zTiRjiY5JmpGqX@nnKsL>pm~zs7o6Awvt?+bzwykr(IN6`xGKG;N}1_N zm_%uXPRw2FmxS1RecG#KJ{OcBL{Cl?G(|IE%I!e@99N_n=ix3z@?;e^JQaG&*PCD9zrEGrZg=`u6t& z^s3+#vbs!`aXsV0c-`5_b6W8bsh{wnsRgD~<9!t-e_}S%O-oTB{YtblKbX$@d4N1! z8cd5knI=8PuJEuPUFPbe)k4iy7k{ugnY$_IK64@SG+)s`jv9I@tam!s@Q1z(Qu05` zIgQVixppIo90TLM0%hS#=qfSDX*$)$DHy2Xbl@Tan`3J9mBWVxC|!o53Ncb{J6AZ-8Lc?YaCLCv^BGZ+~#2Uy5*Bwxyw= zzG#77Vi`w%(@DNZv8EuGIm3zEu8aI)-tZ&s()kxg6#1W3BKb~YRW$dFEO*pUl+S%G zidsgN(yN@3nT^|WNHOk1-u_;k5z&i6W8NA}r;JnG?jl#(_qsN{>iT;g`8S#VPi+=$ z^5h1c=b6VF`KBYxw%+6C~e4W=Y{uyaJ$>y6pu22WXy~87| zh0Hj4PtXBJr0K3VuaItv7hNKr&wEo&^R}IM%99kboQ!Lu_`So;)LPR> zy6;>HGn_I*mQ5rxKcu<5mSg7hIbncC&aEqSc}_YbqQ97kyktgAq(7$FMiSIs??~p5 zSR7^Ga+sOa|3@{AH<2*+8nZ^U8!a0SW0L#?)XqOmWZ?xZMs~X$Z$hh;?6o+{NRXQR zCl>GNr9X=pqc?$+fypBNEG?mjQ~xx%WUD=8V|bhwT_MYHtUAX$3ERP}weF=%7O@#O zb_{(#e+l(rDwEdho}mh-R?+6?bZ95p0CLSl693@NSsZa4hVC%l#7H*@nYb!fn3QEJ zQRJ{tlQs2+{_)*_xoFkM%t5C}QbCw~ss6C8|M?8r6;{L4oo%GB3oDqf+YfNwztf=> zHZR~?Y*HZqyBNu=Hy6(B#Ai`gi;U<`S8k!6%Y)RZZ8c1hK$t1>)Q)jgEnrCTd`i~W zlK-*5lrMX67WHsv1vOEc<1A-YF)p9BF(xl3DK8yioqDW=_T8CAl?|rSiJH4O z5$A-u`|cLLn@m1O&rGV`BQMMR-;FfBs)cgB%U?aNNLDgWy6O&p+G`&7YFi?AQ^qJa zb-0wv9SEpj)l**|X6MLlxPFa$a-@J8q3~AlTm=_gZ_lXTf7z2eBe$Y{+3-aMiP&*x zrhjm^%byWARo4jp=Te-Gu1s_Hk#*eT-|XshKB@|Cg?bChHvi=AzMx>f`o(^M*omC_ z*P3s*DK-Z=%ljAAUw!n2Z=-jBJ6wECV5oFk@M2{wAI=XG>`BY!41^k(mk$K-Kc3ma z>nT-79e)$~i}35z(&Gtq3Hv;=^2==M?}r#>q1!56*fCGK>ATSTqg_cmEIz|Hnc1Kv z<0@3dA`#|@(@%2Q&6A9#Xe71PHiqFT4N`eBh`js0jFEQui}p4JG8s+fR8f5uIrMB9 z(-pXm=XFQu551nx_-U#0e>{FqheZl~i(9-YSrrz)xm}O%=^I7n7%ZZ=9VdAgk|a59 zDgvgiH=HT9?4)x3EM$6*t)>qN*wi6mEuk19#re7*ie9T4OuvoNrlw`8`Ab$ybKdOs zqBq@BV0IjFrL<(*XldON-gJ&QDd6sA*qV8?LQx0fLywT$nIDu}v<;(ZZAjT!lrrY? ztEifo80O)l7>;q+Nh&1j2-E&pmDar2#N6Tiq=&@o&j#%3mbFS5l zKlkZh`pL3>M*DavWstd_e_V#euQ(-~X%}@PP7tCK~%e34U#1$_<`z+`XSu z$ArFo1LZ(kV&5aCgVE$fMy{mV)L&BD^fu5hP&OxBW*-0VGh=@8S0|=C;*U`4{+!aO z%H=z=o%jlY`P63CLXM72JQcVyi}PiD7Nheho}Nn4;G8-d%6QG!D$S71=^C()VPBkEqiTJDj#U_n0L&^@+(^j-z`iMKtst9k=}@^2WI>ru!}l#(_7 z8t{XAZ>p%COUX3cVl{Afg^X}d|8C=MI5f9@)rVHW*x2)W&C;7($HYzb6Jf=i*v6Aw z@8yfkyQ=;ZY-hoGr^HBRN@v`B$J+n6qtfa1s`LuMziEMBRF!3JbYs2whEJ09!0Bau z?J=&ogU}Kg#)VdXlAIDpb8{U1*Mh2m z5~P#pEuj*e2g`miIdP_Zk8x$@>X9*Ktp5VFa&HX(C~3#9-epOZe;%SlNR0Zr(2vve zqL}g9C&TzY7URs3^J9iGdI+~qSyW4{9I;Tbm@~9hKwG(X!jS71K=OJ+SYju@I!sIsu|j0F7jkQ0#DybbKR zxF6Wed4#n^go0F!WbpCrB=#w!6{`zb04;=%rXolZI@X=RPQ8?clRtUbMS%~vnwSY{ zU1`vFU^n>h*Bv}l@e_!>=7hs4BN(t)hzZ!f1&B)u;MlEby!$5!x9nMi|DK0q?afo5 zc5^q@TK523dvq^&=I07dP3hysvt8i4NeRrnB?m0(PJ_QIf5V6Uz4!(j3O`i-5l-AG z#Ml0kg=1e3SQ@5+w^kg(AAab0_l2MaRsQyJ980g&wAeLe_LND>zH4m-pvLW`J6+=h&C?cJNTC!)3IeMOVmh7lL zjIz}B5m&yl&}LP6bZBZ0x;mpty!9JJ8&~j=X6hW=f6IFi0T)Bp=rZj6^+WJKTLZj4 z{t_rgtuWlalJ(Z}Cb&ZE#0G+`u+F{x*u4Yyu^xUtOuy9u0&4n##PKB4) zU)lrg*?kgx9gzcP<7=?J$4sI6`66&%X*T>aeI5I}UlE?}s=^FTtONGW&fv=NJm77T z1Xjfwv8!c7V7#vmY%h8ZvTH2yyNeUSf`{!O_GJm|6H+#M1mJRI0}1|F^V$5N$xz^`AUU}A3>v{X5UcV1D%n}@rhe{l&E=%~Z5 zR04>wzYF*u9zbW2JkZydir>Az1TL}a0;RYvoPKZvELA!U)=9jE&o;dQ_jcNV14e!~5{*?{&Cd8VhsZc^7PqwuL@+!gp)YS7@XqY|B3l!tdW>;cT}@ z*wRc7sKwd`A0M*AFaMau-a(zi9WL46MWRdbpp0mkru+kx`0R)3&0+Xj84GyikP-Vy zMjy0xrr^2fHBfVO6)Ie{4Vl) zP9xgVeIJQk`;F3e%|_WfOb}50L8P9kLS`M$kcv@1iJt#N^7kW9#T5&rep?Hz^O}!X z77pZ#rZHk-hd6m{|3M_TFPQW{+>aXeY$IR(h(d=%6N%en8&ToPuY^jcKKk!y2@x47 zNuD*DOS-*tfO&bkuuF0ip8Y8XINp5$Hc!_=g<~tAw%2Vqa;1T#9Ul#h54;De3M5c0 zj)NBM09bcDfR7CX(6G!}X!sF@^=v74S-^*G^MY~y?iKii)+1OVxC&3qn+KJ@?F3>= z{{a2HJ#e&E0G>T7#E*|bDDTk=47O2_pV|vF&L@H;6O+)QQ4;F3>4LH^dtrbRfYReP zpkiHq8zrq2!oKgiTTOQ#4M)P6V z2ORdK?SN8l@c^8bg(UjHnyPUEik4<@-bxKH8E%a?WIKXJg+h2iwF!>jzlrTpDTaSt zHbMs?4t|}|!ej2qL1p)L_$E3ML>uekm4#}sA>0I(>kmQx+jy8%_86uYD&QhLs<8Wg z0bChs0q+&dz@nZ9_+z^bko-CeYJR#8_PF?fo=!;-e{xbM>NFKiwq5!{%y5Wb5Zkn}dRBqi0>qZfXv^pZNH=W`IqEqZHJmXf^*<<}aNTCKdqogB5p)sRE;1tBD#JMy3mvCp90Op+(!&4|#++pE7C}7=#0)KC~+*Sr2 z8U2ROo)ZhHqrJeY=08woxd8;W1VScg8Q7`y5FBQjp)Q#Ry3}7onQO7I^|vCpw&gDF za>AdT`gZ|P9@v4M$~S;!d863GrwYu@J_=a8h)kN~K7egALbSVa#BQF8PzPA~ZkCgxkf6K6a zb%%uScOeV!zJRF}lwwz^Rj>r!MeNABR7`ixdhCzlVc0728U*~k1l-F$VY;_?aFcHu zI5n;eX2w2)k;ZL6#O4jiYiu?XoQS}fLar$iNbf*Nwyt(gy%c{0C;5ML_?|4Y<&-9@y^w zi8=k#1Y@nbKxEe(P!v!P*W?25Z(TSDXov&;fvTW7^e^at$HJaBY62gNAJ|@2G}gZ5 zCst%42g>YkVwDRO@p<0a(4wN3-CTHt%~@ATR6m-7f?TiR`a4CDdWJ_BJABT>(*6b_hAF_9m#dd2DNldKX+R})I3Tddh1W29~m{o;Rk@&7xk8XUa5yYYvv0(*Fpz9 z`B}uSpG}}lGj+mxmnqsbJBv8hV~h;r5y4vH%vN!$;yflDz`pR*;Fe>jv6Arf*w?2bztJ$K5nV`0Bplj{y($DuE#$JvC%h&4mkKXPzU>l2vyMHSMYzr%eZ%fQvM zN$`%o2`&<3250un$9cZbS?R+!K*mXBa6irvsQb18*|VEK|IirxX`KS?o-1Lo+g<^i zz(AP&LkvHee-VFsN*SM9G7pzsJqB;Ao&!DB`hv2wcqn#|i(l`X#5@w8;vrIRLAlx& z&~VTi9(kP(K5qO1G}hU|$nWQX?g|}ncy}QzHs1wxKoK17TL1!Q?4fhLKFC^g0&w5{ z1yi#O;Plbkpg(L5d;Jg%%SFBM_Z9hY!@m@KbI%A!Z<>IomKEbayz1e^-F$qfxHT4C zX$@nv^FZ*dCh(}x4Ich<0~lYujDJYgz~|pj!A_R#h2KZNLUH9HT>l)#K3jGfUt*Yw z-=0p#dtUm(i%$nYUZ5fVLU9Ps4$K8t5@Xm88}~qC@$Jy{`vbUqfj&I%5C^@TC*Xje zJyiZs4X8_o_z}g|(0l)4yeO*)SUR-AG122d;{Gsr_|6_KDmn|p?%Bf|S;g%2d@o$d zDjwx3X`v0hi%7-)mXQuU<-~a*J7RJ06LfEP8X3Fn6|r{Go``*&OYZM2MyJ#6qqoZ& zQ59$+&Bm2U=?MqIy-EYk>bQi0)(xY+X9;AUSv{&K6(?U2PUMIILL*z;&_+5LWhM`z zE1TuXQ!gc`6`!@qvW8TluOJxh{NRQHoP1D{*C8_Yt_0d>CuFd7#v}2+tt6)O82KN( zN;ZB!hkR}B5T{=kqkj?0&~StkO6yD}*1k3*hd=v}v(_r(365USLs8W>RDz>8{2;Fha{D?iJGD@x@t!b={?M5V$( zmHBv!ekm?pv>mTDHpF+9&c-A2r6E$^2p&|_z<+=2@R(*z;4UJ@7PaXGd5h-2es?cu z_VFB;)AbHuo?GBq{(aCeDi2qEHPp&+0)7n+aE%!YtX10q;%9e*R6RK; z{^&Q@e9DhqV)Fr7?*Kftq7busGz7k^h=;qLbb;>&%VChVDJxvn1q3ZF zz{XRIz{^2p;J@(`c0e*8?$IUTK+gm#WN9WSx%3*W)NF**au#mAxdtwM_YY=2F@`46 zhCoE|J9b^66|8#l7*-$=?BhW{e5k|<9Mn7qB7)T5l#oUjY#9lX3gm(Nza_x+He0yQ zQn2ir9Q?3iJ-l|f58Dyg3G&x2!s3I5|bD|84-tJq;-;Wn^yWmcfM8JCz3@X0{!QSpz+$BB=Pt;hmMQVCwHsFpskqY7fL= zW@_pnq^AQojA3xmzfWMUjT-yxiL)?nZas0qw}SY*cLp^tmm+?x1tOVo<-_ zcO>JfOISSq!-nE=&A$zCuh-f zD^)Tld^uFP@C$rd9}m~cr(kzYXTbr-GjMWMA7~Z52s8WUvFhCtK~+)FozVZh;c`d?QS2{>r~hJPBx@UV5u@v_L1*yEbz zAlvIQ4S2ge)2eXKK3|J@1r?2r;P%WTC{^=skJ z(EH%tsaLRW@GUH<@x-%24Z!|>IcUvV3mG9KM)j^Zeqdf5eA{RM`|ky^PekdlZ~r|* zG%b=q7E6AjD2^VP{X>&b-LRDOj_pE`3!KU2`(y}pr3|(msYiZXXNl4^Yf%9zMHe0N z$-g_YP{9TZ;*rlQ!t_0cW-1<{PrnY5Pewb?l|ON4^I9=7+2JGMVyJ~C+V2yEAD*Lu zfvadpMo4eC{2pz1w+oFosi4drd1NV~g#1?;lLj|6P=rbca;S_%$D=~YjgEt;L&Tr_ zwV@6L8rc(e1ybnIO9>QY>WrR>cMvb;Ympm5l*zmmAAz$YfR>$U_l}hlY6jw#Zr;#ZvLB}YwTFZ6bHR654bYP+xR|R2%b%p-JCrhncj9(XzW~4}k-1Rr zZz3>r7h1y=mckp!(qK*XPB^q<2lV!ygrTonF#ntkAjTJmFRHacsdP4kTH25ka|`Ta z8?dty>u{d{892h$gseCTTy>oSkSUdfPhk^W->@7;sLJEzCW)+Ho<*SN^H#9y@Hy~P zvJNyjSpy#x;b$^8;nn?dn1iG|yxX(@?yf>O^CcgjZqdWVFT3Mk4n)Ar2VTH;mJeu4 zyASA5OMKX?3d=Zm8{bg=7~HL&54Dp{!{h3?;N-$q;A!^&===N!Mqxabl6e7kLm@5V z{zEv&%K}6;>cd?ti?He!9hlnwaUd=Hz17-X;I+#meDl}^C}d~Df7~MI{=Nv0P%Qu> zcY|QLn>ijQcnY|*TVUkV` zy#7}o*OoPdF8$4M7`+W?)s+9v$D{=fpha!$b{qX1N!=Nd!5)MXw!urb)*coOI zdo<6(f;&#IyCj^QzmLFcFV+&}H?>evU;?>yeiF%BCq>*J&>%M}jH9A^OUN&MBq1K; zOhmFblQA9nNVi^%bZnO-f0w)=Wv|U6N6Mp#m@rQyv*sxJ{Y;DOu}vVy@>@|Q^9`*k zA3-OAImp&I4DHeuL-S`nN4a_{$#%O@GETyl3<~K)SsGuek1!W$5O!%L1Kz%)xgcw(rTv(h&p512! zjmrYzNh4K!v_%4l@O5B!Pak}++a0c(uY{w>cviplZD3oU25Nme!K}}G;AQ}Tr`Hm^ zi`@=4OC@6YZ_MEEVkh`vjuT$Q&ch`aAI1N^i^7+PpMszKd_iZ93n*br!q*3v<5xVI zv4OI$`0b_5py@LZ?m5*^Hn99$$a26MRkK!2?v zT)({-3!lxy#;sq1*OQ9yuCplQ+XJ=`{R4M>UX3L`aAZl!NW&cc9Lz>V4yz76gguSj zhCTYr#_miMn|&N`WkqK^!Mb*2uznxX0sGB6Sg-UOvG~wg;6rdQtE4_1i?t5H zyxStdgS~&Sr#qfvqj$xyqrqJ8JAuT+R1B~k-F?_HjS%eL)gM^K()l3r*J13pF$bG5 zjlh;ZUx0m?oDDBmhhoR)gkvg{9QNfob(amj0v`uskLX3J%6$OPc3E&5NgieD-Rf$(+QF z(k0;B<|6EMT?;n+Jrum~n+sChlEASatzgUHN7%V{cQB)T5wPTK6&CZl432(K1%-PS zf{w+fvEq&*tn^VHNV20?WgSM?$IwNESfEmpF}CC3dqsst&Wyenr<3W@w5pvXQflHpM)h}Cos+8dNZMinswbl4qPg&V_9~%f^R1(ScAo1v1t1>K)Z*-dLPn)9W{%_ zCg;9n9o!iTHf%QrUYT#P-1fPcMH&Z)T+qh$wJpPr$2`O$*XClW|9!)r7;A!k!+uyx zjW?#dFavvIWr$H$itzB(ENqsi1Lk6@gjsnRVwNE$pjYalS@~2I%X;evY^B8|R&Yct zSXJte*&g*_)r=X!(=q1o)+}566 z2@E<{2O=A?z&}MVcwDRvgzsODYrm1eAAG)sMRw~$$N$d4?H*3}9?|*iqj4E{hDJ30 zIWHHVdgB1UY-|PsjW^Kz&S_jMvJjlouwj=s9fY{R0ZR20K+7A#c|eW<)TpX~r*E4; zm2Ym~sp@Q;I@tmTI@R%ZnWLb+xf=EvR)F(_2t0Mz6}mg7LvcGR*w-GzcI{Y-FI2mY z+XhSEKUdG-M#={8?{xw%I;6n11JXjzDV8~ldzBhIq_>{!6gt^I-rdr|E1=xUg0gW#!W$->%+U^_Zm z!-Iaq?A+MjFfm&Im9CiJc^)ZnyOr=>#dXFN2HN22^>0AALn4mtpm4Jt=kWx4DfmOE zwitAp1&O_0aKY|UsMn^5Yw;QQEl-1JyETIEk$R5wjZP!Q^--jP!8wu`Xd-6EN>FF^ zuOW?7w5X$s6nb4*NW20n)Yv~slDo{1tkzQ}^$zG#G3V{b+{8|zUvfKI?KO3^@WIk_NiBdNnqrV_JaNcSE6$Y8P&xvVZh z-Zu)7-R&!6xaTJH{-Qql{nIaGChAN*FS8-L^0<_`f&tm%umH`L79rd9^3dliw~_JN zx#(cjMN;I-Ia1Bz7>)-w!V6i)akk@8;1@Xtd45&+4*zPnIVllu_TPm4!*@bQ|6Z_R zoA9{`XQROXJV@(`!2g*j;h7tXu(Xr*aR258`1Mx+E?%a@p80+ke`FMgi<~XPo6oO= zv6st0Tc9GoUndWr|M)skvvy;D4cHDNqugPPd=>nrE(fpXD#ObK*P%wC1KhdA7HG01 zaqG4+=$WC7r`Drn%i3^2GNrNlZsgSNeZA{wGh~NXMp>;Ijj?j<*Z=Io4_hK7xSjcXN7wv)D`BQZkk_F>djv=ROIvXKz;+=uM8_Yk6PwrJ;?^X!O%hxqJ6@+hnRD)DDv zHL|}uL$sgygj&59qBS~AY_utuNchx5eA*C)mMl1fo)~;0Oj+NERsZf2(vM?_WyQ9H z`j*v1z+(?&IjV}#0TJ?p`(kwVcne`0=|`mIW)r;?VT9McTvYDRO6bmq$mVqpvG<%M znz5Hb8RmhAFPYg50bJ;KwG2Z%%+9^qkGLVcu?01 zEU2Y{)$TVRY|U>5#uJ&~i_bNd;ekq4o2)3zpWTQVKRpS5x2?yd4#k6`mEo{qvko?; zQ3~e0Q3A7f=>uJ#15ma;3P!K41R_gcfyAs|V97UGuoFsQRktbu2yOtH+k~}4hbhc; z&;!F0XTThhIMDa@A+}X&0M^>p0o#b9*i|tWuyIcS2QG17+4Oam3$Y0kk-Py|vQb#e z>HW}MItP@8@v+cU95=Avh6fpjvr5`b!H%#L=uxSTxqsBf4kjG}=a2Bf!{^G-!_kTL zVcBuac0~ZNzC3{$2y5+AccZZ_)e}I?-w-}pqlrbj8vu22VSi0nhfMZeh0RP1TvXr> z`=yIPfsH1ZY3jtX+kUW~tula5)jwm`h8m##r&8d2dl|5l$^mqNG&nN#2s>)=9rSGU z2GJkqvBGW2z=2*G2zJ@Pj6)Kb*pK@dRVxD`_NrhW>!sj3cUNE$H3v-H`vq@MCt>KE zH>}dn6`+2dGH%j%5!-ek0dtl64t{2@fbVuC!_r;ar#np z*T57(-cI!ODr9HBTFu@&?T&i>Tqk~h&_di017!X0H`<>u2e}2-vLEgCB;1-W3;V(p ziaB%*DRGj0Vp!{wmB2M+5fBV&!-+j*@N{A|{5cs36CTun8Vxx> zOkBp?HcMiU78$_$-!dSGx(lE0&j+0=*Mi@ZHNc`#1MGKf#eDNb;M>3`a7kH`WolRj z`uxj4R>TV7Y}y$6ud^4c+&&8wsm-u1m`lPhgEk(A?YbJKz^eNC-mJdg3 z09K)=37?5@fvxuqFr8luaTx{Jz`h5#dwQ`G$;FU9QVd3VIxycJLm2904VxZVLHWuG zIHI5nQbOiJTty59@WlXO?}PU)HG&rBwSlO)C3xtS3?^_x*xp8AdKp)+p*$D3;HxP-b$~O^XG7mR7hq}BW6Wy9YLIrb6e?$CfdKLWd^I;3?tUf>=7pBxN!O3E zCyb(q=7bFPkeC7~A5(gI8?hG*S)iU`QDpmc68+5d zL|ZSqk_X=NQQxZp_Sgn#6t}1Me}>NcAImq2<5tp}`Mt&Sm9k9=elgUExV? zv+oT4Y}Q)ZDSe&(Y^vjyhbq$YRR%P&A%UuD9iiDeL0pQB6pb{0$&G4#%*{Tn$ql4s zQTfM8{N!<^%;Cy9#?tT%2^g~w?)V&G0^ja}ggK=kv2rV{?k^O~Ke(SE3*~V_@dc(> ze>r*Tx1aGdP{u78BE-R6$yx%oQ;CyRqL$weQ%H2Bzl zm61r+#_N$$_-EfD%sN$%%Y|O;vEM6jYZ&A3*%;K43E7&B!fii&@OStTc#t{omETWvg>t7(iEmo5cM*AmFJTF2Nd zI}M`-Ls9Zm7(~gr;hpggg1$8$7_ahR=4?y2pj=OZDOi=o%*E@_9TNp<%d7<0Y{TSr z?S~m<_h6spBP217IQ*#|jz5VBQZRO{D%89`$fVAh!+esh29c5wDE4W9=jT|aYJ4Ot3zcCcZ0<0sKgD6} zXLp#;BoC4{*5uvhEuiwC5><3NVQGUYs(+J$pS^1MR^uHev`XO#^==GwyCBG!vl@2D ze`db@)nx`-3YZ_~Md3|i4608T!PoYUf}U3ona3WZ5O;6JfWei-@5oz>%+|q4B2$P= zp@(qR{a~hl4#3KfZ5Xv#l_?j?Cx%|}@X&H2+*q_4K97}v(TCDOvgaZ!S5=2ow42fR z$YXGQFBEB8W0_hV^X#{9My|7G>fZ98e%%7(_CAH9KO*7MtUgkwq=>(+H*h~2y*L@O zJnpfb0=-&wm{l@)NyAgd(rq~syltZ<*P3R;j<k2o+Y$CP&IA6Fc3Ah6eAJ`TDytz`_pWNgvCs=PI8}7%bLQculjQ=9m%N-i6!{5F1 zh1*tgn|1Jw2RA0fq!n5|CZbtG zC}?Ue#Cxwz1?x4Zf|p1dQ!f%G5Phn{*!b^ZP6hsh=jS8f#$z49`?l>&QbP)iU)&E< z%G*%IJrPgDWJB$*!zgiI403#38OgzaFkc4nf@YE+CQ5^V`X7c-k%QT8&zQ@nqL_Q( z?-}QWDR5$60n^)z%-mD8;I!TecEe>z{bSASDhz|h40(p!sA0~nYi5k*n!~t%I$-oG zpS=DP4(Au^;c@#4NcF13(?XA5SGNnQpT}c(%}1yeo=9G|YQCU;YZ%B~{mazc)Pz@F z+u-eTBN%8qiVl)95h|sbxWFS|EO-v?X_dHBVm_Jiu@e*iiju$MoQ2uocqqF)9{wBC z1c}}Mp>0hfgBQF>cWFB8JXr>}ipJo(ItoS`BH(+WJi3kF1ZI=pG8I>5qD6`biiQW^ z51;2u^~fU#{n*IVoqx=XzLzC@OVxms^Fc_kNFl~CZkRV*h}xBaPDdA!=Gm8^MR-0p z@24nP_a_jC1C5F8-*Um_)xU(lu^(!DD}nD8$Cq{)P_}KWLSEY?<1xHaj z`W7h9mBTj+grt>6GT2^}0FyGC@$cIJOzV^&D-?Htxt4JDhpKAVrly0CK_IImR_Ck zhAYrlrfc90wN$s@ ze2aiTa43%+$(qbdviejsKApSVwUGW6zs1FWdd7%Am&=kiyAhn4ydH!44#0ue;;`aNKgcy*M{dIjCh}l7dA4*v z=xGV_bsy9*aNZn9y|EE~o*0kq88L7(rk!aEpM|C~9ztcJKeptLf`a5uur6z6k|)(M z+uyDOozWSfZ+aB`C%qu|?}lSQyFVlLcMPPme&oxy7TCOICMd-eLQFs)to*EmK?l+W z_LCVfp79MlgO9-~pEgV!r38DGyYP$gas2h^B{OdPMjUH#7C!!IMQ3eA;!vZ4hE6ky z&)zSvd1EemRF!~d+(bx;d5%TKqcQt!2R0th!~H*Wu=IH@CeaRvb2tEL8&;7tUr992 zJPg~<-2;!)nP6PG26y)iF_DJZux0Baw7)J6r+;PRl0Y84q;D}MEk-2iQxQ?ARfLT2 z6u9|sG<%!6pl`F@Rj9MbPBMRL|$q^Y_70fTJ0>9dWWNk|kK0O#m zY^p5D3hhh`sWTxoYCSp{kHgCwW!P^^s_;pz6;1~qq}L{+%8s|f9CHS=#Z5)^qgm*q zxD`|!REd>Lqi_4K3A0vggeta zj+42nHDkGFGjCC)H^p>VXC&)> zMbs+trN*i>ML&`rr`q(Ps4Bf~_J%Hb=)@})S@K_3Tk!W%t7*)SBFc_!rUB*_bXo8% ze$BEhdTe$Cf8pU|n*D7SO?;9O)C1?}%Vq){ym4_i3^zOiRnrKV@MJSS@|X-8 z^s~VFzePAD?*qe(WTAVO(DF|H$c$BuAW?Dy#70+LVC#H}DcY}zBKv)rKF8exTMgk} zK7)d^>_%8qx=8R~=&B(3^kUeNf0B{;;RVeTehavQct{p&f$BXL%$sTzC~dvM%$l?r zUavR8&1OyTE>9cpkCw%s#_lj^mc>N7{}aT=AA=CJ3P#)J8)WO0z#`TT#vhvrJIu40 z{l`-o@i)qN^kxsUf8|7G{y;ag_kkkJRxN=ldq2U)s9B7m$27oae+9$s+Q@|MfQ@px z%z6k%jZqP3rEyG9^;#bcf(vnB)o5X_V_0zG(mFVCEo0myAH&zm zc`&|S1b+v(GQA#lxNqWSw77DH`D}d*=Cv<_lz+wX$1Bs<{W<5{?M`u&!4>a=5=l%+Q9jlIbYb(~<+ zB;B~;fCF61o)Yd|a{*h|BSL3CG^bUOY66jij~K~XzyYnzOuqVIf&7`bOqIC{7*ARY zQ#bhwGMzpPd>doot9v`+H9Z^B67LFzo64ZVMg{{DG?_;8nb6dCo$-cYnex+xZq&JTC)tiN&xG-66=Wl5w{<%xqn# zi~HyPWcF777R>AEVoDpu!RhQdP}3_C3|yGYO!PGcoyI4E=@0c#*K#X7+)Ef6(>s{c zn}?GvR^slD`p9?060r}F;O4J@nO6O%$wlMpL&A*NZFxp!z7q%@ieuNRNkB`g@khTm ztQFMZ?NJ|b*FXYeB{3R1?oY;(iQPDJS`qPGM!7Wh@qaXoK$Y8YH@f#g)y*&^IL;pHg97M`IYdFTa@T z?_a(s$@^Zihlbs-%~ zRftYXG8y$XlId%B03W;KFh{)!jH;Z;u#49Jqhj`+0iA?8fZ#MOf? znD^r{ab>$Pr11u94ACS0C1c2)q)_r@ZUT(i6o87p_Q)mQg-hoy;VJps*q7^s!yVb| zrK?74AeEr!U6EP}**NdBm+{H=~m(q-~3{A|e{+A8$chZ2?P#q<7jQ}svcbodDGaPK{>RxGXH z4?0Nk=Z@v_E=!wfn_~(m)4PWH>={P`9sOy7&qJ=wcs75`+=_26OTn-He&{PzK#Usq z!-db2aorsWa>g_RCmvKH)(gfmj~tVr@0KyvpIrnKc8QXiPwYW=>oArbm_S~Q-_EqT zvzYSM8Ykrp<5=%P^8INNDbBx*LmNhsrMZq+)>a8NWIBc#$r5p42QAzEH7UHCild7} zQNeo`KA$udXFqF!QPnJ&F>f9ItWty$^J0{`nuJL`QsniZE_msQp=yyNuFGBn#G>u0FL z#;rwAq!GzH2{%X6QIlZsj03*v4o0G5z(bwq+n-VI@2|`9Ex6^fPDf2inZc+?EMf3#>4}ec$z%bQzj|lEoeH%3Dxcu z5VO4^X#8h37M_|&65iAy<8MJg#Eh{uO$X22fRR)W_Mdx>u3zFH6ULH97vxEGPX<%F zPaVzZR*L4`O zJP6M&m%?VpWo)%-J@Gf|<#_iOoMm|yT_W+GrrvqNUVF~*HTUxAE4#(~=4FuI^)Ccf5hFV!CyVdYk3a7C;x^_2~vr>-pI{gSfitnd42*D@*o za#VdM~Pr3kg)CBaLA@ZWQ)_r{_sV`DzsQjgbf0{|;cq zh7&kO*ysFJcoE*rki^E-;rL-_IdSqLWRaX9Hpw>QJ~J8Icw;5V&r!!3os$@O`yBM& zNg)^e4RGA!!;oGv0OtHvc=Rp|1S=k4T<-_S6ntmu^X>8V3uCla$j4CrB4fVy94wxB z5(JmDp<=fvTD3m{HN|3R@)*a8G~1E>%J=wlzyK}euHb=yc~EPgj(biD-wt<;P(^sU zOS^GUP+#2-W5i!GnjX7g?CcAWHftNW98)3Y76(x2=Q<`fV;nYK@WUZ5V-h>HmK4Qk zklM|zN@_g}l+;t%oeBv@N&)0)&n|6i~7atcpw>86&QF6sNBKiz=gUk$%~^Y>C8Ka=rd0Ia(Va0ScGHv~6e43qvi3{%GuO1G!+$@C;^&C;X{21-ZIa1>J4w z;-GjoIExIy)`ftf`yL5r_d3+8JIh{Lvyu3ZPow{SQo4V1IA5u>g>PG2$6Z--h;L9I zpn=}S{Npp9xPb~Et_n``BU8@P=TZjzgx)7K_rNn=d~gYWUFINnN6m?fS)8T23(fe{ z{=@wIN3B%zwJv|%A&M8%-$n&5V(GcWLi%F#PYT6OeD}rirYWaa@@rB~(7!J#=>749 z)L?2noi(S=&lc)QZ0MO{Ll) zN4Uz>X1qa6DX%t1n|LMez+&S&xT}DNpKnSqOm-#d^__}OHz8TQp;fT3bRt&Ei^528 z5_qYJ36E^pLcXwnCuA(Y#{1uy~veKgskw?MER?m zp?bv?+_7p4A%A``%^`|xuht(JS;*k=W%;P<=?^xYUxEFx6!l^&pnF&fL|TO%#<6oy zJ+=rhswTsVT_Jc~))fpIg^HF~1=KB?i&7bKIA=>RD=}A$XfmB>c{Lb4>rRprgSX(t zm3SOuXG7#~RpU(FpID@sFp)Z9xOBTHGNUTthvrF?3+#ZUo-X4IZ7 zCZXESHN??XmeuG>CX&Jo_-RWcl2R0aJrSRw!XOH7PKhIrcl3g_))e-A$Pv`cTY=sy z>u^Oshwp<8Q2d}4shZ=2{woeaz+W+<_2UsrnX%;Grf`^kA_5IXUxC$)QgBfSz$;C0 zIL;q&);xRGF({s#>u@H6j0l;MX3iGa?Zt0j262@7B~n%ah*ym z?o749qU8A`-C-Jjo2kf-9ym)r&k^Q%ruX6ULS-VaBF;_-OJ$qA_1RM+KghG>HWKsu zKH7M!L)~Y(L~5KqyG}A0+eBO0>MDkOHfch?bG9VfOei3_RHNR9YvlekQ4+ic@BtG? zjwdcBvpO!3zQ+v+Foo_?x<~uYE#hy^8sZC^O?jsvN4~Z{o?m`9k$SwYr&5OLR4i#Gze+NUf2z3N z)ckZj-{C)+A70->6Xsr_#$hG2+3gjt*%?9S#02qp<`3l;NSKakcjKov4)N!|it?>D zROm;SuQYOdAPqfULMKV7(Fr06yn$OSKgmFbC>*Q7>cp$0Yw9gX890W|bT*K~GR?UB z?N;J^T%Wn$Z;0YI4YB*$O|TJtgCVh1(AN}3?48WXujJE=)wXzC7gCBlLITM2t)tm` zu`Y5~*yC)OV?h>A*pE#Q9z(iwG0regAd9rsP_TavOCeLJ$8W@8)w^iBd@=6Wt%VZ8 zjL|#E7>uiofWu#9$SBtq3?8v0P1o|Fv@;4nw|)YT&DlUL*5maaKivIw1^%!qW0OBz zCS>v#yyVh_CWpR|SG*WL9e)bdV-m?Nc|DT*`vOt8Sj42uD&ey|Nw~jY2$FYw6^h7; zxXUDzhy{cbk0quc85)OkjGM4~^I-x*cI>~3&*Vb%A>z65Fq!Z;4};`qqIcU#6tBEQ zDuwU0n-hcBX#f8dHfmMBMzYVg{|116zrV^$$6@uYg=Decd@|)-I_b3+ zdY%`Av%!i(XZ|g0-7ijtO5fu;)mRigp34TU=qA>W1BmYrCsKbhoE=M!;rc`Jq+d6od5d%#Nkw(gKUe=q|dj7~o^H zPt!j|Qv6bfOVn}CA%11)3BEh~ylJCLGk;9TK|Kd@JjjUg56%tIQ(F~H^-f%&^#>C9 zHKMkBt(CLsE1zP1dDTqQ$Df?|U9wZD-yb<%bk!;PFIt^fcaEfi5ifWVLkZKx8}-Q> z4GpqofdczjRTTeIXv7unCrIJ2DM@~Ep6q{E$rzYf;47{HA2_O@#pX$5QkMum-C9g| z*`uUMLl=zxRiI(@M>KM(Bn{Dv*@hs>y4w{J8~Y04Vx5Qo*$L1|u?HtTZYHCatU=G& zsq8M}e>iAUj*gB>MEc_~oFcOc|LX4}&wt!P+ntG!`)4KbWO-6HzlfBtdIC}DXE9_n zkB-8QhRrnza&yI9wEtC%&jTg71RohT;hr>}{$zr}^_8rphOjO10i@2khv6&3u)$^u z*-|zlxbIvH($(GIHSIlMpB`>LvleQX3rNO>Zzwr^kO^DN;KW`9)E+S-{d2M^sHMpo4iy)V%=7_c^%l@;UUTEwJ6a6mD-=jLo`= zSR~XOqE8Du`3Qp9Wa+ej;8UI~Ukrib8#L6CTyE#CaRufMJ&eo5(AW{|XZ@ zwV)D1eQuG{&E=4-Zi*iM%gAuB5-|%rK~4tyGA9#R4EElDa{f_R`s)O)l70w>oJ84a z3zA6HlMUec>al(5(cj$;EpOkOBLic1}rX^vv z^v6Ie|9H6vjm>uAE5n=UBa*|LEH>ohw?^|qFQ+6r zli#9zfM2lP6fL#|+0{CArCh!iDPN;AO8H4r@Q zM!=a}MjE<3AbXTJJ9)(v{1fYdwJ~?F%IZFF5+x8;yAlWPPDPXVv5e-F7PQVffvt+oqAQZN}(k-3C^(et^Aa z0z9u<1M1c3s49N}vXloHMOl0Nt3DNvT+c@r>0;(w@O$`>6AS8b^I*NCB8Fxu;7Ixj znCp9&s0!zaTl*^vaovKZpW?~$)z?7x0%E!8Y|@7)+%h^zWWf6JNp+WMN3@~*URq%oITx^##B5F0_Y_P-;@;h9cjN})Q%jFy%+I0ci z?quV+wcE%IQ)#S=GGhPTs=>@Jh{X$I(RlqBRQfOg_caJ9Em(n%Xbg16-Nl;cIoK*O zh14A2!0gT@4E}i?F5Ef^tv`3-tmHJTMNJIa7{I=^KT4`%#OQ#%G%arIpd~8f`0)}? z*^(Gn{^sH5*Z3 z%I#C8v5&-QQTTW6SDpeNtA3fgl5mth+`5_09aF~t)vKWsZPIuf*Ayxz=Ec>ePotOQ zUvWEc2Du{>)#OzrO^;8`(k^f;_Ue1p|MLq*u9p8gWsH_kx!DR)r+(`$hg zmj#<{Hh}xOaj>#-I@;VD1K%QQ(ev;r+*@hGWc;WAjj}s1#wQ13B)5~ME;CYUR*vUa zX^}6_uE8B4%g1}22G&%xVnJ67ba@{m4Rdtx@xu9{ByW zk+FZe9OoA+qfYq=EN9x74E8OEr|yG{JbhSIFN#|_zC&YP4cIzPWvy51k|mA;O#O5Q zlAV%C*Ocop{bxGdEi6EK+yu9J3pb9BqnRX6;by-;0UQ72G6tCsP+fEpXj-pF%dT^% z*?OF@i5J8BamV4DnjzjjvV|U{?N3RE~^9$JV+@F%w{Im(#RMpgv*VmuUMQZJ34ZhCexpsGI($G%7x1OZ= zC3(E++eqqm*@dfh5T*I`O7s%@lB&M*=bHq_>6grNRBVv)dwBI>W_>j7_^!?II{_Lw$v`{*R z|0q&R{|4^mX7$gai!^?4*BVw*ori}wh5v+IuH$0-?t- zW3KSJCyKo3wn4}3VK773i*xRhz=`*ZFexgXacszfz%O%9waNzuY^?C1(L~(s5dl}$ zOklm+J`g#H1StBn1B!E}5tkjVU?(~Tw!PNHwu3()$8srFZpjtwbjxC~N)(n?DBul$U;LXko%xtl0Zkh{AwBvVY*0`pe$R`r)95u^Y+r^=QWXD=?0{;w zdGN{349`_vhuZlv#5Bwa@49S&KlOD&u16h|icf}CC28_lsP`3*pA1X%-@v$OUxeTE z4s8Ex$mE^W0wUiJxs&B!yss9T7X1fBssdp)!JXWYTtNos%i(mRukg06kv#k;j=v)P zVV-Lm3M3AoS9~ibS!*);9Th+mt#Rt9sZdd9NGz=!VcK8|F0xZ1V!yujj}4Au<6^wH=}pnx$!7&r{bmc@F|C>1G;NU1&vK<=FhZkm)UwxfS$1yrE!x^4 zMXQcR(9oIgwB?R1f3I^kbv*N#eIrxGB}KPzvDT@yCsc*MYO#uvjdoOZFpUm~oa1iD zRdB=iQn{sF@ibq551l$XhX1FZP4CW;q=xGnI92^-PCB57JE!=So+eMY=HHdH+)J5G zOI766qjph$Re63)@+M(QVLaD&^BKo%DdjE+`nZo)E?oAqi&Wjbf^Pm?29I|X!JDet|b z&J8eL?>orKK85~G+Q4M!k)1WNIM+cE4$T?@QLA3~n-YQiY-eU}+hidF;Ug>%G7s}% z652U8gVt_qcqdvd{ZuQ51!%m^+N5n&!_ zdqdFcX|Q+wR3=971nzB`2tExF_~hGcw5)k6&`wwe_oiu~k^MHjn-@WTo4rC;>WmA< zPawKQA}Auy!|lLOJUrno%8%6t`Fkgc*^7^GOCk=I45z{|pFjxL&lUC`Juvim2>h*- zg}sU{xK(;8Y6y49-FJ(bs~=_Y#G^&9*e43??5aVxR~&EFBtu^ICsNg4hq_ChNvq*D z+_%D+wDeyB*-K6M=|VC&?v{gMeY?rb`Rkb8wC6DY&w1gSKa6Mg!L5^Z%+hGY-!DK)Aw(|;V&puDiYkQ#L(h{hhrA5N5V@dU37u*b( z%l;f6jV|FI;PWOujLsLs>?er5Qc5J}stRt-$cBVt&oHFyD0(M9LxTkz1i43I$*5ci zTQmT(GG);%DGKvv%b-eL0=q%ihuq8Xp+h2K^!bPr{aJXK_7^#FE_HEyU+OU$B9_j_ zzx|KfJ)@TOE{x=({46M&Z9;XXY11obHt^!23Diw>gsq+F%F*ribgF?PwU1fNPv4$O z?MLU*+$cZ(%i0F6BKsX@wr(3WU7b(;a+cDz-rv0IlXJA(TZA6o-NYSMJj~s_{+IiG zyOItm?BLqYETF%o7tuLmy7&u8LG;X@I{u(>20i=HojX5~q4(xU(XR%kRQJqkZop8L zw=}#>!}8@x=70&3>aSS-RSN>%M4+nJG;)d2#mwkoG$H+h^>7B%*6skK3-%2EaSFy} z%EHE1Rp@HviyEfa1)sf=;4#j|Gfxswc-Vrt_Zt$k7-#fM1G2+g0$q?F5iam@%5J#2?HHK1et<;lYDizPlnt9JNhaBAk@jyFF=FE}(kUm*q(6CqhocUW zZ?`|8&Zh>VRlksV_hbhykGlhwzX4~*JECpBB07te6T?0yk`N&ep(6#jb95g*i|-`r zFBh?m5& z8SFr;Eiu}VPxc;~O=8o`*m3=ysC>&(sO>7S8g~1M@!aX`%G3(R?etf?&O4#%+!n0p zy@Lz-BJo|^KGwwO9XYu?4)_LR;M8fI2Aotmejom`i-}(3H`k6KSpn^I7X#+Jq>|Dg(ygS*nyuq0NkP$~+ zHaqb4PcP6P2_pQodME1Ac!@U&GcxVGv4n8nB*`Mv5~Ao)2m98GkXw;Oggy8bhlXm% z^-P9YKKBR?=X?Y2Sxd0$$V$vq`2wo=l(=qNMtV0%g2I_5TvZ}Xl3u(e;hjS5wo;XK z3?0j6?%P4G2HT?X-Vq4S`HlDcz7ob{FC0qDVD(Zr;H2}d*ikf{bf%f&^re1yNAfUE zA2^7<37+uZC?`U;j3Np)5oA$tZFzC@# z=D~|`ptevG<^D)9Z&w|Jlk1-|;%4&j?>LJ_w}v2`v4=h_JGg12h+cLEut?ZHPbyA> zQ_^SQ>z1>iD+?$)|A&xGdI+?~xj;d7JrjNX28K@0gI#i-OugYH=I>;6upTu4(;YJf zf1Z65Y>j>d(Km9KxpEV+YcLIhEgYD~TNBaq*GwWk;vi62^^&>2U>A84KMU5S@r?Gx z@!)3v9+HM*;hybnLDbsAg5Iezc;nCr)AxBCiQ{6JS8v*2r9l&(`o5bP`lN`%(T>BgDRY413rhoLHO)pPPyq570t=VL$d=1BZ1MH*r+oGFUoG58pkx z55wIv06*;|HhGqKvSTc)zhwdSd*WexiU;0nG-BRmWiZtx`gkl?5>nv^rcKgAPscmV zhzTLjqx;D5ZcVQ3Y6ko6OE8_As6aOyHQ+o{gttbICURZU-?`IGE-d^GC0uATcPlE4 z^V{x8xi4+pUZYwX@QJ6iAc4IwF_4?TGM&p+IY3=Dt)i+`CpnkD7di7>Yp!GNLGH*M zFp&^S|d(@kF2ozQJ4y7sx&DO5-ADtmX2Cvgoyfo7^vv(bObiG56NE zolESv$vF<`)3q*BX@&S-cJD89?$DaUTvlNYr}6C-yKL1InwpnH-<(wxy#1cUoQqK+ z$LAz7I`JO_W7|uaq-Q?h^G5;#t^EY&=gbhi7*h&mF8++>jT)TqD8ZCOn!>q5{@9n& zDF`*c4Eq}1FgG%!A#c<~+;MO$emn0D@`ty=mq|k6@C8N4%+O*ouSNkIJpe{`lfZ=G zaKgPl=4#qC$SDwV4i}zfR=WefV)(W?t^?A(>OJ$pJCD)a?ICKN|TG|3Sfk836^CTwS` zz-`nB?6V4lXsIITyrGCnHb=qtJ45^(-=e!kI8)xkqJu>|Dr*Wm6Y@P|hto!KIy0O! z(*JN-swh6xE`#+B&iHWRF2cteLX(3$E6CKvlef*WAff~v4e!9$&D!|tr8BCYmB7s- zIRP}v?f43YW-jBzT3guRkz6+T*UHdRr*rA>2GZR~ykD{fiB5srUM~s*6 zCy&34Fkfshq6?!y2Gm4Zld)UaXX_DXQUjNmAbOMlr9pyPCcWlB3=JT~z;{J&mGq^mNuM?(Rez zetqj1e#Nl|DBqidtH(Q%U)JkkyJ@O$YH}oCQYuO=T}Uo@o)s7=3-jA&a=|E}6=J*v zD5Vwy{bx6jc|x|I&6|A;?Q})2tEVvZ#V&I2Y!^{nSV}gr34{(mLemln{CwgV1iXsF zLj|Garol3}cybD>qB0iWXxbsK(}WJmeQ>x}6}y|Z;qs;WSnx^6>d5$lzh)NTd{7}O zV{<{N#T&K$GliY%<`9#rgc3P(F@D`N)O`{z>_$x@YU>RIq~R3wem+Yaew+p4%d?q< z55L1JdpB&@>Wz0DZJB*b+?nB5!MN$C3H<&nN8Arjg`UOwc&cRxcj$?MZk7q&UvUl^ zYecYN*Bmncl{h&m^u~0;{qRBkd5kN53;Ub?W9X3xloKq)*|lTIHv89D`@IKbzw4pe z79I_2qe12LLGs{%6MB3N1H2-Q@@ssM{qG5ul&@p#gnIbR;23_`o>obkrU8ga6|`y*N&y~zwcdc$z#(xg!1 z5gfHFBERL5p=eb<=BT8SDOb0EMAvz=ELwmI^AF;;=>LR#q9a82b2%QEF^YV;Fo}FS zxfs9oE{FaV%H-B0F>+?+38Hv3mRwwHjt{Nt&{O3MF1ewAgGLNnxcMJOz87{OThcM5 zr3c4YtR+2d-Od6@pGSKwzgS#miVvF!YUTXfKD6TL3pkD zt0>l|W=lNiv{ED9+H)gs;~?ZQY%ismwn=o&XG)z<$T<9Y3*ZhCr66R&^r z3yruCPNmzlso}?kbmnbMN*Ax+nV-tZ zej86m*6*W6x!Y*r=^LETQRE*CvOMmeDd_3{3ODEXkWU9|;N6jp%;wWVUao8+`uqvP z^nQQFrrU#=QF|IaE_(v8uqRGib--<+8~R4gAo*pTjD3PPI+%2TQmrEDddw%m#nzM8bx{q{Cd|xA>j^!)es`QP-U;U)Nr4kr^NGaz zSllkT7wbC=+-&OvZVmtsG+Ph_qB zGeofY#P|eEKu?==X5Efa_^D$WzI}R$nZ98dE|xD8w51rpXNPvCdh$u;qL3*&CEtk& zACbaP$1?b?@>&p49Se8-#LWv@1(T(5bkljp)Vc-d3OS$iZaFatW0i5W^g%RW@1kd- zJlW_p8&}K{C5G({&@nI@f9Nd*Yj+`|T33s>{;~sopLOI~#S|f*@eOFI8)9$6BshCk zL#Qj(VAtuLp!0V!{OlQpe+MJsYt?6%DrEaP?~=i?_A(gTZv;J6=kcMj9=3=Wz(cD8 zk&HE=f#W`~%^^o=M20<;@qEMW+v`Cmh92g04{1~HmBMQ93pvj*PvB|(Rp!@vIovur7V|dP+ z=43R6KmG+`68_L+!jNq}v(e`1T{11C8$}r-tp0f%ndrsnBGM-0L^_b2$uYt%x)k)s z*Wljnd)U5=B};o%!G8S*AH42USWe>&r}IiTCi07X6il;)y}hrCPjOGG_R!si2kEV-rM$ChBX0z1 zy!zK+svM-mAFg(#>4zd|r_48Qxz%jm_{<#M@R*6IQ?Mid?)PiDu_c#2E<8!M-(N>R zE!Mlv()nc-v-r}^WZo}Xnje02hHH;JLIbbb)0sj&%Ws7ieNgMg zuTe_i-@MF+D`(>H=aB*8GjShCs~v@SuVxfkdmG*Ab;w}O8m41hB&^tT1b44_0Z*c4 zle7|FcqnT~Bwu=wkb7^LjZ$&wD%8vury7&b>CL3}Up z(iCnf)Ivq@q4EOkSz-_AFTSApzHPYCR~w0)FKd;n#BP1=jGII2nR9m(iCn>E@ctl& zIcvi3qunD$;+hQJ9DP_Ix?LHz4sQo15l?1@TLgNATx3l1C*gmoFQk;$gPqUWb3Wh*tNj|3PQ5T&h=7Qq7sBJ@C$lh-wECM!hF~@S;k^*IvhDK z{6Dm$Ac$y@^^eC1)9tU&bXx(|h3{mp9}C8)XYZ)v8rptLFUA-#_782W~qqM~^J9CC4^jqc4dDh=WHwagb?Y zZmPc^y1x!Eoh5}t{ZtaOcTp1EnDB(S6Kmr4?h-ldBP6Z)4jljRB^lf^L@zV^$b3Gu zfXpfDCZoojBhr87#Ek~&IpYtGf<{YR~z0X_RW&p+R!=XP=8QN89K;zgDI0|OUpy0yI3omuuW>M!{)Luod&g;~=K_)PMQ-lr!5BuPqd#h8Qb! zdr~NJUVWY#+jt5U?P#QC{VG6lJ5-@HmqwR2V%VkDf?O80P-~wa!H-(A@#bkoK>L3~ z%Jy=2W%FX>iFnX)O9=)Dc6mI`Z8S6=G{K_DYJiJge!NzN`c#}{X=pU(&CD@0LBKg62PPLg9Gl>hnFyhOzN$J}Y zoZt6U66ZXeKic&?S-(ny99VOaxp_2|xn};8IdPX`13iyr`s;R(j>;8e#i+}o_bBlu@D@-#zCI!D1Nr zEsY#($KzAyFq-8t7LF-*f`Rt~>e14%44&)zLgLdHO8w_XD%bW2-0~_wofEI%B)d2?pZ^m2E=1xlZziF& z*sIn2vXuSf{)7}1ZDN$erx9b_DI|%aS+z5hS)cR}QZ~1R zm_D{4Up6fy7Tv?h$to#g=poHIoRVR?A4IWk*79t_><}_)#AITA#e*bjnvyERgRHYC zlB}LIlkHhblWL<<5;^Y#$ESYFc}w+>H5zA`8*&arzhpWwJhgzV%*bF~nM$!vCmdN_ zsXG&$Bi18}thZS2{W}!6lA_jZh(x?W21=Elqj&GjsOcWVD8<@n@LOxl<@q*XrR)*t zgscnPxnPO+H65eEA4S32n}^W_j=9unuYzZvdkl`>wP013BgoF`1iiT(DATW*>WZES z&u-;He;Svo?fMPt$26m#TSH-LfIEzM7mnC1O}Jk_3L;gKxx7<3`XlN>3;A_$B`BV{ z_2MoS^fCjCQe4oaWp^Om*#_b>^$^d#5(lmm&=)^lKraJTklu_itk}|nM#c;_Qris@7L&w|I?bBg-A0{Goj4x8kLLHV_HaP`3} zlw)`U9n{&6_oz!j+g1s>5>|@NS5fGzq7g`Ge5CeBN22;`K5$2jQBh$!$Vph3iF#rOu) zFAl?(=uOCf>SWy8Iv$73(LwPSpTN!LJUFYWgBMl=V!yaB*weQVFK;-6Y`09rR?3_X zF=zq2lC{OpS2n@Sl7-lpdxrSAHvoKlzrx|{tuVZBDZHLHmbN-_5-vUsf;^rOUK&)R zMKex7uuCM;Xi$L8ZD(QU8;<{YQUg!cZiK|E)@bF-3asb3ntmp4P7+OY8Rw^qS^Fk4 z)^DFOiIC1DP66MTvSc1n^j*h+!yMnc zjz|usky*zlvy|N*k`{iMd3R5m&6*U-e0mv1c-tv*PH`b|SaFrSoyD;8R!Ffjn?|ua zdLoG2;C^yuQw*W!ts}=&3t6edp+tM~3f9Q$DPtx1%yA)H$;PL9$=#4VGB{d_d~k^- z=PKPvaOG6;<@YmsdvhwOQHf%MC;UZ!b!MWCDLL4jt7CIt@DYWX4}(;#VDw`53v|2k zByUW|N@N|Q1Nrl(Ah+*hu+QV))Y9}5Fem2zbL zL#^~kv~rRj*s0&6n5myoO-=-)xyzx=4=G67Z^IjBpo!Ms9Zxw2P2deZDxp*##ZwBy zUZBNQEGn-ro~T~_kos*^g-(0lKvQR*2ThLgH0R!3)ct!bbU!Bad{L^>nwYEU=Is??&`~hmjyAzy$BZCH_U!jD&C@Nm-A$7|x8>yx9QPHeLNM2b; zMJvZ5iwoft|K|&8+s2LP{YW8N9C)2NvH{_Ov;C-KcROqzk%@L+It?>?!jRwvm*;mF z0u;&R=DbSa`NIO9QA#YTGp(eKUwzD*Rpf!7?G3et^NAZ^&!MFT=DhE*L8zkE5x%Th z#ohm$Ft(2aTx0`^t8apF^c$q`^#_$OH3J0N?_o+)2Gx2k1#ie{M%D*iQTP2oWIoFV z%?NBkFQ_c=97Ur+qi}Re!x$DepF-6k{b*(0b?V_RX_%UDhuXu;L(i99K~5Q!XjKX4 zd2;L;-jI<2DTh?a@yiB`+LF&qgR2I4rZ$_|f8Z)vAXmlASk*`--Ce_Ez6zwjUVliW z*56=SwM&?*Z+0_#`b4DS)>HyMK#$n}js9ydPsB?*7>$H<66SY|*?tod`NJvXXT~zd zU1l+}?3NUXOZ>}xS^bi^HDt){Ty09G+W0cb>Qfos0L^4}r7}};IR=VIk=dR+o*4UW zWDcHHX0wG^%(PI>&$vQ{4DV59qWzkg5o zIk9x&8Fw9&VS69>?fHaM!|FkQxjpQXx{hL&@!|QvA#^-&2h}jg2!5-2LU_eUYUw;Z zJm&RCWIR&_tvn!e0SZSrMwvRq zt-XW8fBNBd{vDJiIt=ysI(YA-``9JdhaPm}>S$w*;WY!tvDB+@kn5u0^7zqsyTfog zz^EJ1q7vFb={!*WS>WBNgcn}t^1ii|5c%2~Uzm~tJzVbIV3$AkR3})&Eg35>mV(P; z`XKSaQKZ!0hsg9;@bZ5Pj&A8-=6RKl)z8DP9t4u+8S6>mS8w+8hFJDdS^^Utm&WeC zYsF6PsbnjLw=g=p{21kdQZ{arp?9ZH!?C=lv?47<)MkRg%8*dnj--^s zP{LZSespv^dSpHs`v_mc)!>Dk2LJ}A&1KM6>xzx~A7J~^N~|@{8XvA7i3ie*;AnXv zYFt|c&n~XRVf+>7uh5DXYgay6{~F^m_~EroJ+@R9UMJ+w=?5pCmGTCJRZsylZDlr7MvKHben zo9=`nZ}&ntK34;WOQ*y8MRl+WZ$(%2mmr&2a_Hi-T*`OaF%YMIq8{r|_}ash==jq_ zw0D&T1aUcuKNk!U&)X92JvfA(CxlUF59`4qh0(BGv=Y=C^QpZxAt*ztoBFZEkOHMs z=*;d^G%CXisXYgLd^g8_ZW^SlUaCUHn;?9*aT{`!-+^RecEGKlYvJ)A=jXY0KhNf4 z47!qW6*a?I#QH6UGFOD|`p&=>>N0piOe~c$%@X2Y$ilRJbFo%b9%kGatgu6ftKX@@ zgANJDcG!V>au`(qWFGEIN=B{dA>P#`g!%#{xG^~o$|n9qgWac*U0N%Q=;T3xk^w3j zI05)cCOlF308!d=(6$me=wD%lLY5~|sn)uX8~i}ddjrp#N1PdC`TS4w>VvHlFUXnH)tRE zWF^CR?Rd>3W!_;H{K+N@7Rs?ta~YC9e>HLN{mbyI|9ocsxy zc5Z=rmij#94Tk786OL59W}x*Ye~|v{3QF)^1f}Of!7pJ1HPChkIZr4-%-c&ai^~Zc zRt|yu@7GW%6_4!Bd!ha>(#R(C31zsa82&aJq4U*lID7d?6tVU=Ds`eEa9;#so?0SH zEhmusTZx3neW|*IJaA~%f%0Jo;lst-RB6W!q;2tznmj>=iWgU*3Y8d?tFjus>(9U| z6dr)}5 zIvIU$>wt@w24HmIHL5P+7Yem7g2|OXV2Wiu)_J=Yf0^?e#ukjkUq6fotsAvSKKL7Q zxHuB`gp{K(KknhD8IiEJ*cfUQ7l5Dm2dX@C9d!(s!nY?Hg3Q#ZsFf{-7bG8ib+xhh zp$gL8s0o4J9wPtdMW`o@oA)g6fX`RBSnYrseaYDs$9L3oT>4u0Q!#{9u>h85*n(Q4 z8=gMh3S-qAEEt|m`5Gv~y{2Q(vvD|xedO`t{y)gGAsa8z2*(+t?a(An*M4MKE>v$z z#$MkXY1@*&cIVj=7u+Di8ZYjGayap3>zIcO{h zgIm;MNc73X@1K{$d53q%nPUl@yfhNeUYvn-b+WlQa2n??Yz&K)#Hil;JB+I8fw@O_ zLx*1x{qgD#Y+v||F>stmcIex)zjo|nTj;S&*3f=-ciJen(&Z$pGGPJppu~bX6Bxs0 zxaN{}rPpNancqZF+{KO<(@VA|Br{TT#*q@62!b<|*zx)0?5I9X)^5%`wneRkZ5(rh)F&1&*(G7bDrYP?zA2vEJ~@n7$uD4UesyQ5bDSRNXBaHm z5RUD>Cn9FXH>A<{3tl}ggnULHH>p`s>n5H>nR{l!-l}MnUzP$V!?z;cWHsD-MHM@h zpQ1)5jfVY`_|U1LiUX?4v0uVb+|eqJ-A7wu!C6yi%F0LI2XwhOqCQ^y=Pr8xrXQP% z_kjl*2QL*j!wxNFIPKSfBKZpV@D>}WvoJ&Ixs|ZLDG3@bkHS8PLQd%^RN_IvsuZ1n89*VwGXRV|ttLswGVi}4ww#M@+yCNZ{!=5jEpBzU?uaLYMDF|O}%RXA&;k^g(Iq{dn0b5oKrDq%i;kv zYxpI~U=+s+UVE0>^X({acG4^A&6|DbjY}hS$F~#od3(4T145sYNuv974iRepZZgky zBE3h2Ft5f1FrWHXG2eU2ai7S6UORk{8Mw|d;52CxuvUS5+IxfO+G~=zDKYdgnQ+GS z5n-N&OeAv^jEVWZkxa*KIfAbYV@9PoGndv2m{m1b=*?|M7~kuQh|-yvB%qllfu3S! z)tfS=oT_51Z_vz%ujk3qS~n(bn;V%s*_t^W=gs)J6fu=c?U(~SYD_t|(cz0C#$-eq z&E)Gbiw4!{tb+ZF$r7=U9iwKw7>Pn;lBnxiDd=SCXsc6B z+0+;VS<1ci9_5sxi%OMyc#m$3gM6|BZOl#NmCScWmREjI>KfzWFJ%UY-`1fmmhs>! zzn#jv^N_OkwxVWvyHLGN>QLyVOO5N<2d^hwqUK&6gU(;7L)0oasshDOYI>2VXlEfc zviSwipnMiGGwh>`K6oL;ICpC6(K}SqfmPI`Ru$e`&SyEDd%pd!$&Yd_h=+M|hXb$T z1yaqph~^v$hHI-EsV^Z{(8m>9LAv)1a$QvqCRy^l9gD-z*|Wt|#PRv4Gr%4#&{gL= zIz{k8bqXx=*P-^lXhc2F-=pu(dch&W0q;$?2`kGDusbKRR?eG>*jJ;`d!M7|L->1$ z%95qf+g&)zB?|SdZb4N~XF*=BJhE7vh)!CsLRo{;(b)U5DQzofIFrrQPHx--NBIiq z!Iu{(TK6F3$?*$IF78KSE_b@zERkdNMB=Y4PVg!?5Ttab!6HTnA98d>YYQiU-12wu z(0C^p9b$2A=X%~w6DX>uELD2XfPUcf0qymk1QstJ!nCvb z$Tw>g?B{(%gUKJ!u!2VvJ*pGxWR8H@cSZbVR~G8<4S>BHuTU%2edj76E}=noHEdzk zINw_%+T%wjeEglpEIWCb$)8KHoVze%44F9y-4Vu6O7D86{6C)fCu*1VNAo;B_?7y@R zaxWB7w~D%vFFy*X;{)h-c?Dea>Yw=9AP;>GZJ`R6Z9*Q;+)!QSAk}*RC1gahkULL{ zvhjF^e(zHSq1F$$bC1DmCyd~D0^_lAss;4rPe&o^R8h~BMl@Lb1rEoUQ4o=g^D_d` z_MlEwTDTfgB9u9${y|irvT1+PG_NNZenK$fElGu#Vn?`LNTbp{c^GW(<1}SMa6390 zcAsWwNn0ZH>a0fx&t3&Hm1gLZ`UOGfqbbuZ71X&!7omUb4z%)BF5Wdh4+*VC;fKry zTt1qhHS;9!T7LwTt&W2+Bktqq*FHG(eh5fqY{vzA#$vs9c5q_I0v;)7;qyDcg61DF zPBh@^2ud(`3q-&a6v3L)Fx))bqk^?8bO|%(q&&N1hRe> zu|$SBNBVZEvh-IVrzGE*eb42H;LbLBa=p*{=Pkh^o^f_DSD$vUF`Ev#)C=$@NwvODg@z3VsGNKT?+s zm|(@`Ex(88{w{Rn<1IXsn_Ew+G)14{wn59A`CNQ)FN7a8p+?QwPhG9w2#?47p>DpN zg7+3u=-K6DsI=9^^1pK^KZA8p7=IXvk1Byf!)$Eor-^q(szSKs4_H!K$7vicqD5&X z=!(G(cs7G$H$CLx=9`bf-SawXE%Jb_<(SSST|vojvUxnp6E6ME;GH`h ziMEB@MDA{zscHj)OLZBe|o587ze;!HHBx11NKXos?1 z??JmqC?i+)9rF5Vgcb)~Koh3jrQ9-aqlEA>Y9Hq>Gdpnry&R&^XP0{@D6I}z)KpQU zZknMXw~N%{kAEpcqiImlHyT~r^N@Grm^C%8VF9(uXd-$LQ_S-X8KlY-Vv&+mDRq$Z z{u$*q4T<8O^4d7P+Oeg#z=F%Scdi^wY36spynaj#&-j9_22KJ0NxJA;O$uVh-see1 zsw0)KQ|R){+tkPyjs+V3oYyF6M&Iel;MQS6&D?t(nFJ_9%i0_yKYj~rRH#C3>lv_c z2}3_`vaoZ%KH8vd#N8XCq2KulLgxEnz+(xBD@P;8gc6ixWRD&f#-ewtIc?VadURSG zM8TVj)RglVsMh#nNOy`eH8v&~Z8mK~%8Lz=Ol2voK=+Y{uOIa@0I=@H9oTE!3+Bh? z+gROd95KB)j;pK4VcPhU$Ot-|-aK5)$Xx_x{z^6aVwoX1Ql8F~2k4N%JOifir#qS1 zu!Ov-w5BabSujN|vIN(=lcu^}=KDFW*6Zm9M$2{q(<-4!!HyKRBr!alam?cB5wv;xS7!4Ybta~H0lEI& zi1ZhaV3rYYW{b@?=KJy`O!AHeG*4@Ynf`h$ng3V;3a#(*c$^pJ&hZC%pMK;b7sn51 z?7S1y`n~F?qtb`RoPSK^^thp8v*%O4xmwhi8Q#2EQV!_k`rjy$isijPyHKz~JW`lA z3Mu5gLhH0W(eCW4$Z_O(5Rbw_-EP=WX8q%$Mjc#VY~%wnXwu^J~4z7<3uRz*eE>oYbsEMGDz3* z1mw-Q2*VQL=jRt|V zf8`XcYMTbZ_&2zY%>h?aN2mxF;peM3_1D$Ih_VKpww90YZ#stSB2$pJVi>faUJR!v zSD=GrG2ZVx96xc{3LmGI(9X)3{@Z z*`B=@$&|iDY} z-@x7-(dq?ug62EgAxv?7hx^tEIuctgU6~8JP>OO8=h37tVg#{ z^(q5w-fj#T{m-xxQwcq0G&tMFLF+IEZduo&D9+FHz>ZDORM$ssDiuM|3K6VIWAOqn zGlX4!qcqO<>;PkjHvWDC4)#GHDAs`j=V1Dc(Iwm!IDkBPI$#!Z8P{(aKrfWD5pR4k z+?bsJaniEb(pZhMIyQI4E{bPy^|lEPn?a$3xeCoou{jzhxkQfHK=f{U>d#C&@O z2`ehF`dJse#7z!&ZD<1XMaQ5lXb4H@GSu=!8NYsD%W-NeaOe0N@M_lxkbV^gVB!QG zv(KZxuy9-{2mnLxV)Q^Olhf{}z}fF3amxO`6l>Cpywc~xMDKmbY-v8ktaOH*CGDtu z^KX20e+yQO+yL5t)8IzFD?MbL0BzJT=o)Q`+f_{Pn#rMfMO_kA@6&}mMOWd5tSY3% z9LDpr68PynW216} z7_{1wn6S;{%*Wr%=aJ6rU2|?8_DvU7EO&;R&ad!}lLN?qpag{;sROTzIS`Ta9cF$v zqfT!;fQ->L*uFjf%4`x*f-kJARNGD4>^U!mPubD^GHgEEfh!n7`XSf=#{{V1DH=TM6DltmJ7 z*ti(fG-a@b-*l95Y7bO@Ho?3331AyB4R84PktfgbS@Jy-&<;z2Qr90xTj&(jQ}G;X z9#_DT2Ykxr-gQJ-MnJM;B;NA=0-p779ez-ziM74|!moy_=%8jUdX?-8fnEYEEz?dF zed3sGhgIS8cQweqJr8_7F)Z3~S`1$Gt$Oiv{j|%hAIXo9k z-^n58_@!vfJu^5G;090Ej(`t_qv+TE$3f|t9geGOhm11`_!AmL%cehqS98+wxHdf; z>(YoT%-t!k-suqAp$3<{Zy}>R1YRp-z|!m(w$&A2=f+~{*A@@>HfK1;doRVC)MnCp zcZbn>;|}6=eVO?CX-fzktq+gml(FK9E?gnE7X=B9(393gfW2NAOtI*MjoW!}qwF~B zO*#e()-D0{_)SRufiw2l!fEuH4q$V$US#yJh4Y@8jlx44(S+z7P~UeKW&|aH?YAmg ze98%T4SJHjc1wx;CNs9sz=PfOc_-s%bbwty(~K<<6|o`drA&L;e8x>apVhpcNzBxn zNy)fNWa2?F`^(pYwSPC0nJcSI29oN?mw}h0Fh7r-QlieTs~aSXW8K;Eixx!0v9HbC z_mF)?J;d#~FSe|F^{wO2TyW5$l#xQb!%VZMn8buCeJYl}Qb!2TOMY1ZUgRmzx6Sluq!9BF({H(FjdL zn00A2#H}kvM>*D;L5w;aw0w=!$Fx#yhwj0X)yWX_Ru;dB*oPFG=K-meLdOan(Bg6O za7CX5t>*yd%l6Q#zt+HhuC8s%SrzVn#<>CHc!K_bBF;b8h57HC@zUM$wDyd4O6}NQ zh^aXS>KwAJi@9A4Fj z*Jiu{nR&aQxlRq+GYWKxkkjS%l+(UuV{y;XK1kj=5$l{U1=GA!aCTM});QM&l~yC+ zxoI?Z{ktC9KDvxIZRzZ5*9sfNxB=1RJ|wa85GA=tP$nI3Y8h zt7R>vKc~y!Vts!c)HI*I?fewyc>82?R zEj7Cx4MfewIR}#QUeA5>l<5Xc_fQR;)Z;~WRUV{^JZIrS<=1euxdiv<9H$>7OXCY} zu1pVAfoosQ!D`O+*iO$DyPsk4?0S1Td)rq0Y#itHyj-3Bo8FDThr7^C=MF)XSu8HN zb_Sw$9RpLzX6#UzjjwA?#?OMHn4IOgwDV(WRya?O-MdSlf3nkw-`Vh;IdozXziiY~ zc4cB1KTLfo3G7oR*75848f++QkzLCgS2wVMyGr=}0aw_g!iB_Rjx0Olvpaia!*%u= zMDU;a-(uS*++wpoA^wPOa_sskliAn>quJr?1(q@$V&mt?2r5pg@b^wU$jTgaWt08+ z?B~6}{<-YR|JwYMv^;#qD&37@%|_+%%j#aU@&@sIJEvq;n@J}5eQVfwM=5q<+HCfC z`dRY%kRkuFn~-nelY&PF&%_;4d|J(E5mzW>h#NkA#r@^WasHOSSog*q%5-}noMUgo zkj517UTufZX4-@9+b>u=x(2^&nU4NgzT>=uEwBUmh`)_ILeu}Q=) z#=78i*Sk2}(iprz1;;C_1^dtDpyD|kKc6O#FSNXZO|JIL#cSsDdzE86b>kQ4ZiF9w z{YD(f&S{|j=GlXrT^W3dJ_)b7;;F>?msC(^FMM>&MPCYQaFDPE6&{zt_nh`(g$>?l z!Lm;f`gkI!z9|GM;U+#iv=9r%zJo?-PCxNsHy*kW16?cDBey*on5vV<)Zi{GH#!Pi zW%~nO)(dk+b-@U0H8^8GnfCMg3;8Qoz;>qt&?GnkuD4yW$J${?;mCSq-#rF@iu;3D z*`=6=F2Li;Gialp0^MAmNV99lQxiVl;cQ9Ix_S+k-`R_krB~r+!c^F5_?f=ql#6YT zs$ZmprPrTS7XI=K~P!;<${{XA_Xca%L ze>>Y~qC$>+{z(4Jzeglvo7r0ypV=2HwAq0-TUnVu$H|j}--+7%Y_hyJf<&&%Vm~M3 zvXjj%`4ck=*oo`(*m>Q3B=@B}Yb$@6RG+cr*NxX_{G3HUM z)TlsquAD8=Juk!N;&!r(^YB#S@-6dDWU%=LZEXEj2`^@$5uBkD=;9@b;5qdbrKmU? zhM#`~2}@6ciA5O|w^s?B3f0389d042UYVY$d;xvEZiQ9o7QFKrAEoW)>e~{yc>49T zP(A$$_U5j+qg#jLb7%8lM(SQ1Bexr}N3TKkX~Xe?BYZq()HbZEl7J&qS3{+}KF%61 zi{G8n0u`rK^jd6&*Xa;A&=L!-&vQXlKLBsDn1~jCNkq~d*<&-y;Ewz)n|__<3W?!PXQ=;(zBRyQ1x98e4unZyOKw^n3H zcF!Co*|=V&x~rJxTMT<4Fc5B+EN@yQP?GJJJV^a0xMq1%Vz?w;cywNjV9z|AYOfuw z#tGI5f zUYMgT7&ZNwK##L@j(WFW_-D*liHhii#B{f#&@knwWKg(EEOYdVpgv-~n8}L~`Yluu z2ap7D%%{nMHErLkWhSo@My!^Vw7+qZERs4WIJ&i5vR$u&Ez`Qq|5kiZ@*pQkQaI77 zdZD7J;MMdbVebYh$@<}r0`t2j)tCNQ2(4oBCA0tj5!#q^3uKnYR1eZJzRk~8*O+DXHzH!vsgH#n!jW*V%lYp;p@y zv`qXE^{ldxup8pdW!6X+U@=JwYN>(s+->ZtTF7FVojgSwvh^Ms9F-GC_b*<%P-*% zR?k{DR=B>UNvyY}MKZ!IO0aBYqU2d}v?#Rm4Ego>q(p0kiA4T}YISJtBEAy-B-j`m zBeChU<96e(#9Z%#VCRI}l0da6;kV8Hg0@?l)n$F($)Ur2lDy6l!n@zb2wdjpiyPB* z#kaM61@Tcz)p}b)s&hWsN&b{-SNnyX7x)BaSBJAV1E&qCd#k zGbePcNcx;=rhKbAF}L@?(V3i}^A%w>kTP0*;{#@o_jQ_gaV(KBwjwu8e&Znbxy;Y= zE=;!{AwQjDSmkR8q`-C=DOo+0T>X~BC=`9CJC?aH7xt|rzdcQu-&LyYoI4kpbg?I6 z{-S_sS>(txjsHcjEL=`(K5k`9!%on$_nt5~Ud*h$Z%uydO{eA6S1|8|Jf^Fonif6G zU>t1^FtRpQOu^-8>=o-XL?0%SN8X*xkz=#jg1RV1Gd!1Z;WXGs>zqjX+?zz#t_lCq zSi*dGA!2?_n#v@d3?X!z72~D#p4=RMj?8|vjy@vyfcay4o7tE6fLvQ0!B(PC?3;{M zVzA;Rkz4hJxj$_=^HlLCGb>4+oe|f->{C3!9*T7*Jrf%ls~nn~o_UQ?Xbxu*f6KD< zF=|A-VFpt(+LtVdp~$sYwWRUTBihijms#q&k9p~2%(N|$B7uwo8KacPm|MMIw@!9u zE6Q91u>o5I_a>(Z=NO8G@piNMw`Wuf6^&;JErOm4Cp8!Gwc}&>8|>PIZ+eFbS7+J^ zg%_NJGO1&&B|&DwboB@PwN(cNsn5>}OlQs(+K9di=V?0$-}TNG%E+Y(Gvy8nwk*gI z`25)>xI9%T{3Eqmn00oIHP0hdxKKt)n4sMtI5oONFw8bV5bb(h$X7fd@Y4?#>JI%7 z2#3j9pKx{)x|j|LFE3RWb{<@cV=}^ynSTlpf7B9d>=hc|DilvNKMH3x=TY*fnK1M(9UqnXD zo=wD>ck$gddl}1Qf977!46@ZuK+yFQ6AQjVdOZa-(1>KtP>cUqG^?~U~8 zIm?;9GUiP1gFL!XC6;MzT*oX9v1RraXR{laZXzuuCnYV#z5em`9}A2BXh})S{PPF& zKUz{!E&sXv_x3O;y?^|vrirnX>_4_Kks7HWHFDp7ZZ9XL@Q>fi$o%sI6}avH<26j$ z@4>KttT|@?WAVS<|6_+^K&p|Lezp%JiR~xaQvuGwR>k z|Gmxsvp@d#@$s*IkomWM`B(eD-ajg1{@FkO8hQWfhyUL3@vpu3pSt}2J752P{r-FV zzka?>h5YmS|DS$6|L^1X-;e*_+yC|cc%>%yk3sVP`r|*kVVJZ<@&CmB_@8s*^HPhNo86W6^gDbiWbQ+$H~;+0es)?9efYfqgA6Gjud~^TvW9_ z?Ie3!Fu$^4Vg#FZV^h_V3o4?gGSOA?I~I$l*7Nz-HI9ksO&ub~VM^kwL6vN8vqzOz zySKQP?5bS9ZaX_sR-Ny7X#_beX{^eU>n0O68j7c%vlhwbWH4XZ;Hv2jH6o8LRetly zK(?SPnSa>XRdoG}Zk5dBNYRpQ`J&hSXnv2{G?Caui!aq2S$@>&99f{C${PB-udKda zM1spWz4N66(wrD3I^1F}>bloWLe1{-=l34tn_O@wR}M@QhrWxed?CET+QB_Cbs&p9 zay7APk)xC76_n8F4R7Hu5w|0u=WsVU0d4HBjm7Tyz4OT*_ZPoPc_D*s2 zh%=I-k&)HG-;T55fra9QzorUhoWdls8?wY}UaRw?KHZnR8sJIzW^%$KbC*_|cqWL; zj}wXR;$F#3-VH9w=`D0xb4{YKeZ9czVz$KZu(cpDTT!f|VOkx!$46}99nA0Ea!#Nt zZzd^P{aF&EBqfv)mkPBL<%G@J(n3XIRz2Hmp}=c?t)wg0wc7ExqZr<5NPd(|5Zu~2 zQgZywC}DF=KsEAk6n4c5_>FgztIeMsW*zlPtLDlt5vR|(PBbvx8VP5~WtU7)3k*IgaHxiK5OcI9H@MoUeD7x7vRaIcPN|dfs zEV@xUlYdThMD)q&Dcf>u9ywK&&uA^XL$>OwiS(2&GK~hVOsKt6*qHW`oMHTb& z$!>?){GK0M`KP|$shU35Sll(;y=uXiJl5-cZDqWV3%fKbtZL_h2UQLw8>?Q-SScQ3 zuf+ef;iO08ctl8K>2^jAkytX194zrU%9owrV1Amy^Ek`D2&TJWY{L_f3__xTSKob_-L z``?e|OYNFiDah4fE8;h>SIl>czNAL5wd1+}LFcpfNBH8?%z)@!@d~!-DkZqL*HGYf zW03UXIPs}1`>O8Tv*w><+etOOl>d3#wW=|1&xq`gsfbqUNl9KistVl7K`gy=gZSI7 z6tPzOIKJa~OZMQJZ{qXIOsi~GEAubEZr~5brn0wpOcX^J&S$S(I4^z?`c@-y z*npzL?62=CRUL2cu^U*-Ph6?Yul=AeekP0+4TWW}YuBa;+;6)GLRcw2V^<^2J9dis z^4yE>T3yR}mBjM3EIwEDAAco!ReYh+e2cN9M01H?Z}V93;~9I!iH!x~FW>5_55LwH zr0$clUbef5HQIeqVz@4>y5O*Wjls}sz84!LseON6xIJFCI%S!IBtU*Qf9~O<)jz!a zssWxL45o;-h4u4zGj>H{t}%8a36|`1<_n&McBG|54mt zYf+^&{vliC8q2?U@FuHQ1tQ0}2CUAteDPb|S0a}{LTvmeh<=9~ikmKe;=3Ka%9buy z7Ti`Ys|xn>uUfzDgQ&FGL2MZDm!IS7EneJqgfC^X8`}krWXaDEHs!=d(Yz-I*ta3w zteQtEJCtWFHst>h`6sMrpE=nGa=G)^_+WsXH$5cw`siP!SYgZm!ucm>++NQ2`TC%0 zyTWM^Z;66vM4qa|^`nB|bG)6nFUm)JrXX3YA+OCp8ZnMPH{_gHuBV2aZ8qk+c*+aR zhobn&yKO4(?9*lQ%v2@MeoPX_%xWTyhMMBruSfC?rRoJioyYlda;pW+=QH`4rFSap z7xBb5T&9ZGaxTQ-inZddrcVAGMQKq?n-xEJKuRB=ZE}f`5#55 zCi$$E<`Ao7^jzSkpDghCa)EF5HeW0&NnxK}JHU@ASiyf`r7Sp>BB{F1iQyltEF*dR z<&r!tFbL^Xosw3M!m?`S1QehORUasxAzVB^1d{ zvV|x~n0wB>6iE`26iE`2$|s3ZNh(QE3E8t{4w(rUZPmc@&sf4R=&-J-v zWvB)j8&-mJaxCG)Lt1d{M@UU9yiaytQYT}^W-)Z=7zjzc2K(f);Ui%)lCqaU4a6s8 zR38tvStK)J&*o76d-r2SrIYwcSvM{+@T$3VP?#Ei)NC?wY&$lTb7$4mBx;N@&eZI% zm86E>YqHND8=CwIxz0*VCo!L_x|wmibv4ts%xehGwI-W|V`~`uv+QPrXH0xwF-u(1 zt9cNVYm)ZgOZJ^_B2{)$S2P+}yS zH(~$k7sMX}W1Q0L$;S}i$#=L59&`^TUl~7`GE7*2$RL< z$LRir?oesuDu}uH1$^u~1P7F#!S+RCFz;ME(iT#NXJo|Tqvxtr2EIWi9p{jDrC;H} zCyznr&lI@9<}|dL)+If+N~41f9Vk}L4LD_7WZV>o$*S!ZSaaM8*J;(`$ipXq$R{bF z`P>l4n-v->3a$jym$}gD;}{SeQ>6Rn?iZDF23Mktb zg5L@iAnLzVG!>pfJKWUt@^Gpm5+KYy^{mk3N&{mqkX z>7#$tw({~ykKl^Z8}PUCAtbo&Iywdaq5zLDkg&`KBzoH~9FcimeHx)k%6VWB-#hg2c!yyqbG;#&-tgP6kv(TR}k%>NQeD(Cth{yW6O{O$dcmc7~GkSdIl5X!B-`~+TH`|cj*9!JagpS z%J+BFAI9#z2z`E0!tGeV(8r^VaU^*fW|ndQw(5n3>zvS`fK9ZULlx4aba2I!yRdv% z7+1vZfb60EQXa`cl)Tecw$k|;$*=ukUySis*QL%(agr`WwWX6I{(($@RXo*J)Waqp zy+ZXrzYe+z!`XNhQ5Y{OMJx*+!h=ha=tz+=aJzgX94uM|A_vx@{pn&L*4+y)-*z3X z`O(Dnm0Uyr{b7&ef1iP_1HHuJFKv*BiAANPC7s?>jLLHLuyt?^^o^3na}q*frQTy6 z=kEO~nZxctW&ceS7^eX^qo)DKO^!EdVv3u6weX;y1duSThDypqFg{}!YTCID>&J*A z@7q!^tZ9rM;fX=QF_ZrK-!+tTehu32^da_bIR``L>f^(kJ@5ssBe?X-0W{~=4&eN9 zJv=>@PxPm3q`ltPa4p?dg1TT)u+Hf;o%VeLaoc+?QM@yZEAsm}UG#tp-DFbXF5M(B zdUO@~HzNUE%tZ)l?-4>u?g*HAT}f-)JVO_sZ=$8hdGuF*0P2#@)9T#?pe1o3xUeG& z3~T)X&xvwCCvsqBg+3uxcmi5%%Onz&rC{p7RX|)e26el8>1fYv@EV^1d#))H64$$k z2EJZ6WDeh;mAV_Cdct`B9lC!(H#cV{5g0Af z22MlmG~GK)YdbHbFSxDXP9L;F=MDaY7ANk*vWOyZ^88}7QQ8(dWGo;wRvhAXKXM0S z2D51cjRIs(3ZXHc0`0eW3n(aiNE7PbK=#=N&;{;;_7XjqP@M`4H_d^%R$GWEfl}DN z*c=?oGl0WZJHhP&bD&cS7&r*4j_BgCQ8~0l;U>beTLkpxxN*Fg|SE>bc|@e9n{kCw`LYH!m_)3q4ThW=mlCV?R_s)Iv-r ziqM8hKM0BQ--&bjilAYRE&V7cnzqP1UTwboJU8YeK!!KBLsR`XFeUam$T92U)d?EjWj@w8w1Zw-{{RrVw!o-{1w3CxxKHdA zkXWSyM_a;($XX8R^ST<$+_Q%F^@oU8co&GbIzrbiybY@Ny#?+iSzPyRWrSda6%b~$ zk@?D7uuLKX=wE9DVM*aYBxn|lEPPB1FR#FrZRW>i%93QYq)q;$+l_wvh@_>Kg zY2452vM=wXB(I`ka8joSWuk*fY z021DmV;iM-?)BauplP5I3U_9MkRBdATUj5J@$m?o{vL^s^EqE46>&I!jG|Q6kPZ(w z!iy)=$eu;Vf%c#stz;vGA0C>GXM3xV9!d~xffR#x?c10>0;6C8H16l9NBy!0ucIJ3jwP9FehwP9ft!J30y8-84oA zt}RDrhY|_y_jQ3MyYn_}+j7`$Jsk?m^{BLApqn8=MRL_VLZn7@|CSbZQ{ z6IcpKTW?>+?Y}mvU0aXsdZ@$1zp2H0d`j6;UIgnMj;Zhx@fr)JlF|N@$*gMF&bBCB zVdbqAOu82yVD%5orOXyqGP6qbsjv%wp<&E>ma}#ZS^3~SX)}>e)lR6f&36k~#FIQN9LT6gL(XOHAR*a4OcDcl$#T%OkW0P5kFw*SgY=uy05qi&XsqWc&e+&2CXcp><7S>3eiVBY7iu?vvHxx$ne)l` zyT)BQJNg4rd5$GcR^CPFa1Gjfxr?Ar?ndEtx9DJbTV7w%5OJ;`3=@AFaD2gaq_puH z$R@1tJ+EE#JTXP2FnJ5@sYwJme**}r(+^nGiW0Tv+tBqpLLlq+5MqHNGTrbTxt~|V zvHtx?e}NwEmpM&`+waC>-ZG$l7~%ue+zFUa=G9H1T+GxDrBbu&r>Z9jHT}5NvwqX7H z4mJXWsBsDVf6iG82+Oh`nF6mS8nJtw?)NCce|%#qwqUorbiwxI}%B93^U2G zLVl27iVo9wU4-#5NhVX)S}Ed6YX^vp^jEfV%Im9K@!@HgMlwD>&M@NN#&b}a`IDm>I^l!JW*d+FlYX+)rP zESX zG?^N@(|8W!H4%!=n}^_MS-+6x=d&p0pcu%q`HKoVB(e3uQ*^;8W29xX9p%h+rz5{U z!?_!3&;*`?FCOnh!51%~*f3S}rJW0BLJ%)K-X8@dn&artuh96-r`)BFF43wrp0MFz z3Yh&(iZ-?M1db0&=?4$q5&qny zaFy%s}jKQ+&bHp4hlq9!S*Y^S;0m=vBdCPP$zN9=9<-w`E~%;TiO^+zZWV zfY9urINc(Zf}C~2aI)P1;s}Nt2Px#x!&0$u$ITl+QCxvG6wCtJtE$m`eFNtAJc!qP z>%)yVKB0<~TJGfLHc(cU3+_$7!9r68P~^YO*me180&lKI`y@q>^K1&`DLh1v6b)*P+oI{Kp(q4|Gl-O9O1d`S;cr1uhLA<~p9|rP9bZw>z2o?@b0VSC!387v z?R0s4KRjZ;iqX!y0p1!s1Qkz>pj~h}WmzW7WG|dsBOad({HaUi=O!~sbaornv(JoK zRkEHmI2FrAMF>;=PrpLp^;)Fw(hJm(lrQxZ$FXiEkEn6QOmg7yO0x31G$rYNgktd^ z`#>8|wyW+iZ3$IS#b24Fo+vWXD{CoDo0ClN&Ths<=mKjmJD187ilBPT&ammfRB8-b z&#=m#>8$s`tyEWUKl3bN0i}Q9F6H-dhFrBxiyT<`2hRBaJ7+`)HRe z+t-*zl}4UHPfDk02{mr#^j4ggMc@wRq&U3r0Q|Pjv0Z>)85KKF((4k*r z!273MG_Y2N5$Tr0>8-W6PCFNIWcs)}TdIKI!V>U>hcNFR0Uu2exbpEeuG_m*WGwcP zelI48P8y^jO|2OuBddfHb@YHt{}gTRunCntcVR5n|HH-F3$dg5dU#{&2%YfkBcg88 zh#xkDKkLL1Mg1zEV&O$v`&lOpmsMrT4`c%spBvy{mkMmk5``<*x*=+P7ha-vi%xDl z1R`ILg8t8UcqWIoqo`vNfVWx)XUc~l$0KgWuPd6laWdgJ{IV#HmXJk$-%}y|K^~VK z3!tSVE}&L9d3>%X9R9MnfZ7l8d9~s}Zf(XS4R0<53ex?E10v{1+5j!CXhH*Tm*Cn5 zCipAZNNBup0@Dw|q2~EHxb2$@mfYclR%pEiSD09o^P-7pE2*Z>?>UcLbT=W#Z%44# zCt^I^Qb8)}$*j)ko|=!P@ppx~(r>>qJQN7jd+7a8lohiEBm zqilfepXqU1xYdN&!g%a;at1XXoZ*#fUWXywoAHLhi}YXeGJ2~aig)U#!hY9_TxIjs zki(7U@tX-~-~D@lnq)YNXRT?apGwGUdKj55mc^97G92(Df#}${63Tg9g?*CKX!C*n zIQ|WZ_w zabuPVQiU6>Yy4Mm^Tln4N5TjHVMq};A8x| z{}~RK`2!}u=D>Kr7^Xm_gLE7ypju1bk|F=1$)8GQY<$vd=%4VA(exr&jrkrV-K)z~ z`2Hq`Mw;PDuPRcX-+Vo%L6U0lxWi0&)H7D$94N8V5xsC9#LeG(=(0`Tz}2)2c>R$e zO#1&rtmzNJZ%7cAwrxOOT7Je9zc({!Qz};adW37&<1J9F<(L`TiT;1Csjd90S8Nky{CO7f>79^X_S6^6~6P(6U&8)5yi4L zn7V8YXZkI%R)jt_KYNnD`@IKNi}L>;DsSl36KS-2Q!pwQ3`gxXPM9K9aQYPm+)-FdejATw zvdYn(m2r4xc_cdBCr*EyE}-@OuD}sq4fwc?OZU3wgN`lpaL7X^Mon=$wul(PM=meH zPBppQx$y%)*CYyry!nPpY;>Ua)?geh6iM`*?MFK%)lq@`A+&SN2Q(D74xixTIU6ZS zu58^C^xHlhnLB4P0d~3!JrjZ3HKJjXx*sYvkiwS1LRc?90mliH6U|MFLHkE_K1VnO zy~Fo12A@iR_t{LaOUVdEEU2bl`)V@I7Z=wU?K%K|Dqbby@4HiV|Awj42ZNZ-sy*cA zE4l2XrYiN;rX9wwbR@@y3#eCQJT>=CDSPtlCn~a_kNmUGiVQlXO}%^_M{N=lt%>&B zN=?2QVK{5PL963NY+NP9^e%i!4d=x$17$y$eeK1pyYn)tJ3EVFgwxpy*%dXnHM3d9 zf?-#^_oMVKORxr8OsPJLK}zhIGG+A7jP#GxAY0RQDa9MlSdVpcO@6!evJEWBMz8SnRCE6uNkMvs=>z#HsJWdpS-f9I;7ttiv)(l z&}390YMGpk6|yXGbyP6D*q{={4Z9*XJ(3wcF^{pGalsPTL!jYF2h`;}gQUEBP?q~i zEIP~*Py2a<>po?4_1}AVLC1o*P<$FpY%&E==jEZ{#4eO}R0}MTQii_|*KxhM^>o)A zSyW7XAv!g=}vPO zrwN1DP7e^stw1p*iA3a96I6MBjF(pDN)!cLrnSb_fWVb$gx-5i(0XDOc$Q-i)bE@H z6YC@(tn%H7@3xuB> z;x;Aw0`s9*uPmv>Rz`jsLmx)z`$zGsX5TSg4O&!m;g0>STp z-h{*5ir7-+&DL0Zcj`aRL0v^_8^qr_Crl zAh$YNZic%uu92?vs3j^NVIs+TEyz*X2fDmo5gNs7z)Kv?%`rTH$_99-XOj;&-Yx>g z+POqnrU6p-R@;>}x1?kCrCKJ{ORWjFp)R?_TJ*+M3bE zg@`?=$P8ITlfQ*i7*2JuKvYMSeQrm?@ORtF3kf+gRT+j z%qIFm=vLsU8%t=!Z>?GxHH)qi_zp5deffLm`^3?_QWT)n22_VWa+i)w5zgB-fSJZU zXzD~9SK^ESiq_gjM?Fs>65qtozwVm>!{v{Nga8*Xw9gM*x6uP;Ly5pOrkrch)(Udw zlSuDMK6qL83B-q7C6@C!Ya_#DU|LWWESA_nhy{5N@9;6=1xf=Qg%zOrm;)Hu>kVSQ zp99Th(@5#UPSjyt0Z+UV;yFY-LCbZnVu{PIQL!&g>_GxZ7?;CA&R4KvY70#(MFXk4 zDq;W{FoJJov0UFgCUQBA#Q)PFq$WNBt@8QMVW$WaV(tJ>h+e?1MSg^2UOejU^gyAn zHW5FG$LOPzKF*FX#7b8_f=8d;5%&|1BC+&+Oy~_g#!pKUKTJIZYx6JD!)D9z!CR?l z?v{9bWX(0Aw<8r;&yyrzl_*)(vWi*#Pa4Wsl5l<3DR@w86a{#eqwUtk&{epem-2oV z9(dn@Eq2GEl<*zi$210eG^caxlQ*^8jzfY zmzmO!iqKqhHC$7B2^ReOO3iNF#(3qetr0%EjPOo}HHKc?n=~LZoW}}XY{kxiy08BdFVj zOIcY?8rhfS%zA$CVR{ybm`ImgXG%Bdu;+{(vF}GMsn)ekRNk7$?2E0THA7#zSoxIC zEK`(4>831UJ1rupdJ`p+jS(xTa;1Hw-GC}IGPk7a(!^`b=a`zz6Pa6c^d(@+?MA7` zgDRQpLCK`?Bp!&U)Fm&%E(7NJD#}}uA@GBd+ zQxaR4gZo$D?vv6?taK@IyksfK9zLE(`k2Jn2(M<`t4Lg%mkK|u9i_Jon&KB5E77X; zx%i4y4-w2w12&cUymvp;$@q-zOtrBhEN2!&|Bt6(o6LOVypH6?*nR=yo0_=ez3XV7 zn`QKb*;dpdvyo_g&Y^u+dEhD-OfHI`644GQdU5t9eS2&|igdiFggbR`}b z`?pfW;^-w{V&7%-;En)DZu&yAO7^^M$%EVi?@XTPiey4cKf>7eRxUR~{wC2?;t!NU zw}4ht3pz%>kVtS3K=Qj}f#tUcM0wkJLhp4y{rvh8?%cZ{cwI*buCVt8!q+5{II(I2 zaNNQru6q6?Rt9bZCnh|B&%_Inj^M$#HYUwDe7^+ZAD zVSZEh+h@G=ms8xh&r>{R(^-C3sVL9g>y~lf8UfHP9S6pa^E=@}FY`4I1;oFj74^&pI!pD-y{K7 z+Z@9G!D(dYv4s@TEk{=Wra<3AbNFFWlN?DEg%-7)py$LZ{CoZ_l+^nUq$S5=*RiXp zG@OfvUd~1IvkJ)R@UCJv&xQdXrQk)mVsx^%5T80r;Oy{?I85^wB%HcH`|RtWO;H5* z-xGzJ?;aAY)i)4+r~+FwO%Q5VU!Vr3IZQ~}0AdfDfXY*0P@_NuOxqekH@n^Nndeb_ zMI;9Vhzw$pdG5IJwh|0UOolUy`VccZ17AN{gtN!gP;`(bFV9aFwl1DUY;N(S7auF2 z{YKBBmLG?R`rt>rbMJ(J&0}xEh0|KSYfC53Q7j*%cm5%o`b&s!wb{sW{s%(qLY}eN z^VeLq&m0^*9ED^Y0ia{Fk>D%$|TD>RmD<`E5l-q2fxml2(R6nKL=8AhF+>xd85EySf4Rv=eq zFYsv41&_Lef!epd0PhvR@wfAcjpzaV8B|0Vqy!^JF>&nSQiirB0^qW0lJ?wd25E%buu~cbKC>py z+!}xmy-kFSHh=!GU4bXa3S_=J7Ny?jMus#i`PDAfoNqTpr+748~&Z9 zHB^^_W+`oGKFHTRC;=q*wiri6bYL;^04Pn_3Wp!60lV#zxQ>aTtyBwW8C8hrrDfo8Sb;5Be+rCHv2&qGlAqSPDnsu$+Zt@t((I@AY(Q(ApMe z`W3y{v2%4Aolj*)=WWneSGHm%i zHh5hesq!zGdFwJl+Qh%dj?xxzlJ|!ciO+%ki!R|uPNx|Qt$5<(yZhwWy;T1cxAoRYi5(SfVDq5Cxm+pvV7uLb~zq6P5CU^L!YD-3_78Dhtjw>*caE}}VV zHX0Lu2u5bf(T*Mq=sy1J;CgR8JQ-{SpRNB%htJzXTVnp)pZ^`akr9D&TAjdVn*p?S zLJPQWT#wv`90|{8PmnJj3}jZFhmG-PXs>ETcrIrhn z-&w9rNG3YK0wM_YWBhXnXcob3{ZQ!e`OQh5ecx4j3W14u%G zhVaf84B~RDN!#bENe!VU=(UG~Z=2VE|4fyjRj~)WKivUcx;lC8f2wFA!5%cU&tfE> zUM6*Sa8Z)?U3%$G1*{R}$6cjv4^zB&R2w%n4#KR2cVv9RL%1k+De2!c3R6^Kx&B5f*jLH}JxE?bA_0tr$1yAp z9-%jzy1^U$U--{!7M#mH43|dt!>q!2q?k|(VZG-J)b#ld95m)oBB!It)}NB(;ZN~+ z+HeX;(rclIRWw}vP@0?`xODs6d^(J+Fv*D-8K3)Mr^Ls#d z@LiZwstK(RF9G2&lDOG>8#`V9jiL+kh&W$S+%{beH~(lOjYVo9F+88Nk*|doH+EEi zE)d3Q7gr!XT9uR(PsY2Hi=nXJC!XPMYj`ywrMhBnCqb7wI!y7n@RRhkdqm>otb zA7sI?JKkWe@g3m*QV|C1G2yWRmAs8BD~WvmeXbzT2g9#Xbe&oj?`*y|iVmqT9*sN6 z=cJ10A>mkJPJ!mwW-mzh&vNr8j`~&+Xh3NA?5RTQ|Uk zN>zAcmmAFaImwlIeh<_ctOG|BH<1IG?eKGj2Q=F&if49P05|7ku<+stkUHlKmj(aj zY1q%@9C*4y#@kOARinWL0%9 zQQ-%as3&jtu;rcn(!f^+;G|@ffXBm@`|_C^W2MOgA^2t_iD+KhoXaNFaJ}<4SP-_kL}91<9jOY zh+e|*L$A48u0KXI>2dhTfogO)XaNZDS%4J8ufeLNL*SH~F>OC#3!IPq1Ty>HWADee z(a<>whNCdeyOh0yaA+O^$%)2LWEY2-cYXzQ<($Pi(zm%H>@sxHZa->CZ~-z_eBV^d zOO#z%gCrlRKsS*)V4;!|YIcOoXp=HCXtoBe(Z2-8LIjE6CC1qP`WQXr>xHvR?i0po zC1BCBSH$>-e^BU`4AbPg7~XX8gp+MC(Cn8Aj)~Gjg1cVAUXN(*RYfrzdZZ59r0AiQ z2V}t96f30n_7*(z^)uM*V?+O&a|-xAH~_}qk<6txCisK74&%k=5Kp&75S1U~pea`a z20zkZ>i$~>BM(*LK%vKkN>UZ-1`}N@nMqiU(W9d(%8t;d8zx9 z`o3^n{t8r9Yohvfgc-D4y2g;OK&y3YN!Pg%R9l#`N%l_}W;y9g-phE-a*MR7`X`VK z55L1r61+w=E;&m56z8#lqOv9;Z!^h8ziRR+vzO8fOQHT$Db*Z_+)JHKTfhp>{Z5u@ ztFv`GdvVU%m(+N*rhEFZAAzvHVCwwij<0f%d zDs>;lo|$FhSNM@^=Y)~^y-OI&Z*!=MxOc37gPMt^>36oY>n<~d?o!IiGFYQ-6CHD- z3l^PD<(gM^AqW2D8R?LQT7wklq~TfihO>7!fYd$XE==$zBt3d7m1jo++-|QY>muIgHgvBeUL4C3F)1Ai==96 z&`MGUo?ONN8hIiK%MDD)QXMA5^#D>#NrM_AtGI!o04E$1Mw;!r`JRrC#6gFApjnYm z6kM4{Ccl+uPGSS7X1oq1rMYqNt5Z-@2 z(sl+ZaIO1e;1IWjPP*U@S{2C1=z^R8w%Rd;j<5d>hI_Yy*kE@gyN_gQuShbk zQ7oEMz5^Doyuj0oR>qzOgOI|BU6`}(GNJY?60Ej7PW*Z_2;0r&nF2v!IHPU|C$9Oz z0d@ej8U-UP%7cwNgt*ft1L$u4bxaktqKe5I#8yRd)D(+gW#?N^5)bK!!bBi7ex7!l zWye@{THsTkM}_BHs2?qd*M@|SzdGzpobRK_>kf_cB+5}Vp*K{=CVI-I{#`5yirMSV!Z zFWqkuUn5IEmxdO-s9T17^?fI!V+OtjGHC`k6nUCb& zJ$$JKJIYX7-u1Gw zi{(w0-F(LypZUQAe6OXn>))bE8!03!VRC7a7E`M-4~ESwfs-=(;rV=d zM9=yFtdb_co`7b;FFl(8_eJ3mTUl7JOCBViGocMm4Ws4>dGwZ5B9_@lq3Byj;L&9i z+1jW9{eP*#?`FYpYMC(cOtFj>{gy>68C(H_ZjK{C{@%jcK)(4LCeG8vX1NBt9(fLVeBEF!NaiDJty*iOsv9-h~PnzFnQDJ#CAW ze(xrpnqGvy8+PG9jTa#8brRjRZX8r~lJv&(>)_>!xiDHG3dZ!`fcokHjQX#HAsz?7 zFXc$G{m>iu;AI8edi*o}Uu`-_xya{6I#i&tV-}2KthtcN+KX)qmU+_d^&!h3;4>oTBl`UarC*amy;y+PEC0K8NCEm5BQ99Sra@MkXp(lMYFd!60}=Y?j$ zLAi1$>E?zxQVz7Ag$`+Po&!XV&&MgtZeptc2%5V*35cz@h>WjQ!`EYPfsvIMJ^SMe zg77;7JFbr65s?>Yez z(XVbN&>U8b8kPPc&i7OFg-;%^-D4%x+L3_RG%qG^+?wGCE#+~f>fy?((m(?SVMix( zq`i4N{(1i|(eXqQHrdVwsXfZ1frus(^KKx4;T zod=|8yf;4jC>H0+s`p;7h4+*f6{WMgKbU*H1HwS#2(kaTM_4qb5oez~3vSLl|(H7zdC zQOSpv9hlFIR~6Axd;Wnk#R902oD5WnGbrKO9;6Tw#&&rFC#KAt%8pK?-rJOA%P~{Jz=8&!Bg$`f^yMw z(TQb)=s%triZ)VY`s2mPKPH|yTObQd57pqRW4oZm`bMs>)O@DuelG3%b}7s|+XKT_ zO>iUcMj`8$Y2dSO7ansK!aLlS5lgbHQAeH=_MN?ej96~~;mLI*HPeemA*ng2*mbso5U=R5AWs7MFAI}2OHu7cg>=i$qxI_S~A`FNkfJep}Bnb$9NkoMjy z@d2w`?DF#-4&iIVrxfF1cDtyFn5HFEGOc4yQx{nGU9d*Gt^~@(J22Qrz~pv5V4Dv3 zF;-5kaNWFOHa^ClJ+Zfr(p|l%rt+^7Qx-SOxbIG2$G>Esw zvrwK2e_aW_whgj5;=Q2s3`2@_U#6UN1=-&VirF2>w8iE_HpwL-u0T zJj%%M9NR7|U(+R(&1@FRWr`wLGBo2CLk*5n^WW;#Sk%ul$$9QVS|&bYyRvPeg>w!a zdw&75aJrBdQk?GQaass4XEkwtk*JH-!747Y?7{ou>56tZ&(O1e7 zJ&O0aGv;5 zKJP6JUB2>=y-EeXx9vUcCvXO^{QOfd4Gz}hh9l=ERzPLbM$|g$Mu)3(RXNNffSPC# zc2{_ez1ZWZ|H^u3$2pHxFI=WY%D8BqaUZHvm=DLx%YpvVZ-8^Q)i`3eIqFK>12VS7 zpiBoFM1OmU3S!n^CHdFLdKJJ^-$!_3kHm1e(gYA*w-(QCU5%$|JW!8!894bS30bL? zqUHmobf`5#yiO$qT{w7bjWV_@I*yVm7U8}qW!%^)O$zVVVk(3!*gi`uXz|VwhJSKH zVNMoor;REjwdF4KuUtS`Ece4kl@WLVpCf$>myuHaa#Z+HTVxS*laUe+C$rOcGd2b9 z7!5OT=(XV~)ZMXxkvjJhdYzSJf74EUU5Gyuc%&U_IMp)eA`%!!#R{f4a5ZW1qY~tN zLy(P}NA(B3;qPPb;)OXHEN9~b)JWPhX`Km7fm9C}GA+Z*v3vvHuNn6;kyc|z4GFKl+aq@ zhG`u7;w%BSRZC#atwE^I@G}~AA@HP!4u1H_58u6NPW$wY;Kt}5gz?Hytae5ftLY`8 z=7K{&XVVmt+u4Ua)YEC#d=K54a0yBFNCJypf9VBRPeZj|Rlskb82$Ir4AD0^3r-mv!#$ zF~uDqMs`^etKVVpKSgKaPsR6#@k>aOJ!H=oCE?CFGZ&SlQj``+lCLDBO-MpQLbmKl zNRllHcg~r)lq4jnq)li?l9U#eRKNTC1MYpj?rY}Ge9rTEp7--%m#}qh=}jDKBL_2L zR^liFe~TxTO|;YoF7k1A1?TeSp%$k-NIF>)rCLb|eMX(YZTlRQ>ir3a3$He3)2ljM z<^%15V~FaRGqL^>Z91q^9xqP6NFfQmZw&`$3*B30di39!q2s0hCLkM4a4@BJYM59*@5?zbp zQH%Toln`Wfdd_$?)SUUuwua!w3m?d6|PuXY%c61AD6bT2_A z)vcvk{Cn6nKj%?_{co6Nsn_Hg(+5ls&qSC9IZdhl2k_POD8_l|YSt;Zf@}=(psGtk z*}7>uf@MX*oNP@r%Y2QZdXG0UKKuog-pCCq_(l+!FY7=y%eyl9E>}oOEuWP|FR0Id zs@awSBc?$ko|@bJ3pGWkb5ryMFtuBpNV6|Rn^RU|xq+j|^NKu}@c2cy4hKW`RhNLM zFay4P*JEP#0!28`AB|0NkDz%P4{((Ha@-nu@E6kZrd9yW@b!v41&P|z!fr|MIYsA4BP z&>F_?zCMUdOX{$juOlvYripvWGRQK$3wr;Ofwe!P>5XOAK$EEq5goXiVN9*D$Ol8F zy7>zVHZdZcW=O*AA^<9IbeJ2j;-S3jX&ivOi3{-!h&A7gJS+u#Gwv5OcE|y@&)$wb zcuFud=ppgCwp0jgPGnLwRxz6*x!Cz{8k~O|(ap&Y_|3YHs64w2U$VJMbWbk^qh5pD z^)EEZsBJr#tApCGX~GFMAIpOB$7W!K!7k+Y_!$i3yyVX*Q^2#;N3q2w2kgb!Pgu<{ zKqC)DNVan>9CJvZ8}^98fDQMN3dm#BJ9F`}j&+RgJquiVcL`AyZ3(OP7{kB6)-$4B zMet2*CpHUvK?JFyq z%y^;}Zj@X8DKhbBCv04?pBjCsEm)zvnb$JkP@vqngFW#~jK`6iiTfjB&<%$+_$0QI z{{l^*?avzUGCzpZ-&GK%tx70O@C?3eQH5NIQ*`_07s7YLe!52?im~kS$Jvdh4DS7g zqTV_Z-`8lu*o`D~S!2ZH8&|+3_v>(vdI*sgGmHo=9~8c%m3F)@f%jz^8(=~kg3Wgear==?bvv$?fnFjEM$VUpL-Wh&L9IUG z)X@xlq4zc_RN@j_mG&T|?Xt+cT9n-Rb_6(=e}-WX4}pNKGwJ++8))u#Nj$}U1HCp_ zVFNE$$T9!T*L~;(0yA_#PlXyC*>(<;6itH;C&i#>^Ltc(RS#|W>;pbo0@CrV6j}7P z6O6vvh&=;E2)6=77z$H?SD+Uh8cU!H@A{zL^ULT1!bJK}2PN`B(l=z3qm38WyW{z% zUw}|yUU=@&3LH1z(BiYhGZ0yK5e9vp0p-l%Y0XJd5R$~l-~3*n{xvql=+=A`Dk2KD zo39~#NIR&dGMk*QDfGTy)1)`97sWZ*9GvQ?NP1W~<8X&eXyfKf7ylAwH40XN{lqOo zan(53AFvkUy=!5rXcOWn_gdH(7XZhOEVA5pF)8|ZHT=|`iw&PYCJt$k@Sgr8*f^OD zP0Cq%Ffj=c<&MORhq8>=Ll3elMFLB>FTy+Qqp;Dpde-!bG5Os}g;&4Y39K(?nS&<- z*wOo<0(RVjbpI2^*b_8Wm_C~|Or6gR?ykoJ%z3uxSsYvSyNs%c6cz0BxXkPlPhcuM zDYnS?6x$Xg&1>3Z&qf^(qfW7h8G9Wg%EDkC>2m8KTdN#PitGF%-^&$H)!nje$Z!t3 zcFlR}xBzc=oF&hlNk1siYTSJbv2vw>@(Z0FU|I)*)ggcSD>n`DlDG;lq$L) zC-|`C74_q%1hp=mW(Vf?fxf?Ufk;q3rnW?wry67MYfcQ5-uw#`Yn9Tj|K1YzAG5HY zRTnA`uqP%>g3+s?*K{_iNA9~g3+6rj3GI*hfM3PhbUF7a!m3i(+w*M{+Cw(*5E`LBOFM%YS>E33lqC8qJb1& z+C?h}s-@oM?xj~EpJ54XFmwr}S5^=*F`0CC&Rn?u8(f%l=`w7@$TpL>{v*W2>wo^!*%vjP%X$+ZZ4Po|g8=tG_E+C(|j z0%W4p8h4W819u01WMFB{)xL^3D-@2;KDkDcjjcG>TOjxz)_s$eQD*Miiro06RrW@ zpQX5&_Yw?=2xpP@YVP=;BvRY`gZ}JkN&E>PVzrP)9lv;?SpNKFw z!*AoxzfMRgQytd0o#PgY^&$O05}8&@V}Zpg;?Frd@Wy{0VK*ZWN;$V+&40q5=_?7h zco@USqzUy`wiFXVe(Xl{8BHs(A{(T?lFpj()X*0PZ1m_Kv=pJ(r&G~nhe#7V`m7Nt z9hIlFuaA-8*~)Cw>f@A+jS{(Iml|oL-axJ}=1@K|@$9jIi{#2*sZ2|gGZ`Qs%j7ET z#&=@?HK@bK{V#o(mJ)Gx?4Kj4`ky2-Acr%xSy2v+6 ze5iztE~LcuHrSs><2QY7WW2^Q_TuAYN_U;hfvGk);8nNNYynnvvgN&Xfw~RQxf|zvD^&ad|*%hf9FKa%FTn?+BXu{fQ2e zdklOI<^ba+an#m!9`oXh@#n@te%N3SDA%zk`b$|9<+O#KxcwHn2{XIVC$+&E|2CrR zZvq?;55evCZi3#~<6!PfMVKP#j{V}V0sE49q;`}($PB%P>>!0X^R4OzGHbwR#XZQE z7YAckw}V$N-Rnj#wAbnV?1Z5MVKB{e8-P*cxIZ`=9-elC*e}%KI_37m&d$5oQSBu# z+~|sJ4pFq%!}*|-pNP^O7eK$nN90S()yAR_rJIJ)*0j2in#+j;*7%{wl_ZXsAI?n4+R zZd?bdK}ICv6QI0Z601c7V`1(OoEL2ewrm;tuz4@^8chbOrLKI_kO%Y5xuIaRAI=w0=Mr*Kx3OSuBNS~n3j z)51afI$LPI&jU(YC&4>6#ZddQ<2YdXFPxxb5C0`~z+u_bpz-7yY_wbxaF$8amI10j zikJLFkG?V{}d zHIV&FPq5{(vedV)eCFF8Pm0s{ke_@#kW7xANu3{PASvHPB&Q=5J&H}no?D-hRbx7A zRn{cyDP_PWaQYcJ!;4g!utUNzP>Bk5$fgqNS;nO3B>6hSg4K9ljOE^{u+o zYv82yVvwVv1NsmBBG!HA06!ny07bKE;V=$^w!*#OgnbFTcfJU&w@3trV&Xu2z8S95 z|HZXk7YzP{S;Fz;N|1fIgP*P#NyI;N#|zG+A)P8c!fXqLe!lvTF#7ZmYMXa~KBgL4 z&NvO~r#10U?oCHsyUI}Fuk%n+bvhn^ny}q7ho5S-4mfUmMi_kK5SHo(ge;v-@G5%> zyeQa)Y7)M115-7CvbP#J%)bw>smy97EO|07(UeI@?Qt`%nf)Zw&eOX2WcQKTcg1+>Sm1tEn;$O&y} z^2fSm@Ql?#Eb~zvh(7xRQWaald{G~$tei=|Zdio;k5v=*)1TtyDLm4^ghms7_2?3- zhuMiNcJ_k_XxJ{wTe{{BQrmQrsWsrShrvD8S$6^1FVuuXKcrF{I8)5?d3|_R$ZuR5 z6U#1j-O75bO`=8~b+GOxXBovV2PQ;Zku7ubXCFDfrgS)q*lRj>$z=QaOscvx^^`Y* zteLD~k$q2^n^XG2^W%3^~ERrxTJwJ44OSM{0+k$_paNI{RN z4?GTvZrZ@qiU45vJ(BO1o=(__30Z!l*~l~7kVr0bL4RL~gGn0^QnpJBO2*g0sLM%U zU+M=wio1l0y$eu0DuY_XYS^RG0={xSW#M8I3p74Y62oh65%_%!c-q+qymm>#r!zj% zp<2HQ9cn(9`)U>WO!OmcY?%e?;A+h85b|WUJO^*vPl2^@D`2}@D!tN}gBGcH5FIM5 zI73l^j4LWY&+9YL+Gtsv-mMQq7s#N%MgQ=O&|bRuUkPZs#)Dlinut$Rhtc{s^T36& zojB!MB}&s+!Sy_t%-^{y9!DjY6T^M+v{AJ1%>R8l_P!BA-#&Q-Wt;GDgNP8jobwVj zepmxJy2IvJzKHG-<_bkMzo2$;3xeY;Z_$#Sg6Jp*tR=q=OGtJT_O7eoo0~V_Xx1kr zD-(j*&+e%CjXZSw6NJ1SszA@OYjjn3H5yIXk0yR!!Nb0Dp@^qBzFr@Nvqa)>u^)u0 z`FH548)D4AIbY}{W<#JR^$@HXd_?zCiD*lUAE4)K!!F$?(ceX9xt~SVi5KH(*hYH* z1n4~_?wNdnmO)ndYEUli*wTdNna#%~k^L~@%zPBpmH=O^T}^Xh*453E%>ed(3FuW) zA7R%0ktq5u^b_fEapfB;VV+h21VlZ9!ApO_w5L@lKqm?7n*da(Wde&-tm&U@o$xtu zi`F_ihWx{|kyOMjTqT|f(@xF6xmK}wXHXKhX%=d!GT*pG)%he*mJgHfQcT2BNp^zl zU=!Svuu@7kE`N548eDOb877q(OZRB9W$P!#CT==Y60AsB$6aPQJGX(2S?3tl4f9yX z=_5>+=4r|xtcwwgxkE~vHDE&%pTgYc9E^45ux@Jd4Ch4>RLwm@axP9HXJrl>A!0#k z{QgOOUSmzMZ&j$^40kq`+&~%zD6(I~Q-nLf!*FVk1p~CdlQ!*bi2cK((j*I6Y~)Qn zxOa*%3NvT_E7O7rC*IP3MrSZtiJxejkzz2pTNC%4yU{=aZ+=S9BIKSoTV4quPJ@mn^kA`5ama7D3B#RE6a|PxLdCCzcc6e|`EP4|* z1AcTlkJ=?n0q4$ndXjemRou%!zMn4QsJQ>=_z%|jsbd)SkB-7ug;{+ozbf=ysUCju zT|%#G5yPFe5AolJdRTgTJdw0g3;BK=f@1SE;DyRmT5R_NP_#lHt>Hv5M(6fpq-@2^ zy{U(>HJ6A>P=zVI<}gly%lJ$rz;$kX+|-pxbZ#3%%9PeW$QG z9s;V~=jpLJJ|ZeFGkf>@F?&po;=9JB@QSM$l3D4Eg^N%j2k#EPb>JzHTZ6$PUu`-> zn;=74lbBtxT2Nxq8u(DE02*ceLu~IaH2JI+z5qG2v6CTQA~lowJaYmmh}3c?^(=(@ zZh4`XoPbxG(rD%G+3->G3VbN<1|uB zu;H=au-u~pg%k>Ntq#6;8lKKPTcHZX?vH}DpzSEIZXY?m`~hPrM!>w7|6tD;f+83u#fB)N0W@RRmm3_** z!Q<0-`Qd7UCl7b>y!MzhQ*XXob5LTMa1`@`+gK^^c&!=ca=bVLq@=ECM zV^Y}V?K6zGO`)TsTEvD$hDd7fSJ=y+2ff~%rc>3$p~j{<4aR)Y9;7N$HbFiCp5&}*MC?#ACug*S>Kg~Ob58h1y z5`9_7`cgZR%N=B@PsK5lXUlN1ZVznFibcCE595(f3$RSeFqR2Y2SsTZEUZ>VukLIk zMP14m3m<)G-UeVx#08joDV-=%+6&Ai`neM`%896QJs>Tv1uwp90fq-MiPD1=Tpe*U z?7q+)!DbCYH1!yo+$06(HqRhu1u4SZ8&S~9RTUITY8?O+cbHkZTd2 z39M&y6D7k>h$3$u*emA*19k6%hPELhSLL)t^Kdwhjyi+pNh=aR1Desf2mUa&cNN*6 z;SBGaT!4n@Zo>If)8g>rD`>lBAsznU3iNI>!xnk6@Y{qiXVW$UGPXGq#}vzfbL?|~ z#FxXLlPOR>)C|;Kodfrs^8hAVC&?m14mt889h#&p$KQ$)LDsP=;LS-H_^#*#-0^V> z{Yt!*A9-~X7_n)>XG+$Ql?qlUp{kw_UR*G&&Dcr1 zDz<$433ACdC#L`EKI)~cG`pa(0Q>ZvV`ePMWPw})yR9UPs$N60oSfTCwESHh{`Wnz z)-{@){jr}?O{AdylzRtQ%c>B*Hd_>k`HR%&* zt-J>D-H4A`_)DPLE>rAi1sOQO*RZEPp;7&-@tL)#0p$<70pk*`4^?e=0iF7wpE zc5`Ntw+v`xDde5i(8p=zE-w(Na1r>4uBT7u#e*LI7N9e<543L_LhcFYk%GMo2=)me zC2p9KW^+Qpmi8tbWi^8@e$^iK=ehxf<#uo(A&JIHKB9FIaeTFxGnlB2#$@lO=@>9O z@yF71JX`2BYzi+0)#hE)da3}39f)D9BOF-Cu~~wIq*(anr8v`cqJ!G=@QhHG^vQT*{mD$e~95%c1x|C9Kqpm*kT* zPHe}$K~~kmi5cmOWt7Zw$zAmg%&X;?dbCDVFnIVr)%ae6%!t3pMy0Dl*P;(J^nZ&* zlbvbrl0<*zM9RY_)GL_$=`cu6rjza+ZCilN8Tm&-&|hK$HPweMnm8xHK#^5k(5y3(>*8 zG1}|TS7A3n9h~}Of(Nc`!5s<-*m7Pcm^uCcFeeY=j*uKe)wc&EwAVuG>4wmK_dxBZ z*Vl;=y#}m2ZxU^ro=&{v3-6cp&ES0HAu^}m86J>TB{g|YkZLO8pSnDR_9~0ukqmh< zk{^J3FJ-_>4LS6=t$n~jumb2*8v~tp($INTu&}f_1r9AvL(&&_0PFlbP!fNdlnb{Z zAKng!x>{Rt$bvN>^`jZw~AO@Z%F1#C0KKNX0h< zYV=@I{ZfC5!tv)jL2qOd z2-)Wd^9K-owYeMqWev~^hnaAhLMKo=@`bc3IZkFgeE#T@JT%3uOL|CRYvODM)TG>*kCGS78|d@ zvL81r5-e+IAV*8O7*^~9}*lq=}s%b&oOhBH=4?1 z1beX~PhYW;@11$7>oeHlGj>#^wkYGcF^Sq}-9Y}ls3#ctIFquwv6FHQ6X*5EN3lka zMp+S&uar;mDPGjZNlM08j(2Qs9&1vtff|ZQXQ@r50?(Q8?CKFOrbHs1IdCnSZFoPA z=Zf704rldwLsd!CXqL2KxGh4b*z5elD)=_a^m#z5GtM%Xm_Cm@SyuCwegp`CXN zFRPcpcNgUmGei2(c%?jC9Fk9FzDk6#T64)IecNDIC5N8hDT7DHzoJ#c8f0ouDweo= z8AknEM0-OSSR~>D3bpb;%A^{Uw2Ff>4(7v)TK8!MnU~<#tZKlnyie+0_a+C5%HSE} zT&!i12Hr-lfKP7d!m`>PXxDO&R(ctTP_7E-SppeP?=xg5JAugbSIB?}#8KBTfoDnj z;K>euY?8RvVqH-nu%HO2&?XCKui8dSH0Kd*f{pm>hcvW%{|utGaUQDjucy6|@4%em zIuPwz3(utng36>ce(bv#w644p^*^nIB0loiM)-c@gay?q1sVav-*<_uCTFfR9RQ5D zcR=L+JD^UZ5v3JP(w#q7f{$Ptnfv1|O!<69$ou_^*pMi0+4&dXg<&kHJZcObtPSX$ zcFO3}P7^wHZXrItv2m9hun?qx>s zXR{T3p$!wq-o;|QiZXQWwF+@OWH++8;6u30(IhV>$-tRQ2jHgHm%)&BCO`H!A7#vZ zh%P-Dgb7{*4k-8!dLCTE?|qR3#`kc*Ft3QXQis7{wkAw0ngjQzG@C<}DDPBE)~EMhs1h@B@p1=pr-WNelMQF{;HVAvzW zcn4#NOHX;TXPVcs8isqR2q98IraF_ch&5rxIfG2zljW>d-fhZK>l>pGb&LFqmN1JA zM#%z3hK$;h#kcFFLfGM4dXFvBIzx?q=94YFKz37g1-SiA=(*Dg z#2cMjEN%I!>Pj74SB?H$0D+sN9MZ;&Kssp-*T(Ux=oT70^?i9FlSG0u9nv zVSRlR&<(5QYwM(=S>6wktyCR+_KC#%7p;IcYfoA9=-7h#9eqTgSrONv=!7s6DCFTR z?gsC2T9N9vxAe)lZQ%F~J@Rk&7_1z=3Tih=3At_`xgnLGKx}b5@H}fPyX*|ZrIayh*nrChlR`?JbuLq-`|}? z>A^D zF_L+gn1CnFU4@&{Y>~&~aIB=Dhx>2$;?k{uh#IN^IQJXUb>1t<#^hWEZ!?FDZrfm; zbv690J{uF}9IP;L2TDA;NBh3{-pkwBLmcxn%;URKg^atmPc z$_?1Z=`OQ8>!C1<9>JWHj>jEV`w8nU0Z`I}3&m5S809embnN?w6YJ-KdPi5Rx~LpI z%DI6)j``qZrFMK{*(WTz<2k?j6`>4S5w`&oYT$iUnWHgW$sW zd6f42HNDnXN>;HFqw;u1&QHjsrWxJB$!u0>a5n|C5lM#T>lvh?EQmzKDjp3 z2C*S>>QyzhUqOy%c{M?>(C#sX5`tLHmSVCh<_cSQsD^p*$(5&fX9oM^NC;~es3(vJ zyFlgaQsdQEX$TT6uL+*|Y71&lLP6N?Ny;iLo_#XdNUa^-&6{~Ji>kYLlYB7gO159V zKt-(GB515n;cdO@HXF|NQ zCs7+CNh+VPg74z1Xe^@&JsTTQ^7JxB?OY{Z8t=lq5t!pnA?xKyuM_<5=u)WexSsi7 zb_2#l_F$bY%0zkSe7r=cJHdh+)G%m(Yb%rS4_-C?&~XvS+$%&e!>>^SJISo>&tw8b z8QfR)9p2GTN3LcGIQE(iUN1U@x!27>&=doxqIqbMOAxtr5HrgU@}TSP74ZIL8osZn z0&fpYhiaQv;dK8_qOtD{00-{F4?9C)O_U4qaiEP@p7$CT4=dvkmjYsEi!_eRT@UXZ zDkSv^^Wf)qCS>5f6xd|5lW%ZC8ZWQ;fwuN9B=69tasKWCxU=>SJ%F`H9^YIE74*H~{D<%0 zG5;)j?Zf@3(%Briu35xH&OA^0t#3zo-fQGBHxMsT+y`o733w>S8XqI30ljB4AWh65 zo#^AR=;BYpXS9}}xvI?me@n2tK{oNla4mMM?to?yBjlv&JNR688(BN!9{fH%p8xsc zCXBsbqdv{u56Gl=rmgk9%vn87MPBb zuC-ctevuRo?>&R}+gk~G&)g&(@9}vRPRY1CWC43N>^XZ+b+cgJQ!#3&jl=FUljk|@ zIK#G^1~Mn?#97_PMuNU{O+og!5zj``Td*qDg%zY1F+cKB*$i1lf$`p0-fW-SY`fiN zigWrGjD6cosalMa|MqwY6c*T1jfXQRhn9uBBoD+IK2#MfC{y7X3#xfUmI^P=fyZ;v zxzC2YKS3Q1sbC|AwhLaq#!s9yundRZQcOQ^t;&QTm_AUHp>>4~A`-~3safRPh9KjrKP1s2} z!N>p_+D*KLO^feaEb&|q=l%Q&np0#bIsbI>W2Fe`kU0`>(ZKmW3YjVuMAI2B0Go_4``C;w+^B;$ynD!x5REmD{83A+ zYfJ;#KXtKJGy>>aAlmwv<{DMT^Id2C;5)t-vViTUp_jUwP?o4M9eMhi@IR9bUdeC} zP`rdn)*9gaZE@U=z%zvHhYLjNup=5{S-N{X2PI|K)e1OQ2(@2AR)~lM{4u)|8J2Gc z8dWTKV2qrTB(w?i>$)4!5FB=`!uPb^|`9Au$FZ9ZJDW`zAu`H++DW#p4`17>Xh zV=^Nm1BMFq2@_X&A$y7-v$x-63Y^yBvzI?&&VL5n*bCiwi(CrcGk*oS*GYx})ti{M z;AKqF)JsA~MuBYYJHSX6|6&g0xG+Vtk1XL1xQ0 z2z8m`@ag8;44iiDvveTY9x#1O8kMt|pO;$vE6 z#38>qG}(Gd$SG6?HO3`;3e|Dj#EZZV(`cNquF67mco~-am`6W9BrsQ;eT>*HQUw$b zaq;5i6F}!_FVa<>;1;)><670K(`{Yq!mbtr6m%mUIZyT1DI`h2sl%1bQ z$gIa69+gC?ZYM4M`X%A@{UF-owV3{Tfk95oa`@rVV??2f9*7pxgvAOqsN&~2khuIU zc#_ovBqWU?r+12l>;nzThQH`7QnVP2fvu;LGihdxdY3l zBM#w+TN+~_^=K_fbDKs=cBdom^>BK>SU<{hScW^!j6sVZbMfYBhhfy9D?jdGD#4$A z5O~U#BK*(>ygGdptT#y_Hma0-9BCWhRVO@*KL z=4XCd0C}GG>3cmivTZX)!Ec6ffLAA+)V07d?;`O)M+VN6B4AX2GV#((gc&fbp!0W$ zL&dN%m?l00WbN9C#`N}sqV@||esL#~Nd3z_)-Q#O0!gg@a|CA1`w6z((I9`8+&~p~ zGwA81;@D-o1-4gKCQpukM=}v*uqQK~&iJqyI3%70_qtkX`IAMUYw>3w*Jlsv6m_wx z-go5a6%7J5?j$Em2(lcK;L93>{nBITwxJDBzyAQ(xML&i^cbgGHho5xbNA7*CbO8X zo4RB!N65&?JAv<(oWoyH4%_aO0?YHSQZWv@VMstOWA)CNh2Ap+H7)=y-fzrY;@_Y~ zA9L6fy~`Ml*8{Np!eO@Y)EsunvP5dpo+;MbT#mW##3{$=K`Xbn|D|78cSwosnBt{tpt~K5 z5YCpy3zk$s?!Gr@qdWn10(1CLZW=_KuNBbWn2bi`<$(sh6ma}{x$ZNhao&%wC_iC> zpl%8^vmebcAqUd|%FZ}S>@mHy=?9Q>UQBPCngpXwIrI~&6ciab4dw95aoYJb_`Xsc zFFm>xvv)S&PBjteY4(R}y!h4@5qr#Wx zxRPSEbSDbROtSgHgQ zHI#vu%^cV(UO|t~YCu=|AYIhnjz=U%pi$`))E#Mq|M+ghKFhbWat96J-%D}SL1H`9 zs@ulgd#%RKn$ybm==1`q_wR9Od?IE3qMorHlwmYZUxTHD1sfptobhS5rS=!pv%@Fj zFuZnxxxQPA_1ZX(4Y_lL@-LKNSDH7H5+=79-D_va^=&k;l=f!>R*S)0Pj|B1T!C8J z6~Y)~8?k>cZJ;ifiSddZoGC-;P1JF_E$qQL$s~BI$i6BlV!y>1F&_CE%-p;^WD^s@ zm`z1dFIFM;=gDNM$leLcFh1hS{KrPr#`|Xho%vo63@{BHVa!cd_bm0g#Hy1V>EIbLC4l#p!EAnnw#YULO036 ztL}YR*`gB_a#We908yf?E`%tCe}VFMTUc)-#n=TpL4Ey`I4Wo(S8Y2$uiEyaxcyr| zqkA&SMO}!vT#E)|O<~p3m*B+C{YV;GF$-BeMu%gD6d#|3X@w*qs$+wlTGdcxvN!%a zua9^&UIF}4zY-BUB*{67%FM;P7SQq6emM71E<8AUkPCFg@4%Ld}R?lfzm^`MvViN%XZKixp5$?<`UT6Y|a=hTqfL~L&j!r4A=E^8bM6g zhx^sJF!i)4Q>wcPCTTOm`}_=%Rl%Z_E?KClM!wG9rXS@?n&CvKiWiQ|giTNUfpSU_ z>fxSamd3gvm`KI^b#~ZZ>@XtXFjEvp#_7X^EgdzIOTE_I|BBuQIN_1191gc7Kh%9|OeDt<5vgG;U!!O4P z-`D4W&BtycUsaVnE;pMoeQga_hW-c5KIFjQL$3U$EMFilhyzNiFBA3RT|{x}V-R~I z7o16?i5H-@PHyla(%kx;?p*$xTYbs^$qBW~2YCbV^p7F%;<`3;H&lRkBDZpXJnyA- zI?cGzGYnyUU?y6$Dibu_6^1Un!+@Jk3RmXbDe$NM5NP_{4{Yo8;1>mbQ0(0eN-`&j zFmnm=+B()yGwC`7;@6bNB=#AVS8p1 zekcAC5n&B9kDp9)Jd(iOVWHP!>=D6sJR)3#+?>qsmq5*%pG5W3cYITMBmDQf1G@ih zgu6C59)*3_0*jUONNlYIwX~ez)LbW6nd#4UY<5O=iOaaTYCdq=E^)lovk4eoSEa>y z)xcH#mW63)Eck9-2~2I(VN<0a{8nQL)+w8|32gnO}hSV8C={7Rkk z55>}84P#o*VGER8*&f;Tq&~?qk+w6i$ov2XCT(HGMm^cQ1skcGLBZ@E zl4dMUOvi1D0+{g_g6;iMKs^W>VNCn?l7SDDNNYU~ePMI zeeFNYm-gjsOPo11BGyjraT8MCD}AXF9hwmxt0nL6sAt;8!q~A@Vyya5Jbv*xn<+_| zVzidWQtl!p>_qudsQh`!Q+V6 zbZ`^HQz4K(v^fsl|D}YMMI{nCe$MMqjs)ki33fB`vFI1*BWCVOM^XCGNVM<|%IXw$Q3#6ASw;h| zw6CN!b_?^y@A#YU~EIkp6#lX9so%>H3T)^%9}$v%$(%H{!R zKM2P0>#x!^3hIQ|FhoOfYtY}XbJ3WT2f=RVfJZK`x&E6{_@=^cY<6KJUbRS)850r3 zX&NeYkoQt7^1YScG7-yl$%;e45fE)x^#(=PMG5&jy&t<4ClO*Wy+ZoSa5T%X>lI~%|IHHbSG+GE&N zLsaFPq0f7#;N^55)UgZn;J$cfUs^CW-si;3NH!4mj4dTLr|H3S$&T>P zZabzi=nQOhY{3ypIYd+I1k$xmM;XZ#bOK)&Up0xtpe6(B2FpUu=NA@R4&FjD@6*iK zp)h9V=?J_#xf&iY&_cs!!Z7KiBJ}D$!%E+t5@)#0z~;Z?I)iP?$&Sq#jNJnWX-_|R zZpRfkD{>CrXCRG>kG_PWuF-Uuk`)f)sxT5C^|5uQ1wmJ@L@OR^k-4SIVTxNNtrDpW z^B!2>Pl0!ttwbx{;uOKWj}OIL=KB%Lt9QZFe-zYKiDV{)tb(r8Y0Om-078y9;BO&S z$eGGUqAL&JwZ?a`YvxNV8qo<%7d0XuS#f-8Oo7eGs$_h8-{8>>F*0JyIkX?=;n-;h zaY(-$Gj01E(6#Fa*kf;r9IK;9OP@YwiQgtD@-GIesCB~sQUK4o^b!-%nJcJ#d=O|T zEuso61}QUoA8*a67G{0tI4Qn$u3$1LjS6{{NLopSkoUT^c(>O|^9Enc6%;Nw#4B!s zROyU2WTim~RXi@m>&-nO7&g5@&6;(D1^24SIbLOKg7hus8PAa?Ix6Hf6hyI+cQpjM zjycp{AkTX=Q%&&YA|p82p&{7qY%Y*hAEdUPjbw||8>t&Fckop9WKnh^7fFwnIi!>R z8KGvpUXY!AlBf21qo9zR#U9o%<5kP*;;@D?lq7xwe*KzCr+4e%&O@K@8)Y5bx+RW~ zd9wtCzZWIzyeweBR+=_!od9zBdyuS31ykCbhg14o7^~C9!d>q^qR@LObV^wTN1m-^ zm>3LiD!ju+pGiV>*Bl%tT7=FOI-{cVrue*h2LAR#sBuVj1NQ(5xy*i!EqS|pVymC~wGiWbpIgoI=* zWKTj#$eB5Z6h*Y4l1eJ2?JI4PRJ45O-}&Rrxvsfp-sicW`?-JI4ofTCe7+Amg3a zMKd?IikAG3=oHgo5zbNZWw=g}WoF4tWQu+?GPAc(izB9)YwqR?aF|ND3iyrBh=k3aj zIXR;t(K?n*8(8;ozT)1J04p=TXfg?Ft?%*iJgGaQ|`F}pKFpM4zJkw~edq!Sm4+?lyrmzZJ`Sym|{5C{9lGI13(ICP$tz)G5TD)5tIXGs}F zFPr2UAEQ-_n}-i$aY~NezfVCVGbu=vIXf3?pIpq}1&`TFA*$S!t1%**OFOy!MRQl2)^IV#&8Ge#_`M@eONP36cpGF7K-sC#f$NFiu8%(A86dmkO8I%J5kd znRD`j&q02I4AY6illzOrAJ1w^7+OWBa;rqhvRcBKYhlhG?E$WY++!0 z4_1P^naboM94G&eHJcW~HZAC7dL};L?3$!Lt%^B}*(x_CYTi3$>H3Kx-|V~9+oxZ| zaWS*_f^#*j2P_noPO`0DXSR@wFjitw4;CHXT+ctlR-!z)v&#7qv_-Mn-Qf|gxa`GTyDiNbUQS4vXd9X27Hg*1Tb@^!xy30Z8ZxPs@`A;J zLDpoCIbQhZ2;X46Nkrx8urIDF;LmmwS%uX%MSpaTbKApeMXg)z@RAc9?C?W1erwlE zJ_zmLcVcy^7crMQa;u6Dq?AP7^)H#x_Gzq%0T5-hPvEQHNo1sgif{?WQku zNx7T9Vwky&v)BXv{UTkh7S8=bJzZA*hj*bZ1nOJ<<2+QH`OM;jd|`5uB>9RQ+ne=7 zI6Ox6E+iStBtv%x2_&z}aC}A|tU66P;DzGbC z4ho*mT`6pT^Hi*0xL>0EDo$9KjckLbCkW4}rV5=+(WUNjGRc^NHLE6&?QP@lbZ3Adj*2c*xFwoW}Wb>qKVz zA9A0*=<<$do7mr4<9PQUYgs2(9ojAW9p=m2rFn3U+|74m8JVGZjAXT;bmw}66B^y( zHb^Ehi}tAs?wJ2&UpzL)?dwwcWG4qv$6+0It;R&$<*LJWKYT4ZksQZWHpGjjym`s{ zF1pSR?9t-0mau$hO8`Ikd=cMY{9Qz)>I!x&GQhP3YCOHRnFpGNyjr;j<2>7kGY@{p ze(s;dvUk^u-cuP&WUCRYu3;{o;;Y9Gy3Z8f?T8V@s;1%adz09&^&xC{JtH>Aj%E`Y z#e9T@n2wzq!?pJ1a%;jjFclRyIZbmTUPa2*-Lh*X>mK}@F_k^d`PxK^vx--U`=d&@ zI@rX%c(0D%p4iV1eLl!p{?6xz*)fd$(Ozb^iY#OCjTBff@)W0UUCkyP&R}clM)qva zGQKq@h+D)O2yQvQqPr^WcsUJOFt^wuj0iTQb%;0F`UHQPB+K_Z-{3wr z921!=H|AN5NPa@_R{r;P#5NpX!rY60#>Iy|5nJ@9ipP9d&p*hP7gX-95`8Pr&_)!9d9ak7l6Q(-Z}o(Ay`gAp-Zx!*S7u>Nmuff{ z<0U6t5FrvaTQ9RUv-c8j=q(nE^3$uiTjwV%t%wqsZ0%+)Ea?-*oGTX&7yOX~^Yd&I zQeOz3hkX~|-~wTXq(gWjere6-Pp5>fnM)*nKTL#Eiu@!>ipJtB-q5zg)?Xa;$XK$| z?3qM+{%oP;nODL!7DEz)*sPl9$-gDv|H{|21@;QPbY@9(3JQhB>+Ee`%rO_5NG=MT zoac)ld~g*8YfP+pczcy?an;nCjg2~zd^u&?!YmhlZ@gHvplz(+#pHi<*CZ`o{?IkP zbG|zN`|<*5KCTxx81#mXOf+MYXYLX;NZBwmt{JoW-qXbUVkoKI#992pOCEn#%*Jx# zARE*Y!rsxx;{D_Dq`EK{mHdHA z=%Tnv14Ly-zNJq|ocO)>s<;Gm+Q=Z z${_YC?cs4%l%DekAH7z@{XT6iGI{Y{B)2w|i&P)Q3+OR?@hoXl`PF(Hs^`GA?s>>9 zGST9@KTYCHc9$^nbzYpurYszp79w&xJd@MRn#2Xnp!f)M5Z{{ffV0Ro<*Ou_rdqTj{>ZqZIH#(z&6=N%x!y}t6Bdb2JcM@O&X zJ+ia79gVX@m1c+7L@iyu_o|(!!@!l>eEbe~`Pc?lCTWm7C^wdkP%68)v?fth`g#gu zr{c*q#P(IYKDr`WtH5#o>3v+Ovl3sLw-0-)>}49%1K7~Zt=xeBL}|v9E;m8c$TYow zDr&I!PA`->C|ac&&rOIJ6fNKH#LKMMz+CIfqUD=;zyn08|+j#XF^}-(O$>D`IExuHMj^+_)~uE^e^nY2@9pZ-*Hk7 z0%R#56oVd-*!$}Ue?v4RfPPkDVV=8Swf1|lW`vOU7{0~-3^Wpd+J?n@nL~Vp>=GvQ zUKv|yW-os6>!={pbCd8qmn%?e2LcD`i}+{C3AX7)qB!T)SMla|W`Z&31+N-VBiPt} zm6aL0RFEU>(WR@&f}-pUaixEtI4JBo^LPDd?vUqMUUzk_sOuqQK64Sw3)O@8+q$XT zLF0>9ii_bo9W^+QKU=8y{Y}!GoDKZP#WVQVE4;a|R!8=qjRL==L{${ysm}#`e8~~( z^jLd2>9ZXBib+;;z{_Wvb3a@AuvqGc)7g?Il6!5&>0E8#rb&0|{(Ec1H~A0KCVQ;; z;*HwuE(JZl)#NGX^>`+iq>#>7zmMhgccqDz>dz7BEH~jyZCp8XTU~yow+vtS^aZzP zu{NJ*uEPhkC9zI>%W01TOT=z7o{Jtnwqc*=zGS_Y7_bfz<=mE%G-hh9ym(HXBmYRv z3kUDr%Z=+Q;C*+i2(H1$j8J2B+0-2EzL1jsiNbW#C?=@{E zx5G4xy(=D%O{NvF3kRh-0W#nj?_*rJ?E-P#lUV|*flR(D@Dbnr?+;%$E0cZaZNN|q z)`+QRuSEqZn_1QGx`Iq)F>`#Mh*ME)WMZAiim!GG_yu1=vEj2gZkk^#|5FqoaM9Yq z&XPYWh-kmVx!vj)CI9y4W975>ITK?9+>IbUaI>CZ?a8;I-L`j_CvWB0CvKWt&>US> ze{}#mMNyG$vQ6Y0EbaJ)^PiaGaSsJCNv8!7+ukt^6IR4fX#w*9BPUUJ_wUtF-qL9o*4jU;w*mSlR+Ut!j-wKX0SYs4~d z4J7H(IfhTw9f|h|Ut5j61(MPG_X*2}!X#Fs-GrORons4uZVl?Y#6IlN5PCdl6?PvU zFNqC)DKY#u$~H&4)OP(*1>4T8^0rA%za@bioP;a9#gdnOE;WPvSMfZJTViKDMPbPO ziIUE6V_P(OOU>ncX#08HR>7=Msx>GzmTeGr(>?Q6i4z~c7Fme^8&~##)$1~5yXRcw z8m>xp_>mF5p;O4adu_*E^jvPy=4!sIbDgPa6jr=Xf?8ns0L z_Jj*O4DC4ofdBYuu^t@gJ;_Eq98>Ke8n#HJ3!4c87UKu9mMi$`Sb5{N$gO8VZz7eHEqk zo3LTI157HA=eqj**qS3(*n9Wt*wI$mywaijoV?*U_O0V6A@IB=&0J1phZ3~Ku?uhF zmrAYd$XuG8I%<;O$i(T~#j6y*;#{BTv2nKe{f`d88$lT#-POxmyXlKfn^V}Vl}_x# zyfxyW&tvIHhcejY;;n+{wrDo5$%(6XlD3^sc8T9T&E)kOK1n@MKKv9Zzg8(*TlgSL zMR51<4MD)`BdmGb6H#-=MV`t%#|IDH5NzsJ5snNxn{ z?D7LTf=5PU1?IuK_#In^aciYC&sBGcP)*sJ2>y4C% zciYtT{u9?sF_IPP?xrOD*`c;uqaR4Re!mj$j@mEQc(JMG_Sac8dyj6jwRuxhGy7_& z#N(&EM6P~RP00NDHI^S*Yjh33J-0+Tn#Ya*{Y318lj2)~_O zYujIRS7O}1q$Z$!qb-Y6?ULiS*pB*i$oA6%y5{}F8es~lS##m{*&30|EeT<&APF-w z;f=^WfJzW7m@{n{GCVH zZ0O5n&&g#L8Y~d64N2iuVn^_g8PYSYCWyPT`-5QA&)cj=Q>h?5nP6=`KM-Xor}I89 zFY(%Prv$YYdSV9=BPc!eT7(B@uz6lGY=o@xMTz+ycD3g{w*1Xa)=@o~*B^-CPHnef zog7SsqW-6Xx|mCBu7jm`%%D)3Vf&a}GHotvF2RD+_5oZ~yB#kh{#Z?wi^XLPUj%vk zYWTdcC;U{>NZfkp01&;Oh-UuHgdxA$VERJMkpenq4D1~>4B z)FJ#Md{J9$ESjelORY~D0WB^I(2sg0GRN@;2#lT$>UMX+h&vWArlkxXh+T%N;x0gY z|Bu83N(NX?zYh#-P7v#=4k2iF0_|C1iZ~lxbnnz;s9BUvt@GJTk{_~>RbMipfM0d^rR1>_ym1&dZH%1W=#yNtK$$D zeTc;Cvf+lx*I*XugHoQwP{snFdB zA0R)pcX2dz{X;dnv(g#PHQt2`ylyh5oJZ)llGDtJ&JOJTUp($t3TB>FRpEq}di1#m zH>r&mUt(eJJKDhfD!sBp%J+Qgz^oUUu~&1w@yo@J@lU-Y%#n|SID4Bl4%_C>JeTrD zLWi{(W9OOJUV8;LV8-JsE1yweUUs<1KaMWq^YM}_M`lHpA=cK~gUwHG!#(xJ?4@x( zuyc4Z^CY&K`Q-W(b7i?$d5$4obj<@3=5E+{xi{m!Z#Hv$d7eE z#*EwpHy&ma{;CP+f$k9`qwa*t=Ubpv?-#)Jb@wR8PhsTI+a;)A!cjDBOA!d)p9JF{ zoq`rbB)UO(pw`MvB(8UY)$>(Q?mtY0KQ}>#hz8I+?FDqQLolc`7v*}{B1s|%!;SZW zGt60Zzc~T>nga~k*=R=!Bx!}^v{(8h1kX((_qNJW(|%dO-1*m`bzd~18mrN)L0NL8wF5c- zL>IKoybP+MO<-w_1KQ@I0L@L;k=45_$VbsJC_m^P+P~#2eEQv#p7lK*ML6md00;m9+A)+BMg|ivE$gw z=TmVfHI^A2yNx;jAq3|Hmg33M_d-pY)$KP$~mn@kGYTnuQEj_c19*yygLuLJ$He{ zA?oO4z!aqHcnZbddxz9Mc)_Bx2#mQ{30mHULbs%?z`*GxB7Bli&MSRXB0Pvr9emxd0Gt)xi=nF`rs}#LmhslAT7UUnl&lctlM@|m$!jiGpu^(qbT)_UK$#saT8B_1wv|MH^vtPX!b{38YH%#-nVu7&LW7k@x9FG{aGbet38sl9R-f zizeof#yfIgdvh)dd~HNVb(@i&0&kLP%PYt^A!m?y*?n-;;RuYbut9Dfc~B)df{Y6e zLF*pQ+w0N@(ZTq^zueZen%GkFI*Lkn|K9fxM`7#UpXO-+&gGK z_Xb*f%2OvFn^U?WzsM=ig=p)W6cPlRG8M5~u}hUTTQTH_do~xOq z>FcDuJKr#P>`VM>>IItLJeH~bcoUD$Im%e?FT<+ddW=<-8k4_y1rAWPVNN9lG1n=? zL}qKV5r&z#L$4IS)vTjmjN4AD&WL5?A|}#i*L!j5r#<-0D|ZGs+u^CRcH$DUw5#DUl`LxWF1saZ=hO81aV4{1JnEJfWh{uQ0r4109T#^?cIgM7o%7h zv!EHZS&oO!cg_+2)pmjhPxL^+NF3CEn+;zzWq`iV=ZUOe`(Vo#b#&!@Cow&L8DW#? zhNeH93pP_vZ59%<;bXIS*vmg8XDkx|LCzxdfuDuKQe;4Y;w5nQk1;%c`wBEl>x6%9 zK7?6MD!{N$5@8sgNStjr1>Ehg64yE#;jNFEu*gXZzS0#y%`{&ya=D6>%Dm{-$u>AG z`6#M#cuK5Yr4OHt*ue{A8LT>{0apyJhBoD9z;S~H8a0t7j|E(YS!qHb4K{_hI;P>8 z`5Sg$DB@8>!T#r-L&}~1H8RBp0rthm<(9+j(&5fnM$>Zp~f%0M)jO)piTFb zV*aiRZM66v9kW&kmp*r=w@q-T|DEim(?k%@{n|(mFYBXx8_KC?|5Z|E+*;DVx1K(6 zxRVV3O3@`lRrG}Q#nkyQmR|OKEp1;`ftOEBpl=pV!Mp6v<6O0Aw9s@OofL6{9<$;r zRlVpu#RsR+)vrqE_~)7!{EEf(ZWFL%Ng%yBrHfv>_5!hV(^xn&^$xhwIsu$EvLW0< z-+}WJkHSYD>j>X5*KNKSH^HFPX5xWMj*VJMBM|NB2N4saNc#r@ptSBW3>tk8-Z%0g zOr+b!w-)7tIzJZXZ;yh?O;Pamzp3Dag&wi7VJtDfWr%3cVTkWCws7gR-=Oi_N#N>z z2h3Rcg9yFoN3!I6^wn=E6z08z-IYFsg0LJcJ$MeBUgrr-cAWrkZ@&jde=~_W(IR-l z=RG2u82J14F`~lw323>#4X*tC6n&j}5amklLheifC?ZDCrw|UQCoP1JpUi}7+Mc0T zq84Dp%7eS6h3LV)VT6Cn(>C5bTsrp>Dhv~m-)^bEle@>m+KI-f^5A{=(cc>#>5?Ne zlJKlHua8V6#~)o! zS~yA#{dyGA*Yre=4G++^(GI9QA_uA6uZClL+|kn~F;x4?uV`jWBJ`ZP00lX;!j!cR zq^YbIxm9B^(wZ_ER-g1D?@qEMV=@}x>WQszrOP5xv)diIjcfy-f^Eoxlq53EFp=)` za6`tUtx4xf8|vxnVt9S82tLw1gUox@AkyO#syrP|e)9-H|JDoxN74ayosCCw)Bgdh zpc-=3<7hJ8)|?z&sZJK2oQf1j`_bZu6s2^cjI8Y%Aw`v!VD`b2=yu~Env}SmG#b2t zoEs;Qw(A{H!u>}mw)ro0EI5%2*)a|UUi^wa=6+*dSVdv_`&(uUeuNJdregcAv5Y~6 zJ9DNahQ6-jMsKk4W7;-);wiV4apBKPcxvVr=JnpCY}|=@Y|l9{g=a1@p?hSR((%$= z`Duq4voBJ=seT&sDxwm*ERM%FKaeYWw-W!5W+V=#2QaHts+q(qx@>vZ z5vJK~9OE<`z<4LGfUjgb(3GFYkix@fFta=#?0NVYE$+LEV4W}QdFc$xOrIjV@S7ks zP7mDsT8l>iR3u*;+tDwGN~m-DP4jEXS~5YI|p*7;d``f&vi5~RDrx5ufcOxrgZ1OJEVHnY;xJe0J1pD z6YeTxvQ3o)A@|#D9+gld`bRhzsxqOc}bi4)4 z&W%CV^#tnTY|z!I=5X`w1=P(-Ycj>E9o22qB&nJ5aPGl7aLYUybd=hOa(@RygI6!$ z8-?|->2EBw6pW=N>Bl3#ISz1z{VjOy=V_Q2_Z*efP9(PkABE?(p9FEg22g;HCOKX> z8``*s!}XgEpfUel1;XxmU{y^VvPhmncI!-_{aVJL=)-BK!~P9fq1p>fwasAQ4HNWk zqQ%VVe+F2z$CYV4rGaHz`)H$OeR%FBIi_TkEIrxwG4<>HKU|YJM89%Pr(>G5 zaTL{zeGS_f&qK?xT;)>?y$NP%hZ8pXa2AVPZerWF)0jCECNdtsU2)RGS9GcJN!rWD zk}hEHVKPILR!PspX4;RizI_{Qyw?(|7>46avkWFYITP!CG-TpDUoeU30^H-j9)~F3 z#wtsf_)?pGf>A0J=mY1 z56o>3ph#(*>N2$t80`B5N^<1TxAjxOCi`JRaBm#axt@n)zqeDPruo4cJI10%L5Ind z<5FJaRy2wB;ZI?8=Rzl4&62pLW^B;;G6sg5IYnB7kjo5?3u^X@6a~%&&v}{ znK~C`E_8#nW_i@OU9M!C+GjNKU7Li3aoeA7qJ2WVJ0GMo%7uR-f0v|8_`M z&`p<8!@4Pm2(^YEbZ){Hogcvb@OhNK*$Q2+vw`EL6@Y>AIw=K$MlXK_fIGK!EHHvqLZ%a=?(`jkQC+syfqcjy>FBGFY1}S9E*O%bs+2t@~J%NHGvFNRBDFQ1$ zAs1<1y!@X$=+piJyi_Up@J<%6+}?@ywN|6^*A0;J%TSb?GzfzIE>iUy%gL+Ko^{%U zljMuVG4RZiM5Ma58xjjdsPmLQ%=?Iu6{7}o&Z?9B&!VYGB_`yxvgt7NqX#-%ZVP`Z z7?7JK&r$!0vv9q(G4%awN*3#gQMCUZbmbILsG6I^0Bgzji{8#UWZdp{6>ba3z$E$bFlXK2!@GO!&?Jp;(4q57~w=M z=Ig{F$|&q5^&+YV&ro*6^*yI(waLk}Kp8N{=326Iq>Nvg1M*DNzs<~=Q=T|=V(#Cy<+?h ztYjh_uV6O=J7$e>HwfKdfzGZckxSqfDE2)E#=s&}I_QY(Vi36KAw!#_kQ z+f3ws0o2)m~&>z78t6Yodui z+Tq%92IyT)0tJ>Tk**Dw;d9KOf4?nI<{xiz|LJlv*XRWFJEjQtO!p_}FF#589!`gc zv}Mtp{G&+m{!Cb^(E*-`vrvh30eQzVoeuw)h#GGxlT})NR9Au`yg54?F7Qo82TuB< zwbI(|w0Q)1cw;SmYNH8<&D>#8<9&oz$itV1o5_vpA*Aj4PQ$)`}s{MJoY5IG){?bZY(5SpR7T( zpL>x8bDl9WO2^}3^BB{=+W6Wl8V?M*Fh?dFW-JN>H1cqxrz@>s=v~1$?(irq{y7oL zKA6a?eao`fy;`y4&Qj)5UK&&Ew*yDiSTeM;D)V4+I4`- zBIcD|8`ip$OZQit##SF5&wPez@ATrc4hpgKh2mhLfq8E*u(XA2-vSm^PEEqQd-7sx~+0W;q zKNC8sf9{&((i_FF1JX!Ct%?w=>j0M}aUe)?kEo0oMVQW94m@s;hew*iY#y~65Td!` z(H_}$BDHb0&Gru}(BaV(Fg5Qysx*`bFCHbp&u5)swP7X^FgyWd%#H`#$r-S>YBLTLM-uMJ$C>1%?97mo|UTf{$8HCH$IAP8mXoJ zZTm*;)Y8IT6{XaF83pv@U-9^wX)$GTJ(`+5wv4V9tfLJ4k5EfFRs2=CmY%XMkN({w zrseoxtQ+~1(#;pq4s$bzHp{nQV@({`Qmz7?%u*xlC(i{E!!fWdIoal$=_Df4!~_M- zxJeYA^0C=^W*oFDW`T>WEO~y0D$toD?JF01!>^Nah^aaRxOOiI6!W$a&nbcSdxGF| zn?>MAQlZU^4O0l;)^$X^-DDzR=M(U5fjLla-T{fg?I3vLG9rBXR5DcYIV?Q29dey4 zBL3YY*qLH5+<`!m*JChoZ6|SaR|L4LqC+&;%b<%bXHoaOeQ-y72w@(18^~6ihgWR% zNUf=2l(&2)`g`anm|SW>;xb**t~dpzW%$8hD;2W0&lPSx;|1Cy8;~e$9ywgMj@~p= z1?_yGPX76>PA%};3vUg3z$XT|=yR?EQan_K`W6XEd21VVE=2gu$a8;BE_w>d`J0DT4DEwg|y(x6iO{Wfn4>YiX5d>4#%|TqJ7%O(ZfaN>_7n(d3b4KT;rB zho)3Lr0>ivq4J)qQc)GtDHCEmsu-(44u=9#HNTp?=0=is8kuDCjZCDqU@f`PWHmi| z;ZJg8#wv6n(~~^=HiZ3qwiRn#LF~b~^OxNxn5YtyvYLWS}8PLzSER3FBxInpSiJrzm+m$0}Ytm z6*sYc#aaAicM~0R&4nqQGzn{_?O={be`8_DVH_G|$%IFEF;=ZL?1-0xg*Dtui(=THPR`?f-I6`NKKk+Ve@T8^1SOTSfS_#oIiFWcbBDPOX_jj zv{~At&HRUgo*Ph+lea<9iVzt7rx>;50`&KO3tEumK@QY8qI&&0P~kEb)@%NT&5lK2 zoS#4WS=Wx7($;|<1*(uk3y0yNqEuS7!k!AgkWI=-sz}Q>C9rRI2`cwaK_(Te$-S0! z=x>Y}DPE<9`uf$#nRdqX>W1B9DcJ};H`Jnm=R1JiljjigE8#ww-QZ^ETO!3I4XTU{ zf*1S~Y_yfW6Jb&^XhvlNaH?jA$8%0Vuy#G1&V3|zeY*`t_sF8SFB!=DVE{O~yboyJ z&w*jZYH0mvN7Q#)s_EbO4Em=5LgBVOsL#~{;SUr**s<%de_tH5=f|U_?MEQhah(ta zJtd!aHX*0)yHK~lj`S@V0F3K>m=u2(95L>MbF=krj_bL@52F;o>s!SL-OeI6v;?Bc z1<^p}Mh&buSpbwqFF^Y^8MG*~A2g9`z%)xa^hxv`t|?Y0j&AS(pKmTD)gIWuS4w%r z&c|x#V#g?yuOCVs+2{&=0s_&~d=0Yb=3_88_8{ck#vr?$F{sPuHu_A~pwQ4Tm_18O z?6>AY`m`rtVeDzpwP+c#wHb~4Gt*IMfC^d_G6$UO-c5zSaUwg_f1v)PMzSf<2Zp)} zP*?b3SZ_23rB#;OtS-9`b#5L9D$}jW1#T0m+4IJdN&1R#;OANt*C(y*B@y)IDlKWx zA)!X}CeYva?#JsbR^!>rk5PVpz0~(pS=f2gPZ~y_piH;a(tB1;$9?-On2)`;X)VJ^ zxTb14p14PWCfYvI?}x*&=9FOkUqc&CJNA=i)6D5PNz$_g#8Gp{yW;(DJ@xGmz^BST z)3Xn`;HZD~bk!+sEGm;__MLt~kG+(QmkI-!kvIG3NrySw$7L3d+IOC=(fvy$cNJh; zm2J4DaSImTe}m)lXy*KrceHxKIXuX@0pEc^cs*_vB+xYgX8s}QzC-ZN0zX(;kZ;p# z_M136`wPm_mwv0pEFg@7bK&uZT`=5(pkmcKLCXUfWPiI1g?om8gh~at&8HZy`Y{^S z9zBM3_5`4oioYOdGE0OrOM&XP$)NYCKIqxs2mQP@K>HKc=(5UbsM7X^c&Fe-1-pDh z>*r@8`T4fw#>VeJ^+F$1fBpcBm;8o_&#=wnPrG1u@-R^={DEGc`b>7hCNvXgg4L7W z!islyz!>Tq)FcXEZp9RERjY&;Q5%4%E7Z`+h;kzO?=tXlWDNSeeFlhXPbO}0H$i{E zM>x@6no=Ap4_EqS!;t(xX!`Xr;P~2^fO=yGU8OS!JHJ-gBs4&K+;@R$3s2&toIJ=+ zy$g1pOe7AU(?kV_{)4V-O zNGcbg)$`L(fW9G^Q{4;pxgSB-eXfDY=KlxcPn2j__`(5++LaLl6vsB-Lhg8Oy`URXB+DnCg@ zv52LliC&)Plcs< z;yu^T(YJ?wQl(9nwEH9$pRJz3$h*9uH^sT*{vC06+5NG!qsLhMK%|fB!%}h0l*718 zG)Q|Vou~Fb%cLgLiPWg&%W$MILme}nf>&^+xG*D^o<6yW{vKqB9i*P9D@V2Plk{jT z^$9WP+Y0)t^C$Xs@I1U^%qv>ZwSkH=e@*inUeNQ@-S7c96;-i0>U`819Wa1h2#vD zQoo8u!J(E!xc{04`L|OWED4orRO{U!b@CW|KUW?-llI@iN>L!l)t9(+UKcRqAA!d& zG6-7E1YKFu1ZyX?z>O=OL41Y;61$m{@6ac-qO$<$-Wx%eclCnMPY>XNQ&#Z8Q)6T$ zJZ~fZM8ao7r-7yFVlNojK`!VW?-G=r|Z6s67zXS8V*P!r10rVPv2Zz0fiE$f#Lr>#2aQmPIY44U# zHtA#X?!RE@XHt%2iA9<~#-H>j4pQ^C|jy{30sWh$fYOX^#HKZ>uT^b}>O=cXShp%iNI7is8!?+}XiTt>N0 z^o1*4+o1a{=ID{UCn}s13na?|k#dh0eDk1+bUtlG*(iP{lL#3!?eknR@UGNnRaHvs zn#40NzYbATQz|H%9e?R{n$6hYPZV|Ni2_}@X#%q}$_(E-F+kPt{z5;VbpQjiZhU(w z!UI+bc)H~@ykCi;D`I`H&hj2yoRWdt9VteasG(&{a_IRlTd3N>8`S5|PqB`C4t4&O z8s4WdNV|DwVzXs$=`Z^szG+A?wZb0y;F>%5H(APz%sN3Q%q*haHa*6o@~w3HdRKb4 z**l!d-M}Q(g`0-|V2LD;p|6?ZXK*aDKhXf5`?UjgJ#a_U9eY8C-2u>kv!I4NK7&P0-@+wIdV2z? z%LQuWr!%KeSIaHZ_n$0md;byAuP#XIeGMe(_)E-DH%3?B6%ZK{LvCCwLronhA=SUc z!yVtd(DIc&gzu4R=(6G`(7OfTiVK$sQ=1pCj1PkzJ*%bHZW3#1&cdY)--yJxG@EFZ z9B4G_4{Xw!NVU5K0<(b!@S;r-LNZ=J8H$NFL5|S+unL^deFNd9@~D#<4SNsFBc6v{ zA_nJ}19WB@5g@C9_QmR<?b@E7hLngLFCtbxVn z)uFQUN2qf;9U3hC0dpPFf%nhDa55|;mmDdE>+)%^cZMAt7dt@c1dT@yN;&ZLjtbax z)CEkfa6;lw|DZ``8)#kb1M1IBL^I|GgY^SSgrB}O8Z-JR;@^}~ZRAJLx^6m}5okaz zo-+z&4lV&X?$@CD%Hyzy3Ww2l2T=F+T-Y1-ov6>54uT%t1a4(7i7wA<6fxr@del(` zeH!&qshjj))nrqrk3^6SvrEvz%p~+?M+xZAs)OLh37B*6AbK#_2rV<+kK(My!IvAA zP=~b+Ra7<=G3t3Brl}d$RL^2kP9CAN=l;N|ax5;C(ZEZr<(cP`%<&P$_0)~M3Y7ab zO}y^I4tl5Ybozi%CB30gEahKSGCljQ(tVX~SX8LOxXLWUQR6e{8TW7FaY;su;UOCL zPWwRr?I@!At&d3c-F;MN>Pq?w9!+oMXdI9w!S6*@w7rT9Ze1}3UouQ*CUk}2>+VL3 z@gV^-m@*TWGgkOlDn)}QpXmL&bLh1jQ}IYwI_~NHffsK&z(m=+ps`mdj{L6xmsuiW zXlgM$d~pn<^H>;c#1TjC*T8t?NN8B#3vTH)5z)`{VB4CH#MasQHn%z};HEb+$h&Ml z^&@T_D9^tRVdz<8_}&f3{(3}&8@s?EAPXm`%fZwATIiRd2E0YhBMxt9AvTUO1J{-2 z5J?;K5%)wEX?U!F(4hvZDe++V+9FC2piZ7#Z-@R<9f46FguudN6D%@Pgq>Rqkzr*q zjB}Mk_tVNEeSIdX@LOF9MHcAA2p>jbdX*9vCM*@;rhCZP5rHK=|^6TBS12ff!1 zM+GU(U~F?en4C$V{}R^&C7F66q3t28UJ-)~{-#ki!Z4WVu@rR&t|NB_%>cRwtAJ)_ zE}U(Z30uPY;Jo2@R9vMit+lkk<*x+bckYHJd9R6=I%O#3^giS&?X~BxH%AqHI&jba zrBuc*A(?);9$D$Dl08$00JEYM`m3s-a^oE+GA|4^-uVDiZ5Kj=S-nu#Sesg>l7JrX zwSvt%9>BxGBhY@*9dxTffqb(#0WPOfL3Qd~)L11$R(z%5b2uMH*p#4^pYxvWb|vEF*?&6fl?~u$e%-nFjKP# zT(Q0gTr{U6f=&c0+yvxnWIt3SsUQnA#dGesEqf~3oBm-ZsfQ1$W z5;~kgb-uFXA&D&VAKHxKem;h$yLKYfeS}(RVoqjAq+X#p5y<484>LG=EPmf_$LRGL zNb7nTd}se({AT7@CVYH9wR+Jbsz2}-t{xbqAE_158(sS7#$)$zeoZ$Mws$pt3g2KI zu^qEoJQw@F&&Iw!cd&KcEXHq8l~Kx?gENRbG<7PE&eM>kk2tjAXqWHQt0gD!naABY z&$@)3zFmkrEn~3GnsdzC<;7Tsox;qOW-=FUaKt*n!PsScJKncuInF+tMOS!a;^D+| z*nW&2Gb<>WiMck3xq4zNUU=s|uHCEyOV_SJJ^?felW0Q4S8Bkn+!HxSpV{}K8^BMw z7Wg?>pb`1CU{`JnG5f}6xC|Xb$sX6K$KoxJ{y7^ZU;Lk;^N#28i{dzCg%C1A5>fcx zbMEup`!(DBQYn#2Q+r5hFO@Q~q9P-u2-&NWCZ$O#sWi}#25Cx>*6;i8_s{R^dG2%1 zIq%Q=_)+aEj10MWn;iAchIq4BXzNtKL3PRK`PU5k&e9_@pF5Gwt2V=kncpO9=gCw7 zjZ<;uOdGu6BgOZJB;frpNm$c4i7F@6qWD>rdepur&JlGmlPci$E9sbH6b54k{s8kY zV_{LfE}qi;PZ${-ix-Rg$s%R7pdkMVu5QT3S^HA4BKQD#wm`-wy^zCg%Lh~GdVk`f zW&}&-uBHZur^C{cK(fVcoCxz?ZVrfPz z_EGyJys4Osey6Qy<-kVTbmlEFG?!re+Y0w}_5vcBPlDtKj=W4fuS(04B>F zLa)D$P~&7x>jv9mpVp~#{$GZky$*ryhr`09J!5HHZz~!S5iZOcdI(;6y?_w)GR%AM z2q#5vBaqqyw{Pl?H`Yec{l7H@NkkYOb<-YCj4`911A6g|i>9zgTOacIUwVprHwTMD zOUu{~#gx!^_W1Bu4;|h;+Shbymj~=ST_m!lI zVNZ?usHa`5<@{e(aPcxfJvoAzuGeN?Vhcr<=_sm%hx425J;dHaYFL%?Am*Ob#CDh~ zvd*f#>~q^JzE@(y4hPk+sNJ)r$zP6$mUA1$2|l5`{^TU4)3->xw9}3+d7{IoM@x91 zx)P5|*OWS+8p1{_8_2yJpTOn6Cvnt`Ow`#>PZSr;Bmdd8gWYsT>hU(31g$lOaS=Od z-FOd}gV7}1B^ZBXd!x~{BSK1M0qpiJz(BP?y2@l1x$(CYXvPe5zc&$8r)kl+o=Wts zSt@-05Js#Q%KGb$r{Un})1-IHS=4-X00!*(j=z)7f!PoaKQDO+6B@su=f?|ZtlmSQ zLri51Rs^`n8{n(D2sFL_NAjdI15U|>!PQX{=mNiM^ukj!8gk+=%x_J^%sEM9?9qeZ z9M%V>+nN)tO|FvU!OzHxN$=sq*^9Qj``ndec&^6Amwx2YoY9hZ$va@hNh7$q;v5a% z7E9(m3V{B%0@32QBDt0@lJsy^gtI$iA;~ZYCN;_WL%oxUU_3(NL#id(qc{m$5-Ry^ z83hXidcx=I9=Kqq0yLHfNt(2SsQGd){89NG4lj_Mv(rOKx#4gS7s}qPr77V4=(FvD z)K-$W(UR!P?q+M6`qH^+TfyzT8tH!ZioAwbBzLL`e)^=2R)5mSrLbF)eA`J-n6Mgq zzoL>ym6XKDHDj-HA4#otwq%>fC&*PQ1@8-^gwBm-@O{=B$U57Ffk$?b5i9PI@&9dy zI(ao2Pc5Rw*KMf!)d*ZizLk8}A4~2m7zi77nvrTXZJb)a9Ucq_#6>xK!1s+j>GMoO zn9}P$_IV)V0wf{ylWiB-Y9KvgxzFy=)(Lg1BYA0o$DH&MrPv6!RQEitj8<*t+szY?nn53n^D(59jt0mwd?+ z^c=?s=AQO!{&!a)yRSWK8+S%L{6d}Ck6kF{ooN*BEj`bQV@gD=yQ5fJ$4Wlb#!8$W zw^kggkL*g~X;Ingp5SZ0nGHKSfK5VVs(D%LKS@t+C;K+VOmddh{ozFAp)3g{YQdpn z{$%d%xe~a0jigQZ3w5E7Z7WXJO0GW)#KFu7d6z#x0_{8$wp6?8Vk={4Sq+v?*Tl!wCIV}&Ha}D9? zWp%oexdxJ)aN?gQu2#ftl0(4(Tg$unm;}ma}`(E z=uwShhat<5k@mG3urECcjx8*ZaR#O|+Cz?JxsJ!#TQZR=&4Mi}-U>|_PpI_>H;Quk zwEp^j=>H}O?@R^kt@#0aZ#ygF(IU}L8U%Vtsd~?95pi&K3Yzs zvwVlq;5IqT={XiM<}RT_TV;8Wnw1b9mkvH&dudidIq2ntl3&${_^`)Tx~nNgtlc+C zwy0_hm3?^ya}o@BbF|SRpbqDEY&v`G4f&!d8I6)sNO8W`@SA9IJJO& zw%kPrODl0=mkCXc>i~4(j}NIQSLhECb zz5bSbiOLD?@}I4A=JHau`B^7h-Sv%iExE=j6kdp9CN;A|7kcx{&0+k#n}Kw#{0e@> zPM#kKS;jqLhr_nocc@eqg;9xz!A<2Jsq1XPnjOb5O-=*SGYla1l|J2h)E#_hOGvJ# z1>W^F~s-`1esOi8NcWBllvdi>3tCT_4mi1;VTe|RcXlzd)l?30J2{?li8C8 zfZ691(9b+iW}l|?mva;5J@iEvFKy_kO5lmE+#wQ?kDq)mSE7o&m%w6zl>T`%1QPxmj(*c`KyLYdbex(2p3jG4=r}dlb}I*CTqg>| zOb_x)a~Z-!UFy4hjJR^wefZ2Ysq&@=wB2(&B%R5FSDm|X$FdyMiu;T``-wEP_76mS zT}=%1t>M(LJD^$oi`-3gr@Br9>42@CNcvsDWnD)>&Bau-*6l6GcW$6j>u%D=+v8yI zpA1}~;)!SC`_cZ}ZE&DfIku(mgOXd6%5SCAQ7NEXoNKfXGrksY{tN*I4~uka)044W9;D%$ryEY2@_ENc8V;q{%G(o(;rEZpS< z8-HRBUu_q`?iI~r3W6!mTe*u*3#wr4a!Xla;B7JPd5M_nM8qFUw=j>No?@DD3A;Ja zfP06_9FYrxShqqxYoGd=clUe7E6n4z$A)dFL3_s#yvG~;%nqhm6^!SKy`JpD34lzXo z@h~1YZNgVi*MP70Q%Uu$OXU6&L!eIc$l{cTXg_Z+Zc_aRq;nl+oD$*PfsexQ*I6{v zScfLoFq)}s1LCD=*rst4sx&LHLGcU>AXD*7X)ieE`yC5z#R(@}2hfnK2Jqm=Fnl~V z7jCWjiY4j^_|fGJs7Q{H`6eInSd1bKUA!17&+mY#G0!m7=P{YBG=eDZDZ%fJdeqog zOPnC7goRtq;Y-K6w5g{Gtm|t4u1*uNF((xw+GH%@Ty@&7=q;ov1(F#r&Xdn(RZt-= zBSzDaPFki&)$}f)&e(X|K2g?d81_LJpHWI@-{AD&e|zb%D^tL;OA80iUxIvEGZvY7 zVCkwX-0buM62gb$=VhUSc%>5CbT7hyvD;8Zxi=PkpF~sd2GP2NE)37ptMQ>1DYpO>&^4wen&Q0A3T&cM(0x#I4FJ_zXaPaSW)lqV}zT7b70VrJZN{j zk8S1zxBgd+LwbbKvm--r4L5?p;SRu`AH`=nim)T~BCWX}LBk(9(ZUVAY5e*L=(m59 zn0G}gG-#L7@V*8@SyTn+&EJITZ`Eke!vS=4c_Tiux1vGYS7U78HB>s%EsWZHA|3v?o~_MW&VR%`8_$a1&!TI&TjCI@&h=t0HAKF-Je&`|o&f%K&G>UiIzI6I z0@F>768ElK*mz8b^1AgvGB(SemzS9Lx|Yn&btAdtE_%K)qXWq>@tyuT_@ zO@=)o(1*i{z}cAn^dJ~}kH-x52QN+GzHLyWsHV z5)OM%f-XBnx^)=A;Zv$nf4(w0*J;w7kG=?ZyCbPE^Di_^x`JvatWo2_Q5rVjBHh#9 z3kBz3I6XUuzBEdvt5>|1F$ik7?06=%JJSMq`V}#Kp-mkPpV8qC?V=hf$KJEzXt+wU zkX3OBy7vr4^Ot?;7b9IdDQP#=e0-0t%ZR`$r=~-0LNVN4-i;I5BB6U%FX6P4vnJ>_MzF- zBr058BJLqp0;~(g;)}l2DNiDuty{+irfEq}v@|k#otum$-QntMFLKpm(X#pY2Jy4T z5kCCharSn?RCduUhQ(}^3T=elz@^RXk|^4)O@rO{cB_%x%@e7s5l zAGzfcP=BC~y7F|9$rrHgP=M(ZZD{mI8`^7s2)tUb19sh(P&NHE(D*2dSZ_LvRwvwO zU;Px(!PN>6-qNSZ+DuSCWdm`GE1>>y8U}3NgR`9b(|j2(>byV&$M?8K@?%Fs|J8$V z)8Q`!%_C{Q*%CS(Z?KAECWHM6|IHg&ip;Xqep>I^_Fpn5IyN^Lm}a3p@O2 zr?2d8-SHefH}}M-uaoHmJzMc|!wEVs>Jv1tsl)F7eu2?~eRSs3esr^%5t=2;0DY4z z+L$ncrkJI}cjvqC{Ks_a@v{UzcooU&-osd0pFq!Dx+F$=ZNu*g>*&L{AYt9CIM6us z2wW>3;ORLk)c?E{bv$)~uI%oI#+yHp&+}5icgQ5X>gEU<%c^LaLptrfqXW(JJ!xaQ zGWrHZizAeSg)jNa!t8q>L?=1pc4KF{tXDH$m>EYcc6p%OIbC|YhTyc$Z8V;^i@8NL z^q&Xd#C&;Ld3+*Hn9@aeobRAt+mg`o{u3x%t|2t7yGA#y)x{xKW@Cu#{#2iZvN@kA z{OoT*J5eG8`ns|o7RppPww`Wp_$geP-wy||O<1ixjVhOi(Z3@~sBX5k;P#;io64hL zK$i)+bQ#m_YhJ*r&{@KWW#)q2^8ot#WEEBSI)t-M>9h7v@?xL+VS@Pig0N(FmMrU% zM*no}rj7H>gt}ez=(;?Pc745w5qIT_A5)JK`wW>+O-}0ad0a0etn$1oa4d{Z%XAe(xg%YL_p zHy5SzXB!7e=d3#`wf@mdS~ohGH||rAR-J7IPy0wZDcy?x%XY%7Me~5|-%sDl>R$)5 zlOW!&gj07HP%ER;U};lH&b>T=7pA0B-}%byhu212!WPmKjj=-Q^>|S4`4{9Sy~AU! zax$iT7EO6pODFfR#e}OriBeM$bQes<1ev#E)wgH#*6+QP8EerSH~eWus|_wOe~a9Suo=x@p-F> zr=6mS-2-d-@@Eg4A}q%aID_;0PXTdLvvAww8g=pUqp>y*>HhLU7&aybO%~6`Z_!_H z<1k-PNEwNbJ~Ts6PBOaQ%ogJG%qYn%hgX-}aE7G^1{W=)%O_l=N-DSDQMw+m4fE-n zceiQUv|Zrh^aKL3uH%WsSTOZc1Kr>eGB-pv^?jQ!{ur2#y|VPE!t~w3x3lBn9zP34 z9p^D??Rk6`s723h3#K}5E%4>hXwZG=3-0VEzJ$SWCbX31RR+_uQx&M{0+HT5@&RU5 zY!)$Vlz_84Xb?;n0wPTDL0vZnKGvlpbVF#ym#?xcLj`7x3&hZ~{pp@17UK7-6;#>A z7q5u&^ti)2J~AqUb!wjHQU%Wb-SKC)|Lo_Q?S;J2%~bsTb(~oDZaJSuli8^TbN2Pz zQ}KhoC!cG%QY!W8$uF+l!w2M-^4s2tY{@6&jaMCcTd&Jp*?t>;xb6j8k^fdyUunXY zxEG514~6io=c!_0KM6mOKAp$^=)vlbUu4yBR(xr(q4Z_K5MKI4wtL%om2~XlM7C(u zZ}wDe7w=>8j;+Z^7gvj+?CQa9Y+0jhXYx^1>4%z=JmE(pOPMj1_sHl1y@x-sVEui( z|H&T)j87&NE8gHM=_;DA+7RA77zJtOv#`Ee0hEUol8+G&;YFYkwOqGYv{bM8&jSvnNb>qlaE65u|icy#{PpWYc30y}=?k`x(>(s)7xl}aMX!$=1@^h7gS zribC0{70z1Bp99qO2vqNEmZ0lMdN?f(Y(He@a|F?n$r3Beez%`Bn89HKAu>0sR5>3 zd5q&DehRO+9o;i08-jEu;{(laWZjYtXy~PiKV3FK#aUO;WGb3Gtp%S$qwz@jTN1WCU(kG*KweNM`viO`-Yi!S3=6b0i>6zHIDi^nEJO)6>m)I z0Q-e4X!@mGJEcoc#E;?Lr){|x9Ik9Mftaze%w%ER7Ys`x780a>VO zLGQgBKnEnu!tl9g@Y4DK81bJV&XDK|FQ)rZ)%q&hU9cZ+L`LEv<5l=d#vd!yj>e&# zPqD_m3MTn#(Rm8jgz3}f(SvI<;djq$)M>lUSCw(rlI+8GHwH8Jff4M2%U-Vc)Q|@+ z%M)IYzA326U1Vxoo!Fb4I?=K|Pqf(U%&W5hlQ#5?VDlDh@P7|u`Q%+WY#LwB%IxjA z%GqSz_is6C9CwIWjI9*MwseTr6OBbLIKrxBd$cXEnYrwf@-EXfF)Ss9SvuTdi&}K0 z0V~ybdTAW5kCT(0yq(JOHfB`*lq=OmHsm-C22lRsXv|3DJ-uShI( z@?oM=G7jC^Q*`#91&>R7@zv{KnyXhp<~X&JNtaZyig&}3A#-ucs8cBCJs%#F8j(qL zk)-x8hp+t|N#pr++<7npS1Nu6zqd2dC0Z56uj>@TuV&H>{gr6F%~0CCus>w{vc^Mw zufrO@vnZKW1O3aE!E_M)+$z90J9}aZiz%9_^Q!R-;cN!+#8HG8UP6=#>7bHrbV}qRoE&W$d zg!CBDE%Zg34Pj`u;|{*Dxrmy{@o;h=A#y*ilAg;{Au1_{%#z!NdaBzneo{L$fy^gT zbDg}nbW}K-ltjhVmFVi7NpYb81n#1!@%I{>k&|U%S005aQ#N7e6h#=RYerwXNrm?Z zP3W7$PVlOH4|@BIg;j&w@y@{->`?v$I~N;3(&{qYmD+46>nA9@%~02U3M;(Io|KX zqvHa2kFrEYQhiwRf9~8taX+7B*}}e>gs~M$H^m)#a%|{iJsDSji~TJM6`!cylg$PP z@P;G_8=4f$jIUNPjmkdKSeq_3w>5_U&QX+7g;=&!R@hX->PrwR^evN&gPH z{&fsik5E9wH{|sScXHE*&WW=JUlKtHu@%}tLSUoRRGQN5yqz#ef(WfjE zoR`}`t4$y_yJ%7ugD6=}$Qim5`(o#JDZWsPL}!~&^nWuL$|hZqw2zM?)^nT5uQ7{B zOo$r_djWSuoP?_rrFzptip@ZhyWP);Kw0$CXxc zIQ|#xkIEytE9GBt9F^GG804Ebj|0 zA1~6li-Typ?k`%VzZP_gx1)uhHVz+k9-o`6f+tZM(f2RoT}vsNtkci{1wm&AGI^`d$97dCy>ZB}7!Bz*e0N|@hTz#>O~6~9k#5$D>E z7KK+g+3ZibeA!BSCa%b0SBw5J!bdx14G_H1C*p?du7>kMXk!+@E4j1{;4@)UR8 zeJseojb?e9e+uLGEMtbzS#1A_U*h7?QfANR!bg=%-rDVl#Pn2&_#~R|jq{-&4ywWU_ZDcgHU>87ufv#wzetd|Hcr}+LXwjP z(;f9=g+2X8(cwO(GDprzgh6p+dwU4Re0UH4xz)ojmwm)<;Bm}Pu|;2fWeDq)Na|;t z!9gP)k$##!l3P{Y*r1b%`^|3)v$rw`2tI;3y{FO{3;TfOEFJ+VdzOC?AUS(R^N@sj1SJZzc~}5O((#ll5lK&KT~+4eIEbK(t@e_wsK{@737Wy+R+5aT*00Cag=N_LHlbU|YCO6shb%i`3aMSEp*Hau$zMF5 zzC1LA1}TJL(cv2WKB^WRf4Yg%>sG>B#pTpkKapnpY=WY}p?GbvC)&RlNHyGV;*bSa z)X)14klC8l@y2aI!(^tcFC7Xe)2`yv&Mw|iMOfUI(|ql%Cgye^i{+~)^C>P3%yVBK zF@8#d&~)S#`~I~j6V0E9Uu7=gjOBj3d(~v=jEYD$HCTmzDNN(qI?7zy=EgMY!})3D z+dQs8iKp!kW)>UgvXXO*H3bh9Z)|sEpQ6u;@xPxlUzrE)$a4*r{4b4tDL=t(S~*D< z)XL_NH*WG{X$|~Pd>7khafcaZO4#lp5$wTF7Z%#zldG@t;Hn3X^CM~fq{jmuGVfY5 zF3s}d$9D&ll=ngCgz|W^{R712>?f{%`>@vuj&YxKWOtf_f4^7|ofr)*_;5T(Q+^HNzU$zdTq(B=F^fZF% z_E;)ebbyY#T@RmIl<<6m8XaCW8D#blV(t13d$^|4M}xA&_Scc9blZulJ`NTHr*V+` z_$d7NoR1sTmto(~W;~rM>(xH*k7h&%vRhoi!*VZ9_WndBb={(O%3`Rs3R1(-4m9@N z5IncYS6sSkwD4rjYkKUfsSsDx2M>*F!e9UC(DX?mw81kFZ!Q0gYkq7-_w~g{q6Ue1 zfbKmGAAhh}>J7W`dW;8eK-o{zGpeycvCQva=V)9F5f%cMeF zwxkeR9PWUc!y_4C~DolPFihm%QK2S zrJX6p+-02_|GPt7>X2+G%`A{-z4g09$2ls}#abHNySRWkqY^*a@S6KeI;4^*8~EmJ ze|eAju2T6G)A*{5XL#7&7kt$HY0_Q==F(*ACA^`>YqoVy4%^udY*gPCp4iir?Q$#T zKW29Duvu4FqW%c}aAG{K7=J=K+o^zXp$)e@>4xKO*sNA0 z29|mY&P{Sc?yUhr<8TdBsch?+m?m*Cc#I>`s)_1ddx?r= zB$O>^BY#UHX?xNRf(@DARy!Oc>Wqo+lE0+ayGrPvbs2U~8iB(ybZ|}XPqJa^7u%ev z<|K8h5wX4ZNAfdsHyj%Go9OqGM>9n|2q<|Y8NMf+cDgOa7-ba{T7ko zmTXbBI+DeeQx!X3n_XrYtgOJ2E z`XqHr8l3g7A{S3kz;q00hjhlR@AqGPJDbn_GZvE~}Y z?UWO(;$G13mO%PJ@f1}H$_8&EncwGI3dUC&(|I=(aNmGnOr7-yvHCOXA`J*JjFZZp4_({&eD$ZocPk8T&T#4L{zJ z!i*-FcDO^YYBXVFdD~OD5%);QY!>DrVZt*~p2Hu-@3r{7R3l;P0$*Jut}okL20uL0C3z zET$bR6I`Dig|7VPc%^(D{WH-P&T5>32dbNKf?XZ@4%eXj|0>a8pN_+1tDdAW$^hP) zD8dGpMzZl^CKk=yiIGL8@K@G6ocb=C%*f6Xj2<4PJ?1!3^*Qpwue~RsJ?c0PURnx^ zi;iJb@7uPuPUg6J#x?S1{bqXL;#Ohj)p6A1>I|?bPr&PbOJQ>P0J`GAQ%sR%u0DTY zaOl6k*il@B-$ryv8tK9ou5aDRWio^ZpNTgSJCyZF_!h5Kn)^W=tk%Oiwd9Wu{c-#)bQlpWrWHl{0SX2@p!UU1ItFWp=r zCvJ}Jq*LEC0-To874v*}{00X$;rva0DSwwJecvGFt6B3|j|cJv$-1I_LxAX-GM0DGjk)5fHWot*hV57EN=b^8P*&0J1z5y>oHvNiPM4S8X6&vRgKtQ?cHE`a^0+cF=L)dDVPET8}fzhMSW02TJy6+A||HDUN`}O`X@A3`F&fA~izte4y zaI2iCnBOArOnT748q6*}OL2G4RNtgI4 zLPjP*4Ic$VouaU9M<5#XNCQ=ESF-)^SWH;wgVVo@5LP=JzIAL7hw zv6wH&c!DAkzrt=Xb6JMtx{lECePs3878m%I2`H6MVt@E)(Ofr>4{cLrD@^spy$=jn z?nzmnsCkt*`RWvLo4PfRnr6-n7b=RUi%zi9gDhG96m>4~z9TlJ*syOQfvjYyI{V`n z%0ACJ#q?I5WY0ZjWeg$1na&@OS- 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�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≤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 literal 0 HcmV?d00001 diff --git a/model/model.py b/model/model.py new file mode 100644 index 0000000..f08aa0b --- /dev/null +++ b/model/model.py @@ -0,0 +1,172 @@ +# Import Libraries +import math +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from datetime import datetime +from sklearn.preprocessing import MinMaxScaler +from keras.models import Sequential +from keras.layers import Dense, LSTM +import joblib + +# Konstanta +FIELD_DATE = 'Date' +FIELD_TIME = 'waktu' +FIELD_TEMP = 'suhu' # Suhu +FIELD_HUMID = 'kelembaban' # Kelembaban +FIELD_ID = 'id_mikro' # ID Mikro +SAMPLE_TRAINED = 30 # Jumlah data sebelumnya yang digunakan untuk prediksi +TARGET_ID_MIKRO = 14 # Ganti dengan ID mikro yang diinginkan + +# **1. Fungsi untuk membaca dan memproses data** +def getDataFrameFromCSV(file_path, id_mikro_filter): + # Membaca file CSV tanpa parsing tanggal terlebih dahulu + df = pd.read_csv(file_path) + + # Pastikan kolom ada di dataset + if FIELD_DATE not in df.columns or FIELD_TIME not in df.columns or FIELD_ID not in df.columns: + raise ValueError("Pastikan CSV memiliki kolom 'Date', 'Time', dan 'id_mikro'.") + + # Gabungkan kolom 'Date' dan 'Time' menjadi satu kolom DateTime + df['DateTime'] = pd.to_datetime(df[FIELD_DATE] + ' ' + df[FIELD_TIME], errors='coerce') + + # Hapus baris dengan DateTime NaN + df = df.dropna(subset=['DateTime']) + + # Filter data berdasarkan ID Mikro + df = df[df[FIELD_ID] == id_mikro_filter] + + # Urutkan berdasarkan waktu + df = df.sort_values(by='DateTime').reset_index(drop=True) + + # Mengisi nilai yang hilang dengan interpolasi + df.interpolate(method='linear', inplace=True) + + return df + +# **2. Membaca Data** +file_path = "Dataset.CSV" # Ganti dengan nama file CSV +df = getDataFrameFromCSV(file_path, TARGET_ID_MIKRO) + +# Menampilkan info data setelah diproses +print(f"Data Shape After Filtering: {df.shape}") +print(f"First 5 Rows After Processing:\n{df.head()}") +print(df.info()) + + +# **5. Preprocessing Data** +dataset = df[[FIELD_TEMP, FIELD_HUMID]].values # Menggunakan suhu dan kelembaban + +# Menentukan ukuran data latih +train_percent = 90 +trainingDataLen = math.ceil((len(dataset) * train_percent) / 100) +print(f"Training Data Size: {trainingDataLen}") + +# **Scaling data antara 0 - 1** +scaler = MinMaxScaler(feature_range=(0, 1)) +scaledData = scaler.fit_transform(dataset) + +# **Simpan scaler ke file** +import joblib +joblib.dump(scaler, 'scaler.pkl') +print("āœ… Scaler berhasil disimpan sebagai scaler.pkl") + +# **6. Menyiapkan Data Latih** +trainData = scaledData[:trainingDataLen, :] + +xTrain, yTrain = [], [] +for i in range(SAMPLE_TRAINED, len(trainData)): + xTrain.append(trainData[i - SAMPLE_TRAINED:i, :]) # Menggunakan semua fitur + yTrain.append(trainData[i, :]) # Targetnya adalah suhu dan kelembaban + +# Konversi ke numpy array +xTrain, yTrain = np.array(xTrain), np.array(yTrain) + +# Reshape agar sesuai dengan input LSTM (samples, timesteps, features) +xTrain = np.reshape(xTrain, (xTrain.shape[0], xTrain.shape[1], 2)) + +# **7. Membangun Model LSTM** +model = Sequential([ + LSTM(50, return_sequences=True, input_shape=(xTrain.shape[1], 2)), + LSTM(50, return_sequences=False), + Dense(25), + Dense(2) # Output untuk suhu dan kelembaban +]) + +# Menampilkan ringkasan arsitektur model +model.summary() + + +# Kompilasi Model +model.compile(optimizer='adam', loss='mean_squared_error') + +# **8. Melatih Model** +model.fit(xTrain, yTrain, batch_size=16, epochs=50) # Ubah epochs jika perlu + +# **9. Menyiapkan Data Uji** +testData = scaledData[trainingDataLen - SAMPLE_TRAINED:, :] + +xTest, yTest = [], dataset[trainingDataLen:, :] +for i in range(SAMPLE_TRAINED, len(testData)): + xTest.append(testData[i - SAMPLE_TRAINED:i, :]) + +# Konversi ke numpy array +xTest = np.array(xTest) + +# Reshape agar sesuai dengan input LSTM +xTest = np.reshape(xTest, (xTest.shape[0], xTest.shape[1], 2)) + +# **10. Melakukan Prediksi** +predictions = model.predict(xTest) +predictions = scaler.inverse_transform(predictions) # Kembali ke skala asli + +# **11. Evaluasi Model** +rmse_temp = np.sqrt(np.mean(predictions[:, 0] - yTest[:, 0]) ** 2) +rmse_humid = np.sqrt(np.mean(predictions[:, 1] - yTest[:, 1]) ** 2) + +# Hitung akurasi prediksi dalam persentase +max_temp = np.max(yTest[:, 0]) +min_temp = np.min(yTest[:, 0]) +akurasi_temp = (1 - (rmse_temp / (max_temp - min_temp))) * 100 + +max_humid = np.max(yTest[:, 1]) +min_humid = np.min(yTest[:, 1]) +akurasi_humid = (1 - (rmse_humid / (max_humid - min_humid))) * 100 + +print(f"\nRMSE Temperature: {rmse_temp}") +print(f"RMSE Humidity: {rmse_humid}") +print(f"Akurasi Prediksi Suhu: {akurasi_temp:.2f}%") +print(f"Akurasi Prediksi Kelembaban: {akurasi_humid:.2f}%") + +# **12. Menampilkan Hasil Prediksi** +train = df[:trainingDataLen] +valid = df[trainingDataLen:].copy() +valid['Predicted_Temperature'] = predictions[:, 0] +valid['Predicted_Humidity'] = predictions[:, 1] + +# **Plot Suhu** +plt.figure(figsize=(14, 6)) +plt.title(f"Temperature Prediction with RMSE: {rmse_temp:.4f}") +plt.xlabel("Date & Time", fontsize=14) +plt.ylabel("Temperature (°C)", fontsize=14) +plt.plot(train['DateTime'], train[FIELD_TEMP], label="Train") +plt.plot(valid['DateTime'], valid[FIELD_TEMP], label="Actual") +plt.plot(valid['DateTime'], valid["Predicted_Temperature"], label="Prediction", linestyle='dashed') +plt.xticks(rotation=45) +plt.legend() +plt.show() + +# **Plot Kelembaban** +plt.figure(figsize=(14, 6)) +plt.title(f"Humidity Prediction with RMSE: {rmse_humid:.4f}") +plt.xlabel("Date & Time", fontsize=14) +plt.ylabel("Humidity (%)", fontsize=14) +plt.plot(train['DateTime'], train[FIELD_HUMID], label="Train") +plt.plot(valid['DateTime'], valid[FIELD_HUMID], label="Actual") +plt.plot(valid['DateTime'], valid["Predicted_Humidity"], label="Prediction", linestyle='dashed') +plt.xticks(rotation=45) +plt.legend() +plt.show() + +# Save model +model.save('lstm_mode4.h5') \ No newline at end of file diff --git a/model/scaler.pkl b/model/scaler.pkl new file mode 100644 index 0000000000000000000000000000000000000000..d07b6637fe416eabb9a8fad2dd0e83313fba3594 GIT binary patch literal 743 zcma))J#W-77{@QiUCT>bT3!UG(n&BChR_2QAyKI*NDK{kLm4_D%gMRtP{*TH(u+qzFj}a`n zDAG&COQw(~p7x5n6e;i^)B)oy^FW~@I^!zTtX(kDhm=6i~4c|Eg-3k+t z!`RF$5^$s!I6BT#DB=kGrasG&!m(gPAw`JU>m53JMwRvm^!cYrz@otASuAoSqR^m$ zUh0?2O(}7{Be4*FgPc@Z5HhS3=(eo_JfNH8&>=i+F6HwzrXd{$PRuZg+QOij3px!$5@zqE?1oPG=y0+^kPX%FVV~N z3hmIVV|uN$nyZ|u@q2ge^XSq1+d-t}~miM0@ z-k%EcAHScQUPZO-72TTejODYxW-7;Sj#tgMyrNV4Eu!P^i=GjwqJ*2b?Ye93 IDrABC2X0m+n*aa+ literal 0 HcmV?d00001